blob: 00667193652bfeeb584909bacc36bbe69037ccb3 [file] [log] [blame]
Benjamin Petersond7c77842008-05-26 13:01:25 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson8b12ee12008-05-26 14:51:54 +00004dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.63).
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
6# Set VERSION so we only need to edit in one place (i.e., here)
Neal Norwitz9be57322006-08-18 05:39:20 +00007m4_define(PYTHON_VERSION, 2.6)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Guido van Rossum76be6ed1995-01-02 18:33:54 +00009AC_REVISION($Revision$)
Martin v. Löwiseba40652007-08-30 20:10:57 +000010AC_PREREQ(2.61)
Martin v. Löwis1d459062005-03-14 21:23:33 +000011AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +000012AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000013AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000014
Martin v. Löwis8316feb2003-06-14 07:48:07 +000015dnl This is for stuff that absolutely must end up in pyconfig.h.
16dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000017AH_TOP([
18#ifndef Py_PYCONFIG_H
19#define Py_PYCONFIG_H
20])
Martin v. Löwis11437992002-04-12 09:54:03 +000021AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000022/* Define the macros needed if on a UnixWare 7.x system. */
23#if defined(__USLC__) && defined(__SCO_VERSION__)
24#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
25#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000026
27#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000028])
29
Martin v. Löwis8316feb2003-06-14 07:48:07 +000030# We don't use PACKAGE_ variables, and they cause conflicts
31# with other autoconf-based packages that include Python.h
32grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
33rm confdefs.h
34mv confdefs.h.new confdefs.h
35
Guido van Rossum642b6781997-07-19 19:35:41 +000036AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000037VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000038
Martin v. Löwis1142de32002-03-29 16:28:31 +000039AC_SUBST(SOVERSION)
40SOVERSION=1.0
41
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000042# The later defininition of _XOPEN_SOURCE disables certain features
43# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
44AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
45
Martin v. Löwisbcd93962003-05-03 10:32:18 +000046# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
47# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
48# them.
49AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
50
Andrew MacIntyreabccf412003-07-02 13:53:25 +000051# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
52# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
53# them.
54AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
55
Martin v. Löwisd6320502004-08-12 13:45:08 +000056# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
57# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
58AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
59
Ronald Oussoren5640ce22008-06-05 12:58:24 +000060# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
61# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
62# them.
63AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
64
65
Martin v. Löwise981a4e2002-11-11 13:26:51 +000066define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000067
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000068# Arguments passed to configure.
69AC_SUBST(CONFIG_ARGS)
70CONFIG_ARGS="$ac_configure_args"
71
Ronald Oussoren988117f2006-04-29 11:31:35 +000072AC_ARG_ENABLE(universalsdk,
Brett Cannon91a1dec2008-02-13 19:15:44 +000073 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Ronald Oussoren988117f2006-04-29 11:31:35 +000074[
75 case $enableval in
76 yes)
77 enableval=/Developer/SDKs/MacOSX10.4u.sdk
78 ;;
79 esac
80 case $enableval in
81 no)
82 UNIVERSALSDK=
83 enable_universalsdk=
84 ;;
85 *)
86 UNIVERSALSDK=$enableval
87 ;;
88 esac
89],[
90 UNIVERSALSDK=
91 enable_universalsdk=
92])
93AC_SUBST(UNIVERSALSDK)
94
Ronald Oussoren5640ce22008-06-05 12:58:24 +000095UNIVERSAL_ARCHS="32-bit"
96AC_MSG_CHECKING(for --with-universal-archs)
97AC_ARG_WITH(universal-archs,
98 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
99[
100 AC_MSG_RESULT($withval)
101 UNIVERSAL_ARCHS="$withval"
102],
103[
104 AC_MSG_RESULT(32-bit)
105])
106
107
108
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000109AC_ARG_WITH(framework-name,
110 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
111 specify an alternate name of the framework built with --enable-framework),
112[
113 PYTHONFRAMEWORK=${withval}
114 PYTHONFRAMEWORKDIR=${withval}.framework
115 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
116 ],[
117 PYTHONFRAMEWORK=Python
118 PYTHONFRAMEWORKDIR=Python.framework
119 PYTHONFRAMEWORKIDENTIFIER=org.python.python
120])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000121dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000122AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000123 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
124[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000125 case $enableval in
126 yes)
127 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000128 esac
129 case $enableval in
130 no)
131 PYTHONFRAMEWORK=
132 PYTHONFRAMEWORKDIR=no-framework
133 PYTHONFRAMEWORKPREFIX=
134 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000135 FRAMEWORKINSTALLFIRST=
136 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000137 FRAMEWORKALTINSTALLFIRST=
138 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000139 if test "x${prefix}" = "xNONE"; then
140 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
141 else
142 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
143 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000144 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000145 ;;
146 *)
147 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000148 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000149 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000150 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
151 if test "$UNIVERSAL_ARCHS" = "all"
152 then
153 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
154 else
155 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
156 fi
157
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000158 if test "x${prefix}" = "xNONE" ; then
159 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
160 else
161 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
162 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000163 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000164
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000165 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000166 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000167 AC_CONFIG_FILES(Mac/Makefile)
168 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
169 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000170 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
171 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000172 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000173 ],[
174 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000175 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000176 PYTHONFRAMEWORKPREFIX=
177 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000178 FRAMEWORKINSTALLFIRST=
179 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000180 FRAMEWORKALTINSTALLFIRST=
181 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000182 if test "x${prefix}" = "xNONE" ; then
183 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
184 else
185 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
186 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000187 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000188
189 if test "$UNIVERSAL_ARCHS" = "all"
190 then
191 FRAMEWORKINSTALLLAST=update4wayuniversal
192 FRAMEWORKALTINSTALLLAST=update4wayuniversal
193 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000194])
195AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000196AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000197AC_SUBST(PYTHONFRAMEWORKDIR)
198AC_SUBST(PYTHONFRAMEWORKPREFIX)
199AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000200AC_SUBST(FRAMEWORKINSTALLFIRST)
201AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000202AC_SUBST(FRAMEWORKALTINSTALLFIRST)
203AC_SUBST(FRAMEWORKALTINSTALLLAST)
204AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000205
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000206##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000207## AC_HELP_STRING(--with-dyld,
208## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000209##
Guido van Rossumb418f891996-07-30 18:06:02 +0000210# Set name for machine-dependent library files
211AC_SUBST(MACHDEP)
212AC_MSG_CHECKING(MACHDEP)
213if test -z "$MACHDEP"
214then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000215 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000216 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
217 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000218 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000219 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000220 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000221 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000222 ac_md_system=`echo $ac_sys_system |
223 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
224 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000225 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000226 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000227
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000228 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000229 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000230 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000231 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000232 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000233 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000234 esac
235fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000236
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000237# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
238# disable features if it is defined, without any means to access these
239# features as extensions. For these systems, we skip the definition of
240# _XOPEN_SOURCE. Before adding a system to the list to gain access to
241# some feature, make sure there is no alternative way to access this
242# feature. Also, when using wildcards, make sure you have verified the
243# need for not defining _XOPEN_SOURCE on all systems matching the
244# wildcard, and that the wildcard does not include future systems
245# (which may remove their limitations).
246dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
247case $ac_sys_system/$ac_sys_release in
248 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
249 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000250 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Neal Norwitz2a3e3d02008-06-06 04:47:01 +0000251 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000252 define_xopen_source=no
253 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
254 # also defined. This can be overridden by defining _BSD_SOURCE
255 # As this has a different meaning on Linux, only define it on OpenBSD
256 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
257 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000258 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
259 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
260 # Marc Recht
261 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6[A-S])
262 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000263 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
264 # of union __?sigval. Reported by Stuart Bishop.
265 SunOS/5.6)
266 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000267 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
268 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000269 # Reconfirmed for 7.1.4 by Martin v. Loewis.
270 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000271 define_xopen_source=no;;
272 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000273 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000274 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000275 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000276 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
277 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
278 # this is fixed in 10.3, which identifies itself as Darwin/7.*
279 # This should hopefully be fixed in FreeBSD 4.9
280 FreeBSD/4.8* | Darwin/6* )
281 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000282 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
283 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
284 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000285 AIX/4)
286 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000287 AIX/5)
288 if test `uname -r` -eq 1; then
289 define_xopen_source=no
290 fi
291 ;;
Neal Norwitze8fb9922006-04-04 05:32:17 +0000292 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
293 # disables platform specific features beyond repair.
Martin v. Löwisa0588362006-04-04 06:03:50 +0000294 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Neal Norwitz7659f0f2006-06-12 02:09:03 +0000295 # has no effect, don't bother defining them
Ronald Oussorenc95f7562006-08-09 14:56:33 +0000296 Darwin/@<:@789@:>@.*)
Neal Norwitze8fb9922006-04-04 05:32:17 +0000297 define_xopen_source=no
298 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000299 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
300 # defining NI_NUMERICHOST.
301 QNX/6.3.2)
302 define_xopen_source=no
303 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000304
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000305esac
306
307if test $define_xopen_source = yes
308then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000309 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
310 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000311 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
312 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000313 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000314 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000315 AC_DEFINE(_XOPEN_SOURCE, 500,
316 Define to the level of X/Open that your system supports)
317 ;;
318 *)
319 AC_DEFINE(_XOPEN_SOURCE, 600,
320 Define to the level of X/Open that your system supports)
321 ;;
322 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000323
324 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
325 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
326 # several APIs are not declared. Since this is also needed in some
327 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000328 # except for Solaris 10, where it must not be defined,
329 # as it implies XPG4.2
330 case $ac_sys_system/$ac_sys_release in
331 SunOS/5.10)
332 ;;
333 *)
334 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
335 Define to activate Unix95-and-earlier features)
336 ;;
337 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000338
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000339 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
340
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000341fi
342
Guido van Rossum91922671997-10-09 20:24:13 +0000343#
344# SGI compilers allow the specification of the both the ABI and the
345# ISA on the command line. Depending on the values of these switches,
346# different and often incompatable code will be generated.
347#
348# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
349# thus supply support for various ABI/ISA combinations. The MACHDEP
350# variable is also adjusted.
351#
352AC_SUBST(SGI_ABI)
353if test ! -z "$SGI_ABI"
354then
355 CC="cc $SGI_ABI"
356 LDFLAGS="$SGI_ABI $LDFLAGS"
357 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
358fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000359AC_MSG_RESULT($MACHDEP)
360
Jack Jansen83f898c2002-12-30 22:23:40 +0000361# And add extra plat-mac for darwin
362AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000363AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000364AC_MSG_CHECKING(EXTRAPLATDIR)
365if test -z "$EXTRAPLATDIR"
366then
367 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000368 darwin)
369 EXTRAPLATDIR="\$(PLATMACDIRS)"
370 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
371 ;;
372 *)
373 EXTRAPLATDIR=""
374 EXTRAMACHDEPPATH=""
375 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000376 esac
377fi
378AC_MSG_RESULT($EXTRAPLATDIR)
379
Jack Jansen6b08a402004-06-03 12:41:45 +0000380# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
381# it may influence the way we can build extensions, so distutils
382# needs to check it
383AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000384AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000385CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000386EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000387
Mark Dickinson65134662008-04-25 16:11:04 +0000388AC_MSG_CHECKING(machine type as reported by uname -m)
389ac_sys_machine=`uname -m`
390AC_MSG_RESULT($ac_sys_machine)
391
Guido van Rossum627b2d71993-12-24 10:39:16 +0000392# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000393
394# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
395# for debug/optimization stuff. BASECFLAGS is for flags that are required
396# just to get things to compile and link. Users are free to override OPT
397# when running configure or make. The build should not break if they do.
398# BASECFLAGS should generally not be messed with, however.
399
400# XXX shouldn't some/most/all of this code be merged with the stuff later
401# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000402AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000403AC_ARG_WITH(gcc,
404 AC_HELP_STRING(--without-gcc,never use gcc),
405[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000406 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000407 no) CC=cc
408 without_gcc=yes;;
409 yes) CC=gcc
410 without_gcc=no;;
411 *) CC=$withval
412 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000413 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000414 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000415 AIX*) CC=cc_r
416 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000417 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000418 case $BE_HOST_CPU in
419 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000420 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000421 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000422 BASECFLAGS="$BASECFLAGS -export pragma"
423 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000424 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000425 ;;
426 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000427 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000428 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000429 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000430 ;;
431 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000432 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000433 ;;
434 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000435 AR="\$(srcdir)/Modules/ar_beos"
436 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000437 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000438 Monterey*)
439 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000440 without_gcc=;;
441 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000442 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000443AC_MSG_RESULT($without_gcc)
444
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000445# If the user switches compilers, we can't believe the cache
446if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
447then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000448 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
449(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000450fi
451
Guido van Rossum627b2d71993-12-24 10:39:16 +0000452AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000453
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000454AC_SUBST(CXX)
455AC_SUBST(MAINCC)
456AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
457AC_ARG_WITH(cxx_main,
458 AC_HELP_STRING([--with-cxx-main=<compiler>],
459 [compile main() and link python executable with C++ compiler]),
460[
461
462 case $withval in
463 no) with_cxx_main=no
464 MAINCC='$(CC)';;
465 yes) with_cxx_main=yes
466 MAINCC='$(CXX)';;
467 *) with_cxx_main=yes
468 MAINCC=$withval
469 if test -z "$CXX"
470 then
471 CXX=$withval
472 fi;;
473 esac], [
474 with_cxx_main=no
475 MAINCC='$(CC)'
476])
477AC_MSG_RESULT($with_cxx_main)
478
479preset_cxx="$CXX"
480if test -z "$CXX"
481then
482 case "$CC" in
483 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
484 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
485 esac
486 if test "$CXX" = "notfound"
487 then
488 CXX=""
489 fi
490fi
491if test -z "$CXX"
492then
493 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
494 if test "$CXX" = "notfound"
495 then
496 CXX=""
497 fi
498fi
499if test "$preset_cxx" != "$CXX"
500then
501 AC_MSG_WARN([
502
503 By default, distutils will build C++ extension modules with "$CXX".
504 If this is not intended, then set CXX on the configure command line.
505 ])
506fi
507
508
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000509# checks for UNIX variants that set C preprocessor variables
510AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000511
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000512# Check for unsupported systems
513case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000514atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000515 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
516 echo See README for details.
517 exit 1;;
518esac
519
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000520AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000521AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000522AC_ARG_WITH(suffix,
523 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
524[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000525 case $withval in
526 no) EXEEXT=;;
527 yes) EXEEXT=.exe;;
528 *) EXEEXT=$withval;;
529 esac])
530AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000531
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000532# Test whether we're running on a non-case-sensitive system, in which
533# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000534AC_SUBST(BUILDEXEEXT)
535AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000536if test ! -d CaseSensitiveTestDir; then
537mkdir CaseSensitiveTestDir
538fi
539
540if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000541then
Jack Jansen1999ef42001-12-06 21:47:20 +0000542 AC_MSG_RESULT(yes)
543 BUILDEXEEXT=.exe
544else
545 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000546 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000547fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000548rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000549
Guido van Rossumdd997f71998-10-07 19:58:26 +0000550case $MACHDEP in
551bsdos*)
552 case $CC in
553 gcc) CC="$CC -D_HAVE_BSDI";;
554 esac;;
555esac
556
Guido van Rossum84561611997-08-21 00:08:11 +0000557case $ac_sys_system in
558hp*|HP*)
559 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000560 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000561 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000562Monterey*)
563 case $CC in
564 cc) CC="$CC -Wl,-Bexport";;
565 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000566SunOS*)
567 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000568 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000569 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000570esac
571
Martin v. Löwise8964d42001-03-06 12:09:07 +0000572
Neil Schemenauer61c51152001-01-26 16:18:16 +0000573AC_SUBST(LIBRARY)
574AC_MSG_CHECKING(LIBRARY)
575if test -z "$LIBRARY"
576then
577 LIBRARY='libpython$(VERSION).a'
578fi
579AC_MSG_RESULT($LIBRARY)
580
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000581# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000582# name of the library into which to insert object files). BLDLIBRARY is also
583# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
584# is blank as the main program is not linked directly against LDLIBRARY.
585# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
586# systems without shared libraries, LDLIBRARY is the same as LIBRARY
587# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
588# DLLLIBRARY is the shared (i.e., DLL) library.
589#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000590# RUNSHARED is used to run shared python without installed libraries
591#
592# INSTSONAME is the name of the shared library that will be use to install
593# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000594AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000595AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000596AC_SUBST(BLDLIBRARY)
597AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000598AC_SUBST(INSTSONAME)
599AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000600LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000601BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000602INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000603DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000604LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000605RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000606
Guido van Rossumfb842551997-08-06 23:42:07 +0000607# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000608# If CXX is set, and if it is needed to link a main function that was
609# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
610# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000611# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000612# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000613AC_SUBST(LINKCC)
614AC_MSG_CHECKING(LINKCC)
615if test -z "$LINKCC"
616then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000617 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000618 case $ac_sys_system in
619 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000620 exp_extra="\"\""
621 if test $ac_sys_release -ge 5 -o \
622 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
623 exp_extra="."
624 fi
625 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000626 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000627 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000628 QNX*)
629 # qcc must be used because the other compilers do not
630 # support -N.
631 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000632 esac
633fi
634AC_MSG_RESULT($LINKCC)
635
Martin v. Löwis1142de32002-03-29 16:28:31 +0000636AC_MSG_CHECKING(for --enable-shared)
637AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000638 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000639
Martin v. Löwis1142de32002-03-29 16:28:31 +0000640if test -z "$enable_shared"
641then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000642 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000643 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000644 enable_shared="yes";;
645 *)
646 enable_shared="no";;
647 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000648fi
649AC_MSG_RESULT($enable_shared)
650
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000651AC_MSG_CHECKING(for --enable-profiling)
652AC_ARG_ENABLE(profiling,
653 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
654[ac_save_cc="$CC"
655 CC="$CC -pg"
656 AC_TRY_RUN([int main() { return 0; }],
657 ac_enable_profiling="yes",
658 ac_enable_profiling="no",
659 ac_enable_profiling="no")
660 CC="$ac_save_cc"])
661AC_MSG_RESULT($ac_enable_profiling)
662
663case "$ac_enable_profiling" in
664 "yes")
665 BASECFLAGS="-pg $BASECFLAGS"
666 LDFLAGS="-pg $LDFLAGS"
667 ;;
668esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000669
670AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000671
Guido van Rossumb8552162001-09-05 14:58:11 +0000672# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
673# library that we build, but we do not want to link against it (we
674# will find it with a -framework option). For this reason there is an
675# extra variable BLDLIBRARY against which Python and the extension
676# modules are linked, BLDLIBRARY. This is normally the same as
677# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000678if test "$enable_framework"
679then
680 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000681 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000682 BLDLIBRARY=''
683else
684 BLDLIBRARY='$(LDLIBRARY)'
685fi
686
Martin v. Löwis1142de32002-03-29 16:28:31 +0000687# Other platforms follow
688if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000689 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000690 case $ac_sys_system in
691 BeOS*)
692 LDLIBRARY='libpython$(VERSION).so'
693 ;;
694 CYGWIN*)
695 LDLIBRARY='libpython$(VERSION).dll.a'
696 DLLLIBRARY='libpython$(VERSION).dll'
697 ;;
698 SunOS*)
699 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000700 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000701 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000702 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000703 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000704 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000705 LDLIBRARY='libpython$(VERSION).so'
706 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000707 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000708 case $ac_sys_system in
709 FreeBSD*)
710 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
711 ;;
712 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000713 INSTSONAME="$LDLIBRARY".$SOVERSION
714 ;;
715 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000716 case `uname -m` in
717 ia64)
718 LDLIBRARY='libpython$(VERSION).so'
719 ;;
720 *)
721 LDLIBRARY='libpython$(VERSION).sl'
722 ;;
723 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000724 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000725 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000726 ;;
727 OSF*)
728 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000729 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000730 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000731 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000732 atheos*)
733 LDLIBRARY='libpython$(VERSION).so'
734 BLDLIBRARY='-L. -lpython$(VERSION)'
735 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
736 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000737 esac
Jason Tishler30765592003-09-04 11:04:06 +0000738else # shared is disabled
739 case $ac_sys_system in
740 CYGWIN*)
741 BLDLIBRARY='$(LIBRARY)'
742 LDLIBRARY='libpython$(VERSION).dll.a'
743 ;;
744 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000745fi
746
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000747AC_MSG_RESULT($LDLIBRARY)
748
Guido van Rossum627b2d71993-12-24 10:39:16 +0000749AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000750AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000751AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000752
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000753AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000754AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000755if test $SVNVERSION = found
756then
757 SVNVERSION="svnversion \$(srcdir)"
758else
759 SVNVERSION="echo exported"
760fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000761
Neil Schemenauera42c8272001-03-31 00:01:55 +0000762case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000763bsdos*|hp*|HP*)
764 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000765 if test -z "$INSTALL"
766 then
767 INSTALL="${srcdir}/install-sh -c"
768 fi
769esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000770AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000771
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000772# Not every filesystem supports hard links
773AC_SUBST(LN)
774if test -z "$LN" ; then
775 case $ac_sys_system in
776 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000777 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000778 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000779 *) LN=ln;;
780 esac
781fi
782
Fred Drake9f715822001-07-11 06:27:00 +0000783# Check for --with-pydebug
784AC_MSG_CHECKING(for --with-pydebug)
785AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000786 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
787[
Fred Drake9f715822001-07-11 06:27:00 +0000788if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000789then
790 AC_DEFINE(Py_DEBUG, 1,
791 [Define if you want to build an interpreter with many run-time checks.])
792 AC_MSG_RESULT(yes);
793 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000794else AC_MSG_RESULT(no); Py_DEBUG='false'
795fi],
796[AC_MSG_RESULT(no)])
797
Skip Montanarodecc6a42003-01-01 20:07:49 +0000798# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
799# merged with this chunk of code?
800
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000801# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000802# ------------------------
803# (The following bit of code is complicated enough - please keep things
804# indented properly. Just pretend you're editing Python code. ;-)
805
806# There are two parallel sets of case statements below, one that checks to
807# see if OPT was set and one that does BASECFLAGS setting based upon
808# compiler and platform. BASECFLAGS tweaks need to be made even if the
809# user set OPT.
810
811# tweak OPT based on compiler and platform, only if the user didn't set
812# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000813AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000814if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000815then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000816 case $GCC in
817 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000818 if test "$CC" != 'g++' ; then
819 STRICT_PROTO="-Wstrict-prototypes"
820 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000821 # For gcc 4.x we need to use -fwrapv so lets check if its supported
822 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
823 WRAP="-fwrapv"
824 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000825 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000826 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000827 if test "$Py_DEBUG" = 'true' ; then
828 # Optimization messes up debuggers, so turn it off for
829 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000830 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000831 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000832 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000833 fi
834 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000835 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000836 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000837 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000838 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000839 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000840 SCO_SV*) OPT="$OPT -m486 -DSCO5"
841 ;;
842 esac
Fred Drake9f715822001-07-11 06:27:00 +0000843 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000844
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000845 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000846 OPT="-O"
847 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000848 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000849
850 # The current (beta) Monterey compiler dies with optimizations
851 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000852 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000853 Monterey*)
854 OPT=""
855 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000856 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000857
Guido van Rossum4e8af441994-08-19 15:33:54 +0000858fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000859
Skip Montanarodecc6a42003-01-01 20:07:49 +0000860AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000861
862# The -arch flags for universal builds on OSX
863UNIVERSAL_ARCH_FLAGS=
864AC_SUBST(UNIVERSAL_ARCH_FLAGS)
865
Skip Montanarodecc6a42003-01-01 20:07:49 +0000866# tweak BASECFLAGS based on compiler and platform
867case $GCC in
868yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000869 # Python violates C99 rules, by casting between incompatible
870 # pointer types. GCC may generate bad code as a result of that,
871 # so use -fno-strict-aliasing if supported.
872 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
873 ac_save_cc="$CC"
874 CC="$CC -fno-strict-aliasing"
875 AC_TRY_RUN([int main() { return 0; }],
876 ac_cv_no_strict_aliasing_ok=yes,
877 ac_cv_no_strict_aliasing_ok=no,
878 ac_cv_no_strict_aliasing_ok=no)
879 CC="$ac_save_cc"
880 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
881 if test $ac_cv_no_strict_aliasing_ok = yes
882 then
883 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
884 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000885
886 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
887 # support. Without this, treatment of subnormals doesn't follow
888 # the standard.
889 case $ac_sys_machine in
890 alpha*)
891 BASECFLAGS="$BASECFLAGS -mieee"
892 ;;
893 esac
894
Skip Montanarodecc6a42003-01-01 20:07:49 +0000895 case $ac_sys_system in
896 SCO_SV*)
897 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
898 ;;
899 # is there any other compiler on Darwin besides gcc?
900 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000901 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
902 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussoren988117f2006-04-29 11:31:35 +0000903 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000904 UNIVERSAL_ARCH_FLAGS=""
905 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
906 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
907
908 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
909 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
910
911 elif test "$UNIVERSAL_ARCHS" = "all" ; then
912 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
913
914 else
915 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
916
917 fi
918
919
920 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Ronald Oussoren0d236eb2008-06-06 21:31:33 +0000921 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +0000922 fi
923
Skip Montanarodecc6a42003-01-01 20:07:49 +0000924 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000925 OSF*)
926 BASECFLAGS="$BASECFLAGS -mieee"
927 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000928 esac
929 ;;
930
931*)
932 case $ac_sys_system in
933 OpenUNIX*|UnixWare*)
934 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
935 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000936 OSF*)
937 BASECFLAGS="$BASECFLAGS -ieee -std"
938 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000939 SCO_SV*)
940 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
941 ;;
942 esac
943 ;;
944esac
945
Fred Drakee1ceaa02001-12-04 20:55:47 +0000946if test "$Py_DEBUG" = 'true'; then
947 :
948else
949 OPT="-DNDEBUG $OPT"
950fi
951
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000952if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000953then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000954 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000955fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000956
Neal Norwitz020c46a2006-01-07 21:39:28 +0000957# disable check for icc since it seems to pass, but generates a warning
958if test "$CC" = icc
959then
960 ac_cv_opt_olimit_ok=no
961fi
962
Guido van Rossum91922671997-10-09 20:24:13 +0000963AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
964AC_CACHE_VAL(ac_cv_opt_olimit_ok,
965[ac_save_cc="$CC"
966CC="$CC -OPT:Olimit=0"
967AC_TRY_RUN([int main() { return 0; }],
968 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000969 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000970 ac_cv_opt_olimit_ok=no)
971CC="$ac_save_cc"])
972AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000973if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000974 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000975 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
976 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
977 # environment?
978 Darwin*)
979 ;;
980 *)
981 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
982 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000983 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000984else
985 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
986 AC_CACHE_VAL(ac_cv_olimit_ok,
987 [ac_save_cc="$CC"
988 CC="$CC -Olimit 1500"
989 AC_TRY_RUN([int main() { return 0; }],
990 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000991 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000992 ac_cv_olimit_ok=no)
993 CC="$ac_save_cc"])
994 AC_MSG_RESULT($ac_cv_olimit_ok)
995 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000996 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000997 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000998fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000999
Martin v. Löwisaac13162006-10-19 10:58:46 +00001000# Check whether GCC supports PyArg_ParseTuple format
1001if test "$GCC" = "yes"
1002then
1003 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1004 save_CFLAGS=$CFLAGS
1005 CFLAGS="$CFLAGS -Werror"
1006 AC_TRY_COMPILE([
1007 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1008 ],,
1009 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1010 AC_MSG_RESULT(yes),
1011 AC_MSG_RESULT(no)
1012 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001013 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001014fi
1015
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001016# On some compilers, pthreads are available without further options
1017# (e.g. MacOS X). On some of these systems, the compiler will not
1018# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1019# So we have to see first whether pthreads are available without
1020# options before we can check whether -Kpthread improves anything.
1021AC_MSG_CHECKING(whether pthreads are available without options)
1022AC_CACHE_VAL(ac_cv_pthread_is_default,
1023[AC_TRY_RUN([
1024#include <pthread.h>
1025
1026void* routine(void* p){return NULL;}
1027
1028int main(){
1029 pthread_t p;
1030 if(pthread_create(&p,NULL,routine,NULL)!=0)
1031 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001032 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001033 return 0;
1034}
1035],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001036[
1037 ac_cv_pthread_is_default=yes
1038 ac_cv_kthread=no
1039 ac_cv_pthread=no
1040],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001041 ac_cv_pthread_is_default=no,
1042 ac_cv_pthread_is_default=no)
1043])
1044AC_MSG_RESULT($ac_cv_pthread_is_default)
1045
1046
1047if test $ac_cv_pthread_is_default = yes
1048then
1049 ac_cv_kpthread=no
1050else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001051# -Kpthread, if available, provides the right #defines
1052# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001053# Some compilers won't report that they do not support -Kpthread,
1054# so we need to run a program to see whether it really made the
1055# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001056AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1057AC_CACHE_VAL(ac_cv_kpthread,
1058[ac_save_cc="$CC"
1059CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001060AC_TRY_RUN([
1061#include <pthread.h>
1062
1063void* routine(void* p){return NULL;}
1064
1065int main(){
1066 pthread_t p;
1067 if(pthread_create(&p,NULL,routine,NULL)!=0)
1068 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001069 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001070 return 0;
1071}
1072],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001073 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001074 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001075 ac_cv_kpthread=no)
1076CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001077AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001078fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001079
Skip Montanarod8d39a02003-07-10 20:44:10 +00001080if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001081then
1082# -Kthread, if available, provides the right #defines
1083# and linker options to make pthread_create available
1084# Some compilers won't report that they do not support -Kthread,
1085# so we need to run a program to see whether it really made the
1086# function available.
1087AC_MSG_CHECKING(whether $CC accepts -Kthread)
1088AC_CACHE_VAL(ac_cv_kthread,
1089[ac_save_cc="$CC"
1090CC="$CC -Kthread"
1091AC_TRY_RUN([
1092#include <pthread.h>
1093
1094void* routine(void* p){return NULL;}
1095
1096int main(){
1097 pthread_t p;
1098 if(pthread_create(&p,NULL,routine,NULL)!=0)
1099 return 1;
1100 (void)pthread_detach(p);
1101 return 0;
1102}
1103],
1104 ac_cv_kthread=yes,
1105 ac_cv_kthread=no,
1106 ac_cv_kthread=no)
1107CC="$ac_save_cc"])
1108AC_MSG_RESULT($ac_cv_kthread)
1109fi
1110
Skip Montanarod8d39a02003-07-10 20:44:10 +00001111if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001112then
1113# -pthread, if available, provides the right #defines
1114# and linker options to make pthread_create available
1115# Some compilers won't report that they do not support -pthread,
1116# so we need to run a program to see whether it really made the
1117# function available.
1118AC_MSG_CHECKING(whether $CC accepts -pthread)
1119AC_CACHE_VAL(ac_cv_thread,
1120[ac_save_cc="$CC"
1121CC="$CC -pthread"
1122AC_TRY_RUN([
1123#include <pthread.h>
1124
1125void* routine(void* p){return NULL;}
1126
1127int main(){
1128 pthread_t p;
1129 if(pthread_create(&p,NULL,routine,NULL)!=0)
1130 return 1;
1131 (void)pthread_detach(p);
1132 return 0;
1133}
1134],
1135 ac_cv_pthread=yes,
1136 ac_cv_pthread=no,
1137 ac_cv_pthread=no)
1138CC="$ac_save_cc"])
1139AC_MSG_RESULT($ac_cv_pthread)
1140fi
1141
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001142# If we have set a CC compiler flag for thread support then
1143# check if it works for CXX, too.
1144ac_cv_cxx_thread=no
1145if test ! -z "$CXX"
1146then
1147AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1148ac_save_cxx="$CXX"
1149
1150if test "$ac_cv_kpthread" = "yes"
1151then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001152 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001153 ac_cv_cxx_thread=yes
1154elif test "$ac_cv_kthread" = "yes"
1155then
1156 CXX="$CXX -Kthread"
1157 ac_cv_cxx_thread=yes
1158elif test "$ac_cv_pthread" = "yes"
1159then
1160 CXX="$CXX -pthread"
1161 ac_cv_cxx_thread=yes
1162fi
1163
1164if test $ac_cv_cxx_thread = yes
1165then
1166 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1167 $CXX -c conftest.$ac_ext 2>&5
1168 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1169 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1170 then
1171 ac_cv_cxx_thread=yes
1172 else
1173 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001174 fi
1175 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001176fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001177AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001178fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001179CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001180
Fred Drakece81d592000-07-09 14:39:29 +00001181dnl # check for ANSI or K&R ("traditional") preprocessor
1182dnl AC_MSG_CHECKING(for C preprocessor type)
1183dnl AC_TRY_COMPILE([
1184dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1185dnl int foo;
1186dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1187dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1188dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001189
Guido van Rossum627b2d71993-12-24 10:39:16 +00001190# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001191AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001192AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1193fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001194ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001195shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001196unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001197sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1198sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001199sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001200sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001201sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Martin v. Löwis0347a9a2006-10-27 07:06:52 +00001202sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001203bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001204AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001205AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001206
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001207# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001208AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001209#ifdef HAVE_CURSES_H
1210#include <curses.h>
1211#endif
1212])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001213
Martin v. Löwis11017b12006-01-14 18:12:57 +00001214# On Linux, netlink.h requires asm/types.h
1215AC_CHECK_HEADERS(linux/netlink.h,,,[
1216#ifdef HAVE_ASM_TYPES_H
1217#include <asm/types.h>
1218#endif
1219#ifdef HAVE_SYS_SOCKET_H
1220#include <sys/socket.h>
1221#endif
1222])
1223
Guido van Rossum627b2d71993-12-24 10:39:16 +00001224# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001225was_it_defined=no
1226AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001227AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1228 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1229])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001230AC_MSG_RESULT($was_it_defined)
1231
Neal Norwitz11690112002-07-30 01:08:28 +00001232# Check whether using makedev requires defining _OSF_SOURCE
1233AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001234AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001235 [ makedev(0, 0) ],
1236 ac_cv_has_makedev=yes,
1237 ac_cv_has_makedev=no)
1238if test "$ac_cv_has_makedev" = "no"; then
1239 # we didn't link, try if _OSF_SOURCE will allow us to link
1240 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001241#define _OSF_SOURCE 1
1242#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001243 ],
1244 [ makedev(0, 0) ],
1245 ac_cv_has_makedev=yes,
1246 ac_cv_has_makedev=no)
1247 if test "$ac_cv_has_makedev" = "yes"; then
1248 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1249 fi
1250fi
1251AC_MSG_RESULT($ac_cv_has_makedev)
1252if test "$ac_cv_has_makedev" = "yes"; then
1253 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1254fi
1255
Martin v. Löwis399a6892002-10-04 10:22:02 +00001256# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1257# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1258# defined, but the compiler does not support pragma redefine_extname,
1259# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1260# structures (such as rlimit64) without declaring them. As a
1261# work-around, disable LFS on such configurations
1262
1263use_lfs=yes
1264AC_MSG_CHECKING(Solaris LFS bug)
1265AC_TRY_COMPILE([
1266#define _LARGEFILE_SOURCE 1
1267#define _FILE_OFFSET_BITS 64
1268#include <sys/resource.h>
1269],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1270AC_MSG_RESULT($sol_lfs_bug)
1271if test "$sol_lfs_bug" = "yes"; then
1272 use_lfs=no
1273fi
1274
1275if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001276# Two defines needed to enable largefile support on various platforms
1277# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001278AC_DEFINE(_LARGEFILE_SOURCE, 1,
1279[This must be defined on some systems to enable large file support.])
1280AC_DEFINE(_FILE_OFFSET_BITS, 64,
1281[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001282fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001283
Guido van Rossum300fda71996-08-19 21:58:16 +00001284# Add some code to confdefs.h so that the test for off_t works on SCO
1285cat >> confdefs.h <<\EOF
1286#if defined(SCO_DS)
1287#undef _OFF_T
1288#endif
1289EOF
1290
Guido van Rossumef2255b2000-03-10 22:30:29 +00001291# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001292AC_TYPE_MODE_T
1293AC_TYPE_OFF_T
1294AC_TYPE_PID_T
1295AC_TYPE_SIGNAL
1296AC_TYPE_SIZE_T
1297AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001298AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001299 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001300
Guido van Rossumef2255b2000-03-10 22:30:29 +00001301# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001302# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001303AC_CHECK_SIZEOF(int, 4)
1304AC_CHECK_SIZEOF(long, 4)
1305AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001306AC_CHECK_SIZEOF(short, 2)
1307AC_CHECK_SIZEOF(float, 4)
1308AC_CHECK_SIZEOF(double, 8)
1309AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001310AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001311AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001312
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001313AC_MSG_CHECKING(for long long support)
1314have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001315AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1316 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1317 have_long_long=yes
1318])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001319AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001320if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001321AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001322fi
1323
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001324AC_MSG_CHECKING(for long double support)
1325have_long_double=no
1326AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1327 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1328 have_long_double=yes
1329])
1330AC_MSG_RESULT($have_long_double)
1331if test "$have_long_long" = yes ; then
1332AC_CHECK_SIZEOF(long double, 12)
1333fi
1334
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001335AC_MSG_CHECKING(for _Bool support)
1336have_c99_bool=no
1337AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1338 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1339 have_c99_bool=yes
1340])
1341AC_MSG_RESULT($have_c99_bool)
1342if test "$have_c99_bool" = yes ; then
1343AC_CHECK_SIZEOF(_Bool, 1)
1344fi
1345
Martin v. Löwisebe26702006-10-02 14:55:51 +00001346AC_CHECK_TYPES(uintptr_t,
1347 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001348 [], [#ifdef HAVE_STDINT_H
1349 #include <stdint.h>
1350 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001351
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001352
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001353# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1354AC_MSG_CHECKING(size of off_t)
1355AC_CACHE_VAL(ac_cv_sizeof_off_t,
1356[AC_TRY_RUN([#include <stdio.h>
1357#include <sys/types.h>
1358main()
1359{
1360 FILE *f=fopen("conftestval", "w");
1361 if (!f) exit(1);
1362 fprintf(f, "%d\n", sizeof(off_t));
1363 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001364}],
1365ac_cv_sizeof_off_t=`cat conftestval`,
1366ac_cv_sizeof_off_t=0,
1367ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001368])
1369AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001370AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1371[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001372
1373AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001374if test "$have_long_long" = yes -a \
1375 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1376 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001377 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1378 [Defined to enable large file support when an off_t is bigger than a long
1379 and long long is available and at least as big as an off_t. You may need
1380 to add some flags for configuration and compilation to enable this mode.
1381 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001382 AC_MSG_RESULT(yes)
1383else
1384 AC_MSG_RESULT(no)
1385fi
1386
Fred Drakea3f6e912000-06-29 20:44:47 +00001387# AC_CHECK_SIZEOF() doesn't include <time.h>.
1388AC_MSG_CHECKING(size of time_t)
1389AC_CACHE_VAL(ac_cv_sizeof_time_t,
1390[AC_TRY_RUN([#include <stdio.h>
1391#include <time.h>
1392main()
1393{
1394 FILE *f=fopen("conftestval", "w");
1395 if (!f) exit(1);
1396 fprintf(f, "%d\n", sizeof(time_t));
1397 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001398}],
1399ac_cv_sizeof_time_t=`cat conftestval`,
1400ac_cv_sizeof_time_t=0,
1401ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001402])
1403AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001404AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1405[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001406
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001407
Trent Mick635f6fb2000-08-23 21:33:05 +00001408# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001409ac_save_cc="$CC"
1410if test "$ac_cv_kpthread" = "yes"
1411then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001412elif test "$ac_cv_kthread" = "yes"
1413then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001414elif test "$ac_cv_pthread" = "yes"
1415then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001416fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001417AC_MSG_CHECKING(for pthread_t)
1418have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001419AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001420AC_MSG_RESULT($have_pthread_t)
1421if test "$have_pthread_t" = yes ; then
1422 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1423 AC_MSG_CHECKING(size of pthread_t)
1424 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1425 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001426#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001427 main()
1428 {
1429 FILE *f=fopen("conftestval", "w");
1430 if (!f) exit(1);
1431 fprintf(f, "%d\n", sizeof(pthread_t));
1432 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001433 }],
1434 ac_cv_sizeof_pthread_t=`cat conftestval`,
1435 ac_cv_sizeof_pthread_t=0,
1436 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001437 ])
1438 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001439 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1440 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001441fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001442CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001443
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001444AC_MSG_CHECKING(for --enable-toolbox-glue)
1445AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001446 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001447
1448if test -z "$enable_toolbox_glue"
1449then
1450 case $ac_sys_system/$ac_sys_release in
1451 Darwin/*)
1452 enable_toolbox_glue="yes";;
1453 *)
1454 enable_toolbox_glue="no";;
1455 esac
1456fi
1457case "$enable_toolbox_glue" in
1458yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001459 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001460 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001461 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1462 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001463 ;;
1464*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001465 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001466 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001467 ;;
1468esac
1469AC_MSG_RESULT($enable_toolbox_glue)
1470
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001471
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001472AC_SUBST(OTHER_LIBTOOL_OPT)
1473case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001474 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001475 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1476 ;;
1477 Darwin/*)
1478 OTHER_LIBTOOL_OPT=""
1479 ;;
1480esac
1481
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001482AC_SUBST(LIBTOOL_CRUFT)
1483case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001484 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001485 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1486 if test "${enable_universalsdk}"; then
1487 :
1488 else
1489 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1490 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001491 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001492 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001493 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001494 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1495 if test ${gcc_version} '<' 4.0
1496 then
1497 LIBTOOL_CRUFT="-lcc_dynamic"
1498 else
1499 LIBTOOL_CRUFT=""
1500 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001501 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001502 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001503 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001504esac
1505
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001506AC_MSG_CHECKING(for --enable-framework)
1507if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001508then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001509 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001510 # -F. is needed to allow linking to the framework while
1511 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001512 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1513 [Define if you want to produce an OpenStep/Rhapsody framework
1514 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001515 AC_MSG_RESULT(yes)
1516else
1517 AC_MSG_RESULT(no)
1518fi
1519
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001520AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001521case $ac_sys_system/$ac_sys_release in
1522 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001523 AC_DEFINE(WITH_DYLD, 1,
1524 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1525 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1526 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001527 AC_MSG_RESULT(always on for Darwin)
1528 ;;
1529 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001530 AC_MSG_RESULT(no)
1531 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001532esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001533
Guido van Rossumac405f61994-09-12 10:56:06 +00001534# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001535AC_SUBST(SO)
1536AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001537AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001538AC_SUBST(CCSHARED)
1539AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001540# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001541# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001542AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001543if test -z "$SO"
1544then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001545 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001546 hp*|HP*)
1547 case `uname -m` in
1548 ia64) SO=.so;;
1549 *) SO=.sl;;
1550 esac
1551 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001552 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001553 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001554 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001555else
1556 # this might also be a termcap variable, see #610332
1557 echo
1558 echo '====================================================================='
1559 echo '+ +'
1560 echo '+ WARNING: You have set SO in your environment. +'
1561 echo '+ Do you really mean to change the extension for shared libraries? +'
1562 echo '+ Continuing in 10 seconds to let you to ponder. +'
1563 echo '+ +'
1564 echo '====================================================================='
1565 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001566fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001567AC_MSG_RESULT($SO)
Neal Norwitz58e28882006-05-19 07:00:58 +00001568AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001569# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001570# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001571# (Shared libraries in this instance are shared modules to be loaded into
1572# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001573AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001574if test -z "$LDSHARED"
1575then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001576 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001577 AIX*)
1578 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001579 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001580 ;;
1581 BeOS*)
1582 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001583 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001584 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001585 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001586 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001587 SunOS/5*)
1588 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001589 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001590 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001591 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001592 hp*|HP*)
1593 if test "$GCC" = "yes"
1594 then LDSHARED='$(CC) -shared'
1595 else LDSHARED='ld -b';
1596 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001597 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001598 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001599 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1600 if test "$enable_framework" ; then
1601 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001602 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1603 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001604 else
1605 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001606 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001607 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001608 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001609 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1610 if test "$enable_framework" ; then
1611 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001612 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1613 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001614 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001615 # No framework, use the Python app as bundle-loader
1616 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001617 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001618 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001619 Darwin/*)
1620 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1621 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001622 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ronald Oussoren988117f2006-04-29 11:31:35 +00001623 if test ${cur_target} '>' 10.2; then
1624 cur_target=10.3
1625 fi
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001626 if test "${UNIVERSAL_ARCHS}" = "all"; then
1627 # Ensure that the default platform for a 4-way
1628 # universal build is OSX 10.5, that's the first
1629 # OS release where 4-way builds make sense.
1630 cur_target='10.5'
1631 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001632 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001633
1634 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1635 # environment with a value that is the same as what we'll use
1636 # in the Makefile to ensure that we'll get the same compiler
1637 # environment during configure and build time.
1638 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1639 export MACOSX_DEPLOYMENT_TARGET
1640
Ronald Oussoren988117f2006-04-29 11:31:35 +00001641 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001642 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001643 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001644 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001645 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001646 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001647 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1648 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001649 else
1650 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1651 if test "$enable_framework" ; then
1652 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001653 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1654 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001655 else
1656 # No framework, use the Python app as bundle-loader
1657 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1658 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1659 fi
1660 fi
1661 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001662 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001663 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001664 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001665 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001666 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001667 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001668 else
1669 LDSHARED="ld -Bshareable ${LDFLAGS}"
1670 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001671 OpenBSD*)
1672 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1673 then
1674 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1675 else
1676 case `uname -r` in
1677 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1678 LDSHARED="ld -Bshareable ${LDFLAGS}"
1679 ;;
1680 *)
1681 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1682 ;;
1683 esac
1684 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001685 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001686 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001687 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001688 then LDSHARED='$(CC) -shared'
1689 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001690 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001691 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001692 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001693 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001694 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001695 *) LDSHARED="ld";;
1696 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001697fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001698AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001699BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001700# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001701# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001702AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001703if test -z "$CCSHARED"
1704then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001705 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001706 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001707 then CCSHARED="-fPIC";
1708 elif test `uname -p` = sparc;
1709 then CCSHARED="-xcode=pic32";
1710 else CCSHARED="-Kpic";
1711 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001712 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001713 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001714 else CCSHARED="+z";
1715 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001716 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001717 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001718 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001719 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001720 if test "$GCC" = "yes"
1721 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001722 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001723 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001724 SCO_SV*)
1725 if test "$GCC" = "yes"
1726 then CCSHARED="-fPIC"
1727 else CCSHARED="-Kpic -belf"
1728 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001729 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001730 IRIX*/6*) case $CC in
1731 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001732 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001733 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001734 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001735 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001736fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001737AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001738# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001739# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001740AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001741if test -z "$LINKFORSHARED"
1742then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001743 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001744 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001745 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001746 LINKFORSHARED="-Wl,-E -Wl,+s";;
1747# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001748 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001749 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001750 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001751 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001752 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1753 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001754 # not used by the core itself but which needs to be in the core so
1755 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001756 # -prebind is no longer used, because it actually seems to give a
1757 # slowdown in stead of a speedup, maybe due to the large number of
1758 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001759
1760 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001761 if test "$enable_framework"
1762 then
Jack Jansenda49e192005-01-07 13:08:22 +00001763 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001764 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001765 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001766 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001767 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001768 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001769 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001770 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1771 then
1772 LINKFORSHARED="-Wl,--export-dynamic"
1773 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001774 SunOS/5*) case $CC in
1775 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001776 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001777 then
1778 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001779 fi;;
1780 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001781 CYGWIN*)
1782 if test $enable_shared = "no"
1783 then
1784 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1785 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001786 QNX*)
1787 # -Wl,-E causes the symbols to be added to the dynamic
1788 # symbol table so that they can be found when a module
1789 # is loaded. -N 2048K causes the stack size to be set
1790 # to 2048 kilobytes so that the stack doesn't overflow
1791 # when running test_compile.py.
1792 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001793 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001794fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001795AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001796
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001797
Neil Schemenauer61c51152001-01-26 16:18:16 +00001798AC_SUBST(CFLAGSFORSHARED)
1799AC_MSG_CHECKING(CFLAGSFORSHARED)
1800if test ! "$LIBRARY" = "$LDLIBRARY"
1801then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001802 case $ac_sys_system in
1803 CYGWIN*)
1804 # Cygwin needs CCSHARED when building extension DLLs
1805 # but not when building the interpreter DLL.
1806 CFLAGSFORSHARED='';;
1807 *)
1808 CFLAGSFORSHARED='$(CCSHARED)'
1809 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001810fi
1811AC_MSG_RESULT($CFLAGSFORSHARED)
1812
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001813# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1814# library (with --enable-shared).
1815# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001816# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1817# if it is not required, since it creates a dependency of the shared library
1818# to LIBS. This, in turn, means that applications linking the shared libpython
1819# don't need to link LIBS explicitly. The default should be only changed
1820# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001821AC_SUBST(SHLIBS)
1822AC_MSG_CHECKING(SHLIBS)
1823case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001824 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001825 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001826esac
1827AC_MSG_RESULT($SHLIBS)
1828
1829
Guido van Rossum627b2d71993-12-24 10:39:16 +00001830# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001831AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1832AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001833
1834# only check for sem_ini if thread support is requested
1835if test "$with_threads" = "yes" -o -z "$with_threads"; then
1836 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1837 # posix4 on Solaris 2.6
1838 # pthread (first!) on Linux
1839fi
1840
Martin v. Löwis19d17342003-06-14 21:03:05 +00001841# check if we need libintl for locale functions
1842AC_CHECK_LIB(intl, textdomain,
1843 AC_DEFINE(WITH_LIBINTL, 1,
1844 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001845
1846# checks for system dependent C++ extensions support
1847case "$ac_sys_system" in
1848 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1849 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1850 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001851 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1852 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1853 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001854 AC_MSG_RESULT(yes)],
1855 [AC_MSG_RESULT(no)]);;
1856 *) ;;
1857esac
1858
Guido van Rossum70c7f481998-03-26 18:44:10 +00001859# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001860# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001861AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001862AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001863
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001864case "$ac_sys_system" in
1865BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001866AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1867;;
1868esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001869
Guido van Rossumc5a39031996-07-31 17:35:03 +00001870AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001871AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001872 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1873[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001874AC_MSG_RESULT($withval)
1875LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001876],
1877[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001878
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001879# Check for use of the system libffi library
1880AC_MSG_CHECKING(for --with-system-ffi)
1881AC_ARG_WITH(system_ffi,
1882 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1883
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001884AC_MSG_RESULT($with_system_ffi)
1885
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001886# Determine if signalmodule should be used.
1887AC_SUBST(USE_SIGNAL_MODULE)
1888AC_SUBST(SIGNAL_OBJS)
1889AC_MSG_CHECKING(for --with-signal-module)
1890AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001891 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001892
1893if test -z "$with_signal_module"
1894then with_signal_module="yes"
1895fi
1896AC_MSG_RESULT($with_signal_module)
1897
1898if test "${with_signal_module}" = "yes"; then
1899 USE_SIGNAL_MODULE=""
1900 SIGNAL_OBJS=""
1901else
1902 USE_SIGNAL_MODULE="#"
1903 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1904fi
1905
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001906# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001907AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001908USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001909
Guido van Rossum54d93d41997-01-22 20:51:58 +00001910AC_MSG_CHECKING(for --with-dec-threads)
1911AC_SUBST(LDLAST)
1912AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001913 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1914[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001915AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001916LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001917if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001918 with_thread="$withval";
1919fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001920[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001921
Martin v. Löwis11437992002-04-12 09:54:03 +00001922# Templates for things AC_DEFINEd more than once.
1923# For a single AC_DEFINE, no template is needed.
1924AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1925AH_TEMPLATE(_REENTRANT,
1926 [Define to force use of thread-safe errno, h_errno, and other functions])
1927AH_TEMPLATE(WITH_THREAD,
1928 [Define if you want to compile in rudimentary thread support])
1929
Guido van Rossum54d93d41997-01-22 20:51:58 +00001930AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001931dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001932AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001933 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001934
Barry Warsawc0d24d82000-06-29 16:12:00 +00001935# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001936dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001937AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001938 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1939 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001940
1941if test -z "$with_threads"
1942then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001943fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001944AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001945
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001946AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001947if test "$with_threads" = "no"
1948then
1949 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001950elif test "$ac_cv_pthread_is_default" = yes
1951then
1952 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001953 # Defining _REENTRANT on system with POSIX threads should not hurt.
1954 AC_DEFINE(_REENTRANT)
1955 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001956 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001957elif test "$ac_cv_kpthread" = "yes"
1958then
1959 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001960 if test "$ac_cv_cxx_thread" = "yes"; then
1961 CXX="$CXX -Kpthread"
1962 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001963 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001964 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001965 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001966elif test "$ac_cv_kthread" = "yes"
1967then
1968 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001969 if test "$ac_cv_cxx_thread" = "yes"; then
1970 CXX="$CXX -Kthread"
1971 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001972 AC_DEFINE(WITH_THREAD)
1973 posix_threads=yes
1974 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001975elif test "$ac_cv_pthread" = "yes"
1976then
1977 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001978 if test "$ac_cv_cxx_thread" = "yes"; then
1979 CXX="$CXX -pthread"
1980 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001981 AC_DEFINE(WITH_THREAD)
1982 posix_threads=yes
1983 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001984else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001985 if test ! -z "$with_threads" -a -d "$with_threads"
1986 then LDFLAGS="$LDFLAGS -L$with_threads"
1987 fi
1988 if test ! -z "$withval" -a -d "$withval"
1989 then LDFLAGS="$LDFLAGS -L$withval"
1990 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001991
1992 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001993 # define _POSIX_THREADS in unistd.h. Some apparently don't
1994 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001995 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1996 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001997 [
1998#include <unistd.h>
1999#ifdef _POSIX_THREADS
2000yes
2001#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002002 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2003 AC_MSG_RESULT($unistd_defines_pthreads)
2004
Martin v. Löwis130fb172001-07-19 11:00:41 +00002005 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002006 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2007 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002008 AC_DEFINE(HURD_C_THREADS, 1,
2009 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002010 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002011 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002012 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2013 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002014 AC_DEFINE(MACH_C_THREADS, 1,
2015 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002016 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002017 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002018 AC_ARG_WITH([pth],
2019 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2020 [AC_MSG_RESULT($withval)
2021 AC_DEFINE([WITH_THREAD])
2022 AC_DEFINE([HAVE_PTH], 1,
2023 [Define if you have GNU PTH threads.])
2024 LIBS="-lpth $LIBS"
2025 THREADOBJ="Python/thread.o"],
2026 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002027
2028 # Just looking for pthread_create in libpthread is not enough:
2029 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2030 # So we really have to include pthread.h, and then link.
2031 _libs=$LIBS
2032 LIBS="$LIBS -lpthread"
2033 AC_MSG_CHECKING([for pthread_create in -lpthread])
2034 AC_TRY_LINK([#include <pthread.h>
2035
2036void * start_routine (void *arg) { exit (0); }], [
2037pthread_create (NULL, NULL, start_routine, NULL)], [
2038 AC_MSG_RESULT(yes)
2039 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002040 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002041 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002042 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002043 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002044 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002045 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002046 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2047 AC_DEFINE(ATHEOS_THREADS, 1,
2048 [Define this if you have AtheOS threads.])
2049 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002050 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002051 AC_DEFINE(BEOS_THREADS, 1,
2052 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002053 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002054 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002055 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002056 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002057 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002058 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002059 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002060 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002061 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002062 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002063 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002064 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002065 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002066 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002067 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002068 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002069 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002070 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002071 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002072
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002073 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2074 LIBS="$LIBS -lmpc"
2075 THREADOBJ="Python/thread.o"
2076 USE_THREAD_MODULE=""])
2077
2078 if test "$posix_threads" != "yes"; then
2079 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2080 LIBS="$LIBS -lthread"
2081 THREADOBJ="Python/thread.o"
2082 USE_THREAD_MODULE=""])
2083 fi
2084
2085 if test "$USE_THREAD_MODULE" != "#"
2086 then
2087 # If the above checks didn't disable threads, (at least) OSF1
2088 # needs this '-threads' argument during linking.
2089 case $ac_sys_system in
2090 OSF1) LDLAST=-threads;;
2091 esac
2092 fi
2093fi
2094
2095if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002096 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002097 AC_DEFINE(_POSIX_THREADS, 1,
2098 [Define if you have POSIX threads,
2099 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002100 fi
2101
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002102 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2103 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002104 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2105 Defined for Solaris 2.6 bug in pthread header.)
2106 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002107 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002108 Define if the Posix semaphores do not work on your system)
2109 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002110 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2111 Define if the Posix semaphores do not work on your system)
2112 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002113 esac
2114
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002115 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2116 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2117 [AC_TRY_RUN([#include <pthread.h>
2118 void *foo(void *parm) {
2119 return NULL;
2120 }
2121 main() {
2122 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002123 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002124 if (pthread_attr_init(&attr)) exit(-1);
2125 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002126 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002127 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002128 }],
2129 ac_cv_pthread_system_supported=yes,
2130 ac_cv_pthread_system_supported=no,
2131 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002132 ])
2133 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2134 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002135 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002136 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002137 AC_CHECK_FUNCS(pthread_sigmask,
2138 [case $ac_sys_system in
2139 CYGWIN*)
2140 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2141 [Define if pthread_sigmask() does not work on your system.])
2142 ;;
2143 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002144fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002145
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002146
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002147# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002148AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002149AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002150AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002151[ --enable-ipv6 Enable ipv6 (with ipv4) support
2152 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002153[ case "$enableval" in
2154 no)
2155 AC_MSG_RESULT(no)
2156 ipv6=no
2157 ;;
2158 *) AC_MSG_RESULT(yes)
2159 AC_DEFINE(ENABLE_IPV6)
2160 ipv6=yes
2161 ;;
2162 esac ],
2163
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002164[
2165dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002166 AC_TRY_RUN([ /* AF_INET6 available check */
2167#include <sys/types.h>
2168#include <sys/socket.h>
2169main()
2170{
2171 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2172 exit(1);
2173 else
2174 exit(0);
2175}
2176],
2177 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002178 ipv6=yes,
2179 AC_MSG_RESULT(no)
2180 ipv6=no,
2181 AC_MSG_RESULT(no)
2182 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002183)
2184
2185if test "$ipv6" = "yes"; then
2186 AC_MSG_CHECKING(if RFC2553 API is available)
2187 AC_TRY_COMPILE([#include <sys/types.h>
2188#include <netinet/in.h>],
2189 [struct sockaddr_in6 x;
2190x.sin6_scope_id;],
2191 AC_MSG_RESULT(yes)
2192 ipv6=yes,
2193 AC_MSG_RESULT(no, IPv6 disabled)
2194 ipv6=no)
2195fi
2196
2197if test "$ipv6" = "yes"; then
2198 AC_DEFINE(ENABLE_IPV6)
2199fi
2200])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002201
2202ipv6type=unknown
2203ipv6lib=none
2204ipv6trylibc=no
2205
2206if test "$ipv6" = "yes"; then
2207 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002208 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2209 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002210 case $i in
2211 inria)
2212 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002213 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002214#include <netinet/in.h>
2215#ifdef IPV6_INRIA_VERSION
2216yes
2217#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002218 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002219 ;;
2220 kame)
2221 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002222 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002223#include <netinet/in.h>
2224#ifdef __KAME__
2225yes
2226#endif],
2227 [ipv6type=$i;
2228 ipv6lib=inet6
2229 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002230 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002231 ;;
2232 linux-glibc)
2233 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002234 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002235#include <features.h>
2236#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2237yes
2238#endif],
2239 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002240 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002241 ;;
2242 linux-inet6)
2243 dnl http://www.v6.linux.or.jp/
2244 if test -d /usr/inet6; then
2245 ipv6type=$i
2246 ipv6lib=inet6
2247 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002248 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002249 fi
2250 ;;
2251 solaris)
2252 if test -f /etc/netconfig; then
2253 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2254 ipv6type=$i
2255 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002256 fi
2257 fi
2258 ;;
2259 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002260 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002261#include <sys/param.h>
2262#ifdef _TOSHIBA_INET6
2263yes
2264#endif],
2265 [ipv6type=$i;
2266 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002267 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002268 ;;
2269 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002270 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002271#include </usr/local/v6/include/sys/v6config.h>
2272#ifdef __V6D__
2273yes
2274#endif],
2275 [ipv6type=$i;
2276 ipv6lib=v6;
2277 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002278 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002279 ;;
2280 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002281 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002282#include <sys/param.h>
2283#ifdef _ZETA_MINAMI_INET6
2284yes
2285#endif],
2286 [ipv6type=$i;
2287 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002288 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002289 ;;
2290 esac
2291 if test "$ipv6type" != "unknown"; then
2292 break
2293 fi
2294 done
2295 AC_MSG_RESULT($ipv6type)
2296fi
2297
2298if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2299 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2300 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2301 echo "using lib$ipv6lib"
2302 else
2303 if test $ipv6trylibc = "yes"; then
2304 echo "using libc"
2305 else
2306 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2307 echo "You need to fetch lib$ipv6lib.a from appropriate"
2308 echo 'ipv6 kit and compile beforehand.'
2309 exit 1
2310 fi
2311 fi
2312fi
2313
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002314AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2315AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2316 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2317 AC_MSG_RESULT(yes),
2318 AC_MSG_RESULT(no)
2319)
2320
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002321# Check for --with-doc-strings
2322AC_MSG_CHECKING(for --with-doc-strings)
2323AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002324 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002325
2326if test -z "$with_doc_strings"
2327then with_doc_strings="yes"
2328fi
2329if test "$with_doc_strings" != "no"
2330then
2331 AC_DEFINE(WITH_DOC_STRINGS, 1,
2332 [Define if you want documentation strings in extension modules])
2333fi
2334AC_MSG_RESULT($with_doc_strings)
2335
Neil Schemenauera35c6882001-02-27 04:45:05 +00002336# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002337AC_MSG_CHECKING(for --with-tsc)
2338AC_ARG_WITH(tsc,
2339[ --with(out)-tsc enable/disable timestamp counter profile], [
2340if test "$withval" != no
2341then
2342 AC_DEFINE(WITH_TSC, 1,
2343 [Define to profile with the Pentium timestamp counter])
2344 AC_MSG_RESULT(yes)
2345else AC_MSG_RESULT(no)
2346fi],
2347[AC_MSG_RESULT(no)])
2348
2349# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002350AC_MSG_CHECKING(for --with-pymalloc)
2351AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002352 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002353
2354if test -z "$with_pymalloc"
2355then with_pymalloc="yes"
2356fi
2357if test "$with_pymalloc" != "no"
2358then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002359 AC_DEFINE(WITH_PYMALLOC, 1,
2360 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002361fi
2362AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002363
Barry Warsawef82cd72000-06-30 16:21:01 +00002364# Check for --with-wctype-functions
2365AC_MSG_CHECKING(for --with-wctype-functions)
2366AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002367 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2368[
Barry Warsawef82cd72000-06-30 16:21:01 +00002369if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002370then
2371 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2372 [Define if you want wctype.h functions to be used instead of the
2373 one supplied by Python itself. (see Include/unicodectype.h).])
2374 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002375else AC_MSG_RESULT(no)
2376fi],
2377[AC_MSG_RESULT(no)])
2378
Guido van Rossum68242b51996-05-28 22:53:03 +00002379# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002380AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002381DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002382
Guido van Rossume97ee181999-12-20 21:27:22 +00002383# the dlopen() function means we might want to use dynload_shlib.o. some
2384# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002385AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002386
2387# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2388# loading of modules.
2389AC_SUBST(DYNLOADFILE)
2390AC_MSG_CHECKING(DYNLOADFILE)
2391if test -z "$DYNLOADFILE"
2392then
2393 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002394 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2395 if test "$ac_cv_func_dlopen" = yes
2396 then DYNLOADFILE="dynload_shlib.o"
2397 else DYNLOADFILE="dynload_aix.o"
2398 fi
2399 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002400 BeOS*) DYNLOADFILE="dynload_beos.o";;
2401 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002402 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2403 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002404 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002405 *)
2406 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2407 # out any dynamic loading
2408 if test "$ac_cv_func_dlopen" = yes
2409 then DYNLOADFILE="dynload_shlib.o"
2410 else DYNLOADFILE="dynload_stub.o"
2411 fi
2412 ;;
2413 esac
2414fi
2415AC_MSG_RESULT($DYNLOADFILE)
2416if test "$DYNLOADFILE" != "dynload_stub.o"
2417then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002418 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2419 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002420fi
2421
Jack Jansenc49e5b72001-06-19 15:00:23 +00002422# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2423
2424AC_SUBST(MACHDEP_OBJS)
2425AC_MSG_CHECKING(MACHDEP_OBJS)
2426if test -z "$MACHDEP_OBJS"
2427then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002428 MACHDEP_OBJS=$extra_machdep_objs
2429else
2430 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002431fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002432AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002433
Guido van Rossum627b2d71993-12-24 10:39:16 +00002434# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002435AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2436 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002437 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002438 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002439 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002440 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002441 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002442 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002443 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002444 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002445 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002446 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002447
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002448# For some functions, having a definition is not sufficient, since
2449# we want to take their address.
2450AC_MSG_CHECKING(for chroot)
2451AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2452 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2453 AC_MSG_RESULT(yes),
2454 AC_MSG_RESULT(no)
2455)
2456AC_MSG_CHECKING(for link)
2457AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2458 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2459 AC_MSG_RESULT(yes),
2460 AC_MSG_RESULT(no)
2461)
2462AC_MSG_CHECKING(for symlink)
2463AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2464 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2465 AC_MSG_RESULT(yes),
2466 AC_MSG_RESULT(no)
2467)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002468AC_MSG_CHECKING(for fchdir)
2469AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2470 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2471 AC_MSG_RESULT(yes),
2472 AC_MSG_RESULT(no)
2473)
2474AC_MSG_CHECKING(for fsync)
2475AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002476 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002477 AC_MSG_RESULT(yes),
2478 AC_MSG_RESULT(no)
2479)
2480AC_MSG_CHECKING(for fdatasync)
2481AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2482 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2483 AC_MSG_RESULT(yes),
2484 AC_MSG_RESULT(no)
2485)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002486AC_MSG_CHECKING(for epoll)
2487AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2488 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2489 AC_MSG_RESULT(yes),
2490 AC_MSG_RESULT(no)
2491)
2492AC_MSG_CHECKING(for kqueue)
2493AC_TRY_COMPILE([
2494#include <sys/types.h>
2495#include <sys/event.h>
2496 ], int x=kqueue(),
2497 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2498 AC_MSG_RESULT(yes),
2499 AC_MSG_RESULT(no)
2500)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002501# On some systems (eg. FreeBSD 5), we would find a definition of the
2502# functions ctermid_r, setgroups in the library, but no prototype
2503# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2504# address to avoid compiler warnings and potential miscompilations
2505# because of the missing prototypes.
2506
2507AC_MSG_CHECKING(for ctermid_r)
2508AC_TRY_COMPILE([
2509#include "confdefs.h"
2510#include <stdio.h>
2511], void* p = ctermid_r,
2512 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2513 AC_MSG_RESULT(yes),
2514 AC_MSG_RESULT(no)
2515)
2516
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002517AC_MSG_CHECKING(for flock)
2518AC_TRY_COMPILE([
2519#include "confdefs.h"
2520#include <sys/file.h>
2521], void* p = flock,
2522 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2523 AC_MSG_RESULT(yes),
2524 AC_MSG_RESULT(no)
2525)
2526
2527AC_MSG_CHECKING(for getpagesize)
2528AC_TRY_COMPILE([
2529#include "confdefs.h"
2530#include <unistd.h>
2531], void* p = getpagesize,
2532 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2533 AC_MSG_RESULT(yes),
2534 AC_MSG_RESULT(no)
2535)
2536
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002537dnl check for true
2538AC_CHECK_PROGS(TRUE, true, /bin/true)
2539
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002540dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2541dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002542AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002543 AC_CHECK_LIB(resolv, inet_aton)
2544)
2545
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002546# On Tru64, chflags seems to be present, but calling it will
2547# exit Python
2548AC_MSG_CHECKING(for chflags)
2549AC_TRY_RUN([
2550#include <sys/stat.h>
2551#include <unistd.h>
2552int main(int argc, char*argv[])
2553{
2554 if(chflags(argv[0], 0) != 0)
2555 return 1;
2556 return 0;
2557}
2558],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2559 AC_MSG_RESULT(yes),
2560 AC_MSG_RESULT(no)
2561)
2562
2563AC_MSG_CHECKING(for lchflags)
2564AC_TRY_RUN([
2565#include <sys/stat.h>
2566#include <unistd.h>
2567int main(int argc, char*argv[])
2568{
2569 if(lchflags(argv[0], 0) != 0)
2570 return 1;
2571 return 0;
2572}
2573],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2574 AC_MSG_RESULT(yes),
2575 AC_MSG_RESULT(no)
2576)
2577
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002578dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002579dnl
2580dnl On MacOSX the linker will search for dylibs on the entire linker path
2581dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2582dnl to revert to a more traditional unix behaviour and make it possible to
2583dnl override the system libz with a local static library of libz. Temporarily
2584dnl add that flag to our CFLAGS as well to ensure that we check the version
2585dnl of libz that will be used by setup.py.
2586dnl The -L/usr/local/lib is needed as wel to get the same compilation
2587dnl environment as setup.py (and leaving it out can cause configure to use the
2588dnl wrong version of the library)
2589case $ac_sys_system/$ac_sys_release in
2590Darwin/*)
2591 _CUR_CFLAGS="${CFLAGS}"
2592 _CUR_LDFLAGS="${LDFLAGS}"
2593 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2594 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2595 ;;
2596esac
2597
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002598AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2599
Ronald Oussorenf8752642006-07-06 10:13:35 +00002600case $ac_sys_system/$ac_sys_release in
2601Darwin/*)
2602 CFLAGS="${_CUR_CFLAGS}"
2603 LDFLAGS="${_CUR_LDFLAGS}"
2604 ;;
2605esac
2606
Martin v. Löwise9416172003-05-03 10:12:45 +00002607AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002608AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002609#include "confdefs.h"
2610#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002611], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002612 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2613 AC_MSG_RESULT(yes),
2614 AC_MSG_RESULT(no)
2615)
2616
2617AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002618AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002619#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002620#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002621#include <sys/socket.h>
2622#include <netinet/in.h>
2623#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002624], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002625 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2626 AC_MSG_RESULT(yes),
2627 AC_MSG_RESULT(no)
2628)
2629
2630AC_MSG_CHECKING(for inet_pton)
2631AC_TRY_COMPILE([
2632#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002633#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002634#include <sys/socket.h>
2635#include <netinet/in.h>
2636#include <arpa/inet.h>
2637], void* p = inet_pton,
2638 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2639 AC_MSG_RESULT(yes),
2640 AC_MSG_RESULT(no)
2641)
2642
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002643# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002644AC_MSG_CHECKING(for setgroups)
2645AC_TRY_COMPILE([
2646#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002647#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002648#ifdef HAVE_GRP_H
2649#include <grp.h>
2650#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002651],
2652void* p = setgroups,
2653 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2654 AC_MSG_RESULT(yes),
2655 AC_MSG_RESULT(no)
2656)
2657
Fred Drake8cef4cf2000-06-28 16:40:38 +00002658# check for openpty and forkpty
2659
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002660AC_CHECK_FUNCS(openpty,,
2661 AC_CHECK_LIB(util,openpty,
2662 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2663 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2664 )
2665)
2666AC_CHECK_FUNCS(forkpty,,
2667 AC_CHECK_LIB(util,forkpty,
2668 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2669 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2670 )
2671)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002672
Brett Cannonaa5778d2008-03-18 04:09:00 +00002673# Stuff for expat.
2674AC_CHECK_FUNCS(memmove)
2675
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002676# check for long file support functions
2677AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2678
Brett Cannonaa5778d2008-03-18 04:09:00 +00002679AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002680AC_CHECK_FUNCS(getpgrp,
2681 AC_TRY_COMPILE([#include <unistd.h>],
2682 [getpgrp(0);],
2683 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2684 [Define if getpgrp() must be called as getpgrp(0).])
2685 )
2686)
Jack Jansen150753c2003-03-29 22:07:47 +00002687AC_CHECK_FUNCS(setpgrp,
2688 AC_TRY_COMPILE([#include <unistd.h>],
2689 [setpgrp(0,0);],
2690 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2691 [Define if setpgrp() must be called as setpgrp(0, 0).])
2692 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002693)
2694AC_CHECK_FUNCS(gettimeofday,
2695 AC_TRY_COMPILE([#include <sys/time.h>],
2696 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2697 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2698 [Define if gettimeofday() does not have second (timezone) argument
2699 This is the case on Motorola V4 (R40V4.2)])
2700 )
2701)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002702
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002703AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002704AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002705#if defined(MAJOR_IN_MKDEV)
2706#include <sys/mkdev.h>
2707#elif defined(MAJOR_IN_SYSMACROS)
2708#include <sys/sysmacros.h>
2709#else
2710#include <sys/types.h>
2711#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002712],[
2713 makedev(major(0),minor(0));
2714],[
2715 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2716 [Define to 1 if you have the device macros.])
2717 AC_MSG_RESULT(yes)
2718],[
2719 AC_MSG_RESULT(no)
2720])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002721
2722# On OSF/1 V5.1, getaddrinfo is available, but a define
2723# for [no]getaddrinfo in netdb.h.
2724AC_MSG_CHECKING(for getaddrinfo)
2725AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002726#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002727#include <sys/socket.h>
2728#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002729#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002730],[
2731getaddrinfo(NULL, NULL, NULL, NULL);
2732], [
2733AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002734AC_MSG_CHECKING(getaddrinfo bug)
2735AC_TRY_RUN([
2736#include <sys/types.h>
2737#include <netdb.h>
2738#include <string.h>
2739#include <sys/socket.h>
2740#include <netinet/in.h>
2741
2742main()
2743{
2744 int passive, gaierr, inet4 = 0, inet6 = 0;
2745 struct addrinfo hints, *ai, *aitop;
2746 char straddr[INET6_ADDRSTRLEN], strport[16];
2747
2748 for (passive = 0; passive <= 1; passive++) {
2749 memset(&hints, 0, sizeof(hints));
2750 hints.ai_family = AF_UNSPEC;
2751 hints.ai_flags = passive ? AI_PASSIVE : 0;
2752 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002753 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002754 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2755 (void)gai_strerror(gaierr);
2756 goto bad;
2757 }
2758 for (ai = aitop; ai; ai = ai->ai_next) {
2759 if (ai->ai_addr == NULL ||
2760 ai->ai_addrlen == 0 ||
2761 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2762 straddr, sizeof(straddr), strport, sizeof(strport),
2763 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2764 goto bad;
2765 }
2766 switch (ai->ai_family) {
2767 case AF_INET:
2768 if (strcmp(strport, "54321") != 0) {
2769 goto bad;
2770 }
2771 if (passive) {
2772 if (strcmp(straddr, "0.0.0.0") != 0) {
2773 goto bad;
2774 }
2775 } else {
2776 if (strcmp(straddr, "127.0.0.1") != 0) {
2777 goto bad;
2778 }
2779 }
2780 inet4++;
2781 break;
2782 case AF_INET6:
2783 if (strcmp(strport, "54321") != 0) {
2784 goto bad;
2785 }
2786 if (passive) {
2787 if (strcmp(straddr, "::") != 0) {
2788 goto bad;
2789 }
2790 } else {
2791 if (strcmp(straddr, "::1") != 0) {
2792 goto bad;
2793 }
2794 }
2795 inet6++;
2796 break;
2797 case AF_UNSPEC:
2798 goto bad;
2799 break;
2800 default:
2801 /* another family support? */
2802 break;
2803 }
2804 }
2805 }
2806
2807 if (!(inet4 == 0 || inet4 == 2))
2808 goto bad;
2809 if (!(inet6 == 0 || inet6 == 2))
2810 goto bad;
2811
2812 if (aitop)
2813 freeaddrinfo(aitop);
2814 exit(0);
2815
2816 bad:
2817 if (aitop)
2818 freeaddrinfo(aitop);
2819 exit(1);
2820}
2821],
2822AC_MSG_RESULT(good)
2823buggygetaddrinfo=no,
2824AC_MSG_RESULT(buggy)
2825buggygetaddrinfo=yes,
2826AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002827buggygetaddrinfo=yes)], [
2828AC_MSG_RESULT(no)
2829buggygetaddrinfo=yes
2830])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002831
2832if test "$buggygetaddrinfo" = "yes"; then
2833 if test "$ipv6" = "yes"; then
2834 echo 'Fatal: You must get working getaddrinfo() function.'
2835 echo ' or you can specify "--disable-ipv6"'.
2836 exit 1
2837 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002838else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002839 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002840fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002841AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002842
Guido van Rossum627b2d71993-12-24 10:39:16 +00002843# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002844AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002845AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002846AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002847AC_CHECK_MEMBERS([struct stat.st_rdev])
2848AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002849AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002850AC_CHECK_MEMBERS([struct stat.st_gen])
2851AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002852AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002853
2854AC_MSG_CHECKING(for time.h that defines altzone)
2855AC_CACHE_VAL(ac_cv_header_time_altzone,
2856[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2857 ac_cv_header_time_altzone=yes,
2858 ac_cv_header_time_altzone=no)])
2859AC_MSG_RESULT($ac_cv_header_time_altzone)
2860if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002861 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002862fi
2863
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002864was_it_defined=no
2865AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002866AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002867#include <sys/types.h>
2868#include <sys/select.h>
2869#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002870], [;], [
2871 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2872 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2873 (which you can't on SCO ODT 3.0).])
2874 was_it_defined=yes
2875])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002876AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002877
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002878AC_MSG_CHECKING(for addrinfo)
2879AC_CACHE_VAL(ac_cv_struct_addrinfo,
2880AC_TRY_COMPILE([
2881# include <netdb.h>],
2882 [struct addrinfo a],
2883 ac_cv_struct_addrinfo=yes,
2884 ac_cv_struct_addrinfo=no))
2885AC_MSG_RESULT($ac_cv_struct_addrinfo)
2886if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002887 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002888fi
2889
2890AC_MSG_CHECKING(for sockaddr_storage)
2891AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2892AC_TRY_COMPILE([
2893# include <sys/types.h>
2894# include <sys/socket.h>],
2895 [struct sockaddr_storage s],
2896 ac_cv_struct_sockaddr_storage=yes,
2897 ac_cv_struct_sockaddr_storage=no))
2898AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2899if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002900 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002901fi
2902
Guido van Rossum627b2d71993-12-24 10:39:16 +00002903# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002904
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002905AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002906AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002907
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002908works=no
2909AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002910AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2911 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2912)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002913AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002914
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002915works=no
2916AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002917AC_TRY_COMPILE([], [signed char c;], works=yes,
2918 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2919)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002920AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002921
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002922have_prototypes=no
2923AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002924AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2925 AC_DEFINE(HAVE_PROTOTYPES, 1,
2926 [Define if your compiler supports function prototype])
2927 have_prototypes=yes
2928])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002929AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002930
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002931works=no
2932AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002933AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002934#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002935int foo(int x, ...) {
2936 va_list va;
2937 va_start(va, x);
2938 va_arg(va, int);
2939 va_arg(va, char *);
2940 va_arg(va, double);
2941 return 0;
2942}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002943], [return foo(10, "", 3.14);], [
2944 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2945 [Define if your compiler supports variable length function prototypes
2946 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2947 works=yes
2948])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002949AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002950
Dave Cole331708b2004-08-09 04:51:41 +00002951# check for socketpair
2952AC_MSG_CHECKING(for socketpair)
2953AC_TRY_COMPILE([
2954#include <sys/types.h>
2955#include <sys/socket.h>
2956], void *x=socketpair,
2957 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2958 AC_MSG_RESULT(yes),
2959 AC_MSG_RESULT(no)
2960)
2961
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002962# check if sockaddr has sa_len member
2963AC_MSG_CHECKING(if sockaddr has sa_len member)
2964AC_TRY_COMPILE([#include <sys/types.h>
2965#include <sys/socket.h>],
2966[struct sockaddr x;
2967x.sa_len = 0;],
2968 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002969 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002970 AC_MSG_RESULT(no))
2971
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002972va_list_is_array=no
2973AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002974AC_TRY_COMPILE([
2975#ifdef HAVE_STDARG_PROTOTYPES
2976#include <stdarg.h>
2977#else
2978#include <varargs.h>
2979#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002980], [va_list list1, list2; list1 = list2;], , [
2981 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2982 va_list_is_array=yes
2983])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002984AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002985
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002986# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002987AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2988 [Define this if you have some version of gethostbyname_r()])
2989
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002990AC_CHECK_FUNC(gethostbyname_r, [
2991 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2992 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2993 OLD_CFLAGS=$CFLAGS
2994 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2995 AC_TRY_COMPILE([
2996# include <netdb.h>
2997 ], [
2998 char *name;
2999 struct hostent *he, *res;
3000 char buffer[2048];
3001 int buflen = 2048;
3002 int h_errnop;
3003
3004 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3005 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003006 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003007 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3008 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003009 AC_MSG_RESULT(yes)
3010 ], [
3011 AC_MSG_RESULT(no)
3012 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3013 AC_TRY_COMPILE([
3014# include <netdb.h>
3015 ], [
3016 char *name;
3017 struct hostent *he;
3018 char buffer[2048];
3019 int buflen = 2048;
3020 int h_errnop;
3021
3022 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3023 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003024 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003025 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3026 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003027 AC_MSG_RESULT(yes)
3028 ], [
3029 AC_MSG_RESULT(no)
3030 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3031 AC_TRY_COMPILE([
3032# include <netdb.h>
3033 ], [
3034 char *name;
3035 struct hostent *he;
3036 struct hostent_data data;
3037
3038 (void) gethostbyname_r(name, he, &data);
3039 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003040 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003041 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3042 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003043 AC_MSG_RESULT(yes)
3044 ], [
3045 AC_MSG_RESULT(no)
3046 ])
3047 ])
3048 ])
3049 CFLAGS=$OLD_CFLAGS
3050], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003051 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003052])
3053AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3054AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3055AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003056AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003057AC_SUBST(HAVE_GETHOSTBYNAME)
3058
Guido van Rossum627b2d71993-12-24 10:39:16 +00003059# checks for system services
3060# (none yet)
3061
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003062# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003063AC_CHECK_FUNC(__fpu_control,
3064 [],
3065 [AC_CHECK_LIB(ieee, __fpu_control)
3066])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003067
Guido van Rossum93274221997-05-09 02:42:00 +00003068# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003069AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003070AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003071 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3072[
Guido van Rossum93274221997-05-09 02:42:00 +00003073if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003074then
3075 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3076 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3077 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003078else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003079fi],
3080[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003081
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003082# check for --with-libm=...
3083AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003084case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003085Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003086BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003087*) LIBM=-lm
3088esac
Guido van Rossum93274221997-05-09 02:42:00 +00003089AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003090AC_ARG_WITH(libm,
3091 AC_HELP_STRING(--with-libm=STRING, math library),
3092[
Guido van Rossum93274221997-05-09 02:42:00 +00003093if test "$withval" = no
3094then LIBM=
3095 AC_MSG_RESULT(force LIBM empty)
3096elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003097then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003098 AC_MSG_RESULT(set LIBM="$withval")
3099else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003100fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003101[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003102
3103# check for --with-libc=...
3104AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003105AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003106AC_ARG_WITH(libc,
3107 AC_HELP_STRING(--with-libc=STRING, C library),
3108[
Guido van Rossum93274221997-05-09 02:42:00 +00003109if test "$withval" = no
3110then LIBC=
3111 AC_MSG_RESULT(force LIBC empty)
3112elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003113then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003114 AC_MSG_RESULT(set LIBC="$withval")
3115else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003116fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003117[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003118
Christian Heimes0a8143f2007-12-18 23:22:54 +00003119# ************************************
3120# * Check for mathematical functions *
3121# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003122
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003123LIBS_SAVE=$LIBS
3124LIBS="$LIBS $LIBM"
3125
Mark Dickinson265d7382008-04-21 22:32:24 +00003126# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3127# -0. on some architectures.
3128AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3129AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3130AC_TRY_RUN([
3131#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003132#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003133int main() {
3134 /* return 0 if either negative zeros don't exist
3135 on this platform or if negative zeros exist
3136 and tanh(-0.) == -0. */
3137 if (atan2(0., -1.) == atan2(-0., -1.) ||
3138 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3139 else exit(1);
3140}
3141],
3142ac_cv_tanh_preserves_zero_sign=yes,
3143ac_cv_tanh_preserves_zero_sign=no,
3144ac_cv_tanh_preserves_zero_sign=no)])
3145AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3146if test "$ac_cv_tanh_preserves_zero_sign" = yes
3147then
3148 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3149 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3150fi
3151
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00003152AC_REPLACE_FUNCS(hypot)
Christian Heimes0a8143f2007-12-18 23:22:54 +00003153
Christian Heimes48723512008-01-20 14:28:28 +00003154AC_CHECK_FUNCS(acosh asinh atanh copysign expm1 finite isinf isnan log1p)
Christian Heimes0a8143f2007-12-18 23:22:54 +00003155
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003156LIBS=$LIBS_SAVE
3157
Guido van Rossumef2255b2000-03-10 22:30:29 +00003158# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003159AC_CHECK_HEADER(wchar.h, [
3160 AC_DEFINE(HAVE_WCHAR_H, 1,
3161 [Define if the compiler provides a wchar.h header file.])
3162 wchar_h="yes"
3163],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003164wchar_h="no"
3165)
3166
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003167# determine wchar_t size
3168if test "$wchar_h" = yes
3169then
Guido van Rossum67b26592001-10-20 14:21:45 +00003170 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003171fi
3172
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003173AC_MSG_CHECKING(for UCS-4 tcl)
3174have_ucs4_tcl=no
3175AC_TRY_COMPILE([
3176#include <tcl.h>
3177#if TCL_UTF_MAX != 6
3178# error "NOT UCS4_TCL"
3179#endif], [], [
3180 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3181 have_ucs4_tcl=yes
3182])
3183AC_MSG_RESULT($have_ucs4_tcl)
3184
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003185# check whether wchar_t is signed or not
3186if test "$wchar_h" = yes
3187then
3188 # check whether wchar_t is signed or not
3189 AC_MSG_CHECKING(whether wchar_t is signed)
3190 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3191 AC_TRY_RUN([
3192 #include <wchar.h>
3193 int main()
3194 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003195 /* Success: exit code 0 */
3196 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003197 }
3198 ],
3199 ac_cv_wchar_t_signed=yes,
3200 ac_cv_wchar_t_signed=no,
3201 ac_cv_wchar_t_signed=yes)])
3202 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3203fi
3204
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003205AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003206dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003207AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003208 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3209 [],
3210 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003211
3212if test $enable_unicode = yes
3213then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003214 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003215 case "$have_ucs4_tcl" in
3216 yes) enable_unicode="ucs4"
3217 ;;
3218 *) enable_unicode="ucs2"
3219 ;;
3220 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003221fi
3222
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003223AH_TEMPLATE(Py_UNICODE_SIZE,
3224 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003225case "$enable_unicode" in
3226ucs2) unicode_size="2"
3227 AC_DEFINE(Py_UNICODE_SIZE,2)
3228 ;;
3229ucs4) unicode_size="4"
3230 AC_DEFINE(Py_UNICODE_SIZE,4)
3231 ;;
3232esac
3233
Martin v. Löwis11437992002-04-12 09:54:03 +00003234AH_TEMPLATE(PY_UNICODE_TYPE,
3235 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003236
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003237AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003238if test "$enable_unicode" = "no"
3239then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003240 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003241 AC_MSG_RESULT(not used)
3242else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003243 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003244 AC_DEFINE(Py_USING_UNICODE, 1,
3245 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003246
3247 # wchar_t is only usable if it maps to an unsigned type
3248 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003249 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003250 then
3251 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003252 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3253 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003254 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003255 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003256 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3257 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3258 then
3259 PY_UNICODE_TYPE="unsigned short"
3260 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3261 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3262 then
3263 PY_UNICODE_TYPE="unsigned long"
3264 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3265 else
3266 PY_UNICODE_TYPE="no type found"
3267 fi
3268 AC_MSG_RESULT($PY_UNICODE_TYPE)
3269fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003270
3271# check for endianness
3272AC_C_BIGENDIAN
3273
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003274# Check whether right shifting a negative integer extends the sign bit
3275# or fills with zeros (like the Cray J90, according to Tim Peters).
3276AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003277AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003278AC_TRY_RUN([
3279int main()
3280{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003281 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003282}
Guido van Rossum3065c942001-09-17 04:03:14 +00003283],
3284ac_cv_rshift_extends_sign=yes,
3285ac_cv_rshift_extends_sign=no,
3286ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003287AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3288if test "$ac_cv_rshift_extends_sign" = no
3289then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003290 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3291 [Define if i>>j for signed int i does not extend the sign bit
3292 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003293fi
3294
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003295# check for getc_unlocked and related locking functions
3296AC_MSG_CHECKING(for getc_unlocked() and friends)
3297AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3298AC_TRY_LINK([#include <stdio.h>],[
3299 FILE *f = fopen("/dev/null", "r");
3300 flockfile(f);
3301 getc_unlocked(f);
3302 funlockfile(f);
3303], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3304AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3305if test "$ac_cv_have_getc_unlocked" = yes
3306then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003307 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3308 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003309fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003310
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003311# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003312# save the value of LIBS so we don't actually link Python with readline
3313LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003314AC_CHECK_LIB(readline, readline)
3315if test "$ac_cv_have_readline_readline" = no
3316then
3317 AC_CHECK_LIB(termcap, readline)
3318fi
3319
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003320# check for readline 2.1
3321AC_CHECK_LIB(readline, rl_callback_handler_install,
3322 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003323 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003324
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003325# check for readline 2.2
3326AC_TRY_CPP([#include <readline/readline.h>],
3327have_readline=yes, have_readline=no)
3328if test $have_readline = yes
3329then
3330 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3331 [readline/readline.h],
3332 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3333 [Define if you have readline 2.2]), )
3334fi
3335
Martin v. Löwis0daad592001-09-30 21:09:59 +00003336# check for readline 4.0
3337AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003338 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003339 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003340
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003341# also in 4.0
3342AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3343 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
3344 [Define if you have readline 4.0]), , )
3345
Guido van Rossum353ae582001-07-10 16:45:32 +00003346# check for readline 4.2
3347AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003348 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003349 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003350
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003351# also in readline 4.2
3352AC_TRY_CPP([#include <readline/readline.h>],
3353have_readline=yes, have_readline=no)
3354if test $have_readline = yes
3355then
3356 AC_EGREP_HEADER([extern int rl_catch_signals;],
3357 [readline/readline.h],
3358 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3359 [Define if you can turn off readline's signal handling.]), )
3360fi
3361
Martin v. Löwis82bca632006-02-10 20:49:30 +00003362# End of readline checks: restore LIBS
3363LIBS=$LIBS_no_readline
3364
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003365AC_MSG_CHECKING(for broken nice())
3366AC_CACHE_VAL(ac_cv_broken_nice, [
3367AC_TRY_RUN([
3368int main()
3369{
3370 int val1 = nice(1);
3371 if (val1 != -1 && val1 == nice(2))
3372 exit(0);
3373 exit(1);
3374}
Guido van Rossum3065c942001-09-17 04:03:14 +00003375],
3376ac_cv_broken_nice=yes,
3377ac_cv_broken_nice=no,
3378ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003379AC_MSG_RESULT($ac_cv_broken_nice)
3380if test "$ac_cv_broken_nice" = yes
3381then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003382 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3383 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003384fi
3385
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003386AC_MSG_CHECKING(for broken poll())
3387AC_TRY_RUN([
3388#include <poll.h>
3389
3390int main (void)
3391 {
3392 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3393
3394 close (42);
3395
3396 int poll_test = poll (&poll_struct, 1, 0);
3397
3398 if (poll_test < 0)
3399 {
3400 exit(0);
3401 }
3402 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3403 {
3404 exit(0);
3405 }
3406 else
3407 {
3408 exit(1);
3409 }
3410 }
3411],
3412ac_cv_broken_poll=yes,
3413ac_cv_broken_poll=no,
3414ac_cv_broken_poll=no)
3415AC_MSG_RESULT($ac_cv_broken_poll)
3416if test "$ac_cv_broken_poll" = yes
3417then
3418 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3419 [Define if poll() sets errno on invalid file descriptors.])
3420fi
3421
Brett Cannon43802422005-02-10 20:48:03 +00003422# Before we can test tzset, we need to check if struct tm has a tm_zone
3423# (which is not required by ISO C or UNIX spec) and/or if we support
3424# tzname[]
3425AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003426
Brett Cannon43802422005-02-10 20:48:03 +00003427# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003428AC_MSG_CHECKING(for working tzset())
3429AC_CACHE_VAL(ac_cv_working_tzset, [
3430AC_TRY_RUN([
3431#include <stdlib.h>
3432#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003433#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003434
3435#if HAVE_TZNAME
3436extern char *tzname[];
3437#endif
3438
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003439int main()
3440{
Brett Cannon18367812003-09-19 00:59:16 +00003441 /* Note that we need to ensure that not only does tzset(3)
3442 do 'something' with localtime, but it works as documented
3443 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003444 This includes making sure that tzname is set properly if
3445 tm->tm_zone does not exist since it is the alternative way
3446 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003447
3448 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003449 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003450 */
3451
Brett Cannon43802422005-02-10 20:48:03 +00003452 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003453 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3454
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003455 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003456 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003457 if (localtime(&groundhogday)->tm_hour != 0)
3458 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003459#if HAVE_TZNAME
3460 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3461 if (strcmp(tzname[0], "UTC") ||
3462 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3463 exit(1);
3464#endif
Brett Cannon18367812003-09-19 00:59:16 +00003465
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003466 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003467 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003468 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003469 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003470#if HAVE_TZNAME
3471 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3472 exit(1);
3473#endif
Brett Cannon18367812003-09-19 00:59:16 +00003474
3475 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3476 tzset();
3477 if (localtime(&groundhogday)->tm_hour != 11)
3478 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003479#if HAVE_TZNAME
3480 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3481 exit(1);
3482#endif
3483
3484#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003485 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3486 exit(1);
3487 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3488 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003489#endif
Brett Cannon18367812003-09-19 00:59:16 +00003490
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003491 exit(0);
3492}
3493],
3494ac_cv_working_tzset=yes,
3495ac_cv_working_tzset=no,
3496ac_cv_working_tzset=no)])
3497AC_MSG_RESULT($ac_cv_working_tzset)
3498if test "$ac_cv_working_tzset" = yes
3499then
3500 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3501 [Define if tzset() actually switches the local timezone in a meaningful way.])
3502fi
3503
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003504# Look for subsecond timestamps in struct stat
3505AC_MSG_CHECKING(for tv_nsec in struct stat)
3506AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3507AC_TRY_COMPILE([#include <sys/stat.h>], [
3508struct stat st;
3509st.st_mtim.tv_nsec = 1;
3510],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003511ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003512ac_cv_stat_tv_nsec=no,
3513ac_cv_stat_tv_nsec=no))
3514AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3515if test "$ac_cv_stat_tv_nsec" = yes
3516then
3517 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3518 [Define if you have struct stat.st_mtim.tv_nsec])
3519fi
3520
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003521# Look for BSD style subsecond timestamps in struct stat
3522AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3523AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3524AC_TRY_COMPILE([#include <sys/stat.h>], [
3525struct stat st;
3526st.st_mtimespec.tv_nsec = 1;
3527],
3528ac_cv_stat_tv_nsec2=yes,
3529ac_cv_stat_tv_nsec2=no,
3530ac_cv_stat_tv_nsec2=no))
3531AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3532if test "$ac_cv_stat_tv_nsec2" = yes
3533then
3534 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3535 [Define if you have struct stat.st_mtimensec])
3536fi
3537
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003538# On HP/UX 11.0, mvwdelch is a block with a return statement
3539AC_MSG_CHECKING(whether mvwdelch is an expression)
3540AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3541AC_TRY_COMPILE([#include <curses.h>], [
3542 int rtn;
3543 rtn = mvwdelch(0,0,0);
3544], ac_cv_mvwdelch_is_expression=yes,
3545 ac_cv_mvwdelch_is_expression=no,
3546 ac_cv_mvwdelch_is_expression=yes))
3547AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3548
3549if test "$ac_cv_mvwdelch_is_expression" = yes
3550then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003551 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3552 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003553fi
3554
3555AC_MSG_CHECKING(whether WINDOW has _flags)
3556AC_CACHE_VAL(ac_cv_window_has_flags,
3557AC_TRY_COMPILE([#include <curses.h>], [
3558 WINDOW *w;
3559 w->_flags = 0;
3560], ac_cv_window_has_flags=yes,
3561 ac_cv_window_has_flags=no,
3562 ac_cv_window_has_flags=no))
3563AC_MSG_RESULT($ac_cv_window_has_flags)
3564
3565
3566if test "$ac_cv_window_has_flags" = yes
3567then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003568 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3569 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003570fi
3571
Walter Dörwald4994d952006-06-19 08:07:50 +00003572AC_MSG_CHECKING(for is_term_resized)
3573AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3574 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3575 AC_MSG_RESULT(yes),
3576 AC_MSG_RESULT(no)
3577)
3578
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003579AC_MSG_CHECKING(for resize_term)
3580AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3581 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003582 AC_MSG_RESULT(yes),
3583 AC_MSG_RESULT(no)
3584)
3585
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003586AC_MSG_CHECKING(for resizeterm)
3587AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3588 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003589 AC_MSG_RESULT(yes),
3590 AC_MSG_RESULT(no)
3591)
3592
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003593AC_MSG_CHECKING(for /dev/ptmx)
3594
3595if test -r /dev/ptmx
3596then
3597 AC_MSG_RESULT(yes)
3598 AC_DEFINE(HAVE_DEV_PTMX, 1,
3599 [Define if we have /dev/ptmx.])
3600else
3601 AC_MSG_RESULT(no)
3602fi
3603
3604AC_MSG_CHECKING(for /dev/ptc)
3605
3606if test -r /dev/ptc
3607then
3608 AC_MSG_RESULT(yes)
3609 AC_DEFINE(HAVE_DEV_PTC, 1,
3610 [Define if we have /dev/ptc.])
3611else
3612 AC_MSG_RESULT(no)
3613fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003614
Brett Cannon09d12362006-05-11 05:11:33 +00003615AC_MSG_CHECKING(for %zd printf() format support)
3616AC_TRY_RUN([#include <stdio.h>
3617#include <stddef.h>
3618#include <string.h>
3619
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003620#ifdef HAVE_SYS_TYPES_H
3621#include <sys/types.h>
3622#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003623
3624#ifdef HAVE_SSIZE_T
3625typedef ssize_t Py_ssize_t;
3626#elif SIZEOF_VOID_P == SIZEOF_LONG
3627typedef long Py_ssize_t;
3628#else
3629typedef int Py_ssize_t;
3630#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003631
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003632int main()
3633{
3634 char buffer[256];
3635
Brett Cannon09d12362006-05-11 05:11:33 +00003636 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3637 return 1;
3638
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003639 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003640 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003641
3642 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3643 return 1;
3644
3645 if (strcmp(buffer, "-123"))
3646 return 1;
3647
Brett Cannon09d12362006-05-11 05:11:33 +00003648 return 0;
3649}],
3650[AC_MSG_RESULT(yes)
3651 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3652 AC_MSG_RESULT(no))
3653
Martin v. Löwis01c04012002-11-11 14:58:44 +00003654AC_CHECK_TYPE(socklen_t,,
3655 AC_DEFINE(socklen_t,int,
3656 Define to `int' if <sys/socket.h> does not define.),[
3657#ifdef HAVE_SYS_TYPES_H
3658#include <sys/types.h>
3659#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003660#ifdef HAVE_SYS_SOCKET_H
3661#include <sys/socket.h>
3662#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003663])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003664
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003665AC_SUBST(THREADHEADERS)
3666
3667for h in `(cd $srcdir;echo Python/thread_*.h)`
3668do
3669 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3670done
3671
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003672AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003673SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003674AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003675for dir in $SRCDIRS; do
3676 if test ! -d $dir; then
3677 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003678 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003679done
3680AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003681
Guido van Rossum627b2d71993-12-24 10:39:16 +00003682# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003683AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3684AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003685
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003686echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003687if test ! -f Modules/Setup
3688then
3689 cp $srcdir/Modules/Setup.dist Modules/Setup
3690fi
3691
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003692echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003693if test ! -f Modules/Setup.local
3694then
3695 echo "# Edit this file for local setup changes" >Modules/Setup.local
3696fi
3697
3698echo "creating Makefile"
3699$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3700 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003701 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003702
3703case $ac_sys_system in
3704BeOS)
3705 AC_MSG_WARN([
3706
3707 Support for BeOS is deprecated as of Python 2.6.
3708 See PEP 11 for the gory details.
3709 ])
3710 ;;
3711*) ;;
3712esac
3713
Neil Schemenauer66252162001-02-19 04:47:42 +00003714mv config.c Modules