blob: 2dea658929ebd0aa690db68e4ecac2e13aa46b1d [file] [log] [blame]
Benjamin Petersond7c77842008-05-26 13:01:25 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson8b12ee12008-05-26 14:51:54 +00004dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.63).
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
6# Set VERSION so we only need to edit in one place (i.e., here)
Neal Norwitz9be57322006-08-18 05:39:20 +00007m4_define(PYTHON_VERSION, 2.6)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Guido van Rossum76be6ed1995-01-02 18:33:54 +00009AC_REVISION($Revision$)
Martin v. Löwiseba40652007-08-30 20:10:57 +000010AC_PREREQ(2.61)
Martin v. Löwis1d459062005-03-14 21:23:33 +000011AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +000012AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000013AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000014
Martin v. Löwis8316feb2003-06-14 07:48:07 +000015dnl This is for stuff that absolutely must end up in pyconfig.h.
16dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000017AH_TOP([
18#ifndef Py_PYCONFIG_H
19#define Py_PYCONFIG_H
20])
Martin v. Löwis11437992002-04-12 09:54:03 +000021AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000022/* Define the macros needed if on a UnixWare 7.x system. */
23#if defined(__USLC__) && defined(__SCO_VERSION__)
24#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
25#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000026
27#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000028])
29
Martin v. Löwis8316feb2003-06-14 07:48:07 +000030# We don't use PACKAGE_ variables, and they cause conflicts
31# with other autoconf-based packages that include Python.h
32grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
33rm confdefs.h
34mv confdefs.h.new confdefs.h
35
Guido van Rossum642b6781997-07-19 19:35:41 +000036AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000037VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000038
Martin v. Löwis1142de32002-03-29 16:28:31 +000039AC_SUBST(SOVERSION)
40SOVERSION=1.0
41
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000042# The later defininition of _XOPEN_SOURCE disables certain features
43# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
44AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
45
Martin v. Löwisbcd93962003-05-03 10:32:18 +000046# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
47# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
48# them.
49AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
50
Andrew MacIntyreabccf412003-07-02 13:53:25 +000051# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
52# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
53# them.
54AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
55
Martin v. Löwisd6320502004-08-12 13:45:08 +000056# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
57# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
58AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
59
Ronald Oussoren5640ce22008-06-05 12:58:24 +000060# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
61# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
62# them.
63AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
64
65
Martin v. Löwise981a4e2002-11-11 13:26:51 +000066define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000067
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000068# Arguments passed to configure.
69AC_SUBST(CONFIG_ARGS)
70CONFIG_ARGS="$ac_configure_args"
71
Ronald Oussoren988117f2006-04-29 11:31:35 +000072AC_ARG_ENABLE(universalsdk,
Brett Cannon91a1dec2008-02-13 19:15:44 +000073 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Ronald Oussoren988117f2006-04-29 11:31:35 +000074[
75 case $enableval in
76 yes)
77 enableval=/Developer/SDKs/MacOSX10.4u.sdk
78 ;;
79 esac
80 case $enableval in
81 no)
82 UNIVERSALSDK=
83 enable_universalsdk=
84 ;;
85 *)
86 UNIVERSALSDK=$enableval
87 ;;
88 esac
89],[
90 UNIVERSALSDK=
91 enable_universalsdk=
92])
93AC_SUBST(UNIVERSALSDK)
94
Ronald Oussoren5640ce22008-06-05 12:58:24 +000095UNIVERSAL_ARCHS="32-bit"
96AC_MSG_CHECKING(for --with-universal-archs)
97AC_ARG_WITH(universal-archs,
98 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
99[
100 AC_MSG_RESULT($withval)
101 UNIVERSAL_ARCHS="$withval"
102],
103[
104 AC_MSG_RESULT(32-bit)
105])
106
107
108
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000109AC_ARG_WITH(framework-name,
110 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
111 specify an alternate name of the framework built with --enable-framework),
112[
113 PYTHONFRAMEWORK=${withval}
114 PYTHONFRAMEWORKDIR=${withval}.framework
115 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
116 ],[
117 PYTHONFRAMEWORK=Python
118 PYTHONFRAMEWORKDIR=Python.framework
119 PYTHONFRAMEWORKIDENTIFIER=org.python.python
120])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000121dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000122AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000123 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
124[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000125 case $enableval in
126 yes)
127 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000128 esac
129 case $enableval in
130 no)
131 PYTHONFRAMEWORK=
132 PYTHONFRAMEWORKDIR=no-framework
133 PYTHONFRAMEWORKPREFIX=
134 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000135 FRAMEWORKINSTALLFIRST=
136 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000137 FRAMEWORKALTINSTALLFIRST=
138 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000139 if test "x${prefix}" = "xNONE"; then
140 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
141 else
142 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
143 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000144 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000145 ;;
146 *)
147 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000148 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000149 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000150 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
151 if test "$UNIVERSAL_ARCHS" = "all"
152 then
153 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
154 else
155 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
156 fi
157
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000158 if test "x${prefix}" = "xNONE" ; then
159 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
160 else
161 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
162 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000163 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000164
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000165 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000166 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000167 AC_CONFIG_FILES(Mac/Makefile)
168 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
169 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000170 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
171 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000172 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000173 ],[
174 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000175 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000176 PYTHONFRAMEWORKPREFIX=
177 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000178 FRAMEWORKINSTALLFIRST=
179 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000180 FRAMEWORKALTINSTALLFIRST=
181 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000182 if test "x${prefix}" = "xNONE" ; then
183 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
184 else
185 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
186 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000187 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000188
189 if test "$UNIVERSAL_ARCHS" = "all"
190 then
191 FRAMEWORKINSTALLLAST=update4wayuniversal
192 FRAMEWORKALTINSTALLLAST=update4wayuniversal
193 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000194])
195AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000196AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000197AC_SUBST(PYTHONFRAMEWORKDIR)
198AC_SUBST(PYTHONFRAMEWORKPREFIX)
199AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000200AC_SUBST(FRAMEWORKINSTALLFIRST)
201AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000202AC_SUBST(FRAMEWORKALTINSTALLFIRST)
203AC_SUBST(FRAMEWORKALTINSTALLLAST)
204AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000205
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000206##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000207## AC_HELP_STRING(--with-dyld,
208## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000209##
Guido van Rossumb418f891996-07-30 18:06:02 +0000210# Set name for machine-dependent library files
211AC_SUBST(MACHDEP)
212AC_MSG_CHECKING(MACHDEP)
213if test -z "$MACHDEP"
214then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000215 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000216 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
217 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000218 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000219 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000220 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000221 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000222 ac_md_system=`echo $ac_sys_system |
223 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
224 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000225 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000226 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000227
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000228 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000229 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000230 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000231 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000232 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000233 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000234 esac
235fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000236
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000237# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
238# disable features if it is defined, without any means to access these
239# features as extensions. For these systems, we skip the definition of
240# _XOPEN_SOURCE. Before adding a system to the list to gain access to
241# some feature, make sure there is no alternative way to access this
242# feature. Also, when using wildcards, make sure you have verified the
243# need for not defining _XOPEN_SOURCE on all systems matching the
244# wildcard, and that the wildcard does not include future systems
245# (which may remove their limitations).
246dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
247case $ac_sys_system/$ac_sys_release in
248 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
249 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000250 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Neal Norwitz2a3e3d02008-06-06 04:47:01 +0000251 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000252 define_xopen_source=no
253 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
254 # also defined. This can be overridden by defining _BSD_SOURCE
255 # As this has a different meaning on Linux, only define it on OpenBSD
256 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
257 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000258 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
259 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
260 # Marc Recht
261 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6[A-S])
262 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000263 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
264 # of union __?sigval. Reported by Stuart Bishop.
265 SunOS/5.6)
266 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000267 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
268 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000269 # Reconfirmed for 7.1.4 by Martin v. Loewis.
270 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000271 define_xopen_source=no;;
272 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000273 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000274 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000275 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000276 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
277 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
278 # this is fixed in 10.3, which identifies itself as Darwin/7.*
279 # This should hopefully be fixed in FreeBSD 4.9
280 FreeBSD/4.8* | Darwin/6* )
281 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000282 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
283 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
284 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000285 AIX/4)
286 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000287 AIX/5)
288 if test `uname -r` -eq 1; then
289 define_xopen_source=no
290 fi
291 ;;
Neal Norwitze8fb9922006-04-04 05:32:17 +0000292 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
293 # disables platform specific features beyond repair.
Martin v. Löwisa0588362006-04-04 06:03:50 +0000294 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Neal Norwitz7659f0f2006-06-12 02:09:03 +0000295 # has no effect, don't bother defining them
Ronald Oussorenc95f7562006-08-09 14:56:33 +0000296 Darwin/@<:@789@:>@.*)
Neal Norwitze8fb9922006-04-04 05:32:17 +0000297 define_xopen_source=no
298 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000299 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
300 # defining NI_NUMERICHOST.
301 QNX/6.3.2)
302 define_xopen_source=no
303 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000304
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000305esac
306
307if test $define_xopen_source = yes
308then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000309 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
310 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000311 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
312 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000313 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000314 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000315 AC_DEFINE(_XOPEN_SOURCE, 500,
316 Define to the level of X/Open that your system supports)
317 ;;
318 *)
319 AC_DEFINE(_XOPEN_SOURCE, 600,
320 Define to the level of X/Open that your system supports)
321 ;;
322 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000323
324 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
325 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
326 # several APIs are not declared. Since this is also needed in some
327 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000328 # except for Solaris 10, where it must not be defined,
329 # as it implies XPG4.2
330 case $ac_sys_system/$ac_sys_release in
331 SunOS/5.10)
332 ;;
333 *)
334 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
335 Define to activate Unix95-and-earlier features)
336 ;;
337 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000338
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000339 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
340
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000341fi
342
Guido van Rossum91922671997-10-09 20:24:13 +0000343#
344# SGI compilers allow the specification of the both the ABI and the
345# ISA on the command line. Depending on the values of these switches,
346# different and often incompatable code will be generated.
347#
348# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
349# thus supply support for various ABI/ISA combinations. The MACHDEP
350# variable is also adjusted.
351#
352AC_SUBST(SGI_ABI)
353if test ! -z "$SGI_ABI"
354then
355 CC="cc $SGI_ABI"
356 LDFLAGS="$SGI_ABI $LDFLAGS"
357 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
358fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000359AC_MSG_RESULT($MACHDEP)
360
Jack Jansen83f898c2002-12-30 22:23:40 +0000361# And add extra plat-mac for darwin
362AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000363AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000364AC_MSG_CHECKING(EXTRAPLATDIR)
365if test -z "$EXTRAPLATDIR"
366then
367 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000368 darwin)
369 EXTRAPLATDIR="\$(PLATMACDIRS)"
370 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
371 ;;
372 *)
373 EXTRAPLATDIR=""
374 EXTRAMACHDEPPATH=""
375 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000376 esac
377fi
378AC_MSG_RESULT($EXTRAPLATDIR)
379
Jack Jansen6b08a402004-06-03 12:41:45 +0000380# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
381# it may influence the way we can build extensions, so distutils
382# needs to check it
383AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000384AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000385CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000386EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000387
Mark Dickinson65134662008-04-25 16:11:04 +0000388AC_MSG_CHECKING(machine type as reported by uname -m)
389ac_sys_machine=`uname -m`
390AC_MSG_RESULT($ac_sys_machine)
391
Guido van Rossum627b2d71993-12-24 10:39:16 +0000392# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000393
394# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
395# for debug/optimization stuff. BASECFLAGS is for flags that are required
396# just to get things to compile and link. Users are free to override OPT
397# when running configure or make. The build should not break if they do.
398# BASECFLAGS should generally not be messed with, however.
399
400# XXX shouldn't some/most/all of this code be merged with the stuff later
401# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000402AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000403AC_ARG_WITH(gcc,
404 AC_HELP_STRING(--without-gcc,never use gcc),
405[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000406 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000407 no) CC=cc
408 without_gcc=yes;;
409 yes) CC=gcc
410 without_gcc=no;;
411 *) CC=$withval
412 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000413 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000414 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000415 AIX*) CC=cc_r
416 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000417 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000418 case $BE_HOST_CPU in
419 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000420 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000421 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000422 BASECFLAGS="$BASECFLAGS -export pragma"
423 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000424 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000425 ;;
426 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000427 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000428 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000429 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000430 ;;
431 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000432 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000433 ;;
434 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000435 AR="\$(srcdir)/Modules/ar_beos"
436 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000437 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000438 Monterey*)
439 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000440 without_gcc=;;
441 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000442 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000443AC_MSG_RESULT($without_gcc)
444
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000445# If the user switches compilers, we can't believe the cache
446if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
447then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000448 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
449(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000450fi
451
Guido van Rossum627b2d71993-12-24 10:39:16 +0000452AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000453
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000454AC_SUBST(CXX)
455AC_SUBST(MAINCC)
456AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
457AC_ARG_WITH(cxx_main,
458 AC_HELP_STRING([--with-cxx-main=<compiler>],
459 [compile main() and link python executable with C++ compiler]),
460[
461
462 case $withval in
463 no) with_cxx_main=no
464 MAINCC='$(CC)';;
465 yes) with_cxx_main=yes
466 MAINCC='$(CXX)';;
467 *) with_cxx_main=yes
468 MAINCC=$withval
469 if test -z "$CXX"
470 then
471 CXX=$withval
472 fi;;
473 esac], [
474 with_cxx_main=no
475 MAINCC='$(CC)'
476])
477AC_MSG_RESULT($with_cxx_main)
478
479preset_cxx="$CXX"
480if test -z "$CXX"
481then
482 case "$CC" in
483 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
484 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
485 esac
486 if test "$CXX" = "notfound"
487 then
488 CXX=""
489 fi
490fi
491if test -z "$CXX"
492then
493 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
494 if test "$CXX" = "notfound"
495 then
496 CXX=""
497 fi
498fi
499if test "$preset_cxx" != "$CXX"
500then
501 AC_MSG_WARN([
502
503 By default, distutils will build C++ extension modules with "$CXX".
504 If this is not intended, then set CXX on the configure command line.
505 ])
506fi
507
508
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000509# checks for UNIX variants that set C preprocessor variables
510AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000511
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000512# Check for unsupported systems
513case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000514atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000515 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
516 echo See README for details.
517 exit 1;;
518esac
519
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000520AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000521AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000522AC_ARG_WITH(suffix,
523 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
524[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000525 case $withval in
526 no) EXEEXT=;;
527 yes) EXEEXT=.exe;;
528 *) EXEEXT=$withval;;
529 esac])
530AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000531
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000532# Test whether we're running on a non-case-sensitive system, in which
533# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000534AC_SUBST(BUILDEXEEXT)
535AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000536if test ! -d CaseSensitiveTestDir; then
537mkdir CaseSensitiveTestDir
538fi
539
540if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000541then
Jack Jansen1999ef42001-12-06 21:47:20 +0000542 AC_MSG_RESULT(yes)
543 BUILDEXEEXT=.exe
544else
545 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000546 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000547fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000548rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000549
Guido van Rossumdd997f71998-10-07 19:58:26 +0000550case $MACHDEP in
551bsdos*)
552 case $CC in
553 gcc) CC="$CC -D_HAVE_BSDI";;
554 esac;;
555esac
556
Guido van Rossum84561611997-08-21 00:08:11 +0000557case $ac_sys_system in
558hp*|HP*)
559 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000560 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000561 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000562Monterey*)
563 case $CC in
564 cc) CC="$CC -Wl,-Bexport";;
565 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000566SunOS*)
567 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000568 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000569 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000570esac
571
Martin v. Löwise8964d42001-03-06 12:09:07 +0000572
Neil Schemenauer61c51152001-01-26 16:18:16 +0000573AC_SUBST(LIBRARY)
574AC_MSG_CHECKING(LIBRARY)
575if test -z "$LIBRARY"
576then
577 LIBRARY='libpython$(VERSION).a'
578fi
579AC_MSG_RESULT($LIBRARY)
580
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000581# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000582# name of the library into which to insert object files). BLDLIBRARY is also
583# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
584# is blank as the main program is not linked directly against LDLIBRARY.
585# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
586# systems without shared libraries, LDLIBRARY is the same as LIBRARY
587# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
588# DLLLIBRARY is the shared (i.e., DLL) library.
589#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000590# RUNSHARED is used to run shared python without installed libraries
591#
592# INSTSONAME is the name of the shared library that will be use to install
593# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000594AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000595AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000596AC_SUBST(BLDLIBRARY)
597AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000598AC_SUBST(INSTSONAME)
599AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000600LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000601BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000602INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000603DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000604LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000605RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000606
Guido van Rossumfb842551997-08-06 23:42:07 +0000607# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000608# If CXX is set, and if it is needed to link a main function that was
609# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
610# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000611# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000612# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000613AC_SUBST(LINKCC)
614AC_MSG_CHECKING(LINKCC)
615if test -z "$LINKCC"
616then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000617 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000618 case $ac_sys_system in
619 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000620 exp_extra="\"\""
621 if test $ac_sys_release -ge 5 -o \
622 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
623 exp_extra="."
624 fi
625 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000626 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000627 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000628 QNX*)
629 # qcc must be used because the other compilers do not
630 # support -N.
631 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000632 esac
633fi
634AC_MSG_RESULT($LINKCC)
635
Martin v. Löwis1142de32002-03-29 16:28:31 +0000636AC_MSG_CHECKING(for --enable-shared)
637AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000638 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000639
Martin v. Löwis1142de32002-03-29 16:28:31 +0000640if test -z "$enable_shared"
641then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000642 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000643 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000644 enable_shared="yes";;
645 *)
646 enable_shared="no";;
647 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000648fi
649AC_MSG_RESULT($enable_shared)
650
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000651AC_MSG_CHECKING(for --enable-profiling)
652AC_ARG_ENABLE(profiling,
653 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
654[ac_save_cc="$CC"
655 CC="$CC -pg"
656 AC_TRY_RUN([int main() { return 0; }],
657 ac_enable_profiling="yes",
658 ac_enable_profiling="no",
659 ac_enable_profiling="no")
660 CC="$ac_save_cc"])
661AC_MSG_RESULT($ac_enable_profiling)
662
663case "$ac_enable_profiling" in
664 "yes")
665 BASECFLAGS="-pg $BASECFLAGS"
666 LDFLAGS="-pg $LDFLAGS"
667 ;;
668esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000669
670AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000671
Guido van Rossumb8552162001-09-05 14:58:11 +0000672# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
673# library that we build, but we do not want to link against it (we
674# will find it with a -framework option). For this reason there is an
675# extra variable BLDLIBRARY against which Python and the extension
676# modules are linked, BLDLIBRARY. This is normally the same as
677# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000678if test "$enable_framework"
679then
680 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000681 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000682 BLDLIBRARY=''
683else
684 BLDLIBRARY='$(LDLIBRARY)'
685fi
686
Martin v. Löwis1142de32002-03-29 16:28:31 +0000687# Other platforms follow
688if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000689 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000690 case $ac_sys_system in
691 BeOS*)
692 LDLIBRARY='libpython$(VERSION).so'
693 ;;
694 CYGWIN*)
695 LDLIBRARY='libpython$(VERSION).dll.a'
696 DLLLIBRARY='libpython$(VERSION).dll'
697 ;;
698 SunOS*)
699 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000700 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000701 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000702 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000703 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000704 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000705 LDLIBRARY='libpython$(VERSION).so'
706 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000707 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000708 case $ac_sys_system in
709 FreeBSD*)
710 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
711 ;;
712 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000713 INSTSONAME="$LDLIBRARY".$SOVERSION
714 ;;
715 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000716 case `uname -m` in
717 ia64)
718 LDLIBRARY='libpython$(VERSION).so'
719 ;;
720 *)
721 LDLIBRARY='libpython$(VERSION).sl'
722 ;;
723 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000724 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000725 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000726 ;;
727 OSF*)
728 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000729 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000730 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000731 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000732 atheos*)
733 LDLIBRARY='libpython$(VERSION).so'
734 BLDLIBRARY='-L. -lpython$(VERSION)'
735 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
736 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000737 esac
Jason Tishler30765592003-09-04 11:04:06 +0000738else # shared is disabled
739 case $ac_sys_system in
740 CYGWIN*)
741 BLDLIBRARY='$(LIBRARY)'
742 LDLIBRARY='libpython$(VERSION).dll.a'
743 ;;
744 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000745fi
746
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000747AC_MSG_RESULT($LDLIBRARY)
748
Guido van Rossum627b2d71993-12-24 10:39:16 +0000749AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000750AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000751AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000752
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000753AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000754AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000755if test $SVNVERSION = found
756then
757 SVNVERSION="svnversion \$(srcdir)"
758else
759 SVNVERSION="echo exported"
760fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000761
Neil Schemenauera42c8272001-03-31 00:01:55 +0000762case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000763bsdos*|hp*|HP*)
764 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000765 if test -z "$INSTALL"
766 then
767 INSTALL="${srcdir}/install-sh -c"
768 fi
769esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000770AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000771
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000772# Not every filesystem supports hard links
773AC_SUBST(LN)
774if test -z "$LN" ; then
775 case $ac_sys_system in
776 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000777 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000778 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000779 *) LN=ln;;
780 esac
781fi
782
Fred Drake9f715822001-07-11 06:27:00 +0000783# Check for --with-pydebug
784AC_MSG_CHECKING(for --with-pydebug)
785AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000786 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
787[
Fred Drake9f715822001-07-11 06:27:00 +0000788if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000789then
790 AC_DEFINE(Py_DEBUG, 1,
791 [Define if you want to build an interpreter with many run-time checks.])
792 AC_MSG_RESULT(yes);
793 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000794else AC_MSG_RESULT(no); Py_DEBUG='false'
795fi],
796[AC_MSG_RESULT(no)])
797
Skip Montanarodecc6a42003-01-01 20:07:49 +0000798# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
799# merged with this chunk of code?
800
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000801# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000802# ------------------------
803# (The following bit of code is complicated enough - please keep things
804# indented properly. Just pretend you're editing Python code. ;-)
805
806# There are two parallel sets of case statements below, one that checks to
807# see if OPT was set and one that does BASECFLAGS setting based upon
808# compiler and platform. BASECFLAGS tweaks need to be made even if the
809# user set OPT.
810
811# tweak OPT based on compiler and platform, only if the user didn't set
812# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000813AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000814if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000815then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000816 case $GCC in
817 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000818 if test "$CC" != 'g++' ; then
819 STRICT_PROTO="-Wstrict-prototypes"
820 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000821 # For gcc 4.x we need to use -fwrapv so lets check if its supported
822 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
823 WRAP="-fwrapv"
824 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000825 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000826 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000827 if test "$Py_DEBUG" = 'true' ; then
828 # Optimization messes up debuggers, so turn it off for
829 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000830 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000831 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000832 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000833 fi
834 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000835 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000836 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000837 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000838 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000839 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000840 SCO_SV*) OPT="$OPT -m486 -DSCO5"
841 ;;
842 esac
Fred Drake9f715822001-07-11 06:27:00 +0000843 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000844
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000845 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000846 OPT="-O"
847 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000848 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000849
850 # The current (beta) Monterey compiler dies with optimizations
851 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000852 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000853 Monterey*)
854 OPT=""
855 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000856 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000857
Guido van Rossum4e8af441994-08-19 15:33:54 +0000858fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000859
Skip Montanarodecc6a42003-01-01 20:07:49 +0000860AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000861
862# The -arch flags for universal builds on OSX
863UNIVERSAL_ARCH_FLAGS=
864AC_SUBST(UNIVERSAL_ARCH_FLAGS)
865
Skip Montanarodecc6a42003-01-01 20:07:49 +0000866# tweak BASECFLAGS based on compiler and platform
867case $GCC in
868yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000869 # Python violates C99 rules, by casting between incompatible
870 # pointer types. GCC may generate bad code as a result of that,
871 # so use -fno-strict-aliasing if supported.
872 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
873 ac_save_cc="$CC"
874 CC="$CC -fno-strict-aliasing"
875 AC_TRY_RUN([int main() { return 0; }],
876 ac_cv_no_strict_aliasing_ok=yes,
877 ac_cv_no_strict_aliasing_ok=no,
878 ac_cv_no_strict_aliasing_ok=no)
879 CC="$ac_save_cc"
880 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
881 if test $ac_cv_no_strict_aliasing_ok = yes
882 then
883 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
884 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000885
886 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
887 # support. Without this, treatment of subnormals doesn't follow
888 # the standard.
889 case $ac_sys_machine in
890 alpha*)
891 BASECFLAGS="$BASECFLAGS -mieee"
892 ;;
893 esac
894
Skip Montanarodecc6a42003-01-01 20:07:49 +0000895 case $ac_sys_system in
896 SCO_SV*)
897 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
898 ;;
899 # is there any other compiler on Darwin besides gcc?
900 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000901 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
902 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussoren988117f2006-04-29 11:31:35 +0000903 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000904 UNIVERSAL_ARCH_FLAGS=""
905 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
906 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
907
908 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
909 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
910
911 elif test "$UNIVERSAL_ARCHS" = "all" ; then
912 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
913
914 else
915 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
916
917 fi
918
919
920 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Ronald Oussoren0d236eb2008-06-06 21:31:33 +0000921 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +0000922 fi
923
Skip Montanarodecc6a42003-01-01 20:07:49 +0000924 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000925 OSF*)
926 BASECFLAGS="$BASECFLAGS -mieee"
927 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000928 esac
929 ;;
930
931*)
932 case $ac_sys_system in
933 OpenUNIX*|UnixWare*)
934 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
935 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000936 OSF*)
937 BASECFLAGS="$BASECFLAGS -ieee -std"
938 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000939 SCO_SV*)
940 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
941 ;;
942 esac
943 ;;
944esac
945
Fred Drakee1ceaa02001-12-04 20:55:47 +0000946if test "$Py_DEBUG" = 'true'; then
947 :
948else
949 OPT="-DNDEBUG $OPT"
950fi
951
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000952if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000953then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000954 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000955fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000956
Neal Norwitz020c46a2006-01-07 21:39:28 +0000957# disable check for icc since it seems to pass, but generates a warning
958if test "$CC" = icc
959then
960 ac_cv_opt_olimit_ok=no
961fi
962
Guido van Rossum91922671997-10-09 20:24:13 +0000963AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
964AC_CACHE_VAL(ac_cv_opt_olimit_ok,
965[ac_save_cc="$CC"
966CC="$CC -OPT:Olimit=0"
967AC_TRY_RUN([int main() { return 0; }],
968 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000969 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000970 ac_cv_opt_olimit_ok=no)
971CC="$ac_save_cc"])
972AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000973if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000974 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000975 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
976 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
977 # environment?
978 Darwin*)
979 ;;
980 *)
981 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
982 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000983 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000984else
985 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
986 AC_CACHE_VAL(ac_cv_olimit_ok,
987 [ac_save_cc="$CC"
988 CC="$CC -Olimit 1500"
989 AC_TRY_RUN([int main() { return 0; }],
990 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000991 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000992 ac_cv_olimit_ok=no)
993 CC="$ac_save_cc"])
994 AC_MSG_RESULT($ac_cv_olimit_ok)
995 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000996 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000997 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000998fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000999
Martin v. Löwisaac13162006-10-19 10:58:46 +00001000# Check whether GCC supports PyArg_ParseTuple format
1001if test "$GCC" = "yes"
1002then
1003 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1004 save_CFLAGS=$CFLAGS
1005 CFLAGS="$CFLAGS -Werror"
1006 AC_TRY_COMPILE([
1007 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1008 ],,
1009 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1010 AC_MSG_RESULT(yes),
1011 AC_MSG_RESULT(no)
1012 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001013 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001014fi
1015
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001016# On some compilers, pthreads are available without further options
1017# (e.g. MacOS X). On some of these systems, the compiler will not
1018# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1019# So we have to see first whether pthreads are available without
1020# options before we can check whether -Kpthread improves anything.
1021AC_MSG_CHECKING(whether pthreads are available without options)
1022AC_CACHE_VAL(ac_cv_pthread_is_default,
1023[AC_TRY_RUN([
1024#include <pthread.h>
1025
1026void* routine(void* p){return NULL;}
1027
1028int main(){
1029 pthread_t p;
1030 if(pthread_create(&p,NULL,routine,NULL)!=0)
1031 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001032 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001033 return 0;
1034}
1035],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001036[
1037 ac_cv_pthread_is_default=yes
1038 ac_cv_kthread=no
1039 ac_cv_pthread=no
1040],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001041 ac_cv_pthread_is_default=no,
1042 ac_cv_pthread_is_default=no)
1043])
1044AC_MSG_RESULT($ac_cv_pthread_is_default)
1045
1046
1047if test $ac_cv_pthread_is_default = yes
1048then
1049 ac_cv_kpthread=no
1050else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001051# -Kpthread, if available, provides the right #defines
1052# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001053# Some compilers won't report that they do not support -Kpthread,
1054# so we need to run a program to see whether it really made the
1055# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001056AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1057AC_CACHE_VAL(ac_cv_kpthread,
1058[ac_save_cc="$CC"
1059CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001060AC_TRY_RUN([
1061#include <pthread.h>
1062
1063void* routine(void* p){return NULL;}
1064
1065int main(){
1066 pthread_t p;
1067 if(pthread_create(&p,NULL,routine,NULL)!=0)
1068 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001069 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001070 return 0;
1071}
1072],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001073 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001074 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001075 ac_cv_kpthread=no)
1076CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001077AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001078fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001079
Skip Montanarod8d39a02003-07-10 20:44:10 +00001080if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001081then
1082# -Kthread, if available, provides the right #defines
1083# and linker options to make pthread_create available
1084# Some compilers won't report that they do not support -Kthread,
1085# so we need to run a program to see whether it really made the
1086# function available.
1087AC_MSG_CHECKING(whether $CC accepts -Kthread)
1088AC_CACHE_VAL(ac_cv_kthread,
1089[ac_save_cc="$CC"
1090CC="$CC -Kthread"
1091AC_TRY_RUN([
1092#include <pthread.h>
1093
1094void* routine(void* p){return NULL;}
1095
1096int main(){
1097 pthread_t p;
1098 if(pthread_create(&p,NULL,routine,NULL)!=0)
1099 return 1;
1100 (void)pthread_detach(p);
1101 return 0;
1102}
1103],
1104 ac_cv_kthread=yes,
1105 ac_cv_kthread=no,
1106 ac_cv_kthread=no)
1107CC="$ac_save_cc"])
1108AC_MSG_RESULT($ac_cv_kthread)
1109fi
1110
Skip Montanarod8d39a02003-07-10 20:44:10 +00001111if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001112then
1113# -pthread, if available, provides the right #defines
1114# and linker options to make pthread_create available
1115# Some compilers won't report that they do not support -pthread,
1116# so we need to run a program to see whether it really made the
1117# function available.
1118AC_MSG_CHECKING(whether $CC accepts -pthread)
1119AC_CACHE_VAL(ac_cv_thread,
1120[ac_save_cc="$CC"
1121CC="$CC -pthread"
1122AC_TRY_RUN([
1123#include <pthread.h>
1124
1125void* routine(void* p){return NULL;}
1126
1127int main(){
1128 pthread_t p;
1129 if(pthread_create(&p,NULL,routine,NULL)!=0)
1130 return 1;
1131 (void)pthread_detach(p);
1132 return 0;
1133}
1134],
1135 ac_cv_pthread=yes,
1136 ac_cv_pthread=no,
1137 ac_cv_pthread=no)
1138CC="$ac_save_cc"])
1139AC_MSG_RESULT($ac_cv_pthread)
1140fi
1141
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001142# If we have set a CC compiler flag for thread support then
1143# check if it works for CXX, too.
1144ac_cv_cxx_thread=no
1145if test ! -z "$CXX"
1146then
1147AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1148ac_save_cxx="$CXX"
1149
1150if test "$ac_cv_kpthread" = "yes"
1151then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001152 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001153 ac_cv_cxx_thread=yes
1154elif test "$ac_cv_kthread" = "yes"
1155then
1156 CXX="$CXX -Kthread"
1157 ac_cv_cxx_thread=yes
1158elif test "$ac_cv_pthread" = "yes"
1159then
1160 CXX="$CXX -pthread"
1161 ac_cv_cxx_thread=yes
1162fi
1163
1164if test $ac_cv_cxx_thread = yes
1165then
1166 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1167 $CXX -c conftest.$ac_ext 2>&5
1168 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1169 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1170 then
1171 ac_cv_cxx_thread=yes
1172 else
1173 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001174 fi
1175 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001176fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001177AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001178fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001179CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001180
Fred Drakece81d592000-07-09 14:39:29 +00001181dnl # check for ANSI or K&R ("traditional") preprocessor
1182dnl AC_MSG_CHECKING(for C preprocessor type)
1183dnl AC_TRY_COMPILE([
1184dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1185dnl int foo;
1186dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1187dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1188dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001189
Guido van Rossum627b2d71993-12-24 10:39:16 +00001190# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001191AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001192AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1193fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001194ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001195shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001196unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001197sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1198sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001199sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001200sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001201sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Martin v. Löwis0347a9a2006-10-27 07:06:52 +00001202sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001203bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001204AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001205AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001206
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001207# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001208AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001209#ifdef HAVE_CURSES_H
1210#include <curses.h>
1211#endif
1212])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001213
Martin v. Löwis11017b12006-01-14 18:12:57 +00001214# On Linux, netlink.h requires asm/types.h
1215AC_CHECK_HEADERS(linux/netlink.h,,,[
1216#ifdef HAVE_ASM_TYPES_H
1217#include <asm/types.h>
1218#endif
1219#ifdef HAVE_SYS_SOCKET_H
1220#include <sys/socket.h>
1221#endif
1222])
1223
Guido van Rossum627b2d71993-12-24 10:39:16 +00001224# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001225was_it_defined=no
1226AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001227AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1228 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1229])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001230AC_MSG_RESULT($was_it_defined)
1231
Neal Norwitz11690112002-07-30 01:08:28 +00001232# Check whether using makedev requires defining _OSF_SOURCE
1233AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001234AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001235 [ makedev(0, 0) ],
1236 ac_cv_has_makedev=yes,
1237 ac_cv_has_makedev=no)
1238if test "$ac_cv_has_makedev" = "no"; then
1239 # we didn't link, try if _OSF_SOURCE will allow us to link
1240 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001241#define _OSF_SOURCE 1
1242#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001243 ],
1244 [ makedev(0, 0) ],
1245 ac_cv_has_makedev=yes,
1246 ac_cv_has_makedev=no)
1247 if test "$ac_cv_has_makedev" = "yes"; then
1248 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1249 fi
1250fi
1251AC_MSG_RESULT($ac_cv_has_makedev)
1252if test "$ac_cv_has_makedev" = "yes"; then
1253 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1254fi
1255
Martin v. Löwis399a6892002-10-04 10:22:02 +00001256# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1257# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1258# defined, but the compiler does not support pragma redefine_extname,
1259# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1260# structures (such as rlimit64) without declaring them. As a
1261# work-around, disable LFS on such configurations
1262
1263use_lfs=yes
1264AC_MSG_CHECKING(Solaris LFS bug)
1265AC_TRY_COMPILE([
1266#define _LARGEFILE_SOURCE 1
1267#define _FILE_OFFSET_BITS 64
1268#include <sys/resource.h>
1269],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1270AC_MSG_RESULT($sol_lfs_bug)
1271if test "$sol_lfs_bug" = "yes"; then
1272 use_lfs=no
1273fi
1274
1275if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001276# Two defines needed to enable largefile support on various platforms
1277# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001278AC_DEFINE(_LARGEFILE_SOURCE, 1,
1279[This must be defined on some systems to enable large file support.])
1280AC_DEFINE(_FILE_OFFSET_BITS, 64,
1281[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001282fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001283
Guido van Rossum300fda71996-08-19 21:58:16 +00001284# Add some code to confdefs.h so that the test for off_t works on SCO
1285cat >> confdefs.h <<\EOF
1286#if defined(SCO_DS)
1287#undef _OFF_T
1288#endif
1289EOF
1290
Guido van Rossumef2255b2000-03-10 22:30:29 +00001291# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001292AC_TYPE_MODE_T
1293AC_TYPE_OFF_T
1294AC_TYPE_PID_T
1295AC_TYPE_SIGNAL
1296AC_TYPE_SIZE_T
1297AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001298AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001299 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001300
Guido van Rossumef2255b2000-03-10 22:30:29 +00001301# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001302# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001303AC_CHECK_SIZEOF(int, 4)
1304AC_CHECK_SIZEOF(long, 4)
1305AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001306AC_CHECK_SIZEOF(short, 2)
1307AC_CHECK_SIZEOF(float, 4)
1308AC_CHECK_SIZEOF(double, 8)
1309AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001310AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001311AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001312
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001313AC_MSG_CHECKING(for long long support)
1314have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001315AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1316 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1317 have_long_long=yes
1318])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001319AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001320if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001321AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001322fi
1323
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001324AC_MSG_CHECKING(for _Bool support)
1325have_c99_bool=no
1326AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1327 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1328 have_c99_bool=yes
1329])
1330AC_MSG_RESULT($have_c99_bool)
1331if test "$have_c99_bool" = yes ; then
1332AC_CHECK_SIZEOF(_Bool, 1)
1333fi
1334
Martin v. Löwisebe26702006-10-02 14:55:51 +00001335AC_CHECK_TYPES(uintptr_t,
1336 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001337 [], [#ifdef HAVE_STDINT_H
1338 #include <stdint.h>
1339 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001340
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001341
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001342# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1343AC_MSG_CHECKING(size of off_t)
1344AC_CACHE_VAL(ac_cv_sizeof_off_t,
1345[AC_TRY_RUN([#include <stdio.h>
1346#include <sys/types.h>
1347main()
1348{
1349 FILE *f=fopen("conftestval", "w");
1350 if (!f) exit(1);
1351 fprintf(f, "%d\n", sizeof(off_t));
1352 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001353}],
1354ac_cv_sizeof_off_t=`cat conftestval`,
1355ac_cv_sizeof_off_t=0,
1356ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001357])
1358AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001359AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1360[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001361
1362AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001363if test "$have_long_long" = yes -a \
1364 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1365 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001366 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1367 [Defined to enable large file support when an off_t is bigger than a long
1368 and long long is available and at least as big as an off_t. You may need
1369 to add some flags for configuration and compilation to enable this mode.
1370 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001371 AC_MSG_RESULT(yes)
1372else
1373 AC_MSG_RESULT(no)
1374fi
1375
Fred Drakea3f6e912000-06-29 20:44:47 +00001376# AC_CHECK_SIZEOF() doesn't include <time.h>.
1377AC_MSG_CHECKING(size of time_t)
1378AC_CACHE_VAL(ac_cv_sizeof_time_t,
1379[AC_TRY_RUN([#include <stdio.h>
1380#include <time.h>
1381main()
1382{
1383 FILE *f=fopen("conftestval", "w");
1384 if (!f) exit(1);
1385 fprintf(f, "%d\n", sizeof(time_t));
1386 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001387}],
1388ac_cv_sizeof_time_t=`cat conftestval`,
1389ac_cv_sizeof_time_t=0,
1390ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001391])
1392AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001393AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1394[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001395
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001396
Trent Mick635f6fb2000-08-23 21:33:05 +00001397# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001398ac_save_cc="$CC"
1399if test "$ac_cv_kpthread" = "yes"
1400then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001401elif test "$ac_cv_kthread" = "yes"
1402then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001403elif test "$ac_cv_pthread" = "yes"
1404then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001405fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001406AC_MSG_CHECKING(for pthread_t)
1407have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001408AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001409AC_MSG_RESULT($have_pthread_t)
1410if test "$have_pthread_t" = yes ; then
1411 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1412 AC_MSG_CHECKING(size of pthread_t)
1413 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1414 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001415#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001416 main()
1417 {
1418 FILE *f=fopen("conftestval", "w");
1419 if (!f) exit(1);
1420 fprintf(f, "%d\n", sizeof(pthread_t));
1421 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001422 }],
1423 ac_cv_sizeof_pthread_t=`cat conftestval`,
1424 ac_cv_sizeof_pthread_t=0,
1425 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001426 ])
1427 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001428 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1429 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001430fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001431CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001432
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001433AC_MSG_CHECKING(for --enable-toolbox-glue)
1434AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001435 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001436
1437if test -z "$enable_toolbox_glue"
1438then
1439 case $ac_sys_system/$ac_sys_release in
1440 Darwin/*)
1441 enable_toolbox_glue="yes";;
1442 *)
1443 enable_toolbox_glue="no";;
1444 esac
1445fi
1446case "$enable_toolbox_glue" in
1447yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001448 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001449 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001450 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1451 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001452 ;;
1453*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001454 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001455 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001456 ;;
1457esac
1458AC_MSG_RESULT($enable_toolbox_glue)
1459
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001460
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001461AC_SUBST(OTHER_LIBTOOL_OPT)
1462case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001463 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001464 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1465 ;;
1466 Darwin/*)
1467 OTHER_LIBTOOL_OPT=""
1468 ;;
1469esac
1470
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001471AC_SUBST(LIBTOOL_CRUFT)
1472case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001473 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001474 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1475 if test "${enable_universalsdk}"; then
1476 :
1477 else
1478 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1479 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001480 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001481 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001482 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001483 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1484 if test ${gcc_version} '<' 4.0
1485 then
1486 LIBTOOL_CRUFT="-lcc_dynamic"
1487 else
1488 LIBTOOL_CRUFT=""
1489 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001490 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001491 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001492 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001493esac
1494
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001495AC_MSG_CHECKING(for --enable-framework)
1496if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001497then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001498 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001499 # -F. is needed to allow linking to the framework while
1500 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001501 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1502 [Define if you want to produce an OpenStep/Rhapsody framework
1503 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001504 AC_MSG_RESULT(yes)
1505else
1506 AC_MSG_RESULT(no)
1507fi
1508
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001509AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001510case $ac_sys_system/$ac_sys_release in
1511 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001512 AC_DEFINE(WITH_DYLD, 1,
1513 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1514 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1515 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001516 AC_MSG_RESULT(always on for Darwin)
1517 ;;
1518 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001519 AC_MSG_RESULT(no)
1520 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001521esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001522
Guido van Rossumac405f61994-09-12 10:56:06 +00001523# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001524AC_SUBST(SO)
1525AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001526AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001527AC_SUBST(CCSHARED)
1528AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001529# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001530# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001531AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001532if test -z "$SO"
1533then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001534 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001535 hp*|HP*)
1536 case `uname -m` in
1537 ia64) SO=.so;;
1538 *) SO=.sl;;
1539 esac
1540 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001541 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001542 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001543 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001544else
1545 # this might also be a termcap variable, see #610332
1546 echo
1547 echo '====================================================================='
1548 echo '+ +'
1549 echo '+ WARNING: You have set SO in your environment. +'
1550 echo '+ Do you really mean to change the extension for shared libraries? +'
1551 echo '+ Continuing in 10 seconds to let you to ponder. +'
1552 echo '+ +'
1553 echo '====================================================================='
1554 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001555fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001556AC_MSG_RESULT($SO)
Neal Norwitz58e28882006-05-19 07:00:58 +00001557AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001558# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001559# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001560# (Shared libraries in this instance are shared modules to be loaded into
1561# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001562AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001563if test -z "$LDSHARED"
1564then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001565 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001566 AIX*)
1567 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001568 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001569 ;;
1570 BeOS*)
1571 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001572 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001573 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001574 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001575 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001576 SunOS/5*)
1577 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001578 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001579 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001580 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001581 hp*|HP*)
1582 if test "$GCC" = "yes"
1583 then LDSHARED='$(CC) -shared'
1584 else LDSHARED='ld -b';
1585 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001586 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001587 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001588 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1589 if test "$enable_framework" ; then
1590 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001591 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1592 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001593 else
1594 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001595 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001596 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001597 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001598 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1599 if test "$enable_framework" ; then
1600 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001601 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1602 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001603 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001604 # No framework, use the Python app as bundle-loader
1605 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001606 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001607 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001608 Darwin/*)
1609 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1610 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001611 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ronald Oussoren988117f2006-04-29 11:31:35 +00001612 if test ${cur_target} '>' 10.2; then
1613 cur_target=10.3
1614 fi
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001615 if test "${UNIVERSAL_ARCHS}" = "all"; then
1616 # Ensure that the default platform for a 4-way
1617 # universal build is OSX 10.5, that's the first
1618 # OS release where 4-way builds make sense.
1619 cur_target='10.5'
1620 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001621 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001622
1623 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1624 # environment with a value that is the same as what we'll use
1625 # in the Makefile to ensure that we'll get the same compiler
1626 # environment during configure and build time.
1627 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1628 export MACOSX_DEPLOYMENT_TARGET
1629
Ronald Oussoren988117f2006-04-29 11:31:35 +00001630 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001631 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001632 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001633 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001634 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001635 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001636 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1637 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001638 else
1639 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1640 if test "$enable_framework" ; then
1641 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001642 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1643 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001644 else
1645 # No framework, use the Python app as bundle-loader
1646 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1647 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1648 fi
1649 fi
1650 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001651 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001652 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001653 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001654 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001655 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001656 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001657 else
1658 LDSHARED="ld -Bshareable ${LDFLAGS}"
1659 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001660 OpenBSD*)
1661 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1662 then
1663 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1664 else
1665 case `uname -r` in
1666 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1667 LDSHARED="ld -Bshareable ${LDFLAGS}"
1668 ;;
1669 *)
1670 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1671 ;;
1672 esac
1673 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001674 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001675 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001676 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001677 then LDSHARED='$(CC) -shared'
1678 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001679 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001680 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001681 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001682 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001683 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001684 *) LDSHARED="ld";;
1685 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001686fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001687AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001688BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001689# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001690# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001691AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001692if test -z "$CCSHARED"
1693then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001694 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001695 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001696 then CCSHARED="-fPIC";
1697 elif test `uname -p` = sparc;
1698 then CCSHARED="-xcode=pic32";
1699 else CCSHARED="-Kpic";
1700 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001701 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001702 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001703 else CCSHARED="+z";
1704 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001705 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001706 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001707 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001708 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001709 if test "$GCC" = "yes"
1710 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001711 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001712 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001713 SCO_SV*)
1714 if test "$GCC" = "yes"
1715 then CCSHARED="-fPIC"
1716 else CCSHARED="-Kpic -belf"
1717 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001718 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001719 IRIX*/6*) case $CC in
1720 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001721 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001722 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001723 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001724 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001725fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001726AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001727# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001728# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001729AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001730if test -z "$LINKFORSHARED"
1731then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001732 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001733 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001734 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001735 LINKFORSHARED="-Wl,-E -Wl,+s";;
1736# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001737 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001738 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001739 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001740 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001741 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1742 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001743 # not used by the core itself but which needs to be in the core so
1744 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001745 # -prebind is no longer used, because it actually seems to give a
1746 # slowdown in stead of a speedup, maybe due to the large number of
1747 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001748
1749 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001750 if test "$enable_framework"
1751 then
Jack Jansenda49e192005-01-07 13:08:22 +00001752 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001753 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001754 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001755 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001756 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001757 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001758 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001759 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1760 then
1761 LINKFORSHARED="-Wl,--export-dynamic"
1762 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001763 SunOS/5*) case $CC in
1764 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001765 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001766 then
1767 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001768 fi;;
1769 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001770 CYGWIN*)
1771 if test $enable_shared = "no"
1772 then
1773 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1774 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001775 QNX*)
1776 # -Wl,-E causes the symbols to be added to the dynamic
1777 # symbol table so that they can be found when a module
1778 # is loaded. -N 2048K causes the stack size to be set
1779 # to 2048 kilobytes so that the stack doesn't overflow
1780 # when running test_compile.py.
1781 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001782 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001783fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001784AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001785
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001786
Neil Schemenauer61c51152001-01-26 16:18:16 +00001787AC_SUBST(CFLAGSFORSHARED)
1788AC_MSG_CHECKING(CFLAGSFORSHARED)
1789if test ! "$LIBRARY" = "$LDLIBRARY"
1790then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001791 case $ac_sys_system in
1792 CYGWIN*)
1793 # Cygwin needs CCSHARED when building extension DLLs
1794 # but not when building the interpreter DLL.
1795 CFLAGSFORSHARED='';;
1796 *)
1797 CFLAGSFORSHARED='$(CCSHARED)'
1798 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001799fi
1800AC_MSG_RESULT($CFLAGSFORSHARED)
1801
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001802# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1803# library (with --enable-shared).
1804# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001805# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1806# if it is not required, since it creates a dependency of the shared library
1807# to LIBS. This, in turn, means that applications linking the shared libpython
1808# don't need to link LIBS explicitly. The default should be only changed
1809# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001810AC_SUBST(SHLIBS)
1811AC_MSG_CHECKING(SHLIBS)
1812case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001813 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001814 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001815esac
1816AC_MSG_RESULT($SHLIBS)
1817
1818
Guido van Rossum627b2d71993-12-24 10:39:16 +00001819# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001820AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1821AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001822
1823# only check for sem_ini if thread support is requested
1824if test "$with_threads" = "yes" -o -z "$with_threads"; then
1825 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1826 # posix4 on Solaris 2.6
1827 # pthread (first!) on Linux
1828fi
1829
Martin v. Löwis19d17342003-06-14 21:03:05 +00001830# check if we need libintl for locale functions
1831AC_CHECK_LIB(intl, textdomain,
1832 AC_DEFINE(WITH_LIBINTL, 1,
1833 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001834
1835# checks for system dependent C++ extensions support
1836case "$ac_sys_system" in
1837 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1838 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1839 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001840 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1841 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1842 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001843 AC_MSG_RESULT(yes)],
1844 [AC_MSG_RESULT(no)]);;
1845 *) ;;
1846esac
1847
Guido van Rossum70c7f481998-03-26 18:44:10 +00001848# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001849# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001850AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001851AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001852
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001853case "$ac_sys_system" in
1854BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001855AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1856;;
1857esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001858
Guido van Rossumc5a39031996-07-31 17:35:03 +00001859AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001860AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001861 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1862[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001863AC_MSG_RESULT($withval)
1864LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001865],
1866[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001867
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001868# Check for use of the system libffi library
1869AC_MSG_CHECKING(for --with-system-ffi)
1870AC_ARG_WITH(system_ffi,
1871 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1872
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001873AC_MSG_RESULT($with_system_ffi)
1874
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001875# Determine if signalmodule should be used.
1876AC_SUBST(USE_SIGNAL_MODULE)
1877AC_SUBST(SIGNAL_OBJS)
1878AC_MSG_CHECKING(for --with-signal-module)
1879AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001880 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001881
1882if test -z "$with_signal_module"
1883then with_signal_module="yes"
1884fi
1885AC_MSG_RESULT($with_signal_module)
1886
1887if test "${with_signal_module}" = "yes"; then
1888 USE_SIGNAL_MODULE=""
1889 SIGNAL_OBJS=""
1890else
1891 USE_SIGNAL_MODULE="#"
1892 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1893fi
1894
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001895# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001896AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001897USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001898
Guido van Rossum54d93d41997-01-22 20:51:58 +00001899AC_MSG_CHECKING(for --with-dec-threads)
1900AC_SUBST(LDLAST)
1901AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001902 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1903[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001904AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001905LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001906if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001907 with_thread="$withval";
1908fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001909[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001910
Martin v. Löwis11437992002-04-12 09:54:03 +00001911# Templates for things AC_DEFINEd more than once.
1912# For a single AC_DEFINE, no template is needed.
1913AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1914AH_TEMPLATE(_REENTRANT,
1915 [Define to force use of thread-safe errno, h_errno, and other functions])
1916AH_TEMPLATE(WITH_THREAD,
1917 [Define if you want to compile in rudimentary thread support])
1918
Guido van Rossum54d93d41997-01-22 20:51:58 +00001919AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001920dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001921AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001922 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001923
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001924# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001925dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001926AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001927 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1928 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001929
1930if test -z "$with_threads"
1931then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001932fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001933AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001934
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001935AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001936if test "$with_threads" = "no"
1937then
1938 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001939elif test "$ac_cv_pthread_is_default" = yes
1940then
1941 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001942 # Defining _REENTRANT on system with POSIX threads should not hurt.
1943 AC_DEFINE(_REENTRANT)
1944 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001945 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001946elif test "$ac_cv_kpthread" = "yes"
1947then
1948 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001949 if test "$ac_cv_cxx_thread" = "yes"; then
1950 CXX="$CXX -Kpthread"
1951 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001952 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001953 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001954 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001955elif test "$ac_cv_kthread" = "yes"
1956then
1957 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001958 if test "$ac_cv_cxx_thread" = "yes"; then
1959 CXX="$CXX -Kthread"
1960 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001961 AC_DEFINE(WITH_THREAD)
1962 posix_threads=yes
1963 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001964elif test "$ac_cv_pthread" = "yes"
1965then
1966 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001967 if test "$ac_cv_cxx_thread" = "yes"; then
1968 CXX="$CXX -pthread"
1969 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001970 AC_DEFINE(WITH_THREAD)
1971 posix_threads=yes
1972 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001973else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001974 if test ! -z "$with_threads" -a -d "$with_threads"
1975 then LDFLAGS="$LDFLAGS -L$with_threads"
1976 fi
1977 if test ! -z "$withval" -a -d "$withval"
1978 then LDFLAGS="$LDFLAGS -L$withval"
1979 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001980
1981 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001982 # define _POSIX_THREADS in unistd.h. Some apparently don't
1983 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001984 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1985 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001986 [
1987#include <unistd.h>
1988#ifdef _POSIX_THREADS
1989yes
1990#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001991 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1992 AC_MSG_RESULT($unistd_defines_pthreads)
1993
Martin v. Löwis130fb172001-07-19 11:00:41 +00001994 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001995 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1996 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001997 AC_DEFINE(HURD_C_THREADS, 1,
1998 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001999 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002000 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002001 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2002 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002003 AC_DEFINE(MACH_C_THREADS, 1,
2004 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002005 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002006 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002007 AC_ARG_WITH([pth],
2008 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2009 [AC_MSG_RESULT($withval)
2010 AC_DEFINE([WITH_THREAD])
2011 AC_DEFINE([HAVE_PTH], 1,
2012 [Define if you have GNU PTH threads.])
2013 LIBS="-lpth $LIBS"
2014 THREADOBJ="Python/thread.o"],
2015 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002016
2017 # Just looking for pthread_create in libpthread is not enough:
2018 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2019 # So we really have to include pthread.h, and then link.
2020 _libs=$LIBS
2021 LIBS="$LIBS -lpthread"
2022 AC_MSG_CHECKING([for pthread_create in -lpthread])
2023 AC_TRY_LINK([#include <pthread.h>
2024
2025void * start_routine (void *arg) { exit (0); }], [
2026pthread_create (NULL, NULL, start_routine, NULL)], [
2027 AC_MSG_RESULT(yes)
2028 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002029 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002030 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002031 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002032 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002033 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002034 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002035 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2036 AC_DEFINE(ATHEOS_THREADS, 1,
2037 [Define this if you have AtheOS threads.])
2038 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002039 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002040 AC_DEFINE(BEOS_THREADS, 1,
2041 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002042 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002043 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002044 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002045 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002046 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002047 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002048 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002049 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002050 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002051 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002052 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002053 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002054 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002055 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002056 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002057 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002058 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002059 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002060 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002061
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002062 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2063 LIBS="$LIBS -lmpc"
2064 THREADOBJ="Python/thread.o"
2065 USE_THREAD_MODULE=""])
2066
2067 if test "$posix_threads" != "yes"; then
2068 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2069 LIBS="$LIBS -lthread"
2070 THREADOBJ="Python/thread.o"
2071 USE_THREAD_MODULE=""])
2072 fi
2073
2074 if test "$USE_THREAD_MODULE" != "#"
2075 then
2076 # If the above checks didn't disable threads, (at least) OSF1
2077 # needs this '-threads' argument during linking.
2078 case $ac_sys_system in
2079 OSF1) LDLAST=-threads;;
2080 esac
2081 fi
2082fi
2083
2084if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002085 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002086 AC_DEFINE(_POSIX_THREADS, 1,
2087 [Define if you have POSIX threads,
2088 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002089 fi
2090
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002091 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2092 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002093 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2094 Defined for Solaris 2.6 bug in pthread header.)
2095 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002096 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002097 Define if the Posix semaphores do not work on your system)
2098 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002099 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2100 Define if the Posix semaphores do not work on your system)
2101 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002102 esac
2103
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002104 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2105 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2106 [AC_TRY_RUN([#include <pthread.h>
2107 void *foo(void *parm) {
2108 return NULL;
2109 }
2110 main() {
2111 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002112 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002113 if (pthread_attr_init(&attr)) exit(-1);
2114 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002115 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002116 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002117 }],
2118 ac_cv_pthread_system_supported=yes,
2119 ac_cv_pthread_system_supported=no,
2120 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002121 ])
2122 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2123 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002124 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002125 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002126 AC_CHECK_FUNCS(pthread_sigmask,
2127 [case $ac_sys_system in
2128 CYGWIN*)
2129 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2130 [Define if pthread_sigmask() does not work on your system.])
2131 ;;
2132 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002133fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002134
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002135
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002136# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002137AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002138AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002139AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002140[ --enable-ipv6 Enable ipv6 (with ipv4) support
2141 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002142[ case "$enableval" in
2143 no)
2144 AC_MSG_RESULT(no)
2145 ipv6=no
2146 ;;
2147 *) AC_MSG_RESULT(yes)
2148 AC_DEFINE(ENABLE_IPV6)
2149 ipv6=yes
2150 ;;
2151 esac ],
2152
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002153[
2154dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002155 AC_TRY_RUN([ /* AF_INET6 available check */
2156#include <sys/types.h>
2157#include <sys/socket.h>
2158main()
2159{
2160 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2161 exit(1);
2162 else
2163 exit(0);
2164}
2165],
2166 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002167 ipv6=yes,
2168 AC_MSG_RESULT(no)
2169 ipv6=no,
2170 AC_MSG_RESULT(no)
2171 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002172)
2173
2174if test "$ipv6" = "yes"; then
2175 AC_MSG_CHECKING(if RFC2553 API is available)
2176 AC_TRY_COMPILE([#include <sys/types.h>
2177#include <netinet/in.h>],
2178 [struct sockaddr_in6 x;
2179x.sin6_scope_id;],
2180 AC_MSG_RESULT(yes)
2181 ipv6=yes,
2182 AC_MSG_RESULT(no, IPv6 disabled)
2183 ipv6=no)
2184fi
2185
2186if test "$ipv6" = "yes"; then
2187 AC_DEFINE(ENABLE_IPV6)
2188fi
2189])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002190
2191ipv6type=unknown
2192ipv6lib=none
2193ipv6trylibc=no
2194
2195if test "$ipv6" = "yes"; then
2196 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002197 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2198 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002199 case $i in
2200 inria)
2201 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002202 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002203#include <netinet/in.h>
2204#ifdef IPV6_INRIA_VERSION
2205yes
2206#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002207 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002208 ;;
2209 kame)
2210 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002211 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002212#include <netinet/in.h>
2213#ifdef __KAME__
2214yes
2215#endif],
2216 [ipv6type=$i;
2217 ipv6lib=inet6
2218 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002219 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002220 ;;
2221 linux-glibc)
2222 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002223 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002224#include <features.h>
2225#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2226yes
2227#endif],
2228 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002229 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002230 ;;
2231 linux-inet6)
2232 dnl http://www.v6.linux.or.jp/
2233 if test -d /usr/inet6; then
2234 ipv6type=$i
2235 ipv6lib=inet6
2236 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002237 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002238 fi
2239 ;;
2240 solaris)
2241 if test -f /etc/netconfig; then
2242 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2243 ipv6type=$i
2244 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002245 fi
2246 fi
2247 ;;
2248 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002249 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002250#include <sys/param.h>
2251#ifdef _TOSHIBA_INET6
2252yes
2253#endif],
2254 [ipv6type=$i;
2255 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002256 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002257 ;;
2258 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002259 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002260#include </usr/local/v6/include/sys/v6config.h>
2261#ifdef __V6D__
2262yes
2263#endif],
2264 [ipv6type=$i;
2265 ipv6lib=v6;
2266 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002267 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002268 ;;
2269 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002270 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002271#include <sys/param.h>
2272#ifdef _ZETA_MINAMI_INET6
2273yes
2274#endif],
2275 [ipv6type=$i;
2276 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002277 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002278 ;;
2279 esac
2280 if test "$ipv6type" != "unknown"; then
2281 break
2282 fi
2283 done
2284 AC_MSG_RESULT($ipv6type)
2285fi
2286
2287if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2288 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2289 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2290 echo "using lib$ipv6lib"
2291 else
2292 if test $ipv6trylibc = "yes"; then
2293 echo "using libc"
2294 else
2295 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2296 echo "You need to fetch lib$ipv6lib.a from appropriate"
2297 echo 'ipv6 kit and compile beforehand.'
2298 exit 1
2299 fi
2300 fi
2301fi
2302
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002303AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2304AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2305 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2306 AC_MSG_RESULT(yes),
2307 AC_MSG_RESULT(no)
2308)
2309
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002310# Check for --with-doc-strings
2311AC_MSG_CHECKING(for --with-doc-strings)
2312AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002313 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002314
2315if test -z "$with_doc_strings"
2316then with_doc_strings="yes"
2317fi
2318if test "$with_doc_strings" != "no"
2319then
2320 AC_DEFINE(WITH_DOC_STRINGS, 1,
2321 [Define if you want documentation strings in extension modules])
2322fi
2323AC_MSG_RESULT($with_doc_strings)
2324
Neil Schemenauera35c6882001-02-27 04:45:05 +00002325# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002326AC_MSG_CHECKING(for --with-tsc)
2327AC_ARG_WITH(tsc,
2328[ --with(out)-tsc enable/disable timestamp counter profile], [
2329if test "$withval" != no
2330then
2331 AC_DEFINE(WITH_TSC, 1,
2332 [Define to profile with the Pentium timestamp counter])
2333 AC_MSG_RESULT(yes)
2334else AC_MSG_RESULT(no)
2335fi],
2336[AC_MSG_RESULT(no)])
2337
2338# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002339AC_MSG_CHECKING(for --with-pymalloc)
2340AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002341 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002342
2343if test -z "$with_pymalloc"
2344then with_pymalloc="yes"
2345fi
2346if test "$with_pymalloc" != "no"
2347then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002348 AC_DEFINE(WITH_PYMALLOC, 1,
2349 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002350fi
2351AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002352
Barry Warsawef82cd72000-06-30 16:21:01 +00002353# Check for --with-wctype-functions
2354AC_MSG_CHECKING(for --with-wctype-functions)
2355AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002356 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2357[
Barry Warsawef82cd72000-06-30 16:21:01 +00002358if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002359then
2360 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2361 [Define if you want wctype.h functions to be used instead of the
2362 one supplied by Python itself. (see Include/unicodectype.h).])
2363 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002364else AC_MSG_RESULT(no)
2365fi],
2366[AC_MSG_RESULT(no)])
2367
Guido van Rossum68242b51996-05-28 22:53:03 +00002368# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002369AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002370DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002371
Guido van Rossume97ee181999-12-20 21:27:22 +00002372# the dlopen() function means we might want to use dynload_shlib.o. some
2373# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002374AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002375
2376# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2377# loading of modules.
2378AC_SUBST(DYNLOADFILE)
2379AC_MSG_CHECKING(DYNLOADFILE)
2380if test -z "$DYNLOADFILE"
2381then
2382 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002383 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2384 if test "$ac_cv_func_dlopen" = yes
2385 then DYNLOADFILE="dynload_shlib.o"
2386 else DYNLOADFILE="dynload_aix.o"
2387 fi
2388 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002389 BeOS*) DYNLOADFILE="dynload_beos.o";;
2390 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002391 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2392 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002393 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002394 *)
2395 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2396 # out any dynamic loading
2397 if test "$ac_cv_func_dlopen" = yes
2398 then DYNLOADFILE="dynload_shlib.o"
2399 else DYNLOADFILE="dynload_stub.o"
2400 fi
2401 ;;
2402 esac
2403fi
2404AC_MSG_RESULT($DYNLOADFILE)
2405if test "$DYNLOADFILE" != "dynload_stub.o"
2406then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002407 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2408 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002409fi
2410
Jack Jansenc49e5b72001-06-19 15:00:23 +00002411# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2412
2413AC_SUBST(MACHDEP_OBJS)
2414AC_MSG_CHECKING(MACHDEP_OBJS)
2415if test -z "$MACHDEP_OBJS"
2416then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002417 MACHDEP_OBJS=$extra_machdep_objs
2418else
2419 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002420fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002421AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002422
Guido van Rossum627b2d71993-12-24 10:39:16 +00002423# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002424AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2425 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002426 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002427 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002428 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002429 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002430 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002431 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002432 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002433 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002434 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002435 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002436
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002437# For some functions, having a definition is not sufficient, since
2438# we want to take their address.
2439AC_MSG_CHECKING(for chroot)
2440AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2441 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2442 AC_MSG_RESULT(yes),
2443 AC_MSG_RESULT(no)
2444)
2445AC_MSG_CHECKING(for link)
2446AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2447 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2448 AC_MSG_RESULT(yes),
2449 AC_MSG_RESULT(no)
2450)
2451AC_MSG_CHECKING(for symlink)
2452AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2453 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2454 AC_MSG_RESULT(yes),
2455 AC_MSG_RESULT(no)
2456)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002457AC_MSG_CHECKING(for fchdir)
2458AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2459 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2460 AC_MSG_RESULT(yes),
2461 AC_MSG_RESULT(no)
2462)
2463AC_MSG_CHECKING(for fsync)
2464AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002465 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002466 AC_MSG_RESULT(yes),
2467 AC_MSG_RESULT(no)
2468)
2469AC_MSG_CHECKING(for fdatasync)
2470AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2471 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2472 AC_MSG_RESULT(yes),
2473 AC_MSG_RESULT(no)
2474)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002475AC_MSG_CHECKING(for epoll)
2476AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2477 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2478 AC_MSG_RESULT(yes),
2479 AC_MSG_RESULT(no)
2480)
2481AC_MSG_CHECKING(for kqueue)
2482AC_TRY_COMPILE([
2483#include <sys/types.h>
2484#include <sys/event.h>
2485 ], int x=kqueue(),
2486 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2487 AC_MSG_RESULT(yes),
2488 AC_MSG_RESULT(no)
2489)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002490# On some systems (eg. FreeBSD 5), we would find a definition of the
2491# functions ctermid_r, setgroups in the library, but no prototype
2492# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2493# address to avoid compiler warnings and potential miscompilations
2494# because of the missing prototypes.
2495
2496AC_MSG_CHECKING(for ctermid_r)
2497AC_TRY_COMPILE([
2498#include "confdefs.h"
2499#include <stdio.h>
2500], void* p = ctermid_r,
2501 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2502 AC_MSG_RESULT(yes),
2503 AC_MSG_RESULT(no)
2504)
2505
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002506AC_MSG_CHECKING(for flock)
2507AC_TRY_COMPILE([
2508#include "confdefs.h"
2509#include <sys/file.h>
2510], void* p = flock,
2511 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2512 AC_MSG_RESULT(yes),
2513 AC_MSG_RESULT(no)
2514)
2515
2516AC_MSG_CHECKING(for getpagesize)
2517AC_TRY_COMPILE([
2518#include "confdefs.h"
2519#include <unistd.h>
2520], void* p = getpagesize,
2521 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2522 AC_MSG_RESULT(yes),
2523 AC_MSG_RESULT(no)
2524)
2525
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002526dnl check for true
2527AC_CHECK_PROGS(TRUE, true, /bin/true)
2528
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002529dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2530dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002531AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002532 AC_CHECK_LIB(resolv, inet_aton)
2533)
2534
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002535# On Tru64, chflags seems to be present, but calling it will
2536# exit Python
2537AC_MSG_CHECKING(for chflags)
2538AC_TRY_RUN([
2539#include <sys/stat.h>
2540#include <unistd.h>
2541int main(int argc, char*argv[])
2542{
2543 if(chflags(argv[0], 0) != 0)
2544 return 1;
2545 return 0;
2546}
2547],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2548 AC_MSG_RESULT(yes),
2549 AC_MSG_RESULT(no)
2550)
2551
2552AC_MSG_CHECKING(for lchflags)
2553AC_TRY_RUN([
2554#include <sys/stat.h>
2555#include <unistd.h>
2556int main(int argc, char*argv[])
2557{
2558 if(lchflags(argv[0], 0) != 0)
2559 return 1;
2560 return 0;
2561}
2562],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2563 AC_MSG_RESULT(yes),
2564 AC_MSG_RESULT(no)
2565)
2566
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002567dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002568dnl
2569dnl On MacOSX the linker will search for dylibs on the entire linker path
2570dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2571dnl to revert to a more traditional unix behaviour and make it possible to
2572dnl override the system libz with a local static library of libz. Temporarily
2573dnl add that flag to our CFLAGS as well to ensure that we check the version
2574dnl of libz that will be used by setup.py.
2575dnl The -L/usr/local/lib is needed as wel to get the same compilation
2576dnl environment as setup.py (and leaving it out can cause configure to use the
2577dnl wrong version of the library)
2578case $ac_sys_system/$ac_sys_release in
2579Darwin/*)
2580 _CUR_CFLAGS="${CFLAGS}"
2581 _CUR_LDFLAGS="${LDFLAGS}"
2582 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2583 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2584 ;;
2585esac
2586
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002587AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2588
Ronald Oussorenf8752642006-07-06 10:13:35 +00002589case $ac_sys_system/$ac_sys_release in
2590Darwin/*)
2591 CFLAGS="${_CUR_CFLAGS}"
2592 LDFLAGS="${_CUR_LDFLAGS}"
2593 ;;
2594esac
2595
Martin v. Löwise9416172003-05-03 10:12:45 +00002596AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002597AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002598#include "confdefs.h"
2599#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002600], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002601 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2602 AC_MSG_RESULT(yes),
2603 AC_MSG_RESULT(no)
2604)
2605
2606AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002607AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002608#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002609#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002610#include <sys/socket.h>
2611#include <netinet/in.h>
2612#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002613], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002614 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2615 AC_MSG_RESULT(yes),
2616 AC_MSG_RESULT(no)
2617)
2618
2619AC_MSG_CHECKING(for inet_pton)
2620AC_TRY_COMPILE([
2621#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002622#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002623#include <sys/socket.h>
2624#include <netinet/in.h>
2625#include <arpa/inet.h>
2626], void* p = inet_pton,
2627 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2628 AC_MSG_RESULT(yes),
2629 AC_MSG_RESULT(no)
2630)
2631
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002632# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002633AC_MSG_CHECKING(for setgroups)
2634AC_TRY_COMPILE([
2635#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002636#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002637#ifdef HAVE_GRP_H
2638#include <grp.h>
2639#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002640],
2641void* p = setgroups,
2642 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2643 AC_MSG_RESULT(yes),
2644 AC_MSG_RESULT(no)
2645)
2646
Fred Drake8cef4cf2000-06-28 16:40:38 +00002647# check for openpty and forkpty
2648
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002649AC_CHECK_FUNCS(openpty,,
2650 AC_CHECK_LIB(util,openpty,
2651 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2652 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2653 )
2654)
2655AC_CHECK_FUNCS(forkpty,,
2656 AC_CHECK_LIB(util,forkpty,
2657 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2658 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2659 )
2660)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002661
Brett Cannonaa5778d2008-03-18 04:09:00 +00002662# Stuff for expat.
2663AC_CHECK_FUNCS(memmove)
2664
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002665# check for long file support functions
2666AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2667
Brett Cannonaa5778d2008-03-18 04:09:00 +00002668AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002669AC_CHECK_FUNCS(getpgrp,
2670 AC_TRY_COMPILE([#include <unistd.h>],
2671 [getpgrp(0);],
2672 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2673 [Define if getpgrp() must be called as getpgrp(0).])
2674 )
2675)
Jack Jansen150753c2003-03-29 22:07:47 +00002676AC_CHECK_FUNCS(setpgrp,
2677 AC_TRY_COMPILE([#include <unistd.h>],
2678 [setpgrp(0,0);],
2679 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2680 [Define if setpgrp() must be called as setpgrp(0, 0).])
2681 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002682)
2683AC_CHECK_FUNCS(gettimeofday,
2684 AC_TRY_COMPILE([#include <sys/time.h>],
2685 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2686 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2687 [Define if gettimeofday() does not have second (timezone) argument
2688 This is the case on Motorola V4 (R40V4.2)])
2689 )
2690)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002691
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002692AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002693AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002694#if defined(MAJOR_IN_MKDEV)
2695#include <sys/mkdev.h>
2696#elif defined(MAJOR_IN_SYSMACROS)
2697#include <sys/sysmacros.h>
2698#else
2699#include <sys/types.h>
2700#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002701],[
2702 makedev(major(0),minor(0));
2703],[
2704 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2705 [Define to 1 if you have the device macros.])
2706 AC_MSG_RESULT(yes)
2707],[
2708 AC_MSG_RESULT(no)
2709])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002710
2711# On OSF/1 V5.1, getaddrinfo is available, but a define
2712# for [no]getaddrinfo in netdb.h.
2713AC_MSG_CHECKING(for getaddrinfo)
2714AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002715#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002716#include <sys/socket.h>
2717#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002718#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002719],[
2720getaddrinfo(NULL, NULL, NULL, NULL);
2721], [
2722AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002723AC_MSG_CHECKING(getaddrinfo bug)
2724AC_TRY_RUN([
2725#include <sys/types.h>
2726#include <netdb.h>
2727#include <string.h>
2728#include <sys/socket.h>
2729#include <netinet/in.h>
2730
2731main()
2732{
2733 int passive, gaierr, inet4 = 0, inet6 = 0;
2734 struct addrinfo hints, *ai, *aitop;
2735 char straddr[INET6_ADDRSTRLEN], strport[16];
2736
2737 for (passive = 0; passive <= 1; passive++) {
2738 memset(&hints, 0, sizeof(hints));
2739 hints.ai_family = AF_UNSPEC;
2740 hints.ai_flags = passive ? AI_PASSIVE : 0;
2741 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002742 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002743 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2744 (void)gai_strerror(gaierr);
2745 goto bad;
2746 }
2747 for (ai = aitop; ai; ai = ai->ai_next) {
2748 if (ai->ai_addr == NULL ||
2749 ai->ai_addrlen == 0 ||
2750 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2751 straddr, sizeof(straddr), strport, sizeof(strport),
2752 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2753 goto bad;
2754 }
2755 switch (ai->ai_family) {
2756 case AF_INET:
2757 if (strcmp(strport, "54321") != 0) {
2758 goto bad;
2759 }
2760 if (passive) {
2761 if (strcmp(straddr, "0.0.0.0") != 0) {
2762 goto bad;
2763 }
2764 } else {
2765 if (strcmp(straddr, "127.0.0.1") != 0) {
2766 goto bad;
2767 }
2768 }
2769 inet4++;
2770 break;
2771 case AF_INET6:
2772 if (strcmp(strport, "54321") != 0) {
2773 goto bad;
2774 }
2775 if (passive) {
2776 if (strcmp(straddr, "::") != 0) {
2777 goto bad;
2778 }
2779 } else {
2780 if (strcmp(straddr, "::1") != 0) {
2781 goto bad;
2782 }
2783 }
2784 inet6++;
2785 break;
2786 case AF_UNSPEC:
2787 goto bad;
2788 break;
2789 default:
2790 /* another family support? */
2791 break;
2792 }
2793 }
2794 }
2795
2796 if (!(inet4 == 0 || inet4 == 2))
2797 goto bad;
2798 if (!(inet6 == 0 || inet6 == 2))
2799 goto bad;
2800
2801 if (aitop)
2802 freeaddrinfo(aitop);
2803 exit(0);
2804
2805 bad:
2806 if (aitop)
2807 freeaddrinfo(aitop);
2808 exit(1);
2809}
2810],
2811AC_MSG_RESULT(good)
2812buggygetaddrinfo=no,
2813AC_MSG_RESULT(buggy)
2814buggygetaddrinfo=yes,
2815AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002816buggygetaddrinfo=yes)], [
2817AC_MSG_RESULT(no)
2818buggygetaddrinfo=yes
2819])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002820
2821if test "$buggygetaddrinfo" = "yes"; then
2822 if test "$ipv6" = "yes"; then
2823 echo 'Fatal: You must get working getaddrinfo() function.'
2824 echo ' or you can specify "--disable-ipv6"'.
2825 exit 1
2826 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002827else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002828 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002829fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002830AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002831
Guido van Rossum627b2d71993-12-24 10:39:16 +00002832# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002833AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002834AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002835AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002836AC_CHECK_MEMBERS([struct stat.st_rdev])
2837AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002838AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002839AC_CHECK_MEMBERS([struct stat.st_gen])
2840AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002841AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002842
2843AC_MSG_CHECKING(for time.h that defines altzone)
2844AC_CACHE_VAL(ac_cv_header_time_altzone,
2845[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2846 ac_cv_header_time_altzone=yes,
2847 ac_cv_header_time_altzone=no)])
2848AC_MSG_RESULT($ac_cv_header_time_altzone)
2849if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002850 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002851fi
2852
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002853was_it_defined=no
2854AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002855AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002856#include <sys/types.h>
2857#include <sys/select.h>
2858#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002859], [;], [
2860 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2861 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2862 (which you can't on SCO ODT 3.0).])
2863 was_it_defined=yes
2864])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002865AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002866
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002867AC_MSG_CHECKING(for addrinfo)
2868AC_CACHE_VAL(ac_cv_struct_addrinfo,
2869AC_TRY_COMPILE([
2870# include <netdb.h>],
2871 [struct addrinfo a],
2872 ac_cv_struct_addrinfo=yes,
2873 ac_cv_struct_addrinfo=no))
2874AC_MSG_RESULT($ac_cv_struct_addrinfo)
2875if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002876 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002877fi
2878
2879AC_MSG_CHECKING(for sockaddr_storage)
2880AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2881AC_TRY_COMPILE([
2882# include <sys/types.h>
2883# include <sys/socket.h>],
2884 [struct sockaddr_storage s],
2885 ac_cv_struct_sockaddr_storage=yes,
2886 ac_cv_struct_sockaddr_storage=no))
2887AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2888if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002889 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002890fi
2891
Guido van Rossum627b2d71993-12-24 10:39:16 +00002892# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002893
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002894AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002895AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002896
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002897works=no
2898AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002899AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2900 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2901)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002902AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002903
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002904works=no
2905AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002906AC_TRY_COMPILE([], [signed char c;], works=yes,
2907 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2908)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002909AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002910
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002911have_prototypes=no
2912AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002913AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2914 AC_DEFINE(HAVE_PROTOTYPES, 1,
2915 [Define if your compiler supports function prototype])
2916 have_prototypes=yes
2917])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002918AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002919
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002920works=no
2921AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002922AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002923#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002924int foo(int x, ...) {
2925 va_list va;
2926 va_start(va, x);
2927 va_arg(va, int);
2928 va_arg(va, char *);
2929 va_arg(va, double);
2930 return 0;
2931}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002932], [return foo(10, "", 3.14);], [
2933 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2934 [Define if your compiler supports variable length function prototypes
2935 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2936 works=yes
2937])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002938AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002939
Dave Cole331708b2004-08-09 04:51:41 +00002940# check for socketpair
2941AC_MSG_CHECKING(for socketpair)
2942AC_TRY_COMPILE([
2943#include <sys/types.h>
2944#include <sys/socket.h>
2945], void *x=socketpair,
2946 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2947 AC_MSG_RESULT(yes),
2948 AC_MSG_RESULT(no)
2949)
2950
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002951# check if sockaddr has sa_len member
2952AC_MSG_CHECKING(if sockaddr has sa_len member)
2953AC_TRY_COMPILE([#include <sys/types.h>
2954#include <sys/socket.h>],
2955[struct sockaddr x;
2956x.sa_len = 0;],
2957 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002958 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002959 AC_MSG_RESULT(no))
2960
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002961va_list_is_array=no
2962AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002963AC_TRY_COMPILE([
2964#ifdef HAVE_STDARG_PROTOTYPES
2965#include <stdarg.h>
2966#else
2967#include <varargs.h>
2968#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002969], [va_list list1, list2; list1 = list2;], , [
2970 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2971 va_list_is_array=yes
2972])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002973AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002974
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002975# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002976AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2977 [Define this if you have some version of gethostbyname_r()])
2978
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002979AC_CHECK_FUNC(gethostbyname_r, [
2980 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2981 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2982 OLD_CFLAGS=$CFLAGS
2983 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2984 AC_TRY_COMPILE([
2985# include <netdb.h>
2986 ], [
2987 char *name;
2988 struct hostent *he, *res;
2989 char buffer[2048];
2990 int buflen = 2048;
2991 int h_errnop;
2992
2993 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2994 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002995 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002996 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2997 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002998 AC_MSG_RESULT(yes)
2999 ], [
3000 AC_MSG_RESULT(no)
3001 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3002 AC_TRY_COMPILE([
3003# include <netdb.h>
3004 ], [
3005 char *name;
3006 struct hostent *he;
3007 char buffer[2048];
3008 int buflen = 2048;
3009 int h_errnop;
3010
3011 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3012 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003013 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003014 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3015 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003016 AC_MSG_RESULT(yes)
3017 ], [
3018 AC_MSG_RESULT(no)
3019 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3020 AC_TRY_COMPILE([
3021# include <netdb.h>
3022 ], [
3023 char *name;
3024 struct hostent *he;
3025 struct hostent_data data;
3026
3027 (void) gethostbyname_r(name, he, &data);
3028 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003029 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003030 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3031 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003032 AC_MSG_RESULT(yes)
3033 ], [
3034 AC_MSG_RESULT(no)
3035 ])
3036 ])
3037 ])
3038 CFLAGS=$OLD_CFLAGS
3039], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003040 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003041])
3042AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3043AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3044AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003045AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003046AC_SUBST(HAVE_GETHOSTBYNAME)
3047
Guido van Rossum627b2d71993-12-24 10:39:16 +00003048# checks for system services
3049# (none yet)
3050
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003051# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003052AC_CHECK_FUNC(__fpu_control,
3053 [],
3054 [AC_CHECK_LIB(ieee, __fpu_control)
3055])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003056
Guido van Rossum93274221997-05-09 02:42:00 +00003057# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003058AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003059AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003060 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3061[
Guido van Rossum93274221997-05-09 02:42:00 +00003062if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003063then
3064 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3065 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3066 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003067else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003068fi],
3069[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003070
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003071# check for --with-libm=...
3072AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003073case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003074Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003075BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003076*) LIBM=-lm
3077esac
Guido van Rossum93274221997-05-09 02:42:00 +00003078AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003079AC_ARG_WITH(libm,
3080 AC_HELP_STRING(--with-libm=STRING, math library),
3081[
Guido van Rossum93274221997-05-09 02:42:00 +00003082if test "$withval" = no
3083then LIBM=
3084 AC_MSG_RESULT(force LIBM empty)
3085elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003086then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003087 AC_MSG_RESULT(set LIBM="$withval")
3088else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003089fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003090[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003091
3092# check for --with-libc=...
3093AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003094AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003095AC_ARG_WITH(libc,
3096 AC_HELP_STRING(--with-libc=STRING, C library),
3097[
Guido van Rossum93274221997-05-09 02:42:00 +00003098if test "$withval" = no
3099then LIBC=
3100 AC_MSG_RESULT(force LIBC empty)
3101elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003102then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003103 AC_MSG_RESULT(set LIBC="$withval")
3104else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003105fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003106[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003107
Christian Heimes0a8143f2007-12-18 23:22:54 +00003108# ************************************
3109# * Check for mathematical functions *
3110# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003111
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003112LIBS_SAVE=$LIBS
3113LIBS="$LIBS $LIBM"
3114
Mark Dickinson265d7382008-04-21 22:32:24 +00003115# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3116# -0. on some architectures.
3117AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3118AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3119AC_TRY_RUN([
3120#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003121#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003122int main() {
3123 /* return 0 if either negative zeros don't exist
3124 on this platform or if negative zeros exist
3125 and tanh(-0.) == -0. */
3126 if (atan2(0., -1.) == atan2(-0., -1.) ||
3127 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3128 else exit(1);
3129}
3130],
3131ac_cv_tanh_preserves_zero_sign=yes,
3132ac_cv_tanh_preserves_zero_sign=no,
3133ac_cv_tanh_preserves_zero_sign=no)])
3134AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3135if test "$ac_cv_tanh_preserves_zero_sign" = yes
3136then
3137 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3138 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3139fi
3140
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00003141AC_REPLACE_FUNCS(hypot)
Christian Heimes0a8143f2007-12-18 23:22:54 +00003142
Christian Heimes48723512008-01-20 14:28:28 +00003143AC_CHECK_FUNCS(acosh asinh atanh copysign expm1 finite isinf isnan log1p)
Christian Heimes0a8143f2007-12-18 23:22:54 +00003144
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003145LIBS=$LIBS_SAVE
3146
Guido van Rossumef2255b2000-03-10 22:30:29 +00003147# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003148AC_CHECK_HEADER(wchar.h, [
3149 AC_DEFINE(HAVE_WCHAR_H, 1,
3150 [Define if the compiler provides a wchar.h header file.])
3151 wchar_h="yes"
3152],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003153wchar_h="no"
3154)
3155
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003156# determine wchar_t size
3157if test "$wchar_h" = yes
3158then
Guido van Rossum67b26592001-10-20 14:21:45 +00003159 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003160fi
3161
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003162AC_MSG_CHECKING(for UCS-4 tcl)
3163have_ucs4_tcl=no
3164AC_TRY_COMPILE([
3165#include <tcl.h>
3166#if TCL_UTF_MAX != 6
3167# error "NOT UCS4_TCL"
3168#endif], [], [
3169 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3170 have_ucs4_tcl=yes
3171])
3172AC_MSG_RESULT($have_ucs4_tcl)
3173
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003174# check whether wchar_t is signed or not
3175if test "$wchar_h" = yes
3176then
3177 # check whether wchar_t is signed or not
3178 AC_MSG_CHECKING(whether wchar_t is signed)
3179 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3180 AC_TRY_RUN([
3181 #include <wchar.h>
3182 int main()
3183 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003184 /* Success: exit code 0 */
3185 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003186 }
3187 ],
3188 ac_cv_wchar_t_signed=yes,
3189 ac_cv_wchar_t_signed=no,
3190 ac_cv_wchar_t_signed=yes)])
3191 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3192fi
3193
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003194AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003195dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003196AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003197 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3198 [],
3199 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003200
3201if test $enable_unicode = yes
3202then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003203 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003204 case "$have_ucs4_tcl" in
3205 yes) enable_unicode="ucs4"
3206 ;;
3207 *) enable_unicode="ucs2"
3208 ;;
3209 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003210fi
3211
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003212AH_TEMPLATE(Py_UNICODE_SIZE,
3213 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003214case "$enable_unicode" in
3215ucs2) unicode_size="2"
3216 AC_DEFINE(Py_UNICODE_SIZE,2)
3217 ;;
3218ucs4) unicode_size="4"
3219 AC_DEFINE(Py_UNICODE_SIZE,4)
3220 ;;
3221esac
3222
Martin v. Löwis11437992002-04-12 09:54:03 +00003223AH_TEMPLATE(PY_UNICODE_TYPE,
3224 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003225
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003226AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003227if test "$enable_unicode" = "no"
3228then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003229 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003230 AC_MSG_RESULT(not used)
3231else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003232 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003233 AC_DEFINE(Py_USING_UNICODE, 1,
3234 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003235
3236 # wchar_t is only usable if it maps to an unsigned type
3237 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003238 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003239 then
3240 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003241 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3242 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003243 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003244 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003245 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3246 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3247 then
3248 PY_UNICODE_TYPE="unsigned short"
3249 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3250 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3251 then
3252 PY_UNICODE_TYPE="unsigned long"
3253 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3254 else
3255 PY_UNICODE_TYPE="no type found"
3256 fi
3257 AC_MSG_RESULT($PY_UNICODE_TYPE)
3258fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003259
3260# check for endianness
3261AC_C_BIGENDIAN
3262
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003263# Check whether right shifting a negative integer extends the sign bit
3264# or fills with zeros (like the Cray J90, according to Tim Peters).
3265AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003266AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003267AC_TRY_RUN([
3268int main()
3269{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003270 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003271}
Guido van Rossum3065c942001-09-17 04:03:14 +00003272],
3273ac_cv_rshift_extends_sign=yes,
3274ac_cv_rshift_extends_sign=no,
3275ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003276AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3277if test "$ac_cv_rshift_extends_sign" = no
3278then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003279 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3280 [Define if i>>j for signed int i does not extend the sign bit
3281 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003282fi
3283
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003284# check for getc_unlocked and related locking functions
3285AC_MSG_CHECKING(for getc_unlocked() and friends)
3286AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3287AC_TRY_LINK([#include <stdio.h>],[
3288 FILE *f = fopen("/dev/null", "r");
3289 flockfile(f);
3290 getc_unlocked(f);
3291 funlockfile(f);
3292], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3293AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3294if test "$ac_cv_have_getc_unlocked" = yes
3295then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003296 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3297 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003298fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003299
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003300# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003301# save the value of LIBS so we don't actually link Python with readline
3302LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003303AC_CHECK_LIB(readline, readline)
3304if test "$ac_cv_have_readline_readline" = no
3305then
3306 AC_CHECK_LIB(termcap, readline)
3307fi
3308
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003309# check for readline 2.1
3310AC_CHECK_LIB(readline, rl_callback_handler_install,
3311 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003312 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003313
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003314# check for readline 2.2
3315AC_TRY_CPP([#include <readline/readline.h>],
3316have_readline=yes, have_readline=no)
3317if test $have_readline = yes
3318then
3319 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3320 [readline/readline.h],
3321 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3322 [Define if you have readline 2.2]), )
3323fi
3324
Martin v. Löwis0daad592001-09-30 21:09:59 +00003325# check for readline 4.0
3326AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003327 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003328 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003329
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003330# also in 4.0
3331AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3332 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
3333 [Define if you have readline 4.0]), , )
3334
Guido van Rossum353ae582001-07-10 16:45:32 +00003335# check for readline 4.2
3336AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003337 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003338 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003339
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003340# also in readline 4.2
3341AC_TRY_CPP([#include <readline/readline.h>],
3342have_readline=yes, have_readline=no)
3343if test $have_readline = yes
3344then
3345 AC_EGREP_HEADER([extern int rl_catch_signals;],
3346 [readline/readline.h],
3347 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3348 [Define if you can turn off readline's signal handling.]), )
3349fi
3350
Martin v. Löwis82bca632006-02-10 20:49:30 +00003351# End of readline checks: restore LIBS
3352LIBS=$LIBS_no_readline
3353
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003354AC_MSG_CHECKING(for broken nice())
3355AC_CACHE_VAL(ac_cv_broken_nice, [
3356AC_TRY_RUN([
3357int main()
3358{
3359 int val1 = nice(1);
3360 if (val1 != -1 && val1 == nice(2))
3361 exit(0);
3362 exit(1);
3363}
Guido van Rossum3065c942001-09-17 04:03:14 +00003364],
3365ac_cv_broken_nice=yes,
3366ac_cv_broken_nice=no,
3367ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003368AC_MSG_RESULT($ac_cv_broken_nice)
3369if test "$ac_cv_broken_nice" = yes
3370then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003371 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3372 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003373fi
3374
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003375AC_MSG_CHECKING(for broken poll())
3376AC_TRY_RUN([
3377#include <poll.h>
3378
3379int main (void)
3380 {
3381 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3382
3383 close (42);
3384
3385 int poll_test = poll (&poll_struct, 1, 0);
3386
3387 if (poll_test < 0)
3388 {
3389 exit(0);
3390 }
3391 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3392 {
3393 exit(0);
3394 }
3395 else
3396 {
3397 exit(1);
3398 }
3399 }
3400],
3401ac_cv_broken_poll=yes,
3402ac_cv_broken_poll=no,
3403ac_cv_broken_poll=no)
3404AC_MSG_RESULT($ac_cv_broken_poll)
3405if test "$ac_cv_broken_poll" = yes
3406then
3407 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3408 [Define if poll() sets errno on invalid file descriptors.])
3409fi
3410
Brett Cannon43802422005-02-10 20:48:03 +00003411# Before we can test tzset, we need to check if struct tm has a tm_zone
3412# (which is not required by ISO C or UNIX spec) and/or if we support
3413# tzname[]
3414AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003415
Brett Cannon43802422005-02-10 20:48:03 +00003416# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003417AC_MSG_CHECKING(for working tzset())
3418AC_CACHE_VAL(ac_cv_working_tzset, [
3419AC_TRY_RUN([
3420#include <stdlib.h>
3421#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003422#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003423
3424#if HAVE_TZNAME
3425extern char *tzname[];
3426#endif
3427
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003428int main()
3429{
Brett Cannon18367812003-09-19 00:59:16 +00003430 /* Note that we need to ensure that not only does tzset(3)
3431 do 'something' with localtime, but it works as documented
3432 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003433 This includes making sure that tzname is set properly if
3434 tm->tm_zone does not exist since it is the alternative way
3435 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003436
3437 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003438 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003439 */
3440
Brett Cannon43802422005-02-10 20:48:03 +00003441 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003442 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3443
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003444 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003445 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003446 if (localtime(&groundhogday)->tm_hour != 0)
3447 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003448#if HAVE_TZNAME
3449 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3450 if (strcmp(tzname[0], "UTC") ||
3451 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3452 exit(1);
3453#endif
Brett Cannon18367812003-09-19 00:59:16 +00003454
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003455 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003456 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003457 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003458 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003459#if HAVE_TZNAME
3460 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3461 exit(1);
3462#endif
Brett Cannon18367812003-09-19 00:59:16 +00003463
3464 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3465 tzset();
3466 if (localtime(&groundhogday)->tm_hour != 11)
3467 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003468#if HAVE_TZNAME
3469 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3470 exit(1);
3471#endif
3472
3473#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003474 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3475 exit(1);
3476 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3477 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003478#endif
Brett Cannon18367812003-09-19 00:59:16 +00003479
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003480 exit(0);
3481}
3482],
3483ac_cv_working_tzset=yes,
3484ac_cv_working_tzset=no,
3485ac_cv_working_tzset=no)])
3486AC_MSG_RESULT($ac_cv_working_tzset)
3487if test "$ac_cv_working_tzset" = yes
3488then
3489 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3490 [Define if tzset() actually switches the local timezone in a meaningful way.])
3491fi
3492
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003493# Look for subsecond timestamps in struct stat
3494AC_MSG_CHECKING(for tv_nsec in struct stat)
3495AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3496AC_TRY_COMPILE([#include <sys/stat.h>], [
3497struct stat st;
3498st.st_mtim.tv_nsec = 1;
3499],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003500ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003501ac_cv_stat_tv_nsec=no,
3502ac_cv_stat_tv_nsec=no))
3503AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3504if test "$ac_cv_stat_tv_nsec" = yes
3505then
3506 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3507 [Define if you have struct stat.st_mtim.tv_nsec])
3508fi
3509
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003510# Look for BSD style subsecond timestamps in struct stat
3511AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3512AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3513AC_TRY_COMPILE([#include <sys/stat.h>], [
3514struct stat st;
3515st.st_mtimespec.tv_nsec = 1;
3516],
3517ac_cv_stat_tv_nsec2=yes,
3518ac_cv_stat_tv_nsec2=no,
3519ac_cv_stat_tv_nsec2=no))
3520AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3521if test "$ac_cv_stat_tv_nsec2" = yes
3522then
3523 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3524 [Define if you have struct stat.st_mtimensec])
3525fi
3526
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003527# On HP/UX 11.0, mvwdelch is a block with a return statement
3528AC_MSG_CHECKING(whether mvwdelch is an expression)
3529AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3530AC_TRY_COMPILE([#include <curses.h>], [
3531 int rtn;
3532 rtn = mvwdelch(0,0,0);
3533], ac_cv_mvwdelch_is_expression=yes,
3534 ac_cv_mvwdelch_is_expression=no,
3535 ac_cv_mvwdelch_is_expression=yes))
3536AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3537
3538if test "$ac_cv_mvwdelch_is_expression" = yes
3539then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003540 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3541 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003542fi
3543
3544AC_MSG_CHECKING(whether WINDOW has _flags)
3545AC_CACHE_VAL(ac_cv_window_has_flags,
3546AC_TRY_COMPILE([#include <curses.h>], [
3547 WINDOW *w;
3548 w->_flags = 0;
3549], ac_cv_window_has_flags=yes,
3550 ac_cv_window_has_flags=no,
3551 ac_cv_window_has_flags=no))
3552AC_MSG_RESULT($ac_cv_window_has_flags)
3553
3554
3555if test "$ac_cv_window_has_flags" = yes
3556then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003557 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3558 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003559fi
3560
Walter Dörwald4994d952006-06-19 08:07:50 +00003561AC_MSG_CHECKING(for is_term_resized)
3562AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3563 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3564 AC_MSG_RESULT(yes),
3565 AC_MSG_RESULT(no)
3566)
3567
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003568AC_MSG_CHECKING(for resize_term)
3569AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3570 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003571 AC_MSG_RESULT(yes),
3572 AC_MSG_RESULT(no)
3573)
3574
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003575AC_MSG_CHECKING(for resizeterm)
3576AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3577 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003578 AC_MSG_RESULT(yes),
3579 AC_MSG_RESULT(no)
3580)
3581
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003582AC_MSG_CHECKING(for /dev/ptmx)
3583
3584if test -r /dev/ptmx
3585then
3586 AC_MSG_RESULT(yes)
3587 AC_DEFINE(HAVE_DEV_PTMX, 1,
3588 [Define if we have /dev/ptmx.])
3589else
3590 AC_MSG_RESULT(no)
3591fi
3592
3593AC_MSG_CHECKING(for /dev/ptc)
3594
3595if test -r /dev/ptc
3596then
3597 AC_MSG_RESULT(yes)
3598 AC_DEFINE(HAVE_DEV_PTC, 1,
3599 [Define if we have /dev/ptc.])
3600else
3601 AC_MSG_RESULT(no)
3602fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003603
Brett Cannon09d12362006-05-11 05:11:33 +00003604AC_MSG_CHECKING(for %zd printf() format support)
3605AC_TRY_RUN([#include <stdio.h>
3606#include <stddef.h>
3607#include <string.h>
3608
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003609#ifdef HAVE_SYS_TYPES_H
3610#include <sys/types.h>
3611#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003612
3613#ifdef HAVE_SSIZE_T
3614typedef ssize_t Py_ssize_t;
3615#elif SIZEOF_VOID_P == SIZEOF_LONG
3616typedef long Py_ssize_t;
3617#else
3618typedef int Py_ssize_t;
3619#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003620
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003621int main()
3622{
3623 char buffer[256];
3624
Brett Cannon09d12362006-05-11 05:11:33 +00003625 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3626 return 1;
3627
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003628 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003629 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003630
3631 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3632 return 1;
3633
3634 if (strcmp(buffer, "-123"))
3635 return 1;
3636
Brett Cannon09d12362006-05-11 05:11:33 +00003637 return 0;
3638}],
3639[AC_MSG_RESULT(yes)
3640 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3641 AC_MSG_RESULT(no))
3642
Martin v. Löwis01c04012002-11-11 14:58:44 +00003643AC_CHECK_TYPE(socklen_t,,
3644 AC_DEFINE(socklen_t,int,
3645 Define to `int' if <sys/socket.h> does not define.),[
3646#ifdef HAVE_SYS_TYPES_H
3647#include <sys/types.h>
3648#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003649#ifdef HAVE_SYS_SOCKET_H
3650#include <sys/socket.h>
3651#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003652])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003653
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003654AC_SUBST(THREADHEADERS)
3655
3656for h in `(cd $srcdir;echo Python/thread_*.h)`
3657do
3658 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3659done
3660
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003661AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003662SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003663AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003664for dir in $SRCDIRS; do
3665 if test ! -d $dir; then
3666 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003667 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003668done
3669AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003670
Guido van Rossum627b2d71993-12-24 10:39:16 +00003671# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003672AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3673AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003674
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003675echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003676if test ! -f Modules/Setup
3677then
3678 cp $srcdir/Modules/Setup.dist Modules/Setup
3679fi
3680
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003681echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003682if test ! -f Modules/Setup.local
3683then
3684 echo "# Edit this file for local setup changes" >Modules/Setup.local
3685fi
3686
3687echo "creating Makefile"
3688$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3689 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003690 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003691
3692case $ac_sys_system in
3693BeOS)
3694 AC_MSG_WARN([
3695
3696 Support for BeOS is deprecated as of Python 2.6.
3697 See PEP 11 for the gory details.
3698 ])
3699 ;;
3700*) ;;
3701esac
3702
Neil Schemenauer66252162001-02-19 04:47:42 +00003703mv config.c Modules