blob: 5a5ccd007ae96c2fd52eeda847d6625a9f7211ac [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;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000327 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
328 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
329 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000330 AIX/4)
331 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000332 AIX/5)
333 if test `uname -r` -eq 1; then
334 define_xopen_source=no
335 fi
336 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000337 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
338 # defining NI_NUMERICHOST.
339 QNX/6.3.2)
340 define_xopen_source=no
341 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000342
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000343esac
344
345if test $define_xopen_source = yes
346then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000347 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
348 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000349 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
350 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000351 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000352 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000353 AC_DEFINE(_XOPEN_SOURCE, 500,
354 Define to the level of X/Open that your system supports)
355 ;;
356 *)
357 AC_DEFINE(_XOPEN_SOURCE, 600,
358 Define to the level of X/Open that your system supports)
359 ;;
360 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000361
362 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
363 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
364 # several APIs are not declared. Since this is also needed in some
365 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000366 # except for Solaris 10, where it must not be defined,
367 # as it implies XPG4.2
368 case $ac_sys_system/$ac_sys_release in
369 SunOS/5.10)
370 ;;
371 *)
372 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
373 Define to activate Unix95-and-earlier features)
374 ;;
375 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000376
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000377 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
378
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000379fi
380
Guido van Rossum91922671997-10-09 20:24:13 +0000381#
382# SGI compilers allow the specification of the both the ABI and the
383# ISA on the command line. Depending on the values of these switches,
384# different and often incompatable code will be generated.
385#
386# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
387# thus supply support for various ABI/ISA combinations. The MACHDEP
388# variable is also adjusted.
389#
390AC_SUBST(SGI_ABI)
391if test ! -z "$SGI_ABI"
392then
393 CC="cc $SGI_ABI"
394 LDFLAGS="$SGI_ABI $LDFLAGS"
395 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
396fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000397AC_MSG_RESULT($MACHDEP)
398
Jack Jansen83f898c2002-12-30 22:23:40 +0000399# And add extra plat-mac for darwin
400AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000401AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000402AC_MSG_CHECKING(EXTRAPLATDIR)
403if test -z "$EXTRAPLATDIR"
404then
405 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000406 darwin)
407 EXTRAPLATDIR="\$(PLATMACDIRS)"
408 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
409 ;;
410 *)
411 EXTRAPLATDIR=""
412 EXTRAMACHDEPPATH=""
413 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000414 esac
415fi
416AC_MSG_RESULT($EXTRAPLATDIR)
417
Jack Jansen6b08a402004-06-03 12:41:45 +0000418# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
419# it may influence the way we can build extensions, so distutils
420# needs to check it
421AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000422AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000423CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000424EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000425
Mark Dickinson65134662008-04-25 16:11:04 +0000426AC_MSG_CHECKING(machine type as reported by uname -m)
427ac_sys_machine=`uname -m`
428AC_MSG_RESULT($ac_sys_machine)
429
Guido van Rossum627b2d71993-12-24 10:39:16 +0000430# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000431
432# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
433# for debug/optimization stuff. BASECFLAGS is for flags that are required
434# just to get things to compile and link. Users are free to override OPT
435# when running configure or make. The build should not break if they do.
436# BASECFLAGS should generally not be messed with, however.
437
438# XXX shouldn't some/most/all of this code be merged with the stuff later
439# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000440AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000441AC_ARG_WITH(gcc,
442 AC_HELP_STRING(--without-gcc,never use gcc),
443[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000444 case $withval in
Georg Brandlc04c2892009-01-14 00:00:17 +0000445 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000446 without_gcc=yes;;
447 yes) CC=gcc
448 without_gcc=no;;
449 *) CC=$withval
450 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000451 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000452 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000453 AIX*) CC=cc_r
454 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000455 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000456 case $BE_HOST_CPU in
457 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000458 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000459 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000460 BASECFLAGS="$BASECFLAGS -export pragma"
461 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000462 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000463 ;;
464 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000465 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000466 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000467 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000468 ;;
469 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000470 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000471 ;;
472 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000473 AR="\$(srcdir)/Modules/ar_beos"
474 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000475 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000476 Monterey*)
477 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000478 without_gcc=;;
479 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000480 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000481AC_MSG_RESULT($without_gcc)
482
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000483# If the user switches compilers, we can't believe the cache
484if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
485then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000486 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
487(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000488fi
489
Guido van Rossum627b2d71993-12-24 10:39:16 +0000490AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000491
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000492AC_SUBST(CXX)
493AC_SUBST(MAINCC)
494AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
495AC_ARG_WITH(cxx_main,
496 AC_HELP_STRING([--with-cxx-main=<compiler>],
497 [compile main() and link python executable with C++ compiler]),
498[
499
500 case $withval in
501 no) with_cxx_main=no
502 MAINCC='$(CC)';;
503 yes) with_cxx_main=yes
504 MAINCC='$(CXX)';;
505 *) with_cxx_main=yes
506 MAINCC=$withval
507 if test -z "$CXX"
508 then
509 CXX=$withval
510 fi;;
511 esac], [
512 with_cxx_main=no
513 MAINCC='$(CC)'
514])
515AC_MSG_RESULT($with_cxx_main)
516
517preset_cxx="$CXX"
518if test -z "$CXX"
519then
520 case "$CC" in
521 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
522 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
523 esac
524 if test "$CXX" = "notfound"
525 then
526 CXX=""
527 fi
528fi
529if test -z "$CXX"
530then
531 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
532 if test "$CXX" = "notfound"
533 then
534 CXX=""
535 fi
536fi
537if test "$preset_cxx" != "$CXX"
538then
539 AC_MSG_WARN([
540
541 By default, distutils will build C++ extension modules with "$CXX".
542 If this is not intended, then set CXX on the configure command line.
543 ])
544fi
545
546
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000547# checks for UNIX variants that set C preprocessor variables
548AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000549
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000550# Check for unsupported systems
551case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000552atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000553 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
554 echo See README for details.
555 exit 1;;
556esac
557
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000558AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000559AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000560AC_ARG_WITH(suffix,
561 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
562[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000563 case $withval in
564 no) EXEEXT=;;
565 yes) EXEEXT=.exe;;
566 *) EXEEXT=$withval;;
567 esac])
568AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000569
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000570# Test whether we're running on a non-case-sensitive system, in which
571# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000572AC_SUBST(BUILDEXEEXT)
573AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000574if test ! -d CaseSensitiveTestDir; then
575mkdir CaseSensitiveTestDir
576fi
577
578if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000579then
Jack Jansen1999ef42001-12-06 21:47:20 +0000580 AC_MSG_RESULT(yes)
581 BUILDEXEEXT=.exe
582else
583 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000584 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000585fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000586rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000587
Guido van Rossumdd997f71998-10-07 19:58:26 +0000588case $MACHDEP in
589bsdos*)
590 case $CC in
591 gcc) CC="$CC -D_HAVE_BSDI";;
592 esac;;
593esac
594
Guido van Rossum84561611997-08-21 00:08:11 +0000595case $ac_sys_system in
596hp*|HP*)
597 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000598 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000599 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000600Monterey*)
601 case $CC in
602 cc) CC="$CC -Wl,-Bexport";;
603 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000604SunOS*)
605 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000606 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000607 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000608esac
609
Martin v. Löwise8964d42001-03-06 12:09:07 +0000610
Neil Schemenauer61c51152001-01-26 16:18:16 +0000611AC_SUBST(LIBRARY)
612AC_MSG_CHECKING(LIBRARY)
613if test -z "$LIBRARY"
614then
615 LIBRARY='libpython$(VERSION).a'
616fi
617AC_MSG_RESULT($LIBRARY)
618
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000619# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000620# name of the library into which to insert object files). BLDLIBRARY is also
621# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
622# is blank as the main program is not linked directly against LDLIBRARY.
623# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
624# systems without shared libraries, LDLIBRARY is the same as LIBRARY
625# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
626# DLLLIBRARY is the shared (i.e., DLL) library.
627#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000628# RUNSHARED is used to run shared python without installed libraries
629#
630# INSTSONAME is the name of the shared library that will be use to install
631# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000632AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000633AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000634AC_SUBST(BLDLIBRARY)
635AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000636AC_SUBST(INSTSONAME)
637AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000638LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000639BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000640INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000641DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000642LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000643RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000644
Guido van Rossumfb842551997-08-06 23:42:07 +0000645# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000646# If CXX is set, and if it is needed to link a main function that was
647# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
648# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000649# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000650# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000651AC_SUBST(LINKCC)
652AC_MSG_CHECKING(LINKCC)
653if test -z "$LINKCC"
654then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000655 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000656 case $ac_sys_system in
657 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000658 exp_extra="\"\""
659 if test $ac_sys_release -ge 5 -o \
660 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
661 exp_extra="."
662 fi
663 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000664 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000665 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000666 QNX*)
667 # qcc must be used because the other compilers do not
668 # support -N.
669 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000670 esac
671fi
672AC_MSG_RESULT($LINKCC)
673
Martin v. Löwis1142de32002-03-29 16:28:31 +0000674AC_MSG_CHECKING(for --enable-shared)
675AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000676 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000677
Martin v. Löwis1142de32002-03-29 16:28:31 +0000678if test -z "$enable_shared"
679then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000680 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000681 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000682 enable_shared="yes";;
683 *)
684 enable_shared="no";;
685 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000686fi
687AC_MSG_RESULT($enable_shared)
688
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000689AC_MSG_CHECKING(for --enable-profiling)
690AC_ARG_ENABLE(profiling,
691 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
692[ac_save_cc="$CC"
693 CC="$CC -pg"
694 AC_TRY_RUN([int main() { return 0; }],
695 ac_enable_profiling="yes",
696 ac_enable_profiling="no",
697 ac_enable_profiling="no")
698 CC="$ac_save_cc"])
699AC_MSG_RESULT($ac_enable_profiling)
700
701case "$ac_enable_profiling" in
702 "yes")
703 BASECFLAGS="-pg $BASECFLAGS"
704 LDFLAGS="-pg $LDFLAGS"
705 ;;
706esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000707
708AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000709
Guido van Rossumb8552162001-09-05 14:58:11 +0000710# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
711# library that we build, but we do not want to link against it (we
712# will find it with a -framework option). For this reason there is an
713# extra variable BLDLIBRARY against which Python and the extension
714# modules are linked, BLDLIBRARY. This is normally the same as
715# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000716if test "$enable_framework"
717then
718 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000719 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000720 BLDLIBRARY=''
721else
722 BLDLIBRARY='$(LDLIBRARY)'
723fi
724
Martin v. Löwis1142de32002-03-29 16:28:31 +0000725# Other platforms follow
726if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000727 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000728 case $ac_sys_system in
729 BeOS*)
730 LDLIBRARY='libpython$(VERSION).so'
731 ;;
732 CYGWIN*)
733 LDLIBRARY='libpython$(VERSION).dll.a'
734 DLLLIBRARY='libpython$(VERSION).dll'
735 ;;
736 SunOS*)
737 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000738 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000739 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000740 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000741 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000742 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000743 LDLIBRARY='libpython$(VERSION).so'
744 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000745 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000746 case $ac_sys_system in
747 FreeBSD*)
748 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
749 ;;
750 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000751 INSTSONAME="$LDLIBRARY".$SOVERSION
752 ;;
753 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000754 case `uname -m` in
755 ia64)
756 LDLIBRARY='libpython$(VERSION).so'
757 ;;
758 *)
759 LDLIBRARY='libpython$(VERSION).sl'
760 ;;
761 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000762 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000763 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000764 ;;
765 OSF*)
766 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000767 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000768 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000769 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000770 atheos*)
771 LDLIBRARY='libpython$(VERSION).so'
772 BLDLIBRARY='-L. -lpython$(VERSION)'
773 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
774 ;;
Ronald Oussorene9cce8e2009-01-02 10:46:42 +0000775 Darwin*)
776 LDLIBRARY='libpython$(VERSION).dylib'
777 BLDLIBRARY='-L. -lpython$(VERSION)'
778 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
779 ;;
780
Martin v. Löwis1142de32002-03-29 16:28:31 +0000781 esac
Jason Tishler30765592003-09-04 11:04:06 +0000782else # shared is disabled
783 case $ac_sys_system in
784 CYGWIN*)
785 BLDLIBRARY='$(LIBRARY)'
786 LDLIBRARY='libpython$(VERSION).dll.a'
787 ;;
788 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000789fi
790
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000791AC_MSG_RESULT($LDLIBRARY)
792
Guido van Rossum627b2d71993-12-24 10:39:16 +0000793AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000794AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000795AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000796
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000797AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000798AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000799if test $SVNVERSION = found
800then
801 SVNVERSION="svnversion \$(srcdir)"
802else
Benjamin Peterson2eb65452009-05-23 19:35:33 +0000803 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000804fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000805
Neil Schemenauera42c8272001-03-31 00:01:55 +0000806case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000807bsdos*|hp*|HP*)
808 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000809 if test -z "$INSTALL"
810 then
811 INSTALL="${srcdir}/install-sh -c"
812 fi
813esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000814AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000815
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000816# Not every filesystem supports hard links
817AC_SUBST(LN)
818if test -z "$LN" ; then
819 case $ac_sys_system in
820 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000821 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000822 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000823 *) LN=ln;;
824 esac
825fi
826
Fred Drake9f715822001-07-11 06:27:00 +0000827# Check for --with-pydebug
828AC_MSG_CHECKING(for --with-pydebug)
829AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000830 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
831[
Fred Drake9f715822001-07-11 06:27:00 +0000832if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000833then
834 AC_DEFINE(Py_DEBUG, 1,
835 [Define if you want to build an interpreter with many run-time checks.])
836 AC_MSG_RESULT(yes);
837 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000838else AC_MSG_RESULT(no); Py_DEBUG='false'
839fi],
840[AC_MSG_RESULT(no)])
841
Skip Montanarodecc6a42003-01-01 20:07:49 +0000842# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
843# merged with this chunk of code?
844
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000845# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000846# ------------------------
847# (The following bit of code is complicated enough - please keep things
848# indented properly. Just pretend you're editing Python code. ;-)
849
850# There are two parallel sets of case statements below, one that checks to
851# see if OPT was set and one that does BASECFLAGS setting based upon
852# compiler and platform. BASECFLAGS tweaks need to be made even if the
853# user set OPT.
854
855# tweak OPT based on compiler and platform, only if the user didn't set
856# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000857AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000858if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000859then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000860 case $GCC in
861 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000862 if test "$CC" != 'g++' ; then
863 STRICT_PROTO="-Wstrict-prototypes"
864 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000865 # For gcc 4.x we need to use -fwrapv so lets check if its supported
866 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
867 WRAP="-fwrapv"
868 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000869 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000870 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000871 if test "$Py_DEBUG" = 'true' ; then
872 # Optimization messes up debuggers, so turn it off for
873 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000874 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000875 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000876 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000877 fi
878 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000879 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000880 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000881 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000882 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000883 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000884 SCO_SV*) OPT="$OPT -m486 -DSCO5"
885 ;;
886 esac
Fred Drake9f715822001-07-11 06:27:00 +0000887 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000888
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000889 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000890 OPT="-O"
891 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000892 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000893
894 # The current (beta) Monterey compiler dies with optimizations
895 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000896 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000897 Monterey*)
898 OPT=""
899 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000900 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000901
Guido van Rossum4e8af441994-08-19 15:33:54 +0000902fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000903
Skip Montanarodecc6a42003-01-01 20:07:49 +0000904AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000905
906# The -arch flags for universal builds on OSX
907UNIVERSAL_ARCH_FLAGS=
908AC_SUBST(UNIVERSAL_ARCH_FLAGS)
909
Skip Montanarodecc6a42003-01-01 20:07:49 +0000910# tweak BASECFLAGS based on compiler and platform
911case $GCC in
912yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000913 # Python violates C99 rules, by casting between incompatible
914 # pointer types. GCC may generate bad code as a result of that,
915 # so use -fno-strict-aliasing if supported.
916 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
917 ac_save_cc="$CC"
918 CC="$CC -fno-strict-aliasing"
919 AC_TRY_RUN([int main() { return 0; }],
920 ac_cv_no_strict_aliasing_ok=yes,
921 ac_cv_no_strict_aliasing_ok=no,
922 ac_cv_no_strict_aliasing_ok=no)
923 CC="$ac_save_cc"
924 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
925 if test $ac_cv_no_strict_aliasing_ok = yes
926 then
927 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
928 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000929
930 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
931 # support. Without this, treatment of subnormals doesn't follow
932 # the standard.
933 case $ac_sys_machine in
934 alpha*)
935 BASECFLAGS="$BASECFLAGS -mieee"
936 ;;
937 esac
938
Skip Montanarodecc6a42003-01-01 20:07:49 +0000939 case $ac_sys_system in
940 SCO_SV*)
941 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
942 ;;
943 # is there any other compiler on Darwin besides gcc?
944 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000945 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
946 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson4347c442008-07-17 15:59:24 +0000947
948
Ronald Oussoren988117f2006-04-29 11:31:35 +0000949 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000950 UNIVERSAL_ARCH_FLAGS=""
951 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
952 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000953 ARCH_RUN_32BIT=""
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000954
955 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
956 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren461f2202009-09-06 10:54:28 +0000957 ARCH_RUN_32BIT="true"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000958
959 elif test "$UNIVERSAL_ARCHS" = "all" ; then
960 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussorend8244f52010-02-11 13:22:03 +0000961 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000962
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000963 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
964 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussorend8244f52010-02-11 13:22:03 +0000965 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000966
967 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
968 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussorend8244f52010-02-11 13:22:03 +0000969 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000970
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000971 else
Ronald Oussorenba0aa6b2009-09-20 20:16:38 +0000972 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000973
974 fi
975
976
977 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Ronald Oussoren5a849d42008-07-22 07:06:00 +0000978 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson4347c442008-07-17 15:59:24 +0000979 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
980 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
981 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000982 fi
983
Benjamin Peterson4347c442008-07-17 15:59:24 +0000984 # Calculate the right deployment target for this build.
985 #
986 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
987 if test ${cur_target} '>' 10.2; then
988 cur_target=10.3
Ronald Oussoren461f2202009-09-06 10:54:28 +0000989 if test ${enable_universalsdk}; then
990 if test "${UNIVERSAL_ARCHS}" = "all"; then
991 # Ensure that the default platform for a
992 # 4-way universal build is OSX 10.5,
993 # that's the first OS release where
994 # 4-way builds make sense.
995 cur_target='10.5'
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000996
997 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
998 cur_target='10.5'
999
1000 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
1001 cur_target='10.5'
1002
1003 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1004 cur_target='10.5'
Ronald Oussoren461f2202009-09-06 10:54:28 +00001005 fi
1006 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001007 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren461f2202009-09-06 10:54:28 +00001008 # On Intel macs default to a deployment
1009 # target of 10.4, that's the first OSX
1010 # release with Intel support.
1011 cur_target="10.4"
1012 fi
1013 fi
Benjamin Peterson4347c442008-07-17 15:59:24 +00001014 fi
1015 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1016
1017 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1018 # environment with a value that is the same as what we'll use
1019 # in the Makefile to ensure that we'll get the same compiler
1020 # environment during configure and build time.
1021 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1022 export MACOSX_DEPLOYMENT_TARGET
1023 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1024
Skip Montanarodecc6a42003-01-01 20:07:49 +00001025 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +00001026 OSF*)
1027 BASECFLAGS="$BASECFLAGS -mieee"
1028 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001029 esac
1030 ;;
1031
1032*)
1033 case $ac_sys_system in
1034 OpenUNIX*|UnixWare*)
1035 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1036 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001037 OSF*)
1038 BASECFLAGS="$BASECFLAGS -ieee -std"
1039 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001040 SCO_SV*)
1041 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1042 ;;
1043 esac
1044 ;;
1045esac
1046
Fred Drakee1ceaa02001-12-04 20:55:47 +00001047if test "$Py_DEBUG" = 'true'; then
1048 :
1049else
1050 OPT="-DNDEBUG $OPT"
1051fi
1052
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001053if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001054then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001055 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001056fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001057
Neal Norwitz020c46a2006-01-07 21:39:28 +00001058# disable check for icc since it seems to pass, but generates a warning
1059if test "$CC" = icc
1060then
1061 ac_cv_opt_olimit_ok=no
1062fi
1063
Guido van Rossum91922671997-10-09 20:24:13 +00001064AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1065AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1066[ac_save_cc="$CC"
1067CC="$CC -OPT:Olimit=0"
1068AC_TRY_RUN([int main() { return 0; }],
1069 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001070 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001071 ac_cv_opt_olimit_ok=no)
1072CC="$ac_save_cc"])
1073AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001074if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001075 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001076 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1077 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1078 # environment?
1079 Darwin*)
1080 ;;
1081 *)
1082 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1083 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001084 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001085else
1086 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1087 AC_CACHE_VAL(ac_cv_olimit_ok,
1088 [ac_save_cc="$CC"
1089 CC="$CC -Olimit 1500"
1090 AC_TRY_RUN([int main() { return 0; }],
1091 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001092 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001093 ac_cv_olimit_ok=no)
1094 CC="$ac_save_cc"])
1095 AC_MSG_RESULT($ac_cv_olimit_ok)
1096 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001097 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001098 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001099fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001100
Martin v. Löwisaac13162006-10-19 10:58:46 +00001101# Check whether GCC supports PyArg_ParseTuple format
1102if test "$GCC" = "yes"
1103then
1104 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1105 save_CFLAGS=$CFLAGS
1106 CFLAGS="$CFLAGS -Werror"
1107 AC_TRY_COMPILE([
1108 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1109 ],,
1110 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1111 AC_MSG_RESULT(yes),
1112 AC_MSG_RESULT(no)
1113 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001114 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001115fi
1116
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001117# On some compilers, pthreads are available without further options
1118# (e.g. MacOS X). On some of these systems, the compiler will not
1119# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1120# So we have to see first whether pthreads are available without
1121# options before we can check whether -Kpthread improves anything.
1122AC_MSG_CHECKING(whether pthreads are available without options)
1123AC_CACHE_VAL(ac_cv_pthread_is_default,
1124[AC_TRY_RUN([
1125#include <pthread.h>
1126
1127void* routine(void* p){return NULL;}
1128
1129int main(){
1130 pthread_t p;
1131 if(pthread_create(&p,NULL,routine,NULL)!=0)
1132 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001133 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001134 return 0;
1135}
1136],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001137[
1138 ac_cv_pthread_is_default=yes
1139 ac_cv_kthread=no
1140 ac_cv_pthread=no
1141],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001142 ac_cv_pthread_is_default=no,
1143 ac_cv_pthread_is_default=no)
1144])
1145AC_MSG_RESULT($ac_cv_pthread_is_default)
1146
1147
1148if test $ac_cv_pthread_is_default = yes
1149then
1150 ac_cv_kpthread=no
1151else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001152# -Kpthread, if available, provides the right #defines
1153# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001154# Some compilers won't report that they do not support -Kpthread,
1155# so we need to run a program to see whether it really made the
1156# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001157AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1158AC_CACHE_VAL(ac_cv_kpthread,
1159[ac_save_cc="$CC"
1160CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001161AC_TRY_RUN([
1162#include <pthread.h>
1163
1164void* routine(void* p){return NULL;}
1165
1166int main(){
1167 pthread_t p;
1168 if(pthread_create(&p,NULL,routine,NULL)!=0)
1169 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001170 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001171 return 0;
1172}
1173],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001174 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001175 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001176 ac_cv_kpthread=no)
1177CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001178AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001179fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001180
Skip Montanarod8d39a02003-07-10 20:44:10 +00001181if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001182then
1183# -Kthread, if available, provides the right #defines
1184# and linker options to make pthread_create available
1185# Some compilers won't report that they do not support -Kthread,
1186# so we need to run a program to see whether it really made the
1187# function available.
1188AC_MSG_CHECKING(whether $CC accepts -Kthread)
1189AC_CACHE_VAL(ac_cv_kthread,
1190[ac_save_cc="$CC"
1191CC="$CC -Kthread"
1192AC_TRY_RUN([
1193#include <pthread.h>
1194
1195void* routine(void* p){return NULL;}
1196
1197int main(){
1198 pthread_t p;
1199 if(pthread_create(&p,NULL,routine,NULL)!=0)
1200 return 1;
1201 (void)pthread_detach(p);
1202 return 0;
1203}
1204],
1205 ac_cv_kthread=yes,
1206 ac_cv_kthread=no,
1207 ac_cv_kthread=no)
1208CC="$ac_save_cc"])
1209AC_MSG_RESULT($ac_cv_kthread)
1210fi
1211
Skip Montanarod8d39a02003-07-10 20:44:10 +00001212if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001213then
1214# -pthread, if available, provides the right #defines
1215# and linker options to make pthread_create available
1216# Some compilers won't report that they do not support -pthread,
1217# so we need to run a program to see whether it really made the
1218# function available.
1219AC_MSG_CHECKING(whether $CC accepts -pthread)
1220AC_CACHE_VAL(ac_cv_thread,
1221[ac_save_cc="$CC"
1222CC="$CC -pthread"
1223AC_TRY_RUN([
1224#include <pthread.h>
1225
1226void* routine(void* p){return NULL;}
1227
1228int main(){
1229 pthread_t p;
1230 if(pthread_create(&p,NULL,routine,NULL)!=0)
1231 return 1;
1232 (void)pthread_detach(p);
1233 return 0;
1234}
1235],
1236 ac_cv_pthread=yes,
1237 ac_cv_pthread=no,
1238 ac_cv_pthread=no)
1239CC="$ac_save_cc"])
1240AC_MSG_RESULT($ac_cv_pthread)
1241fi
1242
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001243# If we have set a CC compiler flag for thread support then
1244# check if it works for CXX, too.
1245ac_cv_cxx_thread=no
1246if test ! -z "$CXX"
1247then
1248AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1249ac_save_cxx="$CXX"
1250
1251if test "$ac_cv_kpthread" = "yes"
1252then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001253 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001254 ac_cv_cxx_thread=yes
1255elif test "$ac_cv_kthread" = "yes"
1256then
1257 CXX="$CXX -Kthread"
1258 ac_cv_cxx_thread=yes
1259elif test "$ac_cv_pthread" = "yes"
1260then
1261 CXX="$CXX -pthread"
1262 ac_cv_cxx_thread=yes
1263fi
1264
1265if test $ac_cv_cxx_thread = yes
1266then
1267 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1268 $CXX -c conftest.$ac_ext 2>&5
1269 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1270 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1271 then
1272 ac_cv_cxx_thread=yes
1273 else
1274 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001275 fi
1276 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001277fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001278AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001279fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001280CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001281
Fred Drakece81d592000-07-09 14:39:29 +00001282dnl # check for ANSI or K&R ("traditional") preprocessor
1283dnl AC_MSG_CHECKING(for C preprocessor type)
1284dnl AC_TRY_COMPILE([
1285dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1286dnl int foo;
1287dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1288dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1289dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001290
Guido van Rossum627b2d71993-12-24 10:39:16 +00001291# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001292AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001293AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1294fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001295ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001296shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001297unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001298sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1299sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001300sys/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 +00001301sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001302sys/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 +00001303sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001304bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001305AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001306AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001307
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001308# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001309AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001310#ifdef HAVE_CURSES_H
1311#include <curses.h>
1312#endif
1313])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001314
Martin v. Löwis11017b12006-01-14 18:12:57 +00001315# On Linux, netlink.h requires asm/types.h
1316AC_CHECK_HEADERS(linux/netlink.h,,,[
1317#ifdef HAVE_ASM_TYPES_H
1318#include <asm/types.h>
1319#endif
1320#ifdef HAVE_SYS_SOCKET_H
1321#include <sys/socket.h>
1322#endif
1323])
1324
Guido van Rossum627b2d71993-12-24 10:39:16 +00001325# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001326was_it_defined=no
1327AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001328AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1329 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1330])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001331AC_MSG_RESULT($was_it_defined)
1332
Neal Norwitz11690112002-07-30 01:08:28 +00001333# Check whether using makedev requires defining _OSF_SOURCE
1334AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001335AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001336 [ makedev(0, 0) ],
1337 ac_cv_has_makedev=yes,
1338 ac_cv_has_makedev=no)
1339if test "$ac_cv_has_makedev" = "no"; then
1340 # we didn't link, try if _OSF_SOURCE will allow us to link
1341 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001342#define _OSF_SOURCE 1
1343#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001344 ],
1345 [ makedev(0, 0) ],
1346 ac_cv_has_makedev=yes,
1347 ac_cv_has_makedev=no)
1348 if test "$ac_cv_has_makedev" = "yes"; then
1349 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1350 fi
1351fi
1352AC_MSG_RESULT($ac_cv_has_makedev)
1353if test "$ac_cv_has_makedev" = "yes"; then
1354 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1355fi
1356
Martin v. Löwis399a6892002-10-04 10:22:02 +00001357# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1358# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1359# defined, but the compiler does not support pragma redefine_extname,
1360# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1361# structures (such as rlimit64) without declaring them. As a
1362# work-around, disable LFS on such configurations
1363
1364use_lfs=yes
1365AC_MSG_CHECKING(Solaris LFS bug)
1366AC_TRY_COMPILE([
1367#define _LARGEFILE_SOURCE 1
1368#define _FILE_OFFSET_BITS 64
1369#include <sys/resource.h>
1370],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1371AC_MSG_RESULT($sol_lfs_bug)
1372if test "$sol_lfs_bug" = "yes"; then
1373 use_lfs=no
1374fi
1375
1376if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001377# Two defines needed to enable largefile support on various platforms
1378# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001379AC_DEFINE(_LARGEFILE_SOURCE, 1,
1380[This must be defined on some systems to enable large file support.])
1381AC_DEFINE(_FILE_OFFSET_BITS, 64,
1382[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001383fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001384
Guido van Rossum300fda71996-08-19 21:58:16 +00001385# Add some code to confdefs.h so that the test for off_t works on SCO
1386cat >> confdefs.h <<\EOF
1387#if defined(SCO_DS)
1388#undef _OFF_T
1389#endif
1390EOF
1391
Guido van Rossumef2255b2000-03-10 22:30:29 +00001392# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001393AC_TYPE_MODE_T
1394AC_TYPE_OFF_T
1395AC_TYPE_PID_T
1396AC_TYPE_SIGNAL
1397AC_TYPE_SIZE_T
1398AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001399AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001400 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001401
Guido van Rossumef2255b2000-03-10 22:30:29 +00001402# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001403# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001404AC_CHECK_SIZEOF(int, 4)
1405AC_CHECK_SIZEOF(long, 4)
1406AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001407AC_CHECK_SIZEOF(short, 2)
1408AC_CHECK_SIZEOF(float, 4)
1409AC_CHECK_SIZEOF(double, 8)
1410AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001411AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001412AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001413
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001414AC_MSG_CHECKING(for long long support)
1415have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001416AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1417 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1418 have_long_long=yes
1419])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001420AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001421if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001422AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001423fi
1424
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001425AC_MSG_CHECKING(for long double support)
1426have_long_double=no
1427AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1428 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1429 have_long_double=yes
1430])
1431AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001432if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001433AC_CHECK_SIZEOF(long double, 12)
1434fi
1435
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001436AC_MSG_CHECKING(for _Bool support)
1437have_c99_bool=no
1438AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1439 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1440 have_c99_bool=yes
1441])
1442AC_MSG_RESULT($have_c99_bool)
1443if test "$have_c99_bool" = yes ; then
1444AC_CHECK_SIZEOF(_Bool, 1)
1445fi
1446
Martin v. Löwisebe26702006-10-02 14:55:51 +00001447AC_CHECK_TYPES(uintptr_t,
1448 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001449 [], [#ifdef HAVE_STDINT_H
1450 #include <stdint.h>
1451 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001452
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001453
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001454# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1455AC_MSG_CHECKING(size of off_t)
1456AC_CACHE_VAL(ac_cv_sizeof_off_t,
1457[AC_TRY_RUN([#include <stdio.h>
1458#include <sys/types.h>
1459main()
1460{
1461 FILE *f=fopen("conftestval", "w");
1462 if (!f) exit(1);
1463 fprintf(f, "%d\n", sizeof(off_t));
1464 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001465}],
1466ac_cv_sizeof_off_t=`cat conftestval`,
1467ac_cv_sizeof_off_t=0,
1468ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001469])
1470AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001471AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1472[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001473
1474AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinsoncaa44c02009-12-31 21:20:06 +00001475if test "$have_long_long" = yes
1476then
1477if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001478 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001479 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1480 [Defined to enable large file support when an off_t is bigger than a long
1481 and long long is available and at least as big as an off_t. You may need
1482 to add some flags for configuration and compilation to enable this mode.
1483 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001484 AC_MSG_RESULT(yes)
1485else
1486 AC_MSG_RESULT(no)
1487fi
Mark Dickinsoncaa44c02009-12-31 21:20:06 +00001488else
1489 AC_MSG_RESULT(no)
1490fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001491
Fred Drakea3f6e912000-06-29 20:44:47 +00001492# AC_CHECK_SIZEOF() doesn't include <time.h>.
1493AC_MSG_CHECKING(size of time_t)
1494AC_CACHE_VAL(ac_cv_sizeof_time_t,
1495[AC_TRY_RUN([#include <stdio.h>
1496#include <time.h>
1497main()
1498{
1499 FILE *f=fopen("conftestval", "w");
1500 if (!f) exit(1);
1501 fprintf(f, "%d\n", sizeof(time_t));
1502 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001503}],
1504ac_cv_sizeof_time_t=`cat conftestval`,
1505ac_cv_sizeof_time_t=0,
1506ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001507])
1508AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001509AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1510[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001511
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001512
Trent Mick635f6fb2000-08-23 21:33:05 +00001513# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001514ac_save_cc="$CC"
1515if test "$ac_cv_kpthread" = "yes"
1516then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001517elif test "$ac_cv_kthread" = "yes"
1518then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001519elif test "$ac_cv_pthread" = "yes"
1520then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001521fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001522AC_MSG_CHECKING(for pthread_t)
1523have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001524AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001525AC_MSG_RESULT($have_pthread_t)
1526if test "$have_pthread_t" = yes ; then
1527 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1528 AC_MSG_CHECKING(size of pthread_t)
1529 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1530 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001531#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001532 main()
1533 {
1534 FILE *f=fopen("conftestval", "w");
1535 if (!f) exit(1);
1536 fprintf(f, "%d\n", sizeof(pthread_t));
1537 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001538 }],
1539 ac_cv_sizeof_pthread_t=`cat conftestval`,
1540 ac_cv_sizeof_pthread_t=0,
1541 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001542 ])
1543 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001544 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1545 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001546fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001547CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001548
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001549AC_MSG_CHECKING(for --enable-toolbox-glue)
1550AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001551 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001552
1553if test -z "$enable_toolbox_glue"
1554then
1555 case $ac_sys_system/$ac_sys_release in
1556 Darwin/*)
1557 enable_toolbox_glue="yes";;
1558 *)
1559 enable_toolbox_glue="no";;
1560 esac
1561fi
1562case "$enable_toolbox_glue" in
1563yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001564 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001565 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001566 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1567 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001568 ;;
1569*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001570 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001571 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001572 ;;
1573esac
1574AC_MSG_RESULT($enable_toolbox_glue)
1575
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001576
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001577AC_SUBST(OTHER_LIBTOOL_OPT)
1578case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001579 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001580 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1581 ;;
1582 Darwin/*)
1583 OTHER_LIBTOOL_OPT=""
1584 ;;
1585esac
1586
Ronald Oussoren461f2202009-09-06 10:54:28 +00001587
1588ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001589AC_SUBST(LIBTOOL_CRUFT)
1590case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001591 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001592 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1593 if test "${enable_universalsdk}"; then
1594 :
1595 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001596 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001597 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001598 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001599 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001600 Darwin/*)
Ronald Oussorenc0fa2d242010-02-07 11:50:54 +00001601 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001602 if test ${gcc_version} '<' 4.0
1603 then
1604 LIBTOOL_CRUFT="-lcc_dynamic"
1605 else
1606 LIBTOOL_CRUFT=""
1607 fi
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001608 AC_TRY_RUN([
Ronald Oussoren461f2202009-09-06 10:54:28 +00001609 #include <unistd.h>
1610 int main(int argc, char*argv[])
1611 {
1612 if (sizeof(long) == 4) {
1613 return 0;
1614 } else {
1615 return 1;
1616 }
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001617 }
1618 ], ac_osx_32bit=yes,
Ronald Oussoren461f2202009-09-06 10:54:28 +00001619 ac_osx_32bit=no,
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001620 ac_osx_32bit=yes)
Ronald Oussoren461f2202009-09-06 10:54:28 +00001621
1622 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001623 case `/usr/bin/arch` in
Ronald Oussoren461f2202009-09-06 10:54:28 +00001624 i386)
1625 MACOSX_DEFAULT_ARCH="i386"
1626 ;;
1627 ppc)
1628 MACOSX_DEFAULT_ARCH="ppc"
1629 ;;
1630 *)
1631 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1632 ;;
1633 esac
1634 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001635 case `/usr/bin/arch` in
Ronald Oussoren461f2202009-09-06 10:54:28 +00001636 i386)
1637 MACOSX_DEFAULT_ARCH="x86_64"
1638 ;;
1639 ppc)
1640 MACOSX_DEFAULT_ARCH="ppc64"
1641 ;;
1642 *)
1643 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1644 ;;
1645 esac
1646
1647 #ARCH_RUN_32BIT="true"
1648 fi
1649
1650 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001651 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001652 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001653esac
1654
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001655AC_MSG_CHECKING(for --enable-framework)
1656if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001657then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001658 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001659 # -F. is needed to allow linking to the framework while
1660 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001661 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1662 [Define if you want to produce an OpenStep/Rhapsody framework
1663 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001664 AC_MSG_RESULT(yes)
Ronald Oussorene6e62672009-06-08 21:19:36 +00001665 if test $enable_shared = "yes"
1666 then
Ronald Oussorend0841712009-09-29 13:01:59 +00001667 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 +00001668 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001669else
1670 AC_MSG_RESULT(no)
1671fi
1672
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001673AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001674case $ac_sys_system/$ac_sys_release in
1675 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001676 AC_DEFINE(WITH_DYLD, 1,
1677 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1678 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1679 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001680 AC_MSG_RESULT(always on for Darwin)
1681 ;;
1682 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001683 AC_MSG_RESULT(no)
1684 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001685esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001686
Guido van Rossumac405f61994-09-12 10:56:06 +00001687# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001688AC_SUBST(SO)
1689AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001690AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001691AC_SUBST(CCSHARED)
1692AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001693# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001694# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001695AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001696if test -z "$SO"
1697then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001698 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001699 hp*|HP*)
1700 case `uname -m` in
1701 ia64) SO=.so;;
1702 *) SO=.sl;;
1703 esac
1704 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001705 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001706 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001707 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001708else
1709 # this might also be a termcap variable, see #610332
1710 echo
1711 echo '====================================================================='
1712 echo '+ +'
1713 echo '+ WARNING: You have set SO in your environment. +'
1714 echo '+ Do you really mean to change the extension for shared libraries? +'
1715 echo '+ Continuing in 10 seconds to let you to ponder. +'
1716 echo '+ +'
1717 echo '====================================================================='
1718 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001719fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001720AC_MSG_RESULT($SO)
Ronald Oussorene9cce8e2009-01-02 10:46:42 +00001721
Neal Norwitz58e28882006-05-19 07:00:58 +00001722AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001723# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001724# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001725# (Shared libraries in this instance are shared modules to be loaded into
1726# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001727AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001728if test -z "$LDSHARED"
1729then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001730 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001731 AIX*)
1732 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001733 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001734 ;;
1735 BeOS*)
1736 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001737 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001738 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001739 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001740 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001741 SunOS/5*)
1742 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001743 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001744 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001745 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001746 hp*|HP*)
1747 if test "$GCC" = "yes"
1748 then LDSHARED='$(CC) -shared'
1749 else LDSHARED='ld -b';
1750 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001751 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001752 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001753 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1754 if test "$enable_framework" ; then
1755 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001756 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1757 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001758 else
1759 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001760 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001761 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001762 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001763 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1764 if test "$enable_framework" ; then
1765 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001766 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1767 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001768 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001769 # No framework, use the Python app as bundle-loader
1770 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001771 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001772 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001773 Darwin/*)
1774 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1775 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001776
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001777 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001778 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001779 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001780 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001781 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001782 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1783 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001784 else
1785 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1786 if test "$enable_framework" ; then
1787 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001788 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1789 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001790 else
1791 # No framework, use the Python app as bundle-loader
1792 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1793 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1794 fi
1795 fi
1796 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001797 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001798 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001799 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001800 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001801 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001802 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001803 else
1804 LDSHARED="ld -Bshareable ${LDFLAGS}"
1805 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001806 OpenBSD*)
1807 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1808 then
1809 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1810 else
1811 case `uname -r` in
1812 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1813 LDSHARED="ld -Bshareable ${LDFLAGS}"
1814 ;;
1815 *)
1816 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1817 ;;
1818 esac
1819 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001820 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001821 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001822 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001823 then LDSHARED='$(CC) -shared'
1824 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001825 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001826 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001827 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001828 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001829 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001830 *) LDSHARED="ld";;
1831 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001832fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001833AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001834BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001835# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001836# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001837AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001838if test -z "$CCSHARED"
1839then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001840 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001841 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001842 then CCSHARED="-fPIC";
1843 elif test `uname -p` = sparc;
1844 then CCSHARED="-xcode=pic32";
1845 else CCSHARED="-Kpic";
1846 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001847 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001848 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001849 else CCSHARED="+z";
1850 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001851 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001852 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001853 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001854 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001855 if test "$GCC" = "yes"
1856 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001857 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001858 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001859 SCO_SV*)
1860 if test "$GCC" = "yes"
1861 then CCSHARED="-fPIC"
1862 else CCSHARED="-Kpic -belf"
1863 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001864 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001865 IRIX*/6*) case $CC in
1866 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001867 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001868 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001869 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001870 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001871fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001872AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001873# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001874# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001875AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001876if test -z "$LINKFORSHARED"
1877then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001878 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001879 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001880 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001881 LINKFORSHARED="-Wl,-E -Wl,+s";;
1882# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001883 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001884 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001885 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001886 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001887 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1888 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001889 # not used by the core itself but which needs to be in the core so
1890 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001891 # -prebind is no longer used, because it actually seems to give a
1892 # slowdown in stead of a speedup, maybe due to the large number of
1893 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001894
1895 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001896 if test "$enable_framework"
1897 then
Jack Jansenda49e192005-01-07 13:08:22 +00001898 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001899 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001900 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001901 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001902 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001903 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001904 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001905 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1906 then
1907 LINKFORSHARED="-Wl,--export-dynamic"
1908 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001909 SunOS/5*) case $CC in
1910 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001911 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001912 then
1913 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001914 fi;;
1915 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001916 CYGWIN*)
1917 if test $enable_shared = "no"
1918 then
1919 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1920 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001921 QNX*)
1922 # -Wl,-E causes the symbols to be added to the dynamic
1923 # symbol table so that they can be found when a module
1924 # is loaded. -N 2048K causes the stack size to be set
1925 # to 2048 kilobytes so that the stack doesn't overflow
1926 # when running test_compile.py.
1927 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001928 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001929fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001930AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001931
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001932
Neil Schemenauer61c51152001-01-26 16:18:16 +00001933AC_SUBST(CFLAGSFORSHARED)
1934AC_MSG_CHECKING(CFLAGSFORSHARED)
1935if test ! "$LIBRARY" = "$LDLIBRARY"
1936then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001937 case $ac_sys_system in
1938 CYGWIN*)
1939 # Cygwin needs CCSHARED when building extension DLLs
1940 # but not when building the interpreter DLL.
1941 CFLAGSFORSHARED='';;
1942 *)
1943 CFLAGSFORSHARED='$(CCSHARED)'
1944 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001945fi
1946AC_MSG_RESULT($CFLAGSFORSHARED)
1947
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001948# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1949# library (with --enable-shared).
1950# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001951# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1952# if it is not required, since it creates a dependency of the shared library
1953# to LIBS. This, in turn, means that applications linking the shared libpython
1954# don't need to link LIBS explicitly. The default should be only changed
1955# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001956AC_SUBST(SHLIBS)
1957AC_MSG_CHECKING(SHLIBS)
1958case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001959 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001960 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001961esac
1962AC_MSG_RESULT($SHLIBS)
1963
1964
Guido van Rossum627b2d71993-12-24 10:39:16 +00001965# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001966AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1967AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001968
Georg Brandl5c7f8fb2008-12-05 09:00:55 +00001969# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001970if test "$with_threads" = "yes" -o -z "$with_threads"; then
1971 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1972 # posix4 on Solaris 2.6
1973 # pthread (first!) on Linux
1974fi
1975
Martin v. Löwis19d17342003-06-14 21:03:05 +00001976# check if we need libintl for locale functions
1977AC_CHECK_LIB(intl, textdomain,
1978 AC_DEFINE(WITH_LIBINTL, 1,
1979 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001980
1981# checks for system dependent C++ extensions support
1982case "$ac_sys_system" in
1983 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1984 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1985 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001986 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1987 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1988 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001989 AC_MSG_RESULT(yes)],
1990 [AC_MSG_RESULT(no)]);;
1991 *) ;;
1992esac
1993
Guido van Rossum70c7f481998-03-26 18:44:10 +00001994# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001995# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001996AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001997AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001998
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001999case "$ac_sys_system" in
2000BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002001AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
2002;;
2003esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00002004
Guido van Rossumc5a39031996-07-31 17:35:03 +00002005AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002006AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002007 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
2008[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002009AC_MSG_RESULT($withval)
2010LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002011],
2012[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002013
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002014# Check for use of the system libffi library
2015AC_MSG_CHECKING(for --with-system-ffi)
2016AC_ARG_WITH(system_ffi,
2017 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
2018
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002019AC_MSG_RESULT($with_system_ffi)
2020
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002021# Determine if signalmodule should be used.
2022AC_SUBST(USE_SIGNAL_MODULE)
2023AC_SUBST(SIGNAL_OBJS)
2024AC_MSG_CHECKING(for --with-signal-module)
2025AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002026 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002027
2028if test -z "$with_signal_module"
2029then with_signal_module="yes"
2030fi
2031AC_MSG_RESULT($with_signal_module)
2032
2033if test "${with_signal_module}" = "yes"; then
2034 USE_SIGNAL_MODULE=""
2035 SIGNAL_OBJS=""
2036else
2037 USE_SIGNAL_MODULE="#"
2038 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2039fi
2040
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002041# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002042AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002043USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002044
Guido van Rossum54d93d41997-01-22 20:51:58 +00002045AC_MSG_CHECKING(for --with-dec-threads)
2046AC_SUBST(LDLAST)
2047AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002048 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
2049[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002050AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002051LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002052if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002053 with_thread="$withval";
2054fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002055[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002056
Martin v. Löwis11437992002-04-12 09:54:03 +00002057# Templates for things AC_DEFINEd more than once.
2058# For a single AC_DEFINE, no template is needed.
2059AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2060AH_TEMPLATE(_REENTRANT,
2061 [Define to force use of thread-safe errno, h_errno, and other functions])
2062AH_TEMPLATE(WITH_THREAD,
2063 [Define if you want to compile in rudimentary thread support])
2064
Guido van Rossum54d93d41997-01-22 20:51:58 +00002065AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002066dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002067AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002068 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002069
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002070# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002071dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002072AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002073 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2074 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002075
2076if test -z "$with_threads"
2077then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002078fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002079AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002080
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002081AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002082if test "$with_threads" = "no"
2083then
2084 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002085elif test "$ac_cv_pthread_is_default" = yes
2086then
2087 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002088 # Defining _REENTRANT on system with POSIX threads should not hurt.
2089 AC_DEFINE(_REENTRANT)
2090 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002091 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002092elif test "$ac_cv_kpthread" = "yes"
2093then
2094 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002095 if test "$ac_cv_cxx_thread" = "yes"; then
2096 CXX="$CXX -Kpthread"
2097 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002098 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002099 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002100 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002101elif test "$ac_cv_kthread" = "yes"
2102then
2103 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002104 if test "$ac_cv_cxx_thread" = "yes"; then
2105 CXX="$CXX -Kthread"
2106 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002107 AC_DEFINE(WITH_THREAD)
2108 posix_threads=yes
2109 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002110elif test "$ac_cv_pthread" = "yes"
2111then
2112 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002113 if test "$ac_cv_cxx_thread" = "yes"; then
2114 CXX="$CXX -pthread"
2115 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002116 AC_DEFINE(WITH_THREAD)
2117 posix_threads=yes
2118 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002119else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002120 if test ! -z "$with_threads" -a -d "$with_threads"
2121 then LDFLAGS="$LDFLAGS -L$with_threads"
2122 fi
2123 if test ! -z "$withval" -a -d "$withval"
2124 then LDFLAGS="$LDFLAGS -L$withval"
2125 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002126
2127 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002128 # define _POSIX_THREADS in unistd.h. Some apparently don't
2129 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002130 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2131 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002132 [
2133#include <unistd.h>
2134#ifdef _POSIX_THREADS
2135yes
2136#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002137 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2138 AC_MSG_RESULT($unistd_defines_pthreads)
2139
Martin v. Löwis130fb172001-07-19 11:00:41 +00002140 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002141 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2142 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002143 AC_DEFINE(HURD_C_THREADS, 1,
2144 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002145 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002146 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002147 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2148 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002149 AC_DEFINE(MACH_C_THREADS, 1,
2150 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002151 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002152 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002153 AC_ARG_WITH([pth],
2154 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2155 [AC_MSG_RESULT($withval)
2156 AC_DEFINE([WITH_THREAD])
2157 AC_DEFINE([HAVE_PTH], 1,
2158 [Define if you have GNU PTH threads.])
2159 LIBS="-lpth $LIBS"
2160 THREADOBJ="Python/thread.o"],
2161 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002162
2163 # Just looking for pthread_create in libpthread is not enough:
2164 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2165 # So we really have to include pthread.h, and then link.
2166 _libs=$LIBS
2167 LIBS="$LIBS -lpthread"
2168 AC_MSG_CHECKING([for pthread_create in -lpthread])
2169 AC_TRY_LINK([#include <pthread.h>
2170
2171void * start_routine (void *arg) { exit (0); }], [
2172pthread_create (NULL, NULL, start_routine, NULL)], [
2173 AC_MSG_RESULT(yes)
2174 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002175 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002176 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002177 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002178 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002179 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002180 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002181 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2182 AC_DEFINE(ATHEOS_THREADS, 1,
2183 [Define this if you have AtheOS threads.])
2184 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002185 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002186 AC_DEFINE(BEOS_THREADS, 1,
2187 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002188 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002189 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002190 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002191 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002192 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002193 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002194 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002195 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002196 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002197 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002198 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002199 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002200 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002201 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002202 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002203 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002204 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002205 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002206 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002207
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002208 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2209 LIBS="$LIBS -lmpc"
2210 THREADOBJ="Python/thread.o"
2211 USE_THREAD_MODULE=""])
2212
2213 if test "$posix_threads" != "yes"; then
2214 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2215 LIBS="$LIBS -lthread"
2216 THREADOBJ="Python/thread.o"
2217 USE_THREAD_MODULE=""])
2218 fi
2219
2220 if test "$USE_THREAD_MODULE" != "#"
2221 then
2222 # If the above checks didn't disable threads, (at least) OSF1
2223 # needs this '-threads' argument during linking.
2224 case $ac_sys_system in
2225 OSF1) LDLAST=-threads;;
2226 esac
2227 fi
2228fi
2229
2230if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002231 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002232 AC_DEFINE(_POSIX_THREADS, 1,
2233 [Define if you have POSIX threads,
2234 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002235 fi
2236
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002237 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2238 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002239 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2240 Defined for Solaris 2.6 bug in pthread header.)
2241 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002242 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002243 Define if the Posix semaphores do not work on your system)
2244 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002245 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2246 Define if the Posix semaphores do not work on your system)
2247 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002248 esac
2249
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002250 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2251 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2252 [AC_TRY_RUN([#include <pthread.h>
2253 void *foo(void *parm) {
2254 return NULL;
2255 }
2256 main() {
2257 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002258 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002259 if (pthread_attr_init(&attr)) exit(-1);
2260 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002261 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002262 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002263 }],
2264 ac_cv_pthread_system_supported=yes,
2265 ac_cv_pthread_system_supported=no,
2266 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002267 ])
2268 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2269 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002270 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002271 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002272 AC_CHECK_FUNCS(pthread_sigmask,
2273 [case $ac_sys_system in
2274 CYGWIN*)
2275 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2276 [Define if pthread_sigmask() does not work on your system.])
2277 ;;
2278 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002279fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002280
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002281
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002282# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002283AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002284AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002285AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002286[ --enable-ipv6 Enable ipv6 (with ipv4) support
2287 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002288[ case "$enableval" in
2289 no)
2290 AC_MSG_RESULT(no)
2291 ipv6=no
2292 ;;
2293 *) AC_MSG_RESULT(yes)
2294 AC_DEFINE(ENABLE_IPV6)
2295 ipv6=yes
2296 ;;
2297 esac ],
2298
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002299[
2300dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002301 AC_TRY_RUN([ /* AF_INET6 available check */
2302#include <sys/types.h>
2303#include <sys/socket.h>
2304main()
2305{
2306 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2307 exit(1);
2308 else
2309 exit(0);
2310}
2311],
2312 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002313 ipv6=yes,
2314 AC_MSG_RESULT(no)
2315 ipv6=no,
2316 AC_MSG_RESULT(no)
2317 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002318)
2319
2320if test "$ipv6" = "yes"; then
2321 AC_MSG_CHECKING(if RFC2553 API is available)
2322 AC_TRY_COMPILE([#include <sys/types.h>
2323#include <netinet/in.h>],
2324 [struct sockaddr_in6 x;
2325x.sin6_scope_id;],
2326 AC_MSG_RESULT(yes)
2327 ipv6=yes,
2328 AC_MSG_RESULT(no, IPv6 disabled)
2329 ipv6=no)
2330fi
2331
2332if test "$ipv6" = "yes"; then
2333 AC_DEFINE(ENABLE_IPV6)
2334fi
2335])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002336
2337ipv6type=unknown
2338ipv6lib=none
2339ipv6trylibc=no
2340
2341if test "$ipv6" = "yes"; then
2342 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002343 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2344 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002345 case $i in
2346 inria)
2347 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002348 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002349#include <netinet/in.h>
2350#ifdef IPV6_INRIA_VERSION
2351yes
2352#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002353 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002354 ;;
2355 kame)
2356 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002357 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002358#include <netinet/in.h>
2359#ifdef __KAME__
2360yes
2361#endif],
2362 [ipv6type=$i;
2363 ipv6lib=inet6
2364 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002365 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002366 ;;
2367 linux-glibc)
2368 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002369 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002370#include <features.h>
2371#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2372yes
2373#endif],
2374 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002375 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002376 ;;
2377 linux-inet6)
2378 dnl http://www.v6.linux.or.jp/
2379 if test -d /usr/inet6; then
2380 ipv6type=$i
2381 ipv6lib=inet6
2382 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002383 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002384 fi
2385 ;;
2386 solaris)
2387 if test -f /etc/netconfig; then
2388 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2389 ipv6type=$i
2390 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002391 fi
2392 fi
2393 ;;
2394 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002395 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002396#include <sys/param.h>
2397#ifdef _TOSHIBA_INET6
2398yes
2399#endif],
2400 [ipv6type=$i;
2401 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002402 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002403 ;;
2404 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002405 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002406#include </usr/local/v6/include/sys/v6config.h>
2407#ifdef __V6D__
2408yes
2409#endif],
2410 [ipv6type=$i;
2411 ipv6lib=v6;
2412 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002413 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002414 ;;
2415 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002416 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002417#include <sys/param.h>
2418#ifdef _ZETA_MINAMI_INET6
2419yes
2420#endif],
2421 [ipv6type=$i;
2422 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002423 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002424 ;;
2425 esac
2426 if test "$ipv6type" != "unknown"; then
2427 break
2428 fi
2429 done
2430 AC_MSG_RESULT($ipv6type)
2431fi
2432
2433if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2434 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2435 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2436 echo "using lib$ipv6lib"
2437 else
2438 if test $ipv6trylibc = "yes"; then
2439 echo "using libc"
2440 else
2441 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2442 echo "You need to fetch lib$ipv6lib.a from appropriate"
2443 echo 'ipv6 kit and compile beforehand.'
2444 exit 1
2445 fi
2446 fi
2447fi
2448
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002449AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2450AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2451 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2452 AC_MSG_RESULT(yes),
2453 AC_MSG_RESULT(no)
2454)
2455
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002456# Check for --with-doc-strings
2457AC_MSG_CHECKING(for --with-doc-strings)
2458AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002459 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002460
2461if test -z "$with_doc_strings"
2462then with_doc_strings="yes"
2463fi
2464if test "$with_doc_strings" != "no"
2465then
2466 AC_DEFINE(WITH_DOC_STRINGS, 1,
2467 [Define if you want documentation strings in extension modules])
2468fi
2469AC_MSG_RESULT($with_doc_strings)
2470
Neil Schemenauera35c6882001-02-27 04:45:05 +00002471# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002472AC_MSG_CHECKING(for --with-tsc)
2473AC_ARG_WITH(tsc,
2474[ --with(out)-tsc enable/disable timestamp counter profile], [
2475if test "$withval" != no
2476then
2477 AC_DEFINE(WITH_TSC, 1,
2478 [Define to profile with the Pentium timestamp counter])
2479 AC_MSG_RESULT(yes)
2480else AC_MSG_RESULT(no)
2481fi],
2482[AC_MSG_RESULT(no)])
2483
2484# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002485AC_MSG_CHECKING(for --with-pymalloc)
2486AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002487 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002488
2489if test -z "$with_pymalloc"
2490then with_pymalloc="yes"
2491fi
2492if test "$with_pymalloc" != "no"
2493then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002494 AC_DEFINE(WITH_PYMALLOC, 1,
2495 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002496fi
2497AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002498
Barry Warsawef82cd72000-06-30 16:21:01 +00002499# Check for --with-wctype-functions
2500AC_MSG_CHECKING(for --with-wctype-functions)
2501AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002502 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2503[
Barry Warsawef82cd72000-06-30 16:21:01 +00002504if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002505then
2506 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2507 [Define if you want wctype.h functions to be used instead of the
2508 one supplied by Python itself. (see Include/unicodectype.h).])
2509 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002510else AC_MSG_RESULT(no)
2511fi],
2512[AC_MSG_RESULT(no)])
2513
Guido van Rossum68242b51996-05-28 22:53:03 +00002514# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002515AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002516DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002517
Guido van Rossume97ee181999-12-20 21:27:22 +00002518# the dlopen() function means we might want to use dynload_shlib.o. some
2519# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002520AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002521
2522# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2523# loading of modules.
2524AC_SUBST(DYNLOADFILE)
2525AC_MSG_CHECKING(DYNLOADFILE)
2526if test -z "$DYNLOADFILE"
2527then
2528 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002529 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2530 if test "$ac_cv_func_dlopen" = yes
2531 then DYNLOADFILE="dynload_shlib.o"
2532 else DYNLOADFILE="dynload_aix.o"
2533 fi
2534 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002535 BeOS*) DYNLOADFILE="dynload_beos.o";;
2536 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002537 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2538 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002539 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002540 *)
2541 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2542 # out any dynamic loading
2543 if test "$ac_cv_func_dlopen" = yes
2544 then DYNLOADFILE="dynload_shlib.o"
2545 else DYNLOADFILE="dynload_stub.o"
2546 fi
2547 ;;
2548 esac
2549fi
2550AC_MSG_RESULT($DYNLOADFILE)
2551if test "$DYNLOADFILE" != "dynload_stub.o"
2552then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002553 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2554 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002555fi
2556
Jack Jansenc49e5b72001-06-19 15:00:23 +00002557# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2558
2559AC_SUBST(MACHDEP_OBJS)
2560AC_MSG_CHECKING(MACHDEP_OBJS)
2561if test -z "$MACHDEP_OBJS"
2562then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002563 MACHDEP_OBJS=$extra_machdep_objs
2564else
2565 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002566fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002567AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002568
Guido van Rossum627b2d71993-12-24 10:39:16 +00002569# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002570AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2571 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002572 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002573 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002574 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002575 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002576 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002577 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002578 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002579 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002580 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002581 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002582
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002583# For some functions, having a definition is not sufficient, since
2584# we want to take their address.
2585AC_MSG_CHECKING(for chroot)
2586AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2587 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2588 AC_MSG_RESULT(yes),
2589 AC_MSG_RESULT(no)
2590)
2591AC_MSG_CHECKING(for link)
2592AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2593 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2594 AC_MSG_RESULT(yes),
2595 AC_MSG_RESULT(no)
2596)
2597AC_MSG_CHECKING(for symlink)
2598AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2599 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2600 AC_MSG_RESULT(yes),
2601 AC_MSG_RESULT(no)
2602)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002603AC_MSG_CHECKING(for fchdir)
2604AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2605 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2606 AC_MSG_RESULT(yes),
2607 AC_MSG_RESULT(no)
2608)
2609AC_MSG_CHECKING(for fsync)
2610AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002611 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002612 AC_MSG_RESULT(yes),
2613 AC_MSG_RESULT(no)
2614)
2615AC_MSG_CHECKING(for fdatasync)
2616AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2617 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2618 AC_MSG_RESULT(yes),
2619 AC_MSG_RESULT(no)
2620)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002621AC_MSG_CHECKING(for epoll)
2622AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2623 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2624 AC_MSG_RESULT(yes),
2625 AC_MSG_RESULT(no)
2626)
2627AC_MSG_CHECKING(for kqueue)
2628AC_TRY_COMPILE([
2629#include <sys/types.h>
2630#include <sys/event.h>
2631 ], int x=kqueue(),
2632 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2633 AC_MSG_RESULT(yes),
2634 AC_MSG_RESULT(no)
2635)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002636# On some systems (eg. FreeBSD 5), we would find a definition of the
2637# functions ctermid_r, setgroups in the library, but no prototype
2638# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2639# address to avoid compiler warnings and potential miscompilations
2640# because of the missing prototypes.
2641
2642AC_MSG_CHECKING(for ctermid_r)
2643AC_TRY_COMPILE([
2644#include "confdefs.h"
2645#include <stdio.h>
2646], void* p = ctermid_r,
2647 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2648 AC_MSG_RESULT(yes),
2649 AC_MSG_RESULT(no)
2650)
2651
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002652AC_MSG_CHECKING(for flock)
2653AC_TRY_COMPILE([
2654#include "confdefs.h"
2655#include <sys/file.h>
2656], void* p = flock,
2657 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2658 AC_MSG_RESULT(yes),
2659 AC_MSG_RESULT(no)
2660)
2661
2662AC_MSG_CHECKING(for getpagesize)
2663AC_TRY_COMPILE([
2664#include "confdefs.h"
2665#include <unistd.h>
2666], void* p = getpagesize,
2667 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2668 AC_MSG_RESULT(yes),
2669 AC_MSG_RESULT(no)
2670)
2671
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002672dnl check for true
2673AC_CHECK_PROGS(TRUE, true, /bin/true)
2674
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002675dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2676dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002677AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002678 AC_CHECK_LIB(resolv, inet_aton)
2679)
2680
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002681# On Tru64, chflags seems to be present, but calling it will
2682# exit Python
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002683AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
2684AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002685#include <sys/stat.h>
2686#include <unistd.h>
2687int main(int argc, char*argv[])
2688{
2689 if(chflags(argv[0], 0) != 0)
2690 return 1;
2691 return 0;
2692}
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002693]], ac_cv_have_chflags=yes,
2694 ac_cv_have_chflags=no,
2695 ac_cv_have_chflags=cross)
2696])
2697if test "$ac_cv_have_chflags" = cross ; then
2698 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2699fi
2700if test "$ac_cv_have_chflags" = yes ; then
2701 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2702fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002703
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002704AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
2705AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002706#include <sys/stat.h>
2707#include <unistd.h>
2708int main(int argc, char*argv[])
2709{
2710 if(lchflags(argv[0], 0) != 0)
2711 return 1;
2712 return 0;
2713}
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002714]], ac_cv_have_lchflags=yes,
2715 ac_cv_have_lchflags=no,
2716 ac_cv_have_lchflags=cross)
2717])
2718if test "$ac_cv_have_lchflags" = cross ; then
2719 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2720fi
2721if test "$ac_cv_have_lchflags" = yes ; then
2722 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2723fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002724
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002725dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002726dnl
2727dnl On MacOSX the linker will search for dylibs on the entire linker path
2728dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2729dnl to revert to a more traditional unix behaviour and make it possible to
2730dnl override the system libz with a local static library of libz. Temporarily
2731dnl add that flag to our CFLAGS as well to ensure that we check the version
2732dnl of libz that will be used by setup.py.
2733dnl The -L/usr/local/lib is needed as wel to get the same compilation
2734dnl environment as setup.py (and leaving it out can cause configure to use the
2735dnl wrong version of the library)
2736case $ac_sys_system/$ac_sys_release in
2737Darwin/*)
2738 _CUR_CFLAGS="${CFLAGS}"
2739 _CUR_LDFLAGS="${LDFLAGS}"
2740 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2741 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2742 ;;
2743esac
2744
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002745AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2746
Ronald Oussorenf8752642006-07-06 10:13:35 +00002747case $ac_sys_system/$ac_sys_release in
2748Darwin/*)
2749 CFLAGS="${_CUR_CFLAGS}"
2750 LDFLAGS="${_CUR_LDFLAGS}"
2751 ;;
2752esac
2753
Martin v. Löwise9416172003-05-03 10:12:45 +00002754AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002755AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002756#include "confdefs.h"
2757#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002758], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002759 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2760 AC_MSG_RESULT(yes),
2761 AC_MSG_RESULT(no)
2762)
2763
2764AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002765AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002766#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002767#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002768#include <sys/socket.h>
2769#include <netinet/in.h>
2770#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002771], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002772 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2773 AC_MSG_RESULT(yes),
2774 AC_MSG_RESULT(no)
2775)
2776
2777AC_MSG_CHECKING(for inet_pton)
2778AC_TRY_COMPILE([
2779#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002780#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002781#include <sys/socket.h>
2782#include <netinet/in.h>
2783#include <arpa/inet.h>
2784], void* p = inet_pton,
2785 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2786 AC_MSG_RESULT(yes),
2787 AC_MSG_RESULT(no)
2788)
2789
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002790# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002791AC_MSG_CHECKING(for setgroups)
2792AC_TRY_COMPILE([
2793#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002794#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002795#ifdef HAVE_GRP_H
2796#include <grp.h>
2797#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002798],
2799void* p = setgroups,
2800 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2801 AC_MSG_RESULT(yes),
2802 AC_MSG_RESULT(no)
2803)
2804
Fred Drake8cef4cf2000-06-28 16:40:38 +00002805# check for openpty and forkpty
2806
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002807AC_CHECK_FUNCS(openpty,,
2808 AC_CHECK_LIB(util,openpty,
2809 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2810 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2811 )
2812)
2813AC_CHECK_FUNCS(forkpty,,
2814 AC_CHECK_LIB(util,forkpty,
2815 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2816 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2817 )
2818)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002819
Brett Cannonaa5778d2008-03-18 04:09:00 +00002820# Stuff for expat.
2821AC_CHECK_FUNCS(memmove)
2822
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002823# check for long file support functions
2824AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2825
Brett Cannonaa5778d2008-03-18 04:09:00 +00002826AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002827AC_CHECK_FUNCS(getpgrp,
2828 AC_TRY_COMPILE([#include <unistd.h>],
2829 [getpgrp(0);],
2830 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2831 [Define if getpgrp() must be called as getpgrp(0).])
2832 )
2833)
Jack Jansen150753c2003-03-29 22:07:47 +00002834AC_CHECK_FUNCS(setpgrp,
2835 AC_TRY_COMPILE([#include <unistd.h>],
2836 [setpgrp(0,0);],
2837 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2838 [Define if setpgrp() must be called as setpgrp(0, 0).])
2839 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002840)
2841AC_CHECK_FUNCS(gettimeofday,
2842 AC_TRY_COMPILE([#include <sys/time.h>],
2843 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2844 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2845 [Define if gettimeofday() does not have second (timezone) argument
2846 This is the case on Motorola V4 (R40V4.2)])
2847 )
2848)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002849
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002850AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002851AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002852#if defined(MAJOR_IN_MKDEV)
2853#include <sys/mkdev.h>
2854#elif defined(MAJOR_IN_SYSMACROS)
2855#include <sys/sysmacros.h>
2856#else
2857#include <sys/types.h>
2858#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002859],[
2860 makedev(major(0),minor(0));
2861],[
2862 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2863 [Define to 1 if you have the device macros.])
2864 AC_MSG_RESULT(yes)
2865],[
2866 AC_MSG_RESULT(no)
2867])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002868
2869# On OSF/1 V5.1, getaddrinfo is available, but a define
2870# for [no]getaddrinfo in netdb.h.
2871AC_MSG_CHECKING(for getaddrinfo)
2872AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002873#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002874#include <sys/socket.h>
2875#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002876#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002877],[
2878getaddrinfo(NULL, NULL, NULL, NULL);
2879], [
2880AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002881AC_MSG_CHECKING(getaddrinfo bug)
2882AC_TRY_RUN([
2883#include <sys/types.h>
2884#include <netdb.h>
2885#include <string.h>
2886#include <sys/socket.h>
2887#include <netinet/in.h>
2888
2889main()
2890{
2891 int passive, gaierr, inet4 = 0, inet6 = 0;
2892 struct addrinfo hints, *ai, *aitop;
2893 char straddr[INET6_ADDRSTRLEN], strport[16];
2894
2895 for (passive = 0; passive <= 1; passive++) {
2896 memset(&hints, 0, sizeof(hints));
2897 hints.ai_family = AF_UNSPEC;
2898 hints.ai_flags = passive ? AI_PASSIVE : 0;
2899 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002900 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002901 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2902 (void)gai_strerror(gaierr);
2903 goto bad;
2904 }
2905 for (ai = aitop; ai; ai = ai->ai_next) {
2906 if (ai->ai_addr == NULL ||
2907 ai->ai_addrlen == 0 ||
2908 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2909 straddr, sizeof(straddr), strport, sizeof(strport),
2910 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2911 goto bad;
2912 }
2913 switch (ai->ai_family) {
2914 case AF_INET:
2915 if (strcmp(strport, "54321") != 0) {
2916 goto bad;
2917 }
2918 if (passive) {
2919 if (strcmp(straddr, "0.0.0.0") != 0) {
2920 goto bad;
2921 }
2922 } else {
2923 if (strcmp(straddr, "127.0.0.1") != 0) {
2924 goto bad;
2925 }
2926 }
2927 inet4++;
2928 break;
2929 case AF_INET6:
2930 if (strcmp(strport, "54321") != 0) {
2931 goto bad;
2932 }
2933 if (passive) {
2934 if (strcmp(straddr, "::") != 0) {
2935 goto bad;
2936 }
2937 } else {
2938 if (strcmp(straddr, "::1") != 0) {
2939 goto bad;
2940 }
2941 }
2942 inet6++;
2943 break;
2944 case AF_UNSPEC:
2945 goto bad;
2946 break;
2947 default:
2948 /* another family support? */
2949 break;
2950 }
2951 }
2952 }
2953
2954 if (!(inet4 == 0 || inet4 == 2))
2955 goto bad;
2956 if (!(inet6 == 0 || inet6 == 2))
2957 goto bad;
2958
2959 if (aitop)
2960 freeaddrinfo(aitop);
2961 exit(0);
2962
2963 bad:
2964 if (aitop)
2965 freeaddrinfo(aitop);
2966 exit(1);
2967}
2968],
2969AC_MSG_RESULT(good)
2970buggygetaddrinfo=no,
2971AC_MSG_RESULT(buggy)
2972buggygetaddrinfo=yes,
2973AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002974buggygetaddrinfo=yes)], [
2975AC_MSG_RESULT(no)
2976buggygetaddrinfo=yes
2977])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002978
2979if test "$buggygetaddrinfo" = "yes"; then
2980 if test "$ipv6" = "yes"; then
2981 echo 'Fatal: You must get working getaddrinfo() function.'
2982 echo ' or you can specify "--disable-ipv6"'.
2983 exit 1
2984 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002985else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002986 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002987fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002988AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002989
Guido van Rossum627b2d71993-12-24 10:39:16 +00002990# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002991AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002992AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002993AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002994AC_CHECK_MEMBERS([struct stat.st_rdev])
2995AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002996AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002997AC_CHECK_MEMBERS([struct stat.st_gen])
2998AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002999AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003000
3001AC_MSG_CHECKING(for time.h that defines altzone)
3002AC_CACHE_VAL(ac_cv_header_time_altzone,
3003[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
3004 ac_cv_header_time_altzone=yes,
3005 ac_cv_header_time_altzone=no)])
3006AC_MSG_RESULT($ac_cv_header_time_altzone)
3007if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003008 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003009fi
3010
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003011was_it_defined=no
3012AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003013AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003014#include <sys/types.h>
3015#include <sys/select.h>
3016#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003017], [;], [
3018 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3019 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3020 (which you can't on SCO ODT 3.0).])
3021 was_it_defined=yes
3022])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003023AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003024
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003025AC_MSG_CHECKING(for addrinfo)
3026AC_CACHE_VAL(ac_cv_struct_addrinfo,
3027AC_TRY_COMPILE([
3028# include <netdb.h>],
3029 [struct addrinfo a],
3030 ac_cv_struct_addrinfo=yes,
3031 ac_cv_struct_addrinfo=no))
3032AC_MSG_RESULT($ac_cv_struct_addrinfo)
3033if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003034 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003035fi
3036
3037AC_MSG_CHECKING(for sockaddr_storage)
3038AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
3039AC_TRY_COMPILE([
3040# include <sys/types.h>
3041# include <sys/socket.h>],
3042 [struct sockaddr_storage s],
3043 ac_cv_struct_sockaddr_storage=yes,
3044 ac_cv_struct_sockaddr_storage=no))
3045AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3046if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003047 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003048fi
3049
Guido van Rossum627b2d71993-12-24 10:39:16 +00003050# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003051
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003052AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003053AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003054
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003055works=no
3056AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003057AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
3058 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
3059)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003060AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003061
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003062works=no
3063AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003064AC_TRY_COMPILE([], [signed char c;], works=yes,
3065 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
3066)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003067AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003068
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003069have_prototypes=no
3070AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003071AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3072 AC_DEFINE(HAVE_PROTOTYPES, 1,
3073 [Define if your compiler supports function prototype])
3074 have_prototypes=yes
3075])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003076AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003077
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003078works=no
3079AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003080AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003081#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003082int foo(int x, ...) {
3083 va_list va;
3084 va_start(va, x);
3085 va_arg(va, int);
3086 va_arg(va, char *);
3087 va_arg(va, double);
3088 return 0;
3089}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003090], [return foo(10, "", 3.14);], [
3091 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3092 [Define if your compiler supports variable length function prototypes
3093 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3094 works=yes
3095])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003096AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003097
Dave Cole331708b2004-08-09 04:51:41 +00003098# check for socketpair
3099AC_MSG_CHECKING(for socketpair)
3100AC_TRY_COMPILE([
3101#include <sys/types.h>
3102#include <sys/socket.h>
3103], void *x=socketpair,
3104 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3105 AC_MSG_RESULT(yes),
3106 AC_MSG_RESULT(no)
3107)
3108
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003109# check if sockaddr has sa_len member
3110AC_MSG_CHECKING(if sockaddr has sa_len member)
3111AC_TRY_COMPILE([#include <sys/types.h>
3112#include <sys/socket.h>],
3113[struct sockaddr x;
3114x.sa_len = 0;],
3115 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003116 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003117 AC_MSG_RESULT(no))
3118
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003119va_list_is_array=no
3120AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003121AC_TRY_COMPILE([
3122#ifdef HAVE_STDARG_PROTOTYPES
3123#include <stdarg.h>
3124#else
3125#include <varargs.h>
3126#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003127], [va_list list1, list2; list1 = list2;], , [
3128 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3129 va_list_is_array=yes
3130])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003131AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003132
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003133# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003134AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3135 [Define this if you have some version of gethostbyname_r()])
3136
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003137AC_CHECK_FUNC(gethostbyname_r, [
3138 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3139 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3140 OLD_CFLAGS=$CFLAGS
3141 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3142 AC_TRY_COMPILE([
3143# include <netdb.h>
3144 ], [
3145 char *name;
3146 struct hostent *he, *res;
3147 char buffer[2048];
3148 int buflen = 2048;
3149 int h_errnop;
3150
3151 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3152 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003153 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003154 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3155 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003156 AC_MSG_RESULT(yes)
3157 ], [
3158 AC_MSG_RESULT(no)
3159 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3160 AC_TRY_COMPILE([
3161# include <netdb.h>
3162 ], [
3163 char *name;
3164 struct hostent *he;
3165 char buffer[2048];
3166 int buflen = 2048;
3167 int h_errnop;
3168
3169 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3170 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003171 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003172 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3173 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003174 AC_MSG_RESULT(yes)
3175 ], [
3176 AC_MSG_RESULT(no)
3177 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3178 AC_TRY_COMPILE([
3179# include <netdb.h>
3180 ], [
3181 char *name;
3182 struct hostent *he;
3183 struct hostent_data data;
3184
3185 (void) gethostbyname_r(name, he, &data);
3186 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003187 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003188 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3189 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003190 AC_MSG_RESULT(yes)
3191 ], [
3192 AC_MSG_RESULT(no)
3193 ])
3194 ])
3195 ])
3196 CFLAGS=$OLD_CFLAGS
3197], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003198 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003199])
3200AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3201AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3202AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003203AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003204AC_SUBST(HAVE_GETHOSTBYNAME)
3205
Guido van Rossum627b2d71993-12-24 10:39:16 +00003206# checks for system services
3207# (none yet)
3208
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003209# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003210AC_CHECK_FUNC(__fpu_control,
3211 [],
3212 [AC_CHECK_LIB(ieee, __fpu_control)
3213])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003214
Guido van Rossum93274221997-05-09 02:42:00 +00003215# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003216AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003217AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003218 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3219[
Guido van Rossum93274221997-05-09 02:42:00 +00003220if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003221then
3222 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3223 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3224 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003225else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003226fi],
3227[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003228
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003229# check for --with-libm=...
3230AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003231case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003232Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003233BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003234*) LIBM=-lm
3235esac
Guido van Rossum93274221997-05-09 02:42:00 +00003236AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003237AC_ARG_WITH(libm,
3238 AC_HELP_STRING(--with-libm=STRING, math library),
3239[
Guido van Rossum93274221997-05-09 02:42:00 +00003240if test "$withval" = no
3241then LIBM=
3242 AC_MSG_RESULT(force LIBM empty)
3243elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003244then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003245 AC_MSG_RESULT(set LIBM="$withval")
3246else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003247fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003248[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003249
3250# check for --with-libc=...
3251AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003252AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003253AC_ARG_WITH(libc,
3254 AC_HELP_STRING(--with-libc=STRING, C library),
3255[
Guido van Rossum93274221997-05-09 02:42:00 +00003256if test "$withval" = no
3257then LIBC=
3258 AC_MSG_RESULT(force LIBC empty)
3259elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003260then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003261 AC_MSG_RESULT(set LIBC="$withval")
3262else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003263fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003264[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003265
Christian Heimes0a8143f2007-12-18 23:22:54 +00003266# ************************************
3267# * Check for mathematical functions *
3268# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003269
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003270LIBS_SAVE=$LIBS
3271LIBS="$LIBS $LIBM"
3272
Mark Dickinsone05e8402009-05-04 13:30:43 +00003273# Detect whether system arithmetic is subject to x87-style double
3274# rounding issues. The result of this test has little meaning on non
3275# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3276# mode is round-to-nearest and double rounding issues are present, and
3277# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3278AC_MSG_CHECKING(for x87-style double rounding)
3279AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3280AC_TRY_RUN([
3281#include <stdlib.h>
3282#include <math.h>
3283int main() {
3284 volatile double x, y, z;
3285 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3286 x = 0.99999999999999989; /* 1-2**-53 */
3287 y = 1./x;
3288 if (y != 1.)
3289 exit(0);
3290 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3291 x = 1e16;
3292 y = 2.99999;
3293 z = x + y;
3294 if (z != 1e16+4.)
3295 exit(0);
3296 /* both tests show evidence of double rounding */
3297 exit(1);
3298}
3299],
3300ac_cv_x87_double_rounding=no,
3301ac_cv_x87_double_rounding=yes,
3302ac_cv_x87_double_rounding=no)])
3303AC_MSG_RESULT($ac_cv_x87_double_rounding)
3304if test "$ac_cv_x87_double_rounding" = yes
3305then
3306 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3307 [Define if arithmetic is subject to x87-style double rounding issue])
3308fi
3309
3310
Mark Dickinson265d7382008-04-21 22:32:24 +00003311# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3312# -0. on some architectures.
3313AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3314AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3315AC_TRY_RUN([
3316#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003317#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003318int main() {
3319 /* return 0 if either negative zeros don't exist
3320 on this platform or if negative zeros exist
3321 and tanh(-0.) == -0. */
3322 if (atan2(0., -1.) == atan2(-0., -1.) ||
3323 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3324 else exit(1);
3325}
3326],
3327ac_cv_tanh_preserves_zero_sign=yes,
3328ac_cv_tanh_preserves_zero_sign=no,
3329ac_cv_tanh_preserves_zero_sign=no)])
3330AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3331if test "$ac_cv_tanh_preserves_zero_sign" = yes
3332then
3333 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3334 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3335fi
3336
Mark Dickinsone05e8402009-05-04 13:30:43 +00003337AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p])
3338AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes0a8143f2007-12-18 23:22:54 +00003339
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003340LIBS=$LIBS_SAVE
3341
Guido van Rossumef2255b2000-03-10 22:30:29 +00003342# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003343AC_CHECK_HEADER(wchar.h, [
3344 AC_DEFINE(HAVE_WCHAR_H, 1,
3345 [Define if the compiler provides a wchar.h header file.])
3346 wchar_h="yes"
3347],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003348wchar_h="no"
3349)
3350
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003351# determine wchar_t size
3352if test "$wchar_h" = yes
3353then
Guido van Rossum67b26592001-10-20 14:21:45 +00003354 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003355fi
3356
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003357AC_MSG_CHECKING(for UCS-4 tcl)
3358have_ucs4_tcl=no
3359AC_TRY_COMPILE([
3360#include <tcl.h>
3361#if TCL_UTF_MAX != 6
3362# error "NOT UCS4_TCL"
3363#endif], [], [
3364 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3365 have_ucs4_tcl=yes
3366])
3367AC_MSG_RESULT($have_ucs4_tcl)
3368
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003369# check whether wchar_t is signed or not
3370if test "$wchar_h" = yes
3371then
3372 # check whether wchar_t is signed or not
3373 AC_MSG_CHECKING(whether wchar_t is signed)
3374 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3375 AC_TRY_RUN([
3376 #include <wchar.h>
3377 int main()
3378 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003379 /* Success: exit code 0 */
3380 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003381 }
3382 ],
3383 ac_cv_wchar_t_signed=yes,
3384 ac_cv_wchar_t_signed=no,
3385 ac_cv_wchar_t_signed=yes)])
3386 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3387fi
3388
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003389AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003390dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003391AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003392 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3393 [],
3394 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003395
3396if test $enable_unicode = yes
3397then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003398 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003399 case "$have_ucs4_tcl" in
3400 yes) enable_unicode="ucs4"
3401 ;;
3402 *) enable_unicode="ucs2"
3403 ;;
3404 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003405fi
3406
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003407AH_TEMPLATE(Py_UNICODE_SIZE,
3408 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003409case "$enable_unicode" in
3410ucs2) unicode_size="2"
3411 AC_DEFINE(Py_UNICODE_SIZE,2)
3412 ;;
3413ucs4) unicode_size="4"
3414 AC_DEFINE(Py_UNICODE_SIZE,4)
3415 ;;
3416esac
3417
Martin v. Löwis11437992002-04-12 09:54:03 +00003418AH_TEMPLATE(PY_UNICODE_TYPE,
3419 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003420
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003421AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003422if test "$enable_unicode" = "no"
3423then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003424 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003425 AC_MSG_RESULT(not used)
3426else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003427 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003428 AC_DEFINE(Py_USING_UNICODE, 1,
3429 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003430
3431 # wchar_t is only usable if it maps to an unsigned type
3432 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003433 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003434 then
3435 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003436 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3437 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003438 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003439 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003440 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3441 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3442 then
3443 PY_UNICODE_TYPE="unsigned short"
3444 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3445 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3446 then
3447 PY_UNICODE_TYPE="unsigned long"
3448 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3449 else
3450 PY_UNICODE_TYPE="no type found"
3451 fi
3452 AC_MSG_RESULT($PY_UNICODE_TYPE)
3453fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003454
3455# check for endianness
3456AC_C_BIGENDIAN
3457
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003458# Check whether right shifting a negative integer extends the sign bit
3459# or fills with zeros (like the Cray J90, according to Tim Peters).
3460AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003461AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003462AC_TRY_RUN([
3463int main()
3464{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003465 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003466}
Guido van Rossum3065c942001-09-17 04:03:14 +00003467],
3468ac_cv_rshift_extends_sign=yes,
3469ac_cv_rshift_extends_sign=no,
3470ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003471AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3472if test "$ac_cv_rshift_extends_sign" = no
3473then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003474 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3475 [Define if i>>j for signed int i does not extend the sign bit
3476 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003477fi
3478
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003479# check for getc_unlocked and related locking functions
3480AC_MSG_CHECKING(for getc_unlocked() and friends)
3481AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3482AC_TRY_LINK([#include <stdio.h>],[
3483 FILE *f = fopen("/dev/null", "r");
3484 flockfile(f);
3485 getc_unlocked(f);
3486 funlockfile(f);
3487], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3488AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3489if test "$ac_cv_have_getc_unlocked" = yes
3490then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003491 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3492 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003493fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003494
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003495# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003496# save the value of LIBS so we don't actually link Python with readline
3497LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003498
3499# On some systems we need to link readline to a termcap compatible
3500# library. NOTE: Keep the precedence of listed libraries synchronised
3501# with setup.py.
3502py_cv_lib_readline=no
3503AC_MSG_CHECKING([how to link readline libs])
3504for py_libtermcap in "" ncursesw ncurses curses termcap; do
3505 if test -z "$py_libtermcap"; then
3506 READLINE_LIBS="-lreadline"
3507 else
3508 READLINE_LIBS="-lreadline -l$py_libtermcap"
3509 fi
3510 LIBS="$READLINE_LIBS $LIBS_no_readline"
3511 AC_LINK_IFELSE(
3512 [AC_LANG_CALL([],[readline])],
3513 [py_cv_lib_readline=yes])
3514 if test $py_cv_lib_readline = yes; then
3515 break
3516 fi
3517done
3518# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3519#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003520if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003521 AC_MSG_RESULT([none])
3522else
3523 AC_MSG_RESULT([$READLINE_LIBS])
3524 AC_DEFINE(HAVE_LIBREADLINE, 1,
3525 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003526fi
3527
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003528# check for readline 2.1
3529AC_CHECK_LIB(readline, rl_callback_handler_install,
3530 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003531 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003532
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003533# check for readline 2.2
3534AC_TRY_CPP([#include <readline/readline.h>],
3535have_readline=yes, have_readline=no)
3536if test $have_readline = yes
3537then
3538 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3539 [readline/readline.h],
3540 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3541 [Define if you have readline 2.2]), )
Antoine Pitrou632e93f2009-10-27 12:30:12 +00003542 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3543 [readline/readline.h],
3544 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3545 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003546fi
3547
Martin v. Löwis0daad592001-09-30 21:09:59 +00003548# check for readline 4.0
3549AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003550 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003551 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003552
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003553# also in 4.0
3554AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3555 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003556 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003557
Guido van Rossum353ae582001-07-10 16:45:32 +00003558# check for readline 4.2
3559AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003560 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003561 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003562
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003563# also in readline 4.2
3564AC_TRY_CPP([#include <readline/readline.h>],
3565have_readline=yes, have_readline=no)
3566if test $have_readline = yes
3567then
3568 AC_EGREP_HEADER([extern int rl_catch_signals;],
3569 [readline/readline.h],
3570 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3571 [Define if you can turn off readline's signal handling.]), )
3572fi
3573
Martin v. Löwis82bca632006-02-10 20:49:30 +00003574# End of readline checks: restore LIBS
3575LIBS=$LIBS_no_readline
3576
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003577AC_MSG_CHECKING(for broken nice())
3578AC_CACHE_VAL(ac_cv_broken_nice, [
3579AC_TRY_RUN([
3580int main()
3581{
3582 int val1 = nice(1);
3583 if (val1 != -1 && val1 == nice(2))
3584 exit(0);
3585 exit(1);
3586}
Guido van Rossum3065c942001-09-17 04:03:14 +00003587],
3588ac_cv_broken_nice=yes,
3589ac_cv_broken_nice=no,
3590ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003591AC_MSG_RESULT($ac_cv_broken_nice)
3592if test "$ac_cv_broken_nice" = yes
3593then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003594 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3595 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003596fi
3597
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003598AC_MSG_CHECKING(for broken poll())
3599AC_TRY_RUN([
3600#include <poll.h>
3601
3602int main (void)
3603 {
3604 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3605
3606 close (42);
3607
3608 int poll_test = poll (&poll_struct, 1, 0);
3609
3610 if (poll_test < 0)
3611 {
3612 exit(0);
3613 }
3614 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3615 {
3616 exit(0);
3617 }
3618 else
3619 {
3620 exit(1);
3621 }
3622 }
3623],
3624ac_cv_broken_poll=yes,
3625ac_cv_broken_poll=no,
3626ac_cv_broken_poll=no)
3627AC_MSG_RESULT($ac_cv_broken_poll)
3628if test "$ac_cv_broken_poll" = yes
3629then
3630 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3631 [Define if poll() sets errno on invalid file descriptors.])
3632fi
3633
Brett Cannon43802422005-02-10 20:48:03 +00003634# Before we can test tzset, we need to check if struct tm has a tm_zone
3635# (which is not required by ISO C or UNIX spec) and/or if we support
3636# tzname[]
3637AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003638
Brett Cannon43802422005-02-10 20:48:03 +00003639# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003640AC_MSG_CHECKING(for working tzset())
3641AC_CACHE_VAL(ac_cv_working_tzset, [
3642AC_TRY_RUN([
3643#include <stdlib.h>
3644#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003645#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003646
3647#if HAVE_TZNAME
3648extern char *tzname[];
3649#endif
3650
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003651int main()
3652{
Brett Cannon18367812003-09-19 00:59:16 +00003653 /* Note that we need to ensure that not only does tzset(3)
3654 do 'something' with localtime, but it works as documented
3655 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003656 This includes making sure that tzname is set properly if
3657 tm->tm_zone does not exist since it is the alternative way
3658 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003659
3660 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003661 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003662 */
3663
Brett Cannon43802422005-02-10 20:48:03 +00003664 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003665 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3666
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003667 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003668 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003669 if (localtime(&groundhogday)->tm_hour != 0)
3670 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003671#if HAVE_TZNAME
3672 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3673 if (strcmp(tzname[0], "UTC") ||
3674 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3675 exit(1);
3676#endif
Brett Cannon18367812003-09-19 00:59:16 +00003677
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003678 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003679 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003680 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003681 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003682#if HAVE_TZNAME
3683 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3684 exit(1);
3685#endif
Brett Cannon18367812003-09-19 00:59:16 +00003686
3687 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3688 tzset();
3689 if (localtime(&groundhogday)->tm_hour != 11)
3690 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003691#if HAVE_TZNAME
3692 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3693 exit(1);
3694#endif
3695
3696#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003697 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3698 exit(1);
3699 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3700 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003701#endif
Brett Cannon18367812003-09-19 00:59:16 +00003702
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003703 exit(0);
3704}
3705],
3706ac_cv_working_tzset=yes,
3707ac_cv_working_tzset=no,
3708ac_cv_working_tzset=no)])
3709AC_MSG_RESULT($ac_cv_working_tzset)
3710if test "$ac_cv_working_tzset" = yes
3711then
3712 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3713 [Define if tzset() actually switches the local timezone in a meaningful way.])
3714fi
3715
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003716# Look for subsecond timestamps in struct stat
3717AC_MSG_CHECKING(for tv_nsec in struct stat)
3718AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3719AC_TRY_COMPILE([#include <sys/stat.h>], [
3720struct stat st;
3721st.st_mtim.tv_nsec = 1;
3722],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003723ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003724ac_cv_stat_tv_nsec=no,
3725ac_cv_stat_tv_nsec=no))
3726AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3727if test "$ac_cv_stat_tv_nsec" = yes
3728then
3729 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3730 [Define if you have struct stat.st_mtim.tv_nsec])
3731fi
3732
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003733# Look for BSD style subsecond timestamps in struct stat
3734AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3735AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3736AC_TRY_COMPILE([#include <sys/stat.h>], [
3737struct stat st;
3738st.st_mtimespec.tv_nsec = 1;
3739],
3740ac_cv_stat_tv_nsec2=yes,
3741ac_cv_stat_tv_nsec2=no,
3742ac_cv_stat_tv_nsec2=no))
3743AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3744if test "$ac_cv_stat_tv_nsec2" = yes
3745then
3746 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3747 [Define if you have struct stat.st_mtimensec])
3748fi
3749
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003750# On HP/UX 11.0, mvwdelch is a block with a return statement
3751AC_MSG_CHECKING(whether mvwdelch is an expression)
3752AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3753AC_TRY_COMPILE([#include <curses.h>], [
3754 int rtn;
3755 rtn = mvwdelch(0,0,0);
3756], ac_cv_mvwdelch_is_expression=yes,
3757 ac_cv_mvwdelch_is_expression=no,
3758 ac_cv_mvwdelch_is_expression=yes))
3759AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3760
3761if test "$ac_cv_mvwdelch_is_expression" = yes
3762then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003763 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3764 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003765fi
3766
3767AC_MSG_CHECKING(whether WINDOW has _flags)
3768AC_CACHE_VAL(ac_cv_window_has_flags,
3769AC_TRY_COMPILE([#include <curses.h>], [
3770 WINDOW *w;
3771 w->_flags = 0;
3772], ac_cv_window_has_flags=yes,
3773 ac_cv_window_has_flags=no,
3774 ac_cv_window_has_flags=no))
3775AC_MSG_RESULT($ac_cv_window_has_flags)
3776
3777
3778if test "$ac_cv_window_has_flags" = yes
3779then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003780 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3781 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003782fi
3783
Walter Dörwald4994d952006-06-19 08:07:50 +00003784AC_MSG_CHECKING(for is_term_resized)
3785AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3786 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3787 AC_MSG_RESULT(yes),
3788 AC_MSG_RESULT(no)
3789)
3790
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003791AC_MSG_CHECKING(for resize_term)
3792AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3793 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003794 AC_MSG_RESULT(yes),
3795 AC_MSG_RESULT(no)
3796)
3797
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003798AC_MSG_CHECKING(for resizeterm)
3799AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3800 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003801 AC_MSG_RESULT(yes),
3802 AC_MSG_RESULT(no)
3803)
3804
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003805AC_MSG_CHECKING(for /dev/ptmx)
3806
3807if test -r /dev/ptmx
3808then
3809 AC_MSG_RESULT(yes)
3810 AC_DEFINE(HAVE_DEV_PTMX, 1,
3811 [Define if we have /dev/ptmx.])
3812else
3813 AC_MSG_RESULT(no)
3814fi
3815
3816AC_MSG_CHECKING(for /dev/ptc)
3817
3818if test -r /dev/ptc
3819then
3820 AC_MSG_RESULT(yes)
3821 AC_DEFINE(HAVE_DEV_PTC, 1,
3822 [Define if we have /dev/ptc.])
3823else
3824 AC_MSG_RESULT(no)
3825fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003826
Brett Cannon09d12362006-05-11 05:11:33 +00003827AC_MSG_CHECKING(for %zd printf() format support)
3828AC_TRY_RUN([#include <stdio.h>
3829#include <stddef.h>
3830#include <string.h>
3831
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003832#ifdef HAVE_SYS_TYPES_H
3833#include <sys/types.h>
3834#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003835
3836#ifdef HAVE_SSIZE_T
3837typedef ssize_t Py_ssize_t;
3838#elif SIZEOF_VOID_P == SIZEOF_LONG
3839typedef long Py_ssize_t;
3840#else
3841typedef int Py_ssize_t;
3842#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003843
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003844int main()
3845{
3846 char buffer[256];
3847
Brett Cannon09d12362006-05-11 05:11:33 +00003848 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3849 return 1;
3850
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003851 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003852 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003853
3854 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3855 return 1;
3856
3857 if (strcmp(buffer, "-123"))
3858 return 1;
3859
Brett Cannon09d12362006-05-11 05:11:33 +00003860 return 0;
3861}],
3862[AC_MSG_RESULT(yes)
3863 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3864 AC_MSG_RESULT(no))
3865
Martin v. Löwis01c04012002-11-11 14:58:44 +00003866AC_CHECK_TYPE(socklen_t,,
3867 AC_DEFINE(socklen_t,int,
3868 Define to `int' if <sys/socket.h> does not define.),[
3869#ifdef HAVE_SYS_TYPES_H
3870#include <sys/types.h>
3871#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003872#ifdef HAVE_SYS_SOCKET_H
3873#include <sys/socket.h>
3874#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003875])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003876
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003877AC_SUBST(THREADHEADERS)
3878
3879for h in `(cd $srcdir;echo Python/thread_*.h)`
3880do
3881 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3882done
3883
Ronald Oussoren55114422009-11-19 16:37:33 +00003884if test $ac_sys_system = Darwin
3885then
3886 LIBS="$LIBS -framework CoreFoundation"
3887fi
3888
3889
3890
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003891AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003892SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003893AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003894for dir in $SRCDIRS; do
3895 if test ! -d $dir; then
3896 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003897 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003898done
3899AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003900
Guido van Rossum627b2d71993-12-24 10:39:16 +00003901# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003902AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3903AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003904
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003905echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003906if test ! -f Modules/Setup
3907then
3908 cp $srcdir/Modules/Setup.dist Modules/Setup
3909fi
3910
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003911echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003912if test ! -f Modules/Setup.local
3913then
3914 echo "# Edit this file for local setup changes" >Modules/Setup.local
3915fi
3916
3917echo "creating Makefile"
3918$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3919 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003920 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003921
3922case $ac_sys_system in
3923BeOS)
3924 AC_MSG_WARN([
3925
3926 Support for BeOS is deprecated as of Python 2.6.
3927 See PEP 11 for the gory details.
3928 ])
3929 ;;
3930*) ;;
3931esac
3932
Neil Schemenauer66252162001-02-19 04:47:42 +00003933mv config.c Modules