blob: 84035de4b4e2becc4ec0c200765e6885c3f96959 [file] [log] [blame]
Benjamin Petersond7c77842008-05-26 13:01:25 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Georg Brandl5c7f8fb2008-12-05 09:00:55 +00004dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61).
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 Oussoren9b831f42010-02-07 11:57:14 +000072AC_MSG_CHECKING([for --enable-universalsdk])
Ronald Oussoren988117f2006-04-29 11:31:35 +000073AC_ARG_ENABLE(universalsdk,
Brett Cannon91a1dec2008-02-13 19:15:44 +000074 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Ronald Oussoren988117f2006-04-29 11:31:35 +000075[
76 case $enableval in
77 yes)
78 enableval=/Developer/SDKs/MacOSX10.4u.sdk
Ronald Oussoren9b831f42010-02-07 11:57:14 +000079 if test ! -d "${enableval}"
80 then
81 enableval=/
82 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +000083 ;;
84 esac
85 case $enableval in
86 no)
87 UNIVERSALSDK=
88 enable_universalsdk=
89 ;;
90 *)
91 UNIVERSALSDK=$enableval
Ronald Oussoren9b831f42010-02-07 11:57:14 +000092 if test ! -d "${UNIVERSALSDK}"
93 then
94 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
95 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +000096 ;;
97 esac
Ronald Oussoren9b831f42010-02-07 11:57:14 +000098
Ronald Oussoren988117f2006-04-29 11:31:35 +000099],[
100 UNIVERSALSDK=
101 enable_universalsdk=
102])
Ronald Oussoren9b831f42010-02-07 11:57:14 +0000103if test -n "${UNIVERSALSDK}"
104then
105 AC_MSG_RESULT(${UNIVERSALSDK})
106else
107 AC_MSG_RESULT(no)
108fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000109AC_SUBST(UNIVERSALSDK)
110
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000111AC_SUBST(ARCH_RUN_32BIT)
112
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000113UNIVERSAL_ARCHS="32-bit"
114AC_MSG_CHECKING(for --with-universal-archs)
115AC_ARG_WITH(universal-archs,
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000116 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000117[
118 AC_MSG_RESULT($withval)
119 UNIVERSAL_ARCHS="$withval"
Ronald Oussorend0841712009-09-29 13:01:59 +0000120 if test "${enable_universalsdk}" ; then
121 :
122 else
123 AC_MSG_ERROR([--with-universal-archs without --enable-universalsdk. See Mac/README])
124 fi
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000125],
126[
127 AC_MSG_RESULT(32-bit)
128])
129
130
131
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000132AC_ARG_WITH(framework-name,
133 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
134 specify an alternate name of the framework built with --enable-framework),
135[
Ronald Oussorend0841712009-09-29 13:01:59 +0000136 if test "${enable_framework}"; then
137 :
138 else
139 AC_MSG_ERROR([--with-framework-name without --enable-framework. See Mac/README])
140 fi
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000141 PYTHONFRAMEWORK=${withval}
142 PYTHONFRAMEWORKDIR=${withval}.framework
143 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
144 ],[
145 PYTHONFRAMEWORK=Python
146 PYTHONFRAMEWORKDIR=Python.framework
147 PYTHONFRAMEWORKIDENTIFIER=org.python.python
148])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000149dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000150AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000151 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
152[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000153 case $enableval in
154 yes)
155 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000156 esac
157 case $enableval in
158 no)
159 PYTHONFRAMEWORK=
160 PYTHONFRAMEWORKDIR=no-framework
161 PYTHONFRAMEWORKPREFIX=
162 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000163 FRAMEWORKINSTALLFIRST=
164 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000165 FRAMEWORKALTINSTALLFIRST=
166 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000167 if test "x${prefix}" = "xNONE"; then
168 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
169 else
170 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
171 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000172 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000173 ;;
174 *)
175 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000176 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000177 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000178 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
179 if test "$UNIVERSAL_ARCHS" = "all"
180 then
181 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussoren75d83852009-03-30 17:56:14 +0000182 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000183 else
Ronald Oussoren75d83852009-03-30 17:56:14 +0000184 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000185 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
186 fi
187
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000188 if test "x${prefix}" = "xNONE" ; then
189 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
190 else
191 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
192 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000193 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000194
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000195 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000196 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000197 AC_CONFIG_FILES(Mac/Makefile)
198 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
199 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000200 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
201 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000202 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000203 ],[
204 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000205 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000206 PYTHONFRAMEWORKPREFIX=
207 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000208 FRAMEWORKINSTALLFIRST=
209 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000210 FRAMEWORKALTINSTALLFIRST=
211 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000212 if test "x${prefix}" = "xNONE" ; then
213 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
214 else
215 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
216 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000217 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000218
219 if test "$UNIVERSAL_ARCHS" = "all"
220 then
221 FRAMEWORKINSTALLLAST=update4wayuniversal
222 FRAMEWORKALTINSTALLLAST=update4wayuniversal
223 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000224])
225AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000226AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000227AC_SUBST(PYTHONFRAMEWORKDIR)
228AC_SUBST(PYTHONFRAMEWORKPREFIX)
229AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000230AC_SUBST(FRAMEWORKINSTALLFIRST)
231AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000232AC_SUBST(FRAMEWORKALTINSTALLFIRST)
233AC_SUBST(FRAMEWORKALTINSTALLLAST)
234AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000235
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000236##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000237## AC_HELP_STRING(--with-dyld,
238## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000239##
Guido van Rossumb418f891996-07-30 18:06:02 +0000240# Set name for machine-dependent library files
241AC_SUBST(MACHDEP)
242AC_MSG_CHECKING(MACHDEP)
243if test -z "$MACHDEP"
244then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000245 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000246 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
247 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000248 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000249 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000250 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000251 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000252 ac_md_system=`echo $ac_sys_system |
253 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
254 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000255 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000256 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000257
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000258 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000259 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000260 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000261 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000262 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000263 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000264 esac
265fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000266
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000267# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
268# disable features if it is defined, without any means to access these
269# features as extensions. For these systems, we skip the definition of
270# _XOPEN_SOURCE. Before adding a system to the list to gain access to
271# some feature, make sure there is no alternative way to access this
272# feature. Also, when using wildcards, make sure you have verified the
273# need for not defining _XOPEN_SOURCE on all systems matching the
274# wildcard, and that the wildcard does not include future systems
275# (which may remove their limitations).
276dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
277case $ac_sys_system/$ac_sys_release in
278 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
279 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000280 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis4c5e2c82010-02-15 21:43:41 +0000281 # In addition, Stefan Krah confirms that issue #1244610 exists through
282 # OpenBSD 4.6, but is fixed in 4.7.
283 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123456@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000284 define_xopen_source=no
285 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
286 # also defined. This can be overridden by defining _BSD_SOURCE
287 # As this has a different meaning on Linux, only define it on OpenBSD
288 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
289 ;;
Martin v. Löwis4c5e2c82010-02-15 21:43:41 +0000290 OpenBSD/4.@<:@789@:>@)
Martin v. Löwis4bacaca2010-02-15 08:34:34 +0000291 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
292 # also defined. This can be overridden by defining _BSD_SOURCE
293 # As this has a different meaning on Linux, only define it on OpenBSD
294 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
295 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000296 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
297 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
298 # Marc Recht
Georg Brandl60616122008-11-16 08:02:56 +0000299 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000300 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000301 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
302 # of union __?sigval. Reported by Stuart Bishop.
303 SunOS/5.6)
304 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000305 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
306 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000307 # Reconfirmed for 7.1.4 by Martin v. Loewis.
308 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000309 define_xopen_source=no;;
310 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000311 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000312 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000313 define_xopen_source=no;;
Martin v. Löwis7f08c1f2008-11-04 20:43:31 +0000314 # On FreeBSD 4, the math functions C89 does not cover are never defined
315 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
316 FreeBSD/4.*)
317 define_xopen_source=no;;
318 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
319 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
320 # identifies itself as Darwin/7.*
321 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
322 # disables platform specific features beyond repair.
323 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
324 # has no effect, don't bother defining them
325 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000326 define_xopen_source=no;;
Ronald Oussoren668907d2010-03-08 18:21:19 +0000327 Darwin/1@<:@0-9@:>@.*)
Ronald Oussoren09416212010-03-08 07:00:08 +0000328 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000329 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
330 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
331 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000332 AIX/4)
333 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000334 AIX/5)
335 if test `uname -r` -eq 1; then
336 define_xopen_source=no
337 fi
338 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000339 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
340 # defining NI_NUMERICHOST.
341 QNX/6.3.2)
342 define_xopen_source=no
343 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000344
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000345esac
346
347if test $define_xopen_source = yes
348then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000349 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
350 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000351 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
352 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000353 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000354 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000355 AC_DEFINE(_XOPEN_SOURCE, 500,
356 Define to the level of X/Open that your system supports)
357 ;;
358 *)
359 AC_DEFINE(_XOPEN_SOURCE, 600,
360 Define to the level of X/Open that your system supports)
361 ;;
362 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000363
364 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
365 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
366 # several APIs are not declared. Since this is also needed in some
367 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000368 # except for Solaris 10, where it must not be defined,
369 # as it implies XPG4.2
370 case $ac_sys_system/$ac_sys_release in
371 SunOS/5.10)
372 ;;
373 *)
374 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
375 Define to activate Unix95-and-earlier features)
376 ;;
377 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000378
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000379 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
380
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000381fi
382
Guido van Rossum91922671997-10-09 20:24:13 +0000383#
384# SGI compilers allow the specification of the both the ABI and the
385# ISA on the command line. Depending on the values of these switches,
386# different and often incompatable code will be generated.
387#
388# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
389# thus supply support for various ABI/ISA combinations. The MACHDEP
390# variable is also adjusted.
391#
392AC_SUBST(SGI_ABI)
393if test ! -z "$SGI_ABI"
394then
395 CC="cc $SGI_ABI"
396 LDFLAGS="$SGI_ABI $LDFLAGS"
397 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
398fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000399AC_MSG_RESULT($MACHDEP)
400
Jack Jansen83f898c2002-12-30 22:23:40 +0000401# And add extra plat-mac for darwin
402AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000403AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000404AC_MSG_CHECKING(EXTRAPLATDIR)
405if test -z "$EXTRAPLATDIR"
406then
407 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000408 darwin)
409 EXTRAPLATDIR="\$(PLATMACDIRS)"
410 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
411 ;;
412 *)
413 EXTRAPLATDIR=""
414 EXTRAMACHDEPPATH=""
415 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000416 esac
417fi
418AC_MSG_RESULT($EXTRAPLATDIR)
419
Jack Jansen6b08a402004-06-03 12:41:45 +0000420# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
421# it may influence the way we can build extensions, so distutils
422# needs to check it
423AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000424AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000425CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000426EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000427
Mark Dickinson65134662008-04-25 16:11:04 +0000428AC_MSG_CHECKING(machine type as reported by uname -m)
429ac_sys_machine=`uname -m`
430AC_MSG_RESULT($ac_sys_machine)
431
Guido van Rossum627b2d71993-12-24 10:39:16 +0000432# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000433
434# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
435# for debug/optimization stuff. BASECFLAGS is for flags that are required
436# just to get things to compile and link. Users are free to override OPT
437# when running configure or make. The build should not break if they do.
438# BASECFLAGS should generally not be messed with, however.
439
440# XXX shouldn't some/most/all of this code be merged with the stuff later
441# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000442AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000443AC_ARG_WITH(gcc,
444 AC_HELP_STRING(--without-gcc,never use gcc),
445[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000446 case $withval in
Georg Brandlc04c2892009-01-14 00:00:17 +0000447 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000448 without_gcc=yes;;
449 yes) CC=gcc
450 without_gcc=no;;
451 *) CC=$withval
452 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000453 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000454 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000455 AIX*) CC=cc_r
456 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000457 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000458 case $BE_HOST_CPU in
459 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000460 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000461 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000462 BASECFLAGS="$BASECFLAGS -export pragma"
463 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000464 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000465 ;;
466 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000467 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000468 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000469 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000470 ;;
471 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000472 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000473 ;;
474 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000475 AR="\$(srcdir)/Modules/ar_beos"
476 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000477 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000478 Monterey*)
479 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000480 without_gcc=;;
481 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000482 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000483AC_MSG_RESULT($without_gcc)
484
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000485# If the user switches compilers, we can't believe the cache
486if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
487then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000488 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
489(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000490fi
491
Guido van Rossum627b2d71993-12-24 10:39:16 +0000492AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000493
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000494AC_SUBST(CXX)
495AC_SUBST(MAINCC)
496AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
497AC_ARG_WITH(cxx_main,
498 AC_HELP_STRING([--with-cxx-main=<compiler>],
499 [compile main() and link python executable with C++ compiler]),
500[
501
502 case $withval in
503 no) with_cxx_main=no
504 MAINCC='$(CC)';;
505 yes) with_cxx_main=yes
506 MAINCC='$(CXX)';;
507 *) with_cxx_main=yes
508 MAINCC=$withval
509 if test -z "$CXX"
510 then
511 CXX=$withval
512 fi;;
513 esac], [
514 with_cxx_main=no
515 MAINCC='$(CC)'
516])
517AC_MSG_RESULT($with_cxx_main)
518
519preset_cxx="$CXX"
520if test -z "$CXX"
521then
522 case "$CC" in
523 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
524 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
525 esac
526 if test "$CXX" = "notfound"
527 then
528 CXX=""
529 fi
530fi
531if test -z "$CXX"
532then
533 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
534 if test "$CXX" = "notfound"
535 then
536 CXX=""
537 fi
538fi
539if test "$preset_cxx" != "$CXX"
540then
541 AC_MSG_WARN([
542
543 By default, distutils will build C++ extension modules with "$CXX".
544 If this is not intended, then set CXX on the configure command line.
545 ])
546fi
547
548
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000549# checks for UNIX variants that set C preprocessor variables
550AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000551
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000552# Check for unsupported systems
553case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000554atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000555 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
556 echo See README for details.
557 exit 1;;
558esac
559
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000560AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000561AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000562AC_ARG_WITH(suffix,
563 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
564[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000565 case $withval in
566 no) EXEEXT=;;
567 yes) EXEEXT=.exe;;
568 *) EXEEXT=$withval;;
569 esac])
570AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000571
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000572# Test whether we're running on a non-case-sensitive system, in which
573# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000574AC_SUBST(BUILDEXEEXT)
575AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000576if test ! -d CaseSensitiveTestDir; then
577mkdir CaseSensitiveTestDir
578fi
579
580if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000581then
Jack Jansen1999ef42001-12-06 21:47:20 +0000582 AC_MSG_RESULT(yes)
583 BUILDEXEEXT=.exe
584else
585 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000586 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000587fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000588rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000589
Guido van Rossumdd997f71998-10-07 19:58:26 +0000590case $MACHDEP in
591bsdos*)
592 case $CC in
593 gcc) CC="$CC -D_HAVE_BSDI";;
594 esac;;
595esac
596
Guido van Rossum84561611997-08-21 00:08:11 +0000597case $ac_sys_system in
598hp*|HP*)
599 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000600 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000601 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000602Monterey*)
603 case $CC in
604 cc) CC="$CC -Wl,-Bexport";;
605 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000606SunOS*)
607 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000608 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000609 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000610esac
611
Martin v. Löwise8964d42001-03-06 12:09:07 +0000612
Neil Schemenauer61c51152001-01-26 16:18:16 +0000613AC_SUBST(LIBRARY)
614AC_MSG_CHECKING(LIBRARY)
615if test -z "$LIBRARY"
616then
617 LIBRARY='libpython$(VERSION).a'
618fi
619AC_MSG_RESULT($LIBRARY)
620
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000621# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000622# name of the library into which to insert object files). BLDLIBRARY is also
623# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
624# is blank as the main program is not linked directly against LDLIBRARY.
625# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
626# systems without shared libraries, LDLIBRARY is the same as LIBRARY
627# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
628# DLLLIBRARY is the shared (i.e., DLL) library.
629#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000630# RUNSHARED is used to run shared python without installed libraries
631#
632# INSTSONAME is the name of the shared library that will be use to install
633# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000634AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000635AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000636AC_SUBST(BLDLIBRARY)
637AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000638AC_SUBST(INSTSONAME)
639AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000640LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000641BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000642INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000643DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000644LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000645RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000646
Guido van Rossumfb842551997-08-06 23:42:07 +0000647# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000648# If CXX is set, and if it is needed to link a main function that was
649# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
650# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000651# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000652# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000653AC_SUBST(LINKCC)
654AC_MSG_CHECKING(LINKCC)
655if test -z "$LINKCC"
656then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000657 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000658 case $ac_sys_system in
659 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000660 exp_extra="\"\""
661 if test $ac_sys_release -ge 5 -o \
662 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
663 exp_extra="."
664 fi
665 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000666 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000667 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000668 QNX*)
669 # qcc must be used because the other compilers do not
670 # support -N.
671 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000672 esac
673fi
674AC_MSG_RESULT($LINKCC)
675
Martin v. Löwis1142de32002-03-29 16:28:31 +0000676AC_MSG_CHECKING(for --enable-shared)
677AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000678 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000679
Martin v. Löwis1142de32002-03-29 16:28:31 +0000680if test -z "$enable_shared"
681then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000682 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000683 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000684 enable_shared="yes";;
685 *)
686 enable_shared="no";;
687 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000688fi
689AC_MSG_RESULT($enable_shared)
690
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000691AC_MSG_CHECKING(for --enable-profiling)
692AC_ARG_ENABLE(profiling,
693 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
694[ac_save_cc="$CC"
695 CC="$CC -pg"
696 AC_TRY_RUN([int main() { return 0; }],
697 ac_enable_profiling="yes",
698 ac_enable_profiling="no",
699 ac_enable_profiling="no")
700 CC="$ac_save_cc"])
701AC_MSG_RESULT($ac_enable_profiling)
702
703case "$ac_enable_profiling" in
704 "yes")
705 BASECFLAGS="-pg $BASECFLAGS"
706 LDFLAGS="-pg $LDFLAGS"
707 ;;
708esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000709
710AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000711
Guido van Rossumb8552162001-09-05 14:58:11 +0000712# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
713# library that we build, but we do not want to link against it (we
714# will find it with a -framework option). For this reason there is an
715# extra variable BLDLIBRARY against which Python and the extension
716# modules are linked, BLDLIBRARY. This is normally the same as
717# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000718if test "$enable_framework"
719then
720 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000721 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000722 BLDLIBRARY=''
723else
724 BLDLIBRARY='$(LDLIBRARY)'
725fi
726
Martin v. Löwis1142de32002-03-29 16:28:31 +0000727# Other platforms follow
728if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000729 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000730 case $ac_sys_system in
731 BeOS*)
732 LDLIBRARY='libpython$(VERSION).so'
733 ;;
734 CYGWIN*)
735 LDLIBRARY='libpython$(VERSION).dll.a'
736 DLLLIBRARY='libpython$(VERSION).dll'
737 ;;
738 SunOS*)
739 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000740 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000741 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000742 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000743 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000744 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000745 LDLIBRARY='libpython$(VERSION).so'
746 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000747 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000748 case $ac_sys_system in
749 FreeBSD*)
750 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
751 ;;
752 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000753 INSTSONAME="$LDLIBRARY".$SOVERSION
754 ;;
755 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000756 case `uname -m` in
757 ia64)
758 LDLIBRARY='libpython$(VERSION).so'
759 ;;
760 *)
761 LDLIBRARY='libpython$(VERSION).sl'
762 ;;
763 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000764 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000765 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000766 ;;
767 OSF*)
768 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000769 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000770 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000771 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000772 atheos*)
773 LDLIBRARY='libpython$(VERSION).so'
774 BLDLIBRARY='-L. -lpython$(VERSION)'
775 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
776 ;;
Ronald Oussorene9cce8e2009-01-02 10:46:42 +0000777 Darwin*)
778 LDLIBRARY='libpython$(VERSION).dylib'
779 BLDLIBRARY='-L. -lpython$(VERSION)'
780 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
781 ;;
782
Martin v. Löwis1142de32002-03-29 16:28:31 +0000783 esac
Jason Tishler30765592003-09-04 11:04:06 +0000784else # shared is disabled
785 case $ac_sys_system in
786 CYGWIN*)
787 BLDLIBRARY='$(LIBRARY)'
788 LDLIBRARY='libpython$(VERSION).dll.a'
789 ;;
790 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000791fi
792
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000793AC_MSG_RESULT($LDLIBRARY)
794
Guido van Rossum627b2d71993-12-24 10:39:16 +0000795AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000796AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000797AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000798
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000799AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000800AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000801if test $SVNVERSION = found
802then
803 SVNVERSION="svnversion \$(srcdir)"
804else
Benjamin Peterson2eb65452009-05-23 19:35:33 +0000805 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000806fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000807
Neil Schemenauera42c8272001-03-31 00:01:55 +0000808case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000809bsdos*|hp*|HP*)
810 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000811 if test -z "$INSTALL"
812 then
813 INSTALL="${srcdir}/install-sh -c"
814 fi
815esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000816AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000817
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000818# Not every filesystem supports hard links
819AC_SUBST(LN)
820if test -z "$LN" ; then
821 case $ac_sys_system in
822 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000823 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000824 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000825 *) LN=ln;;
826 esac
827fi
828
Fred Drake9f715822001-07-11 06:27:00 +0000829# Check for --with-pydebug
830AC_MSG_CHECKING(for --with-pydebug)
831AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000832 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
833[
Fred Drake9f715822001-07-11 06:27:00 +0000834if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000835then
836 AC_DEFINE(Py_DEBUG, 1,
837 [Define if you want to build an interpreter with many run-time checks.])
838 AC_MSG_RESULT(yes);
839 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000840else AC_MSG_RESULT(no); Py_DEBUG='false'
841fi],
842[AC_MSG_RESULT(no)])
843
Skip Montanarodecc6a42003-01-01 20:07:49 +0000844# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
845# merged with this chunk of code?
846
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000847# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000848# ------------------------
849# (The following bit of code is complicated enough - please keep things
850# indented properly. Just pretend you're editing Python code. ;-)
851
852# There are two parallel sets of case statements below, one that checks to
853# see if OPT was set and one that does BASECFLAGS setting based upon
854# compiler and platform. BASECFLAGS tweaks need to be made even if the
855# user set OPT.
856
857# tweak OPT based on compiler and platform, only if the user didn't set
858# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000859AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000860if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000861then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000862 case $GCC in
863 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000864 if test "$CC" != 'g++' ; then
865 STRICT_PROTO="-Wstrict-prototypes"
866 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000867 # For gcc 4.x we need to use -fwrapv so lets check if its supported
868 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
869 WRAP="-fwrapv"
870 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000871 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000872 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000873 if test "$Py_DEBUG" = 'true' ; then
874 # Optimization messes up debuggers, so turn it off for
875 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000876 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000877 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000878 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000879 fi
880 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000881 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000882 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000883 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000884 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000885 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000886 SCO_SV*) OPT="$OPT -m486 -DSCO5"
887 ;;
888 esac
Fred Drake9f715822001-07-11 06:27:00 +0000889 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000890
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000891 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000892 OPT="-O"
893 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000894 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000895
896 # The current (beta) Monterey compiler dies with optimizations
897 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000898 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000899 Monterey*)
900 OPT=""
901 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000902 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000903
Guido van Rossum4e8af441994-08-19 15:33:54 +0000904fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000905
Skip Montanarodecc6a42003-01-01 20:07:49 +0000906AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000907
908# The -arch flags for universal builds on OSX
909UNIVERSAL_ARCH_FLAGS=
910AC_SUBST(UNIVERSAL_ARCH_FLAGS)
911
Skip Montanarodecc6a42003-01-01 20:07:49 +0000912# tweak BASECFLAGS based on compiler and platform
913case $GCC in
914yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000915 # Python violates C99 rules, by casting between incompatible
916 # pointer types. GCC may generate bad code as a result of that,
917 # so use -fno-strict-aliasing if supported.
918 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
919 ac_save_cc="$CC"
920 CC="$CC -fno-strict-aliasing"
921 AC_TRY_RUN([int main() { return 0; }],
922 ac_cv_no_strict_aliasing_ok=yes,
923 ac_cv_no_strict_aliasing_ok=no,
924 ac_cv_no_strict_aliasing_ok=no)
925 CC="$ac_save_cc"
926 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
927 if test $ac_cv_no_strict_aliasing_ok = yes
928 then
929 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
930 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000931
932 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
933 # support. Without this, treatment of subnormals doesn't follow
934 # the standard.
935 case $ac_sys_machine in
936 alpha*)
937 BASECFLAGS="$BASECFLAGS -mieee"
938 ;;
939 esac
940
Skip Montanarodecc6a42003-01-01 20:07:49 +0000941 case $ac_sys_system in
942 SCO_SV*)
943 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
944 ;;
945 # is there any other compiler on Darwin besides gcc?
946 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000947 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
948 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson4347c442008-07-17 15:59:24 +0000949
950
Ronald Oussoren988117f2006-04-29 11:31:35 +0000951 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000952 UNIVERSAL_ARCH_FLAGS=""
953 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
954 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000955 ARCH_RUN_32BIT=""
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000956
957 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
958 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren461f2202009-09-06 10:54:28 +0000959 ARCH_RUN_32BIT="true"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000960
961 elif test "$UNIVERSAL_ARCHS" = "all" ; then
962 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussorend8244f52010-02-11 13:22:03 +0000963 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000964
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000965 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
966 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussorend8244f52010-02-11 13:22:03 +0000967 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000968
969 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
970 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussorend8244f52010-02-11 13:22:03 +0000971 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000972
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000973 else
Ronald Oussorenba0aa6b2009-09-20 20:16:38 +0000974 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000975
976 fi
977
978
979 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Ronald Oussoren5a849d42008-07-22 07:06:00 +0000980 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson4347c442008-07-17 15:59:24 +0000981 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
982 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
983 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000984 fi
985
Benjamin Peterson4347c442008-07-17 15:59:24 +0000986 # Calculate the right deployment target for this build.
987 #
988 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
989 if test ${cur_target} '>' 10.2; then
990 cur_target=10.3
Ronald Oussoren461f2202009-09-06 10:54:28 +0000991 if test ${enable_universalsdk}; then
992 if test "${UNIVERSAL_ARCHS}" = "all"; then
993 # Ensure that the default platform for a
994 # 4-way universal build is OSX 10.5,
995 # that's the first OS release where
996 # 4-way builds make sense.
997 cur_target='10.5'
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000998
999 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
1000 cur_target='10.5'
1001
1002 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
1003 cur_target='10.5'
1004
1005 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1006 cur_target='10.5'
Ronald Oussoren461f2202009-09-06 10:54:28 +00001007 fi
1008 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001009 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren461f2202009-09-06 10:54:28 +00001010 # On Intel macs default to a deployment
1011 # target of 10.4, that's the first OSX
1012 # release with Intel support.
1013 cur_target="10.4"
1014 fi
1015 fi
Benjamin Peterson4347c442008-07-17 15:59:24 +00001016 fi
1017 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1018
1019 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1020 # environment with a value that is the same as what we'll use
1021 # in the Makefile to ensure that we'll get the same compiler
1022 # environment during configure and build time.
1023 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1024 export MACOSX_DEPLOYMENT_TARGET
1025 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1026
Skip Montanarodecc6a42003-01-01 20:07:49 +00001027 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +00001028 OSF*)
1029 BASECFLAGS="$BASECFLAGS -mieee"
1030 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001031 esac
1032 ;;
1033
1034*)
1035 case $ac_sys_system in
1036 OpenUNIX*|UnixWare*)
1037 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1038 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001039 OSF*)
1040 BASECFLAGS="$BASECFLAGS -ieee -std"
1041 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001042 SCO_SV*)
1043 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1044 ;;
1045 esac
1046 ;;
1047esac
1048
Fred Drakee1ceaa02001-12-04 20:55:47 +00001049if test "$Py_DEBUG" = 'true'; then
1050 :
1051else
1052 OPT="-DNDEBUG $OPT"
1053fi
1054
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001055if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001056then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001057 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001058fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001059
Neal Norwitz020c46a2006-01-07 21:39:28 +00001060# disable check for icc since it seems to pass, but generates a warning
1061if test "$CC" = icc
1062then
1063 ac_cv_opt_olimit_ok=no
1064fi
1065
Guido van Rossum91922671997-10-09 20:24:13 +00001066AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1067AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1068[ac_save_cc="$CC"
1069CC="$CC -OPT:Olimit=0"
1070AC_TRY_RUN([int main() { return 0; }],
1071 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001072 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001073 ac_cv_opt_olimit_ok=no)
1074CC="$ac_save_cc"])
1075AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001076if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001077 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001078 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1079 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1080 # environment?
1081 Darwin*)
1082 ;;
1083 *)
1084 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1085 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001086 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001087else
1088 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1089 AC_CACHE_VAL(ac_cv_olimit_ok,
1090 [ac_save_cc="$CC"
1091 CC="$CC -Olimit 1500"
1092 AC_TRY_RUN([int main() { return 0; }],
1093 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001094 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001095 ac_cv_olimit_ok=no)
1096 CC="$ac_save_cc"])
1097 AC_MSG_RESULT($ac_cv_olimit_ok)
1098 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001099 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001100 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001101fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001102
Martin v. Löwisaac13162006-10-19 10:58:46 +00001103# Check whether GCC supports PyArg_ParseTuple format
1104if test "$GCC" = "yes"
1105then
1106 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1107 save_CFLAGS=$CFLAGS
1108 CFLAGS="$CFLAGS -Werror"
1109 AC_TRY_COMPILE([
1110 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1111 ],,
1112 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1113 AC_MSG_RESULT(yes),
1114 AC_MSG_RESULT(no)
1115 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001116 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001117fi
1118
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001119# On some compilers, pthreads are available without further options
1120# (e.g. MacOS X). On some of these systems, the compiler will not
1121# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1122# So we have to see first whether pthreads are available without
1123# options before we can check whether -Kpthread improves anything.
1124AC_MSG_CHECKING(whether pthreads are available without options)
1125AC_CACHE_VAL(ac_cv_pthread_is_default,
1126[AC_TRY_RUN([
1127#include <pthread.h>
1128
1129void* routine(void* p){return NULL;}
1130
1131int main(){
1132 pthread_t p;
1133 if(pthread_create(&p,NULL,routine,NULL)!=0)
1134 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001135 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001136 return 0;
1137}
1138],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001139[
1140 ac_cv_pthread_is_default=yes
1141 ac_cv_kthread=no
1142 ac_cv_pthread=no
1143],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001144 ac_cv_pthread_is_default=no,
1145 ac_cv_pthread_is_default=no)
1146])
1147AC_MSG_RESULT($ac_cv_pthread_is_default)
1148
1149
1150if test $ac_cv_pthread_is_default = yes
1151then
1152 ac_cv_kpthread=no
1153else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001154# -Kpthread, if available, provides the right #defines
1155# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001156# Some compilers won't report that they do not support -Kpthread,
1157# so we need to run a program to see whether it really made the
1158# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001159AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1160AC_CACHE_VAL(ac_cv_kpthread,
1161[ac_save_cc="$CC"
1162CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001163AC_TRY_RUN([
1164#include <pthread.h>
1165
1166void* routine(void* p){return NULL;}
1167
1168int main(){
1169 pthread_t p;
1170 if(pthread_create(&p,NULL,routine,NULL)!=0)
1171 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001172 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001173 return 0;
1174}
1175],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001176 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001177 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001178 ac_cv_kpthread=no)
1179CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001180AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001181fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001182
Skip Montanarod8d39a02003-07-10 20:44:10 +00001183if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001184then
1185# -Kthread, if available, provides the right #defines
1186# and linker options to make pthread_create available
1187# Some compilers won't report that they do not support -Kthread,
1188# so we need to run a program to see whether it really made the
1189# function available.
1190AC_MSG_CHECKING(whether $CC accepts -Kthread)
1191AC_CACHE_VAL(ac_cv_kthread,
1192[ac_save_cc="$CC"
1193CC="$CC -Kthread"
1194AC_TRY_RUN([
1195#include <pthread.h>
1196
1197void* routine(void* p){return NULL;}
1198
1199int main(){
1200 pthread_t p;
1201 if(pthread_create(&p,NULL,routine,NULL)!=0)
1202 return 1;
1203 (void)pthread_detach(p);
1204 return 0;
1205}
1206],
1207 ac_cv_kthread=yes,
1208 ac_cv_kthread=no,
1209 ac_cv_kthread=no)
1210CC="$ac_save_cc"])
1211AC_MSG_RESULT($ac_cv_kthread)
1212fi
1213
Skip Montanarod8d39a02003-07-10 20:44:10 +00001214if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001215then
1216# -pthread, if available, provides the right #defines
1217# and linker options to make pthread_create available
1218# Some compilers won't report that they do not support -pthread,
1219# so we need to run a program to see whether it really made the
1220# function available.
1221AC_MSG_CHECKING(whether $CC accepts -pthread)
1222AC_CACHE_VAL(ac_cv_thread,
1223[ac_save_cc="$CC"
1224CC="$CC -pthread"
1225AC_TRY_RUN([
1226#include <pthread.h>
1227
1228void* routine(void* p){return NULL;}
1229
1230int main(){
1231 pthread_t p;
1232 if(pthread_create(&p,NULL,routine,NULL)!=0)
1233 return 1;
1234 (void)pthread_detach(p);
1235 return 0;
1236}
1237],
1238 ac_cv_pthread=yes,
1239 ac_cv_pthread=no,
1240 ac_cv_pthread=no)
1241CC="$ac_save_cc"])
1242AC_MSG_RESULT($ac_cv_pthread)
1243fi
1244
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001245# If we have set a CC compiler flag for thread support then
1246# check if it works for CXX, too.
1247ac_cv_cxx_thread=no
1248if test ! -z "$CXX"
1249then
1250AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1251ac_save_cxx="$CXX"
1252
1253if test "$ac_cv_kpthread" = "yes"
1254then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001255 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001256 ac_cv_cxx_thread=yes
1257elif test "$ac_cv_kthread" = "yes"
1258then
1259 CXX="$CXX -Kthread"
1260 ac_cv_cxx_thread=yes
1261elif test "$ac_cv_pthread" = "yes"
1262then
1263 CXX="$CXX -pthread"
1264 ac_cv_cxx_thread=yes
1265fi
1266
1267if test $ac_cv_cxx_thread = yes
1268then
1269 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1270 $CXX -c conftest.$ac_ext 2>&5
1271 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1272 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1273 then
1274 ac_cv_cxx_thread=yes
1275 else
1276 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001277 fi
1278 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001279fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001280AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001281fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001282CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001283
Fred Drakece81d592000-07-09 14:39:29 +00001284dnl # check for ANSI or K&R ("traditional") preprocessor
1285dnl AC_MSG_CHECKING(for C preprocessor type)
1286dnl AC_TRY_COMPILE([
1287dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1288dnl int foo;
1289dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1290dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1291dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001292
Guido van Rossum627b2d71993-12-24 10:39:16 +00001293# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001294AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001295AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1296fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001297ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001298shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001299unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001300sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1301sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001302sys/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 +00001303sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001304sys/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 +00001305sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001306bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001307AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001308AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001309
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001310# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001311AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001312#ifdef HAVE_CURSES_H
1313#include <curses.h>
1314#endif
1315])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001316
Martin v. Löwis11017b12006-01-14 18:12:57 +00001317# On Linux, netlink.h requires asm/types.h
1318AC_CHECK_HEADERS(linux/netlink.h,,,[
1319#ifdef HAVE_ASM_TYPES_H
1320#include <asm/types.h>
1321#endif
1322#ifdef HAVE_SYS_SOCKET_H
1323#include <sys/socket.h>
1324#endif
1325])
1326
Guido van Rossum627b2d71993-12-24 10:39:16 +00001327# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001328was_it_defined=no
1329AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001330AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1331 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1332])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001333AC_MSG_RESULT($was_it_defined)
1334
Neal Norwitz11690112002-07-30 01:08:28 +00001335# Check whether using makedev requires defining _OSF_SOURCE
1336AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001337AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001338 [ makedev(0, 0) ],
1339 ac_cv_has_makedev=yes,
1340 ac_cv_has_makedev=no)
1341if test "$ac_cv_has_makedev" = "no"; then
1342 # we didn't link, try if _OSF_SOURCE will allow us to link
1343 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001344#define _OSF_SOURCE 1
1345#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001346 ],
1347 [ makedev(0, 0) ],
1348 ac_cv_has_makedev=yes,
1349 ac_cv_has_makedev=no)
1350 if test "$ac_cv_has_makedev" = "yes"; then
1351 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1352 fi
1353fi
1354AC_MSG_RESULT($ac_cv_has_makedev)
1355if test "$ac_cv_has_makedev" = "yes"; then
1356 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1357fi
1358
Martin v. Löwis399a6892002-10-04 10:22:02 +00001359# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1360# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1361# defined, but the compiler does not support pragma redefine_extname,
1362# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1363# structures (such as rlimit64) without declaring them. As a
1364# work-around, disable LFS on such configurations
1365
1366use_lfs=yes
1367AC_MSG_CHECKING(Solaris LFS bug)
1368AC_TRY_COMPILE([
1369#define _LARGEFILE_SOURCE 1
1370#define _FILE_OFFSET_BITS 64
1371#include <sys/resource.h>
1372],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1373AC_MSG_RESULT($sol_lfs_bug)
1374if test "$sol_lfs_bug" = "yes"; then
1375 use_lfs=no
1376fi
1377
1378if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001379# Two defines needed to enable largefile support on various platforms
1380# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001381AC_DEFINE(_LARGEFILE_SOURCE, 1,
1382[This must be defined on some systems to enable large file support.])
1383AC_DEFINE(_FILE_OFFSET_BITS, 64,
1384[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001385fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001386
Guido van Rossum300fda71996-08-19 21:58:16 +00001387# Add some code to confdefs.h so that the test for off_t works on SCO
1388cat >> confdefs.h <<\EOF
1389#if defined(SCO_DS)
1390#undef _OFF_T
1391#endif
1392EOF
1393
Guido van Rossumef2255b2000-03-10 22:30:29 +00001394# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001395AC_TYPE_MODE_T
1396AC_TYPE_OFF_T
1397AC_TYPE_PID_T
1398AC_TYPE_SIGNAL
1399AC_TYPE_SIZE_T
1400AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001401AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001402 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001403
Guido van Rossumef2255b2000-03-10 22:30:29 +00001404# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001405# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001406AC_CHECK_SIZEOF(int, 4)
1407AC_CHECK_SIZEOF(long, 4)
1408AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001409AC_CHECK_SIZEOF(short, 2)
1410AC_CHECK_SIZEOF(float, 4)
1411AC_CHECK_SIZEOF(double, 8)
1412AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001413AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001414AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001415
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001416AC_MSG_CHECKING(for long long support)
1417have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001418AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1419 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1420 have_long_long=yes
1421])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001422AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001423if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001424AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001425fi
1426
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001427AC_MSG_CHECKING(for long double support)
1428have_long_double=no
1429AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1430 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1431 have_long_double=yes
1432])
1433AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001434if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001435AC_CHECK_SIZEOF(long double, 12)
1436fi
1437
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001438AC_MSG_CHECKING(for _Bool support)
1439have_c99_bool=no
1440AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1441 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1442 have_c99_bool=yes
1443])
1444AC_MSG_RESULT($have_c99_bool)
1445if test "$have_c99_bool" = yes ; then
1446AC_CHECK_SIZEOF(_Bool, 1)
1447fi
1448
Martin v. Löwisebe26702006-10-02 14:55:51 +00001449AC_CHECK_TYPES(uintptr_t,
1450 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001451 [], [#ifdef HAVE_STDINT_H
1452 #include <stdint.h>
1453 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001454
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001455
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001456# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1457AC_MSG_CHECKING(size of off_t)
1458AC_CACHE_VAL(ac_cv_sizeof_off_t,
1459[AC_TRY_RUN([#include <stdio.h>
1460#include <sys/types.h>
1461main()
1462{
1463 FILE *f=fopen("conftestval", "w");
1464 if (!f) exit(1);
1465 fprintf(f, "%d\n", sizeof(off_t));
1466 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001467}],
1468ac_cv_sizeof_off_t=`cat conftestval`,
1469ac_cv_sizeof_off_t=0,
1470ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001471])
1472AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001473AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1474[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001475
1476AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinsoncaa44c02009-12-31 21:20:06 +00001477if test "$have_long_long" = yes
1478then
1479if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001480 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001481 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1482 [Defined to enable large file support when an off_t is bigger than a long
1483 and long long is available and at least as big as an off_t. You may need
1484 to add some flags for configuration and compilation to enable this mode.
1485 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001486 AC_MSG_RESULT(yes)
1487else
1488 AC_MSG_RESULT(no)
1489fi
Mark Dickinsoncaa44c02009-12-31 21:20:06 +00001490else
1491 AC_MSG_RESULT(no)
1492fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001493
Fred Drakea3f6e912000-06-29 20:44:47 +00001494# AC_CHECK_SIZEOF() doesn't include <time.h>.
1495AC_MSG_CHECKING(size of time_t)
1496AC_CACHE_VAL(ac_cv_sizeof_time_t,
1497[AC_TRY_RUN([#include <stdio.h>
1498#include <time.h>
1499main()
1500{
1501 FILE *f=fopen("conftestval", "w");
1502 if (!f) exit(1);
1503 fprintf(f, "%d\n", sizeof(time_t));
1504 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001505}],
1506ac_cv_sizeof_time_t=`cat conftestval`,
1507ac_cv_sizeof_time_t=0,
1508ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001509])
1510AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001511AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1512[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001513
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001514
Trent Mick635f6fb2000-08-23 21:33:05 +00001515# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001516ac_save_cc="$CC"
1517if test "$ac_cv_kpthread" = "yes"
1518then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001519elif test "$ac_cv_kthread" = "yes"
1520then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001521elif test "$ac_cv_pthread" = "yes"
1522then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001523fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001524AC_MSG_CHECKING(for pthread_t)
1525have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001526AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001527AC_MSG_RESULT($have_pthread_t)
1528if test "$have_pthread_t" = yes ; then
1529 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1530 AC_MSG_CHECKING(size of pthread_t)
1531 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1532 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001533#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001534 main()
1535 {
1536 FILE *f=fopen("conftestval", "w");
1537 if (!f) exit(1);
1538 fprintf(f, "%d\n", sizeof(pthread_t));
1539 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001540 }],
1541 ac_cv_sizeof_pthread_t=`cat conftestval`,
1542 ac_cv_sizeof_pthread_t=0,
1543 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001544 ])
1545 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001546 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1547 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001548fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001549CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001550
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001551AC_MSG_CHECKING(for --enable-toolbox-glue)
1552AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001553 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001554
1555if test -z "$enable_toolbox_glue"
1556then
1557 case $ac_sys_system/$ac_sys_release in
1558 Darwin/*)
1559 enable_toolbox_glue="yes";;
1560 *)
1561 enable_toolbox_glue="no";;
1562 esac
1563fi
1564case "$enable_toolbox_glue" in
1565yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001566 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001567 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001568 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1569 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001570 ;;
1571*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001572 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001573 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001574 ;;
1575esac
1576AC_MSG_RESULT($enable_toolbox_glue)
1577
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001578
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001579AC_SUBST(OTHER_LIBTOOL_OPT)
1580case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001581 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001582 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1583 ;;
1584 Darwin/*)
1585 OTHER_LIBTOOL_OPT=""
1586 ;;
1587esac
1588
Ronald Oussoren461f2202009-09-06 10:54:28 +00001589
1590ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001591AC_SUBST(LIBTOOL_CRUFT)
1592case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001593 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001594 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1595 if test "${enable_universalsdk}"; then
1596 :
1597 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001598 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001599 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001600 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001601 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001602 Darwin/*)
Ronald Oussorenc0fa2d242010-02-07 11:50:54 +00001603 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001604 if test ${gcc_version} '<' 4.0
1605 then
1606 LIBTOOL_CRUFT="-lcc_dynamic"
1607 else
1608 LIBTOOL_CRUFT=""
1609 fi
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001610 AC_TRY_RUN([
Ronald Oussoren461f2202009-09-06 10:54:28 +00001611 #include <unistd.h>
1612 int main(int argc, char*argv[])
1613 {
1614 if (sizeof(long) == 4) {
1615 return 0;
1616 } else {
1617 return 1;
1618 }
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001619 }
1620 ], ac_osx_32bit=yes,
Ronald Oussoren461f2202009-09-06 10:54:28 +00001621 ac_osx_32bit=no,
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001622 ac_osx_32bit=yes)
Ronald Oussoren461f2202009-09-06 10:54:28 +00001623
1624 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001625 case `/usr/bin/arch` in
Ronald Oussoren461f2202009-09-06 10:54:28 +00001626 i386)
1627 MACOSX_DEFAULT_ARCH="i386"
1628 ;;
1629 ppc)
1630 MACOSX_DEFAULT_ARCH="ppc"
1631 ;;
1632 *)
1633 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1634 ;;
1635 esac
1636 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001637 case `/usr/bin/arch` in
Ronald Oussoren461f2202009-09-06 10:54:28 +00001638 i386)
1639 MACOSX_DEFAULT_ARCH="x86_64"
1640 ;;
1641 ppc)
1642 MACOSX_DEFAULT_ARCH="ppc64"
1643 ;;
1644 *)
1645 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1646 ;;
1647 esac
1648
1649 #ARCH_RUN_32BIT="true"
1650 fi
1651
1652 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001653 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001654 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001655esac
1656
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001657AC_MSG_CHECKING(for --enable-framework)
1658if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001659then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001660 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001661 # -F. is needed to allow linking to the framework while
1662 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001663 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1664 [Define if you want to produce an OpenStep/Rhapsody framework
1665 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001666 AC_MSG_RESULT(yes)
Ronald Oussorene6e62672009-06-08 21:19:36 +00001667 if test $enable_shared = "yes"
1668 then
Ronald Oussorend0841712009-09-29 13:01:59 +00001669 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead. See Mac/README.])
Ronald Oussorene6e62672009-06-08 21:19:36 +00001670 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001671else
1672 AC_MSG_RESULT(no)
1673fi
1674
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001675AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001676case $ac_sys_system/$ac_sys_release in
1677 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001678 AC_DEFINE(WITH_DYLD, 1,
1679 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1680 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1681 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001682 AC_MSG_RESULT(always on for Darwin)
1683 ;;
1684 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001685 AC_MSG_RESULT(no)
1686 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001687esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001688
Guido van Rossumac405f61994-09-12 10:56:06 +00001689# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001690AC_SUBST(SO)
1691AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001692AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001693AC_SUBST(CCSHARED)
1694AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001695# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001696# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001697AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001698if test -z "$SO"
1699then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001700 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001701 hp*|HP*)
1702 case `uname -m` in
1703 ia64) SO=.so;;
1704 *) SO=.sl;;
1705 esac
1706 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001707 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001708 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001709 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001710else
1711 # this might also be a termcap variable, see #610332
1712 echo
1713 echo '====================================================================='
1714 echo '+ +'
1715 echo '+ WARNING: You have set SO in your environment. +'
1716 echo '+ Do you really mean to change the extension for shared libraries? +'
1717 echo '+ Continuing in 10 seconds to let you to ponder. +'
1718 echo '+ +'
1719 echo '====================================================================='
1720 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001721fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001722AC_MSG_RESULT($SO)
Ronald Oussorene9cce8e2009-01-02 10:46:42 +00001723
Neal Norwitz58e28882006-05-19 07:00:58 +00001724AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001725# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001726# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001727# (Shared libraries in this instance are shared modules to be loaded into
1728# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001729AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001730if test -z "$LDSHARED"
1731then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001732 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001733 AIX*)
1734 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001735 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001736 ;;
1737 BeOS*)
1738 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001739 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001740 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001741 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001742 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001743 SunOS/5*)
1744 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001745 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001746 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001747 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001748 hp*|HP*)
1749 if test "$GCC" = "yes"
1750 then LDSHARED='$(CC) -shared'
1751 else LDSHARED='ld -b';
1752 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001753 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001754 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001755 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1756 if test "$enable_framework" ; then
1757 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001758 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1759 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001760 else
1761 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001762 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001763 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001764 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001765 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1766 if test "$enable_framework" ; then
1767 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001768 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1769 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001770 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001771 # No framework, use the Python app as bundle-loader
1772 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001773 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001774 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001775 Darwin/*)
1776 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1777 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001778
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001779 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001780 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001781 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001782 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001783 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001784 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1785 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001786 else
1787 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1788 if test "$enable_framework" ; then
1789 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001790 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1791 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001792 else
1793 # No framework, use the Python app as bundle-loader
1794 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1795 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1796 fi
1797 fi
1798 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001799 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001800 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001801 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001802 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001803 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001804 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001805 else
1806 LDSHARED="ld -Bshareable ${LDFLAGS}"
1807 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001808 OpenBSD*)
1809 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1810 then
1811 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1812 else
1813 case `uname -r` in
1814 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1815 LDSHARED="ld -Bshareable ${LDFLAGS}"
1816 ;;
1817 *)
1818 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1819 ;;
1820 esac
1821 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001822 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001823 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001824 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001825 then LDSHARED='$(CC) -shared'
1826 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001827 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001828 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001829 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001830 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001831 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001832 *) LDSHARED="ld";;
1833 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001834fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001835AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001836BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001837# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001838# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001839AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001840if test -z "$CCSHARED"
1841then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001842 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001843 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001844 then CCSHARED="-fPIC";
1845 elif test `uname -p` = sparc;
1846 then CCSHARED="-xcode=pic32";
1847 else CCSHARED="-Kpic";
1848 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001849 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001850 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001851 else CCSHARED="+z";
1852 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001853 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001854 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001855 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001856 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001857 if test "$GCC" = "yes"
1858 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001859 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001860 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001861 SCO_SV*)
1862 if test "$GCC" = "yes"
1863 then CCSHARED="-fPIC"
1864 else CCSHARED="-Kpic -belf"
1865 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001866 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001867 IRIX*/6*) case $CC in
1868 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001869 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001870 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001871 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001872 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001873fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001874AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001875# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001876# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001877AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001878if test -z "$LINKFORSHARED"
1879then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001880 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001881 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001882 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001883 LINKFORSHARED="-Wl,-E -Wl,+s";;
1884# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001885 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001886 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001887 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001888 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001889 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1890 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001891 # not used by the core itself but which needs to be in the core so
1892 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001893 # -prebind is no longer used, because it actually seems to give a
1894 # slowdown in stead of a speedup, maybe due to the large number of
1895 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001896
1897 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001898 if test "$enable_framework"
1899 then
Jack Jansenda49e192005-01-07 13:08:22 +00001900 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001901 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001902 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001903 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001904 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001905 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001906 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001907 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1908 then
1909 LINKFORSHARED="-Wl,--export-dynamic"
1910 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001911 SunOS/5*) case $CC in
1912 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001913 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001914 then
1915 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001916 fi;;
1917 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001918 CYGWIN*)
1919 if test $enable_shared = "no"
1920 then
1921 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1922 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001923 QNX*)
1924 # -Wl,-E causes the symbols to be added to the dynamic
1925 # symbol table so that they can be found when a module
1926 # is loaded. -N 2048K causes the stack size to be set
1927 # to 2048 kilobytes so that the stack doesn't overflow
1928 # when running test_compile.py.
1929 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001930 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001931fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001932AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001933
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001934
Neil Schemenauer61c51152001-01-26 16:18:16 +00001935AC_SUBST(CFLAGSFORSHARED)
1936AC_MSG_CHECKING(CFLAGSFORSHARED)
1937if test ! "$LIBRARY" = "$LDLIBRARY"
1938then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001939 case $ac_sys_system in
1940 CYGWIN*)
1941 # Cygwin needs CCSHARED when building extension DLLs
1942 # but not when building the interpreter DLL.
1943 CFLAGSFORSHARED='';;
1944 *)
1945 CFLAGSFORSHARED='$(CCSHARED)'
1946 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001947fi
1948AC_MSG_RESULT($CFLAGSFORSHARED)
1949
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001950# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1951# library (with --enable-shared).
1952# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001953# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1954# if it is not required, since it creates a dependency of the shared library
1955# to LIBS. This, in turn, means that applications linking the shared libpython
1956# don't need to link LIBS explicitly. The default should be only changed
1957# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001958AC_SUBST(SHLIBS)
1959AC_MSG_CHECKING(SHLIBS)
1960case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001961 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001962 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001963esac
1964AC_MSG_RESULT($SHLIBS)
1965
1966
Guido van Rossum627b2d71993-12-24 10:39:16 +00001967# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001968AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1969AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001970
Georg Brandl5c7f8fb2008-12-05 09:00:55 +00001971# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001972if test "$with_threads" = "yes" -o -z "$with_threads"; then
1973 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1974 # posix4 on Solaris 2.6
1975 # pthread (first!) on Linux
1976fi
1977
Martin v. Löwis19d17342003-06-14 21:03:05 +00001978# check if we need libintl for locale functions
1979AC_CHECK_LIB(intl, textdomain,
1980 AC_DEFINE(WITH_LIBINTL, 1,
1981 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001982
1983# checks for system dependent C++ extensions support
1984case "$ac_sys_system" in
1985 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1986 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1987 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001988 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1989 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1990 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001991 AC_MSG_RESULT(yes)],
1992 [AC_MSG_RESULT(no)]);;
1993 *) ;;
1994esac
1995
Guido van Rossum70c7f481998-03-26 18:44:10 +00001996# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001997# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001998AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001999AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002000
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00002001case "$ac_sys_system" in
2002BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002003AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
2004;;
2005esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00002006
Guido van Rossumc5a39031996-07-31 17:35:03 +00002007AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002008AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002009 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
2010[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002011AC_MSG_RESULT($withval)
2012LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002013],
2014[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002015
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002016# Check for use of the system libffi library
2017AC_MSG_CHECKING(for --with-system-ffi)
2018AC_ARG_WITH(system_ffi,
2019 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
2020
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002021AC_MSG_RESULT($with_system_ffi)
2022
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002023# Determine if signalmodule should be used.
2024AC_SUBST(USE_SIGNAL_MODULE)
2025AC_SUBST(SIGNAL_OBJS)
2026AC_MSG_CHECKING(for --with-signal-module)
2027AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002028 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002029
2030if test -z "$with_signal_module"
2031then with_signal_module="yes"
2032fi
2033AC_MSG_RESULT($with_signal_module)
2034
2035if test "${with_signal_module}" = "yes"; then
2036 USE_SIGNAL_MODULE=""
2037 SIGNAL_OBJS=""
2038else
2039 USE_SIGNAL_MODULE="#"
2040 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2041fi
2042
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002043# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002044AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002045USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002046
Guido van Rossum54d93d41997-01-22 20:51:58 +00002047AC_MSG_CHECKING(for --with-dec-threads)
2048AC_SUBST(LDLAST)
2049AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002050 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
2051[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002052AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002053LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002054if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002055 with_thread="$withval";
2056fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002057[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002058
Martin v. Löwis11437992002-04-12 09:54:03 +00002059# Templates for things AC_DEFINEd more than once.
2060# For a single AC_DEFINE, no template is needed.
2061AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2062AH_TEMPLATE(_REENTRANT,
2063 [Define to force use of thread-safe errno, h_errno, and other functions])
2064AH_TEMPLATE(WITH_THREAD,
2065 [Define if you want to compile in rudimentary thread support])
2066
Guido van Rossum54d93d41997-01-22 20:51:58 +00002067AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002068dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002069AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002070 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002071
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002072# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002073dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002074AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002075 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2076 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002077
2078if test -z "$with_threads"
2079then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002080fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002081AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002082
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002083AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002084if test "$with_threads" = "no"
2085then
2086 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002087elif test "$ac_cv_pthread_is_default" = yes
2088then
2089 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002090 # Defining _REENTRANT on system with POSIX threads should not hurt.
2091 AC_DEFINE(_REENTRANT)
2092 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002093 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002094elif test "$ac_cv_kpthread" = "yes"
2095then
2096 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002097 if test "$ac_cv_cxx_thread" = "yes"; then
2098 CXX="$CXX -Kpthread"
2099 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002100 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002101 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002102 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002103elif test "$ac_cv_kthread" = "yes"
2104then
2105 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002106 if test "$ac_cv_cxx_thread" = "yes"; then
2107 CXX="$CXX -Kthread"
2108 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002109 AC_DEFINE(WITH_THREAD)
2110 posix_threads=yes
2111 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002112elif test "$ac_cv_pthread" = "yes"
2113then
2114 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002115 if test "$ac_cv_cxx_thread" = "yes"; then
2116 CXX="$CXX -pthread"
2117 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002118 AC_DEFINE(WITH_THREAD)
2119 posix_threads=yes
2120 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002121else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002122 if test ! -z "$with_threads" -a -d "$with_threads"
2123 then LDFLAGS="$LDFLAGS -L$with_threads"
2124 fi
2125 if test ! -z "$withval" -a -d "$withval"
2126 then LDFLAGS="$LDFLAGS -L$withval"
2127 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002128
2129 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002130 # define _POSIX_THREADS in unistd.h. Some apparently don't
2131 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002132 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2133 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002134 [
2135#include <unistd.h>
2136#ifdef _POSIX_THREADS
2137yes
2138#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002139 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2140 AC_MSG_RESULT($unistd_defines_pthreads)
2141
Martin v. Löwis130fb172001-07-19 11:00:41 +00002142 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002143 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2144 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002145 AC_DEFINE(HURD_C_THREADS, 1,
2146 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002147 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002148 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002149 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2150 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002151 AC_DEFINE(MACH_C_THREADS, 1,
2152 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002153 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002154 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002155 AC_ARG_WITH([pth],
2156 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2157 [AC_MSG_RESULT($withval)
2158 AC_DEFINE([WITH_THREAD])
2159 AC_DEFINE([HAVE_PTH], 1,
2160 [Define if you have GNU PTH threads.])
2161 LIBS="-lpth $LIBS"
2162 THREADOBJ="Python/thread.o"],
2163 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002164
2165 # Just looking for pthread_create in libpthread is not enough:
2166 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2167 # So we really have to include pthread.h, and then link.
2168 _libs=$LIBS
2169 LIBS="$LIBS -lpthread"
2170 AC_MSG_CHECKING([for pthread_create in -lpthread])
2171 AC_TRY_LINK([#include <pthread.h>
2172
2173void * start_routine (void *arg) { exit (0); }], [
2174pthread_create (NULL, NULL, start_routine, NULL)], [
2175 AC_MSG_RESULT(yes)
2176 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002177 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002178 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002179 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002180 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002181 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002182 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002183 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2184 AC_DEFINE(ATHEOS_THREADS, 1,
2185 [Define this if you have AtheOS threads.])
2186 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002187 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002188 AC_DEFINE(BEOS_THREADS, 1,
2189 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002190 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002191 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002192 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002193 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002194 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002195 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002196 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002197 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002198 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002199 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002200 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002201 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002202 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002203 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002204 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002205 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002206 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002207 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002208 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002209
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002210 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2211 LIBS="$LIBS -lmpc"
2212 THREADOBJ="Python/thread.o"
2213 USE_THREAD_MODULE=""])
2214
2215 if test "$posix_threads" != "yes"; then
2216 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2217 LIBS="$LIBS -lthread"
2218 THREADOBJ="Python/thread.o"
2219 USE_THREAD_MODULE=""])
2220 fi
2221
2222 if test "$USE_THREAD_MODULE" != "#"
2223 then
2224 # If the above checks didn't disable threads, (at least) OSF1
2225 # needs this '-threads' argument during linking.
2226 case $ac_sys_system in
2227 OSF1) LDLAST=-threads;;
2228 esac
2229 fi
2230fi
2231
2232if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002233 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002234 AC_DEFINE(_POSIX_THREADS, 1,
2235 [Define if you have POSIX threads,
2236 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002237 fi
2238
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002239 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2240 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002241 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2242 Defined for Solaris 2.6 bug in pthread header.)
2243 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002244 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002245 Define if the Posix semaphores do not work on your system)
2246 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002247 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2248 Define if the Posix semaphores do not work on your system)
2249 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002250 esac
2251
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002252 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2253 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2254 [AC_TRY_RUN([#include <pthread.h>
2255 void *foo(void *parm) {
2256 return NULL;
2257 }
2258 main() {
2259 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002260 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002261 if (pthread_attr_init(&attr)) exit(-1);
2262 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002263 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002264 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002265 }],
2266 ac_cv_pthread_system_supported=yes,
2267 ac_cv_pthread_system_supported=no,
2268 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002269 ])
2270 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2271 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002272 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002273 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002274 AC_CHECK_FUNCS(pthread_sigmask,
2275 [case $ac_sys_system in
2276 CYGWIN*)
2277 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2278 [Define if pthread_sigmask() does not work on your system.])
2279 ;;
2280 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002281fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002282
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002283
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002284# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002285AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002286AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002287AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002288[ --enable-ipv6 Enable ipv6 (with ipv4) support
2289 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002290[ case "$enableval" in
2291 no)
2292 AC_MSG_RESULT(no)
2293 ipv6=no
2294 ;;
2295 *) AC_MSG_RESULT(yes)
2296 AC_DEFINE(ENABLE_IPV6)
2297 ipv6=yes
2298 ;;
2299 esac ],
2300
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002301[
2302dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002303 AC_TRY_RUN([ /* AF_INET6 available check */
2304#include <sys/types.h>
2305#include <sys/socket.h>
2306main()
2307{
2308 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2309 exit(1);
2310 else
2311 exit(0);
2312}
2313],
2314 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002315 ipv6=yes,
2316 AC_MSG_RESULT(no)
2317 ipv6=no,
2318 AC_MSG_RESULT(no)
2319 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002320)
2321
2322if test "$ipv6" = "yes"; then
2323 AC_MSG_CHECKING(if RFC2553 API is available)
2324 AC_TRY_COMPILE([#include <sys/types.h>
2325#include <netinet/in.h>],
2326 [struct sockaddr_in6 x;
2327x.sin6_scope_id;],
2328 AC_MSG_RESULT(yes)
2329 ipv6=yes,
2330 AC_MSG_RESULT(no, IPv6 disabled)
2331 ipv6=no)
2332fi
2333
2334if test "$ipv6" = "yes"; then
2335 AC_DEFINE(ENABLE_IPV6)
2336fi
2337])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002338
2339ipv6type=unknown
2340ipv6lib=none
2341ipv6trylibc=no
2342
2343if test "$ipv6" = "yes"; then
2344 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002345 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2346 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002347 case $i in
2348 inria)
2349 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002350 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002351#include <netinet/in.h>
2352#ifdef IPV6_INRIA_VERSION
2353yes
2354#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002355 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002356 ;;
2357 kame)
2358 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002359 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002360#include <netinet/in.h>
2361#ifdef __KAME__
2362yes
2363#endif],
2364 [ipv6type=$i;
2365 ipv6lib=inet6
2366 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002367 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002368 ;;
2369 linux-glibc)
2370 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002371 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002372#include <features.h>
2373#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2374yes
2375#endif],
2376 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002377 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002378 ;;
2379 linux-inet6)
2380 dnl http://www.v6.linux.or.jp/
2381 if test -d /usr/inet6; then
2382 ipv6type=$i
2383 ipv6lib=inet6
2384 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002385 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002386 fi
2387 ;;
2388 solaris)
2389 if test -f /etc/netconfig; then
2390 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2391 ipv6type=$i
2392 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002393 fi
2394 fi
2395 ;;
2396 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002397 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002398#include <sys/param.h>
2399#ifdef _TOSHIBA_INET6
2400yes
2401#endif],
2402 [ipv6type=$i;
2403 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002404 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002405 ;;
2406 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002407 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002408#include </usr/local/v6/include/sys/v6config.h>
2409#ifdef __V6D__
2410yes
2411#endif],
2412 [ipv6type=$i;
2413 ipv6lib=v6;
2414 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002415 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002416 ;;
2417 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002418 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002419#include <sys/param.h>
2420#ifdef _ZETA_MINAMI_INET6
2421yes
2422#endif],
2423 [ipv6type=$i;
2424 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002425 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002426 ;;
2427 esac
2428 if test "$ipv6type" != "unknown"; then
2429 break
2430 fi
2431 done
2432 AC_MSG_RESULT($ipv6type)
2433fi
2434
2435if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2436 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2437 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2438 echo "using lib$ipv6lib"
2439 else
2440 if test $ipv6trylibc = "yes"; then
2441 echo "using libc"
2442 else
2443 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2444 echo "You need to fetch lib$ipv6lib.a from appropriate"
2445 echo 'ipv6 kit and compile beforehand.'
2446 exit 1
2447 fi
2448 fi
2449fi
2450
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002451AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2452AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2453 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2454 AC_MSG_RESULT(yes),
2455 AC_MSG_RESULT(no)
2456)
2457
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002458# Check for --with-doc-strings
2459AC_MSG_CHECKING(for --with-doc-strings)
2460AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002461 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002462
2463if test -z "$with_doc_strings"
2464then with_doc_strings="yes"
2465fi
2466if test "$with_doc_strings" != "no"
2467then
2468 AC_DEFINE(WITH_DOC_STRINGS, 1,
2469 [Define if you want documentation strings in extension modules])
2470fi
2471AC_MSG_RESULT($with_doc_strings)
2472
Neil Schemenauera35c6882001-02-27 04:45:05 +00002473# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002474AC_MSG_CHECKING(for --with-tsc)
2475AC_ARG_WITH(tsc,
2476[ --with(out)-tsc enable/disable timestamp counter profile], [
2477if test "$withval" != no
2478then
2479 AC_DEFINE(WITH_TSC, 1,
2480 [Define to profile with the Pentium timestamp counter])
2481 AC_MSG_RESULT(yes)
2482else AC_MSG_RESULT(no)
2483fi],
2484[AC_MSG_RESULT(no)])
2485
2486# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002487AC_MSG_CHECKING(for --with-pymalloc)
2488AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002489 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002490
2491if test -z "$with_pymalloc"
2492then with_pymalloc="yes"
2493fi
2494if test "$with_pymalloc" != "no"
2495then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002496 AC_DEFINE(WITH_PYMALLOC, 1,
2497 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002498fi
2499AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002500
Barry Warsawef82cd72000-06-30 16:21:01 +00002501# Check for --with-wctype-functions
2502AC_MSG_CHECKING(for --with-wctype-functions)
2503AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002504 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2505[
Barry Warsawef82cd72000-06-30 16:21:01 +00002506if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002507then
2508 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2509 [Define if you want wctype.h functions to be used instead of the
2510 one supplied by Python itself. (see Include/unicodectype.h).])
2511 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002512else AC_MSG_RESULT(no)
2513fi],
2514[AC_MSG_RESULT(no)])
2515
Guido van Rossum68242b51996-05-28 22:53:03 +00002516# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002517AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002518DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002519
Guido van Rossume97ee181999-12-20 21:27:22 +00002520# the dlopen() function means we might want to use dynload_shlib.o. some
2521# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002522AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002523
2524# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2525# loading of modules.
2526AC_SUBST(DYNLOADFILE)
2527AC_MSG_CHECKING(DYNLOADFILE)
2528if test -z "$DYNLOADFILE"
2529then
2530 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002531 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2532 if test "$ac_cv_func_dlopen" = yes
2533 then DYNLOADFILE="dynload_shlib.o"
2534 else DYNLOADFILE="dynload_aix.o"
2535 fi
2536 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002537 BeOS*) DYNLOADFILE="dynload_beos.o";;
2538 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002539 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2540 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002541 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002542 *)
2543 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2544 # out any dynamic loading
2545 if test "$ac_cv_func_dlopen" = yes
2546 then DYNLOADFILE="dynload_shlib.o"
2547 else DYNLOADFILE="dynload_stub.o"
2548 fi
2549 ;;
2550 esac
2551fi
2552AC_MSG_RESULT($DYNLOADFILE)
2553if test "$DYNLOADFILE" != "dynload_stub.o"
2554then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002555 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2556 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002557fi
2558
Jack Jansenc49e5b72001-06-19 15:00:23 +00002559# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2560
2561AC_SUBST(MACHDEP_OBJS)
2562AC_MSG_CHECKING(MACHDEP_OBJS)
2563if test -z "$MACHDEP_OBJS"
2564then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002565 MACHDEP_OBJS=$extra_machdep_objs
2566else
2567 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002568fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002569AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002570
Guido van Rossum627b2d71993-12-24 10:39:16 +00002571# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002572AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2573 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002574 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002575 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002576 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002577 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002578 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002579 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002580 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002581 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002582 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002583 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002584
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002585# For some functions, having a definition is not sufficient, since
2586# we want to take their address.
2587AC_MSG_CHECKING(for chroot)
2588AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2589 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2590 AC_MSG_RESULT(yes),
2591 AC_MSG_RESULT(no)
2592)
2593AC_MSG_CHECKING(for link)
2594AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2595 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2596 AC_MSG_RESULT(yes),
2597 AC_MSG_RESULT(no)
2598)
2599AC_MSG_CHECKING(for symlink)
2600AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2601 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2602 AC_MSG_RESULT(yes),
2603 AC_MSG_RESULT(no)
2604)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002605AC_MSG_CHECKING(for fchdir)
2606AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2607 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2608 AC_MSG_RESULT(yes),
2609 AC_MSG_RESULT(no)
2610)
2611AC_MSG_CHECKING(for fsync)
2612AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002613 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002614 AC_MSG_RESULT(yes),
2615 AC_MSG_RESULT(no)
2616)
2617AC_MSG_CHECKING(for fdatasync)
2618AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2619 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2620 AC_MSG_RESULT(yes),
2621 AC_MSG_RESULT(no)
2622)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002623AC_MSG_CHECKING(for epoll)
2624AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2625 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2626 AC_MSG_RESULT(yes),
2627 AC_MSG_RESULT(no)
2628)
2629AC_MSG_CHECKING(for kqueue)
2630AC_TRY_COMPILE([
2631#include <sys/types.h>
2632#include <sys/event.h>
2633 ], int x=kqueue(),
2634 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2635 AC_MSG_RESULT(yes),
2636 AC_MSG_RESULT(no)
2637)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002638# On some systems (eg. FreeBSD 5), we would find a definition of the
2639# functions ctermid_r, setgroups in the library, but no prototype
2640# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2641# address to avoid compiler warnings and potential miscompilations
2642# because of the missing prototypes.
2643
2644AC_MSG_CHECKING(for ctermid_r)
2645AC_TRY_COMPILE([
2646#include "confdefs.h"
2647#include <stdio.h>
2648], void* p = ctermid_r,
2649 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2650 AC_MSG_RESULT(yes),
2651 AC_MSG_RESULT(no)
2652)
2653
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002654AC_MSG_CHECKING(for flock)
2655AC_TRY_COMPILE([
2656#include "confdefs.h"
2657#include <sys/file.h>
2658], void* p = flock,
2659 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2660 AC_MSG_RESULT(yes),
2661 AC_MSG_RESULT(no)
2662)
2663
2664AC_MSG_CHECKING(for getpagesize)
2665AC_TRY_COMPILE([
2666#include "confdefs.h"
2667#include <unistd.h>
2668], void* p = getpagesize,
2669 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2670 AC_MSG_RESULT(yes),
2671 AC_MSG_RESULT(no)
2672)
2673
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002674dnl check for true
2675AC_CHECK_PROGS(TRUE, true, /bin/true)
2676
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002677dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2678dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002679AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002680 AC_CHECK_LIB(resolv, inet_aton)
2681)
2682
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002683# On Tru64, chflags seems to be present, but calling it will
2684# exit Python
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002685AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
2686AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002687#include <sys/stat.h>
2688#include <unistd.h>
2689int main(int argc, char*argv[])
2690{
2691 if(chflags(argv[0], 0) != 0)
2692 return 1;
2693 return 0;
2694}
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002695]], ac_cv_have_chflags=yes,
2696 ac_cv_have_chflags=no,
2697 ac_cv_have_chflags=cross)
2698])
2699if test "$ac_cv_have_chflags" = cross ; then
2700 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2701fi
2702if test "$ac_cv_have_chflags" = yes ; then
2703 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2704fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002705
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002706AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
2707AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002708#include <sys/stat.h>
2709#include <unistd.h>
2710int main(int argc, char*argv[])
2711{
2712 if(lchflags(argv[0], 0) != 0)
2713 return 1;
2714 return 0;
2715}
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002716]], ac_cv_have_lchflags=yes,
2717 ac_cv_have_lchflags=no,
2718 ac_cv_have_lchflags=cross)
2719])
2720if test "$ac_cv_have_lchflags" = cross ; then
2721 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2722fi
2723if test "$ac_cv_have_lchflags" = yes ; then
2724 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2725fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002726
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002727dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002728dnl
2729dnl On MacOSX the linker will search for dylibs on the entire linker path
2730dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2731dnl to revert to a more traditional unix behaviour and make it possible to
2732dnl override the system libz with a local static library of libz. Temporarily
2733dnl add that flag to our CFLAGS as well to ensure that we check the version
2734dnl of libz that will be used by setup.py.
2735dnl The -L/usr/local/lib is needed as wel to get the same compilation
2736dnl environment as setup.py (and leaving it out can cause configure to use the
2737dnl wrong version of the library)
2738case $ac_sys_system/$ac_sys_release in
2739Darwin/*)
2740 _CUR_CFLAGS="${CFLAGS}"
2741 _CUR_LDFLAGS="${LDFLAGS}"
2742 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2743 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2744 ;;
2745esac
2746
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002747AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2748
Ronald Oussorenf8752642006-07-06 10:13:35 +00002749case $ac_sys_system/$ac_sys_release in
2750Darwin/*)
2751 CFLAGS="${_CUR_CFLAGS}"
2752 LDFLAGS="${_CUR_LDFLAGS}"
2753 ;;
2754esac
2755
Martin v. Löwise9416172003-05-03 10:12:45 +00002756AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002757AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002758#include "confdefs.h"
2759#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002760], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002761 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2762 AC_MSG_RESULT(yes),
2763 AC_MSG_RESULT(no)
2764)
2765
2766AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002767AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002768#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002769#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002770#include <sys/socket.h>
2771#include <netinet/in.h>
2772#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002773], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002774 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2775 AC_MSG_RESULT(yes),
2776 AC_MSG_RESULT(no)
2777)
2778
2779AC_MSG_CHECKING(for inet_pton)
2780AC_TRY_COMPILE([
2781#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002782#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002783#include <sys/socket.h>
2784#include <netinet/in.h>
2785#include <arpa/inet.h>
2786], void* p = inet_pton,
2787 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2788 AC_MSG_RESULT(yes),
2789 AC_MSG_RESULT(no)
2790)
2791
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002792# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002793AC_MSG_CHECKING(for setgroups)
2794AC_TRY_COMPILE([
2795#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002796#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002797#ifdef HAVE_GRP_H
2798#include <grp.h>
2799#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002800],
2801void* p = setgroups,
2802 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2803 AC_MSG_RESULT(yes),
2804 AC_MSG_RESULT(no)
2805)
2806
Fred Drake8cef4cf2000-06-28 16:40:38 +00002807# check for openpty and forkpty
2808
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002809AC_CHECK_FUNCS(openpty,,
2810 AC_CHECK_LIB(util,openpty,
2811 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2812 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2813 )
2814)
2815AC_CHECK_FUNCS(forkpty,,
2816 AC_CHECK_LIB(util,forkpty,
2817 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2818 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2819 )
2820)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002821
Brett Cannonaa5778d2008-03-18 04:09:00 +00002822# Stuff for expat.
2823AC_CHECK_FUNCS(memmove)
2824
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002825# check for long file support functions
2826AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2827
Brett Cannonaa5778d2008-03-18 04:09:00 +00002828AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002829AC_CHECK_FUNCS(getpgrp,
2830 AC_TRY_COMPILE([#include <unistd.h>],
2831 [getpgrp(0);],
2832 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2833 [Define if getpgrp() must be called as getpgrp(0).])
2834 )
2835)
Jack Jansen150753c2003-03-29 22:07:47 +00002836AC_CHECK_FUNCS(setpgrp,
2837 AC_TRY_COMPILE([#include <unistd.h>],
2838 [setpgrp(0,0);],
2839 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2840 [Define if setpgrp() must be called as setpgrp(0, 0).])
2841 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002842)
2843AC_CHECK_FUNCS(gettimeofday,
2844 AC_TRY_COMPILE([#include <sys/time.h>],
2845 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2846 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2847 [Define if gettimeofday() does not have second (timezone) argument
2848 This is the case on Motorola V4 (R40V4.2)])
2849 )
2850)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002851
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002852AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002853AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002854#if defined(MAJOR_IN_MKDEV)
2855#include <sys/mkdev.h>
2856#elif defined(MAJOR_IN_SYSMACROS)
2857#include <sys/sysmacros.h>
2858#else
2859#include <sys/types.h>
2860#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002861],[
2862 makedev(major(0),minor(0));
2863],[
2864 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2865 [Define to 1 if you have the device macros.])
2866 AC_MSG_RESULT(yes)
2867],[
2868 AC_MSG_RESULT(no)
2869])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002870
2871# On OSF/1 V5.1, getaddrinfo is available, but a define
2872# for [no]getaddrinfo in netdb.h.
2873AC_MSG_CHECKING(for getaddrinfo)
2874AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002875#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002876#include <sys/socket.h>
2877#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002878#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002879],[
2880getaddrinfo(NULL, NULL, NULL, NULL);
2881], [
2882AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002883AC_MSG_CHECKING(getaddrinfo bug)
2884AC_TRY_RUN([
2885#include <sys/types.h>
2886#include <netdb.h>
2887#include <string.h>
2888#include <sys/socket.h>
2889#include <netinet/in.h>
2890
2891main()
2892{
2893 int passive, gaierr, inet4 = 0, inet6 = 0;
2894 struct addrinfo hints, *ai, *aitop;
2895 char straddr[INET6_ADDRSTRLEN], strport[16];
2896
2897 for (passive = 0; passive <= 1; passive++) {
2898 memset(&hints, 0, sizeof(hints));
2899 hints.ai_family = AF_UNSPEC;
2900 hints.ai_flags = passive ? AI_PASSIVE : 0;
2901 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002902 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002903 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2904 (void)gai_strerror(gaierr);
2905 goto bad;
2906 }
2907 for (ai = aitop; ai; ai = ai->ai_next) {
2908 if (ai->ai_addr == NULL ||
2909 ai->ai_addrlen == 0 ||
2910 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2911 straddr, sizeof(straddr), strport, sizeof(strport),
2912 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2913 goto bad;
2914 }
2915 switch (ai->ai_family) {
2916 case AF_INET:
2917 if (strcmp(strport, "54321") != 0) {
2918 goto bad;
2919 }
2920 if (passive) {
2921 if (strcmp(straddr, "0.0.0.0") != 0) {
2922 goto bad;
2923 }
2924 } else {
2925 if (strcmp(straddr, "127.0.0.1") != 0) {
2926 goto bad;
2927 }
2928 }
2929 inet4++;
2930 break;
2931 case AF_INET6:
2932 if (strcmp(strport, "54321") != 0) {
2933 goto bad;
2934 }
2935 if (passive) {
2936 if (strcmp(straddr, "::") != 0) {
2937 goto bad;
2938 }
2939 } else {
2940 if (strcmp(straddr, "::1") != 0) {
2941 goto bad;
2942 }
2943 }
2944 inet6++;
2945 break;
2946 case AF_UNSPEC:
2947 goto bad;
2948 break;
2949 default:
2950 /* another family support? */
2951 break;
2952 }
2953 }
2954 }
2955
2956 if (!(inet4 == 0 || inet4 == 2))
2957 goto bad;
2958 if (!(inet6 == 0 || inet6 == 2))
2959 goto bad;
2960
2961 if (aitop)
2962 freeaddrinfo(aitop);
2963 exit(0);
2964
2965 bad:
2966 if (aitop)
2967 freeaddrinfo(aitop);
2968 exit(1);
2969}
2970],
2971AC_MSG_RESULT(good)
2972buggygetaddrinfo=no,
2973AC_MSG_RESULT(buggy)
2974buggygetaddrinfo=yes,
2975AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002976buggygetaddrinfo=yes)], [
2977AC_MSG_RESULT(no)
2978buggygetaddrinfo=yes
2979])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002980
2981if test "$buggygetaddrinfo" = "yes"; then
2982 if test "$ipv6" = "yes"; then
2983 echo 'Fatal: You must get working getaddrinfo() function.'
2984 echo ' or you can specify "--disable-ipv6"'.
2985 exit 1
2986 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002987else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002988 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002989fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002990AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002991
Guido van Rossum627b2d71993-12-24 10:39:16 +00002992# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002993AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002994AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002995AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002996AC_CHECK_MEMBERS([struct stat.st_rdev])
2997AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002998AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002999AC_CHECK_MEMBERS([struct stat.st_gen])
3000AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00003001AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003002
3003AC_MSG_CHECKING(for time.h that defines altzone)
3004AC_CACHE_VAL(ac_cv_header_time_altzone,
3005[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
3006 ac_cv_header_time_altzone=yes,
3007 ac_cv_header_time_altzone=no)])
3008AC_MSG_RESULT($ac_cv_header_time_altzone)
3009if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003010 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003011fi
3012
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003013was_it_defined=no
3014AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003015AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003016#include <sys/types.h>
3017#include <sys/select.h>
3018#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003019], [;], [
3020 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3021 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3022 (which you can't on SCO ODT 3.0).])
3023 was_it_defined=yes
3024])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003025AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003026
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003027AC_MSG_CHECKING(for addrinfo)
3028AC_CACHE_VAL(ac_cv_struct_addrinfo,
3029AC_TRY_COMPILE([
3030# include <netdb.h>],
3031 [struct addrinfo a],
3032 ac_cv_struct_addrinfo=yes,
3033 ac_cv_struct_addrinfo=no))
3034AC_MSG_RESULT($ac_cv_struct_addrinfo)
3035if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003036 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003037fi
3038
3039AC_MSG_CHECKING(for sockaddr_storage)
3040AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
3041AC_TRY_COMPILE([
3042# include <sys/types.h>
3043# include <sys/socket.h>],
3044 [struct sockaddr_storage s],
3045 ac_cv_struct_sockaddr_storage=yes,
3046 ac_cv_struct_sockaddr_storage=no))
3047AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3048if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003049 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003050fi
3051
Guido van Rossum627b2d71993-12-24 10:39:16 +00003052# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003053
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003054AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003055AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003056
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003057works=no
3058AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003059AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
3060 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
3061)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003062AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003063
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003064works=no
3065AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003066AC_TRY_COMPILE([], [signed char c;], works=yes,
3067 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
3068)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003069AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003070
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003071have_prototypes=no
3072AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003073AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3074 AC_DEFINE(HAVE_PROTOTYPES, 1,
3075 [Define if your compiler supports function prototype])
3076 have_prototypes=yes
3077])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003078AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003079
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003080works=no
3081AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003082AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003083#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003084int foo(int x, ...) {
3085 va_list va;
3086 va_start(va, x);
3087 va_arg(va, int);
3088 va_arg(va, char *);
3089 va_arg(va, double);
3090 return 0;
3091}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003092], [return foo(10, "", 3.14);], [
3093 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3094 [Define if your compiler supports variable length function prototypes
3095 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3096 works=yes
3097])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003098AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003099
Dave Cole331708b2004-08-09 04:51:41 +00003100# check for socketpair
3101AC_MSG_CHECKING(for socketpair)
3102AC_TRY_COMPILE([
3103#include <sys/types.h>
3104#include <sys/socket.h>
3105], void *x=socketpair,
3106 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3107 AC_MSG_RESULT(yes),
3108 AC_MSG_RESULT(no)
3109)
3110
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003111# check if sockaddr has sa_len member
3112AC_MSG_CHECKING(if sockaddr has sa_len member)
3113AC_TRY_COMPILE([#include <sys/types.h>
3114#include <sys/socket.h>],
3115[struct sockaddr x;
3116x.sa_len = 0;],
3117 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003118 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003119 AC_MSG_RESULT(no))
3120
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003121va_list_is_array=no
3122AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003123AC_TRY_COMPILE([
3124#ifdef HAVE_STDARG_PROTOTYPES
3125#include <stdarg.h>
3126#else
3127#include <varargs.h>
3128#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003129], [va_list list1, list2; list1 = list2;], , [
3130 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3131 va_list_is_array=yes
3132])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003133AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003134
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003135# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003136AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3137 [Define this if you have some version of gethostbyname_r()])
3138
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003139AC_CHECK_FUNC(gethostbyname_r, [
3140 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3141 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3142 OLD_CFLAGS=$CFLAGS
3143 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3144 AC_TRY_COMPILE([
3145# include <netdb.h>
3146 ], [
3147 char *name;
3148 struct hostent *he, *res;
3149 char buffer[2048];
3150 int buflen = 2048;
3151 int h_errnop;
3152
3153 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3154 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003155 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003156 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3157 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003158 AC_MSG_RESULT(yes)
3159 ], [
3160 AC_MSG_RESULT(no)
3161 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3162 AC_TRY_COMPILE([
3163# include <netdb.h>
3164 ], [
3165 char *name;
3166 struct hostent *he;
3167 char buffer[2048];
3168 int buflen = 2048;
3169 int h_errnop;
3170
3171 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3172 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003173 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003174 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3175 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003176 AC_MSG_RESULT(yes)
3177 ], [
3178 AC_MSG_RESULT(no)
3179 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3180 AC_TRY_COMPILE([
3181# include <netdb.h>
3182 ], [
3183 char *name;
3184 struct hostent *he;
3185 struct hostent_data data;
3186
3187 (void) gethostbyname_r(name, he, &data);
3188 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003189 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003190 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3191 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003192 AC_MSG_RESULT(yes)
3193 ], [
3194 AC_MSG_RESULT(no)
3195 ])
3196 ])
3197 ])
3198 CFLAGS=$OLD_CFLAGS
3199], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003200 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003201])
3202AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3203AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3204AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003205AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003206AC_SUBST(HAVE_GETHOSTBYNAME)
3207
Guido van Rossum627b2d71993-12-24 10:39:16 +00003208# checks for system services
3209# (none yet)
3210
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003211# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003212AC_CHECK_FUNC(__fpu_control,
3213 [],
3214 [AC_CHECK_LIB(ieee, __fpu_control)
3215])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003216
Guido van Rossum93274221997-05-09 02:42:00 +00003217# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003218AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003219AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003220 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3221[
Guido van Rossum93274221997-05-09 02:42:00 +00003222if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003223then
3224 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3225 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3226 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003227else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003228fi],
3229[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003230
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003231# check for --with-libm=...
3232AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003233case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003234Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003235BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003236*) LIBM=-lm
3237esac
Guido van Rossum93274221997-05-09 02:42:00 +00003238AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003239AC_ARG_WITH(libm,
3240 AC_HELP_STRING(--with-libm=STRING, math library),
3241[
Guido van Rossum93274221997-05-09 02:42:00 +00003242if test "$withval" = no
3243then LIBM=
3244 AC_MSG_RESULT(force LIBM empty)
3245elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003246then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003247 AC_MSG_RESULT(set LIBM="$withval")
3248else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003249fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003250[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003251
3252# check for --with-libc=...
3253AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003254AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003255AC_ARG_WITH(libc,
3256 AC_HELP_STRING(--with-libc=STRING, C library),
3257[
Guido van Rossum93274221997-05-09 02:42:00 +00003258if test "$withval" = no
3259then LIBC=
3260 AC_MSG_RESULT(force LIBC empty)
3261elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003262then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003263 AC_MSG_RESULT(set LIBC="$withval")
3264else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003265fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003266[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003267
Christian Heimes0a8143f2007-12-18 23:22:54 +00003268# ************************************
3269# * Check for mathematical functions *
3270# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003271
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003272LIBS_SAVE=$LIBS
3273LIBS="$LIBS $LIBM"
3274
Mark Dickinsone05e8402009-05-04 13:30:43 +00003275# Detect whether system arithmetic is subject to x87-style double
3276# rounding issues. The result of this test has little meaning on non
3277# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3278# mode is round-to-nearest and double rounding issues are present, and
3279# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3280AC_MSG_CHECKING(for x87-style double rounding)
3281AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3282AC_TRY_RUN([
3283#include <stdlib.h>
3284#include <math.h>
3285int main() {
3286 volatile double x, y, z;
3287 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3288 x = 0.99999999999999989; /* 1-2**-53 */
3289 y = 1./x;
3290 if (y != 1.)
3291 exit(0);
3292 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3293 x = 1e16;
3294 y = 2.99999;
3295 z = x + y;
3296 if (z != 1e16+4.)
3297 exit(0);
3298 /* both tests show evidence of double rounding */
3299 exit(1);
3300}
3301],
3302ac_cv_x87_double_rounding=no,
3303ac_cv_x87_double_rounding=yes,
3304ac_cv_x87_double_rounding=no)])
3305AC_MSG_RESULT($ac_cv_x87_double_rounding)
3306if test "$ac_cv_x87_double_rounding" = yes
3307then
3308 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3309 [Define if arithmetic is subject to x87-style double rounding issue])
3310fi
3311
3312
Mark Dickinson265d7382008-04-21 22:32:24 +00003313# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3314# -0. on some architectures.
3315AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3316AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3317AC_TRY_RUN([
3318#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003319#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003320int main() {
3321 /* return 0 if either negative zeros don't exist
3322 on this platform or if negative zeros exist
3323 and tanh(-0.) == -0. */
3324 if (atan2(0., -1.) == atan2(-0., -1.) ||
3325 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3326 else exit(1);
3327}
3328],
3329ac_cv_tanh_preserves_zero_sign=yes,
3330ac_cv_tanh_preserves_zero_sign=no,
3331ac_cv_tanh_preserves_zero_sign=no)])
3332AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3333if test "$ac_cv_tanh_preserves_zero_sign" = yes
3334then
3335 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3336 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3337fi
3338
Mark Dickinsone05e8402009-05-04 13:30:43 +00003339AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p])
3340AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes0a8143f2007-12-18 23:22:54 +00003341
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003342LIBS=$LIBS_SAVE
3343
Guido van Rossumef2255b2000-03-10 22:30:29 +00003344# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003345AC_CHECK_HEADER(wchar.h, [
3346 AC_DEFINE(HAVE_WCHAR_H, 1,
3347 [Define if the compiler provides a wchar.h header file.])
3348 wchar_h="yes"
3349],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003350wchar_h="no"
3351)
3352
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003353# determine wchar_t size
3354if test "$wchar_h" = yes
3355then
Guido van Rossum67b26592001-10-20 14:21:45 +00003356 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003357fi
3358
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003359AC_MSG_CHECKING(for UCS-4 tcl)
3360have_ucs4_tcl=no
3361AC_TRY_COMPILE([
3362#include <tcl.h>
3363#if TCL_UTF_MAX != 6
3364# error "NOT UCS4_TCL"
3365#endif], [], [
3366 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3367 have_ucs4_tcl=yes
3368])
3369AC_MSG_RESULT($have_ucs4_tcl)
3370
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003371# check whether wchar_t is signed or not
3372if test "$wchar_h" = yes
3373then
3374 # check whether wchar_t is signed or not
3375 AC_MSG_CHECKING(whether wchar_t is signed)
3376 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3377 AC_TRY_RUN([
3378 #include <wchar.h>
3379 int main()
3380 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003381 /* Success: exit code 0 */
3382 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003383 }
3384 ],
3385 ac_cv_wchar_t_signed=yes,
3386 ac_cv_wchar_t_signed=no,
3387 ac_cv_wchar_t_signed=yes)])
3388 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3389fi
3390
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003391AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003392dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003393AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003394 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3395 [],
3396 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003397
3398if test $enable_unicode = yes
3399then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003400 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003401 case "$have_ucs4_tcl" in
3402 yes) enable_unicode="ucs4"
3403 ;;
3404 *) enable_unicode="ucs2"
3405 ;;
3406 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003407fi
3408
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003409AH_TEMPLATE(Py_UNICODE_SIZE,
3410 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003411case "$enable_unicode" in
3412ucs2) unicode_size="2"
3413 AC_DEFINE(Py_UNICODE_SIZE,2)
3414 ;;
3415ucs4) unicode_size="4"
3416 AC_DEFINE(Py_UNICODE_SIZE,4)
3417 ;;
Benjamin Peterson726b4822010-02-27 00:15:23 +00003418*) AC_MSG_ERROR([invalid value for --enable-unicode. Use either ucs2 or ucs4 (lowercase).]) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003419esac
3420
Martin v. Löwis11437992002-04-12 09:54:03 +00003421AH_TEMPLATE(PY_UNICODE_TYPE,
3422 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003423
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003424AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003425if test "$enable_unicode" = "no"
3426then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003427 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003428 AC_MSG_RESULT(not used)
3429else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003430 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003431 AC_DEFINE(Py_USING_UNICODE, 1,
3432 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003433
3434 # wchar_t is only usable if it maps to an unsigned type
3435 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003436 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003437 then
3438 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003439 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3440 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003441 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003442 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003443 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3444 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3445 then
3446 PY_UNICODE_TYPE="unsigned short"
3447 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3448 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3449 then
3450 PY_UNICODE_TYPE="unsigned long"
3451 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3452 else
3453 PY_UNICODE_TYPE="no type found"
3454 fi
3455 AC_MSG_RESULT($PY_UNICODE_TYPE)
3456fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003457
3458# check for endianness
3459AC_C_BIGENDIAN
3460
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003461# Check whether right shifting a negative integer extends the sign bit
3462# or fills with zeros (like the Cray J90, according to Tim Peters).
3463AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003464AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003465AC_TRY_RUN([
3466int main()
3467{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003468 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003469}
Guido van Rossum3065c942001-09-17 04:03:14 +00003470],
3471ac_cv_rshift_extends_sign=yes,
3472ac_cv_rshift_extends_sign=no,
3473ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003474AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3475if test "$ac_cv_rshift_extends_sign" = no
3476then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003477 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3478 [Define if i>>j for signed int i does not extend the sign bit
3479 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003480fi
3481
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003482# check for getc_unlocked and related locking functions
3483AC_MSG_CHECKING(for getc_unlocked() and friends)
3484AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3485AC_TRY_LINK([#include <stdio.h>],[
3486 FILE *f = fopen("/dev/null", "r");
3487 flockfile(f);
3488 getc_unlocked(f);
3489 funlockfile(f);
3490], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3491AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3492if test "$ac_cv_have_getc_unlocked" = yes
3493then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003494 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3495 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003496fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003497
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003498# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003499# save the value of LIBS so we don't actually link Python with readline
3500LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003501
3502# On some systems we need to link readline to a termcap compatible
3503# library. NOTE: Keep the precedence of listed libraries synchronised
3504# with setup.py.
3505py_cv_lib_readline=no
3506AC_MSG_CHECKING([how to link readline libs])
3507for py_libtermcap in "" ncursesw ncurses curses termcap; do
3508 if test -z "$py_libtermcap"; then
3509 READLINE_LIBS="-lreadline"
3510 else
3511 READLINE_LIBS="-lreadline -l$py_libtermcap"
3512 fi
3513 LIBS="$READLINE_LIBS $LIBS_no_readline"
3514 AC_LINK_IFELSE(
3515 [AC_LANG_CALL([],[readline])],
3516 [py_cv_lib_readline=yes])
3517 if test $py_cv_lib_readline = yes; then
3518 break
3519 fi
3520done
3521# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3522#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003523if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003524 AC_MSG_RESULT([none])
3525else
3526 AC_MSG_RESULT([$READLINE_LIBS])
3527 AC_DEFINE(HAVE_LIBREADLINE, 1,
3528 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003529fi
3530
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003531# check for readline 2.1
3532AC_CHECK_LIB(readline, rl_callback_handler_install,
3533 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003534 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003535
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003536# check for readline 2.2
3537AC_TRY_CPP([#include <readline/readline.h>],
3538have_readline=yes, have_readline=no)
3539if test $have_readline = yes
3540then
3541 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3542 [readline/readline.h],
3543 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3544 [Define if you have readline 2.2]), )
Antoine Pitrou632e93f2009-10-27 12:30:12 +00003545 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3546 [readline/readline.h],
3547 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3548 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003549fi
3550
Martin v. Löwis0daad592001-09-30 21:09:59 +00003551# check for readline 4.0
3552AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003553 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003554 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003555
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003556# also in 4.0
3557AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3558 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003559 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003560
Guido van Rossum353ae582001-07-10 16:45:32 +00003561# check for readline 4.2
3562AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003563 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003564 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003565
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003566# also in readline 4.2
3567AC_TRY_CPP([#include <readline/readline.h>],
3568have_readline=yes, have_readline=no)
3569if test $have_readline = yes
3570then
3571 AC_EGREP_HEADER([extern int rl_catch_signals;],
3572 [readline/readline.h],
3573 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3574 [Define if you can turn off readline's signal handling.]), )
3575fi
3576
Martin v. Löwis82bca632006-02-10 20:49:30 +00003577# End of readline checks: restore LIBS
3578LIBS=$LIBS_no_readline
3579
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003580AC_MSG_CHECKING(for broken nice())
3581AC_CACHE_VAL(ac_cv_broken_nice, [
3582AC_TRY_RUN([
3583int main()
3584{
3585 int val1 = nice(1);
3586 if (val1 != -1 && val1 == nice(2))
3587 exit(0);
3588 exit(1);
3589}
Guido van Rossum3065c942001-09-17 04:03:14 +00003590],
3591ac_cv_broken_nice=yes,
3592ac_cv_broken_nice=no,
3593ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003594AC_MSG_RESULT($ac_cv_broken_nice)
3595if test "$ac_cv_broken_nice" = yes
3596then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003597 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3598 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003599fi
3600
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003601AC_MSG_CHECKING(for broken poll())
3602AC_TRY_RUN([
3603#include <poll.h>
3604
3605int main (void)
3606 {
3607 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3608
3609 close (42);
3610
3611 int poll_test = poll (&poll_struct, 1, 0);
3612
3613 if (poll_test < 0)
3614 {
3615 exit(0);
3616 }
3617 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3618 {
3619 exit(0);
3620 }
3621 else
3622 {
3623 exit(1);
3624 }
3625 }
3626],
3627ac_cv_broken_poll=yes,
3628ac_cv_broken_poll=no,
3629ac_cv_broken_poll=no)
3630AC_MSG_RESULT($ac_cv_broken_poll)
3631if test "$ac_cv_broken_poll" = yes
3632then
3633 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3634 [Define if poll() sets errno on invalid file descriptors.])
3635fi
3636
Brett Cannon43802422005-02-10 20:48:03 +00003637# Before we can test tzset, we need to check if struct tm has a tm_zone
3638# (which is not required by ISO C or UNIX spec) and/or if we support
3639# tzname[]
3640AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003641
Brett Cannon43802422005-02-10 20:48:03 +00003642# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003643AC_MSG_CHECKING(for working tzset())
3644AC_CACHE_VAL(ac_cv_working_tzset, [
3645AC_TRY_RUN([
3646#include <stdlib.h>
3647#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003648#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003649
3650#if HAVE_TZNAME
3651extern char *tzname[];
3652#endif
3653
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003654int main()
3655{
Brett Cannon18367812003-09-19 00:59:16 +00003656 /* Note that we need to ensure that not only does tzset(3)
3657 do 'something' with localtime, but it works as documented
3658 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003659 This includes making sure that tzname is set properly if
3660 tm->tm_zone does not exist since it is the alternative way
3661 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003662
3663 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003664 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003665 */
3666
Brett Cannon43802422005-02-10 20:48:03 +00003667 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003668 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3669
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003670 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003671 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003672 if (localtime(&groundhogday)->tm_hour != 0)
3673 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003674#if HAVE_TZNAME
3675 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3676 if (strcmp(tzname[0], "UTC") ||
3677 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3678 exit(1);
3679#endif
Brett Cannon18367812003-09-19 00:59:16 +00003680
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003681 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003682 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003683 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003684 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003685#if HAVE_TZNAME
3686 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3687 exit(1);
3688#endif
Brett Cannon18367812003-09-19 00:59:16 +00003689
3690 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3691 tzset();
3692 if (localtime(&groundhogday)->tm_hour != 11)
3693 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003694#if HAVE_TZNAME
3695 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3696 exit(1);
3697#endif
3698
3699#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003700 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3701 exit(1);
3702 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3703 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003704#endif
Brett Cannon18367812003-09-19 00:59:16 +00003705
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003706 exit(0);
3707}
3708],
3709ac_cv_working_tzset=yes,
3710ac_cv_working_tzset=no,
3711ac_cv_working_tzset=no)])
3712AC_MSG_RESULT($ac_cv_working_tzset)
3713if test "$ac_cv_working_tzset" = yes
3714then
3715 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3716 [Define if tzset() actually switches the local timezone in a meaningful way.])
3717fi
3718
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003719# Look for subsecond timestamps in struct stat
3720AC_MSG_CHECKING(for tv_nsec in struct stat)
3721AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3722AC_TRY_COMPILE([#include <sys/stat.h>], [
3723struct stat st;
3724st.st_mtim.tv_nsec = 1;
3725],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003726ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003727ac_cv_stat_tv_nsec=no,
3728ac_cv_stat_tv_nsec=no))
3729AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3730if test "$ac_cv_stat_tv_nsec" = yes
3731then
3732 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3733 [Define if you have struct stat.st_mtim.tv_nsec])
3734fi
3735
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003736# Look for BSD style subsecond timestamps in struct stat
3737AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3738AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3739AC_TRY_COMPILE([#include <sys/stat.h>], [
3740struct stat st;
3741st.st_mtimespec.tv_nsec = 1;
3742],
3743ac_cv_stat_tv_nsec2=yes,
3744ac_cv_stat_tv_nsec2=no,
3745ac_cv_stat_tv_nsec2=no))
3746AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3747if test "$ac_cv_stat_tv_nsec2" = yes
3748then
3749 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3750 [Define if you have struct stat.st_mtimensec])
3751fi
3752
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003753# On HP/UX 11.0, mvwdelch is a block with a return statement
3754AC_MSG_CHECKING(whether mvwdelch is an expression)
3755AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3756AC_TRY_COMPILE([#include <curses.h>], [
3757 int rtn;
3758 rtn = mvwdelch(0,0,0);
3759], ac_cv_mvwdelch_is_expression=yes,
3760 ac_cv_mvwdelch_is_expression=no,
3761 ac_cv_mvwdelch_is_expression=yes))
3762AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3763
3764if test "$ac_cv_mvwdelch_is_expression" = yes
3765then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003766 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3767 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003768fi
3769
3770AC_MSG_CHECKING(whether WINDOW has _flags)
3771AC_CACHE_VAL(ac_cv_window_has_flags,
3772AC_TRY_COMPILE([#include <curses.h>], [
3773 WINDOW *w;
3774 w->_flags = 0;
3775], ac_cv_window_has_flags=yes,
3776 ac_cv_window_has_flags=no,
3777 ac_cv_window_has_flags=no))
3778AC_MSG_RESULT($ac_cv_window_has_flags)
3779
3780
3781if test "$ac_cv_window_has_flags" = yes
3782then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003783 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3784 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003785fi
3786
Walter Dörwald4994d952006-06-19 08:07:50 +00003787AC_MSG_CHECKING(for is_term_resized)
3788AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3789 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3790 AC_MSG_RESULT(yes),
3791 AC_MSG_RESULT(no)
3792)
3793
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003794AC_MSG_CHECKING(for resize_term)
3795AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3796 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003797 AC_MSG_RESULT(yes),
3798 AC_MSG_RESULT(no)
3799)
3800
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003801AC_MSG_CHECKING(for resizeterm)
3802AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3803 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003804 AC_MSG_RESULT(yes),
3805 AC_MSG_RESULT(no)
3806)
3807
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003808AC_MSG_CHECKING(for /dev/ptmx)
3809
3810if test -r /dev/ptmx
3811then
3812 AC_MSG_RESULT(yes)
3813 AC_DEFINE(HAVE_DEV_PTMX, 1,
3814 [Define if we have /dev/ptmx.])
3815else
3816 AC_MSG_RESULT(no)
3817fi
3818
3819AC_MSG_CHECKING(for /dev/ptc)
3820
3821if test -r /dev/ptc
3822then
3823 AC_MSG_RESULT(yes)
3824 AC_DEFINE(HAVE_DEV_PTC, 1,
3825 [Define if we have /dev/ptc.])
3826else
3827 AC_MSG_RESULT(no)
3828fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003829
Brett Cannon09d12362006-05-11 05:11:33 +00003830AC_MSG_CHECKING(for %zd printf() format support)
3831AC_TRY_RUN([#include <stdio.h>
3832#include <stddef.h>
3833#include <string.h>
3834
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003835#ifdef HAVE_SYS_TYPES_H
3836#include <sys/types.h>
3837#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003838
3839#ifdef HAVE_SSIZE_T
3840typedef ssize_t Py_ssize_t;
3841#elif SIZEOF_VOID_P == SIZEOF_LONG
3842typedef long Py_ssize_t;
3843#else
3844typedef int Py_ssize_t;
3845#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003846
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003847int main()
3848{
3849 char buffer[256];
3850
Brett Cannon09d12362006-05-11 05:11:33 +00003851 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3852 return 1;
3853
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003854 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003855 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003856
3857 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3858 return 1;
3859
3860 if (strcmp(buffer, "-123"))
3861 return 1;
3862
Brett Cannon09d12362006-05-11 05:11:33 +00003863 return 0;
3864}],
3865[AC_MSG_RESULT(yes)
3866 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3867 AC_MSG_RESULT(no))
3868
Martin v. Löwis01c04012002-11-11 14:58:44 +00003869AC_CHECK_TYPE(socklen_t,,
3870 AC_DEFINE(socklen_t,int,
3871 Define to `int' if <sys/socket.h> does not define.),[
3872#ifdef HAVE_SYS_TYPES_H
3873#include <sys/types.h>
3874#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003875#ifdef HAVE_SYS_SOCKET_H
3876#include <sys/socket.h>
3877#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003878])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003879
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003880AC_SUBST(THREADHEADERS)
3881
3882for h in `(cd $srcdir;echo Python/thread_*.h)`
3883do
3884 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3885done
3886
Ronald Oussoren55114422009-11-19 16:37:33 +00003887if test $ac_sys_system = Darwin
3888then
3889 LIBS="$LIBS -framework CoreFoundation"
3890fi
3891
3892
3893
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003894AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003895SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003896AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003897for dir in $SRCDIRS; do
3898 if test ! -d $dir; then
3899 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003900 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003901done
3902AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003903
Guido van Rossum627b2d71993-12-24 10:39:16 +00003904# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003905AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3906AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003907
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003908echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003909if test ! -f Modules/Setup
3910then
3911 cp $srcdir/Modules/Setup.dist Modules/Setup
3912fi
3913
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003914echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003915if test ! -f Modules/Setup.local
3916then
3917 echo "# Edit this file for local setup changes" >Modules/Setup.local
3918fi
3919
3920echo "creating Makefile"
3921$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3922 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003923 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003924
3925case $ac_sys_system in
3926BeOS)
3927 AC_MSG_WARN([
3928
3929 Support for BeOS is deprecated as of Python 2.6.
3930 See PEP 11 for the gory details.
3931 ])
3932 ;;
3933*) ;;
3934esac
3935
Neil Schemenauer66252162001-02-19 04:47:42 +00003936mv config.c Modules