Home | History | Annotate | Download | only in cpython2
      1 dnl ***********************************************
      2 dnl * Please run autoreconf to test your changes! *
      3 dnl ***********************************************
      4 
      5 # Set VERSION so we only need to edit in one place (i.e., here)
      6 m4_define(PYTHON_VERSION, 2.7)
      7 
      8 AC_PREREQ(2.65)
      9 
     10 AC_REVISION($Revision$)
     11 AC_INIT(python, PYTHON_VERSION, https://bugs.python.org/)
     12 AC_CONFIG_SRCDIR([Include/object.h])
     13 AC_CONFIG_HEADER(pyconfig.h)
     14 
     15 AC_CANONICAL_HOST
     16 AC_SUBST(build)
     17 AC_SUBST(host)
     18 
     19 # pybuilddir.txt will be created by --generate-posix-vars in the Makefile
     20 rm -f pybuilddir.txt
     21 
     22 if test "$cross_compiling" = yes; then
     23     AC_MSG_CHECKING([for python interpreter for cross build])
     24     if test -z "$PYTHON_FOR_BUILD"; then
     25         for interp in python$PACKAGE_VERSION python2 python; do
     26 	    which $interp >/dev/null 2>&1 || continue
     27 	    if $interp -c 'import sys;sys.exit(not (sys.version_info@<:@:2@:>@ >= (2,7) and sys.version_info@<:@0@:>@ < 3))'; then
     28 	        break
     29 	    fi
     30             interp=
     31 	done
     32         if test x$interp = x; then
     33 	    AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
     34 	fi
     35         AC_MSG_RESULT($interp)
     36 	PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp
     37     fi
     38     # Used to comment out stuff for rebuilding generated files
     39     GENERATED_COMMENT='#'
     40 elif test "$cross_compiling" = maybe; then
     41     AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
     42 else
     43     PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E'
     44     GENERATED_COMMENT=''
     45 fi
     46 AC_SUBST(PYTHON_FOR_BUILD)
     47 AC_SUBST(GENERATED_COMMENT)
     48 
     49 dnl Ensure that if prefix is specified, it does not end in a slash. If
     50 dnl it does, we get path names containing '//' which is both ugly and
     51 dnl can cause trouble.
     52 
     53 dnl Last slash shouldn't be stripped if prefix=/
     54 if test "$prefix" != "/"; then
     55     prefix=`echo "$prefix" | sed -e 's/\/$//g'`
     56 fi    
     57 
     58 dnl This is for stuff that absolutely must end up in pyconfig.h.
     59 dnl Please use pyport.h instead, if possible.
     60 AH_TOP([
     61 #ifndef Py_PYCONFIG_H
     62 #define Py_PYCONFIG_H
     63 ])
     64 AH_BOTTOM([
     65 /* Define the macros needed if on a UnixWare 7.x system. */
     66 #if defined(__USLC__) && defined(__SCO_VERSION__)
     67 #define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
     68 #endif
     69 
     70 #endif /*Py_PYCONFIG_H*/
     71 ])
     72 
     73 # We don't use PACKAGE_ variables, and they cause conflicts
     74 # with other autoconf-based packages that include Python.h
     75 grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
     76 rm confdefs.h
     77 mv confdefs.h.new confdefs.h
     78 
     79 AC_SUBST(VERSION)
     80 VERSION=PYTHON_VERSION
     81 
     82 AC_SUBST(SOVERSION)
     83 SOVERSION=1.0
     84 
     85 # The later defininition of _XOPEN_SOURCE disables certain features
     86 # on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
     87 AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
     88 
     89 # The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
     90 # certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
     91 # them.
     92 AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
     93 
     94 # The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
     95 # certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
     96 # them.
     97 AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
     98 
     99 # The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
    100 # u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
    101 AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
    102 
    103 # The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
    104 # certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
    105 # them.
    106 AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
    107 
    108 
    109 define_xopen_source=yes
    110 
    111 # Arguments passed to configure.
    112 AC_SUBST(CONFIG_ARGS)
    113 CONFIG_ARGS="$ac_configure_args"
    114 
    115 AC_MSG_CHECKING([for --enable-universalsdk])
    116 AC_ARG_ENABLE(universalsdk,
    117 	AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build against Mac OS X 10.4u SDK (ppc/i386)]),
    118 [
    119 	case $enableval in
    120 	yes)
    121 		enableval=/Developer/SDKs/MacOSX10.4u.sdk
    122 		if test ! -d "${enableval}"
    123 		then
    124 			enableval=/
    125 		fi
    126 		;;
    127 	esac
    128 	case $enableval in
    129 	no)
    130 		UNIVERSALSDK=
    131 		enable_universalsdk=
    132 		;;
    133 	*)
    134 		UNIVERSALSDK=$enableval
    135 		if test ! -d "${UNIVERSALSDK}"
    136 		then
    137 			AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
    138 		fi
    139 		;;
    140 	esac
    141 	
    142 ],[
    143    	UNIVERSALSDK=
    144 	enable_universalsdk=
    145 ])
    146 if test -n "${UNIVERSALSDK}"
    147 then
    148 	AC_MSG_RESULT(${UNIVERSALSDK})
    149 else
    150 	AC_MSG_RESULT(no)
    151 fi
    152 AC_SUBST(UNIVERSALSDK)
    153 
    154 AC_SUBST(ARCH_RUN_32BIT)
    155 ARCH_RUN_32BIT=""
    156 
    157 UNIVERSAL_ARCHS="32-bit"
    158 AC_SUBST(LIPO_32BIT_FLAGS)
    159 AC_MSG_CHECKING(for --with-universal-archs)
    160 AC_ARG_WITH(universal-archs,
    161     AS_HELP_STRING([--with-universal-archs=ARCH], [select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")]),
    162 [
    163 	AC_MSG_RESULT($withval)
    164 	UNIVERSAL_ARCHS="$withval"
    165         if test "${enable_universalsdk}" ; then
    166 		:
    167 	else
    168 		AC_MSG_ERROR([--with-universal-archs without --enable-universalsdk. See Mac/README])
    169 	fi
    170 ],
    171 [
    172  	AC_MSG_RESULT(32-bit)
    173 ])
    174 
    175 
    176 
    177 AC_ARG_WITH(framework-name,
    178               AS_HELP_STRING([--with-framework-name=FRAMEWORK],
    179                              [specify an alternate name of the framework built with --enable-framework]),
    180 [
    181     if test "${enable_framework}"; then
    182 	    :
    183     else
    184 	AC_MSG_ERROR([--with-framework-name without --enable-framework. See Mac/README])
    185     fi
    186     PYTHONFRAMEWORK=${withval}
    187     PYTHONFRAMEWORKDIR=${withval}.framework
    188     PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
    189     ],[
    190     PYTHONFRAMEWORK=Python
    191     PYTHONFRAMEWORKDIR=Python.framework
    192     PYTHONFRAMEWORKIDENTIFIER=org.python.python
    193 ])
    194 dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
    195 AC_ARG_ENABLE(framework,
    196               AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
    197 [
    198 	case $enableval in
    199 	yes) 
    200 		enableval=/Library/Frameworks
    201 	esac
    202 	case $enableval in
    203 	no)
    204 		PYTHONFRAMEWORK=
    205 		PYTHONFRAMEWORKDIR=no-framework
    206 		PYTHONFRAMEWORKPREFIX=
    207 		PYTHONFRAMEWORKINSTALLDIR=
    208 		FRAMEWORKINSTALLFIRST=
    209 		FRAMEWORKINSTALLLAST=
    210 		FRAMEWORKALTINSTALLFIRST=
    211 		FRAMEWORKALTINSTALLLAST=
    212 		if test "x${prefix}" = "xNONE"; then
    213 			FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
    214 		else
    215 			FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
    216 		fi
    217 		enable_framework=
    218 		;;
    219 	*)
    220 		PYTHONFRAMEWORKPREFIX="${enableval}"
    221 		PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
    222 		FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
    223 		FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
    224 		FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
    225 		FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
    226 		FRAMEWORKINSTALLAPPSPREFIX="/Applications"
    227 
    228 		if test "x${prefix}" = "xNONE" ; then
    229 			FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
    230 
    231 		else
    232 			FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
    233 		fi
    234 
    235 		case "${enableval}" in
    236 		/System*)
    237 			FRAMEWORKINSTALLAPPSPREFIX="/Applications"
    238 			if test "${prefix}" = "NONE" ; then
    239 				# See below
    240 				FRAMEWORKUNIXTOOLSPREFIX="/usr"
    241 			fi
    242 			;;
    243 
    244 		/Library*)
    245 			FRAMEWORKINSTALLAPPSPREFIX="/Applications"
    246 			;;
    247 
    248 		*/Library/Frameworks)
    249 			MDIR="`dirname "${enableval}"`"
    250 			MDIR="`dirname "${MDIR}"`"
    251 			FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
    252 
    253 			if test "${prefix}" = "NONE"; then
    254 				# User hasn't specified the 
    255 				# --prefix option, but wants to install
    256 				# the framework in a non-default location,
    257 				# ensure that the compatibility links get
    258 				# installed relative to that prefix as well
    259 				# instead of in /usr/local.
    260 				FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
    261 			fi
    262 			;;
    263 
    264 		*)
    265 			FRAMEWORKINSTALLAPPSPREFIX="/Applications"
    266 			;;
    267 		esac
    268 
    269 		prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
    270 
    271 		# Add files for Mac specific code to the list of output
    272 		# files:
    273 		AC_CONFIG_FILES(Mac/Makefile)
    274 		AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
    275 		AC_CONFIG_FILES(Mac/IDLE/Makefile)
    276 		AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
    277 		AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
    278 	esac
    279 	],[
    280 	PYTHONFRAMEWORK=
    281 	PYTHONFRAMEWORKDIR=no-framework
    282 	PYTHONFRAMEWORKPREFIX=
    283 	PYTHONFRAMEWORKINSTALLDIR=
    284 	FRAMEWORKINSTALLFIRST=
    285 	FRAMEWORKINSTALLLAST=
    286 	FRAMEWORKALTINSTALLFIRST=
    287 	FRAMEWORKALTINSTALLLAST=
    288 	if test "x${prefix}" = "xNONE" ; then
    289 		FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
    290 	else
    291 		FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
    292 	fi
    293 	enable_framework=
    294 
    295 ])
    296 AC_SUBST(PYTHONFRAMEWORK)
    297 AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
    298 AC_SUBST(PYTHONFRAMEWORKDIR)
    299 AC_SUBST(PYTHONFRAMEWORKPREFIX)
    300 AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
    301 AC_SUBST(FRAMEWORKINSTALLFIRST)
    302 AC_SUBST(FRAMEWORKINSTALLLAST)
    303 AC_SUBST(FRAMEWORKALTINSTALLFIRST)
    304 AC_SUBST(FRAMEWORKALTINSTALLLAST)
    305 AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
    306 AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
    307 
    308 ##AC_ARG_WITH(dyld,
    309 ##            AS_HELP_STRING([--with-dyld],
    310 ##                           [Use (OpenStep|Rhapsody) dynamic linker]))
    311 ##
    312 # Set name for machine-dependent library files
    313 AC_SUBST(MACHDEP)
    314 AC_MSG_CHECKING(MACHDEP)
    315 if test -z "$MACHDEP"
    316 then
    317     # avoid using uname for cross builds
    318     if test "$cross_compiling" = yes; then
    319        # ac_sys_system and ac_sys_release are only used for setting
    320        # `define_xopen_source' in the case statement below. For the
    321        # current supported cross builds, this macro is not adjusted.
    322 	case "$host" in
    323 	*-*-linux*)
    324 		ac_sys_system=Linux
    325 		;;
    326 	*-*-cygwin*)
    327 		ac_sys_system=Cygwin
    328 		;;
    329 	*)
    330 		# for now, limit cross builds to known configurations
    331 		MACHDEP="unknown"
    332 		AC_MSG_ERROR([cross build not supported for $host])
    333 	esac
    334 	ac_sys_release=
    335     else
    336 	ac_sys_system=`uname -s`
    337 	if test "$ac_sys_system" = "AIX" \
    338 	-o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
    339 		ac_sys_release=`uname -v`
    340 	else
    341 		ac_sys_release=`uname -r`
    342 	fi
    343     fi
    344     ac_md_system=`echo $ac_sys_system |
    345 			tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
    346     ac_md_release=`echo $ac_sys_release |
    347 			tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
    348     MACHDEP="$ac_md_system$ac_md_release"
    349 
    350     case $MACHDEP in
    351 	linux*) MACHDEP="linux2";;
    352 	cygwin*) MACHDEP="cygwin";;
    353 	darwin*) MACHDEP="darwin";;
    354 	atheos*) MACHDEP="atheos";;
    355         irix646) MACHDEP="irix6";;
    356 	'')	MACHDEP="unknown";;
    357     esac
    358 fi
    359 
    360 AC_SUBST(_PYTHON_HOST_PLATFORM)
    361 if test "$cross_compiling" = yes; then
    362 	case "$host" in
    363 	*-*-linux*)
    364 		case "$host_cpu" in
    365 		arm*)
    366 			_host_cpu=arm
    367 			;;
    368 		*)
    369 			_host_cpu=$host_cpu
    370 		esac
    371 		;;
    372 	*-*-cygwin*)
    373 		_host_cpu=
    374 		;;
    375 	*)
    376 		# for now, limit cross builds to known configurations
    377 		MACHDEP="unknown"
    378 		AC_MSG_ERROR([cross build not supported for $host])
    379 	esac
    380 	_PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}"
    381 fi
    382 	
    383 # Some systems cannot stand _XOPEN_SOURCE being defined at all; they
    384 # disable features if it is defined, without any means to access these
    385 # features as extensions. For these systems, we skip the definition of
    386 # _XOPEN_SOURCE. Before adding a system to the list to gain access to
    387 # some feature, make sure there is no alternative way to access this
    388 # feature. Also, when using wildcards, make sure you have verified the
    389 # need for not defining _XOPEN_SOURCE on all systems matching the
    390 # wildcard, and that the wildcard does not include future systems
    391 # (which may remove their limitations).
    392 dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
    393 case $ac_sys_system/$ac_sys_release in
    394   # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
    395   # even though select is a POSIX function. Reported by J. Ribbens.
    396   # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
    397   # In addition, Stefan Krah confirms that issue #1244610 exists through
    398   # OpenBSD 4.6, but is fixed in 4.7.
    399   OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.@<:@0123456@:>@) 
    400     define_xopen_source=no
    401     # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
    402     # also defined. This can be overridden by defining _BSD_SOURCE
    403     # As this has a different meaning on Linux, only define it on OpenBSD
    404     AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
    405     ;;
    406   OpenBSD/*)
    407     # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
    408     # also defined. This can be overridden by defining _BSD_SOURCE
    409     # As this has a different meaning on Linux, only define it on OpenBSD
    410     AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
    411     ;;
    412   # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
    413   # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
    414   # Marc Recht
    415   NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
    416     define_xopen_source=no;;
    417   # From the perspective of Solaris, _XOPEN_SOURCE is not so much a
    418   # request to enable features supported by the standard as a request
    419   # to disable features not supported by the standard.  The best way
    420   # for Python to use Solaris is simply to leave _XOPEN_SOURCE out
    421   # entirely and define __EXTENSIONS__ instead.
    422   SunOS/*)
    423     define_xopen_source=no;;
    424   # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
    425   # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
    426   # Reconfirmed for 7.1.4 by Martin v. Loewis.
    427   OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
    428     define_xopen_source=no;;
    429   # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
    430   # but used in struct sockaddr.sa_family. Reported by Tim Rice.
    431   SCO_SV/3.2)
    432     define_xopen_source=no;;
    433   # On FreeBSD 4, the math functions C89 does not cover are never defined
    434   # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
    435   FreeBSD/4.*)
    436     define_xopen_source=no;;
    437   # On MacOS X 10.2, a bug in ncurses.h means that it craps out if 
    438   # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
    439   # identifies itself as Darwin/7.*
    440   # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
    441   # disables platform specific features beyond repair.
    442   # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE 
    443   # has no effect, don't bother defining them
    444   Darwin/@<:@6789@:>@.*)
    445     define_xopen_source=no;;
    446   Darwin/1@<:@0-9@:>@.*)
    447     define_xopen_source=no;;
    448   # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
    449   # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
    450   # or has another value. By not (re)defining it, the defaults come in place.
    451   AIX/4)
    452     define_xopen_source=no;;
    453   AIX/5)
    454     if test `uname -r` -eq 1; then
    455       define_xopen_source=no
    456     fi
    457     ;;
    458   # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
    459   # defining NI_NUMERICHOST.
    460   QNX/6.3.2)
    461     define_xopen_source=no
    462     ;;
    463 
    464 esac
    465 
    466 if test $define_xopen_source = yes
    467 then
    468   AC_DEFINE(_XOPEN_SOURCE, 600, 
    469             Define to the level of X/Open that your system supports)
    470 
    471   # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
    472   # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
    473   # several APIs are not declared. Since this is also needed in some
    474   # cases for HP-UX, we define it globally.
    475   AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
    476    	    Define to activate Unix95-and-earlier features)
    477 
    478   AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
    479   
    480 fi
    481 
    482 #
    483 # SGI compilers allow the specification of the both the ABI and the
    484 # ISA on the command line.  Depending on the values of these switches,
    485 # different and often incompatible code will be generated.
    486 #
    487 # The SGI_ABI variable can be used to modify the CC and LDFLAGS and
    488 # thus supply support for various ABI/ISA combinations.  The MACHDEP
    489 # variable is also adjusted.
    490 #
    491 AC_SUBST(SGI_ABI)
    492 if test ! -z "$SGI_ABI"
    493 then
    494         CC="cc $SGI_ABI"
    495         LDFLAGS="$SGI_ABI $LDFLAGS"
    496         MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
    497 fi
    498 AC_MSG_RESULT($MACHDEP)
    499 
    500 AC_SUBST(PLATDIR)
    501 PLATDIR=plat-$MACHDEP
    502 
    503 # And add extra plat-mac for darwin
    504 AC_SUBST(EXTRAPLATDIR)
    505 AC_SUBST(EXTRAMACHDEPPATH)
    506 AC_MSG_CHECKING(EXTRAPLATDIR)
    507 if test -z "$EXTRAPLATDIR"
    508 then
    509 	case $MACHDEP in
    510 	darwin)	
    511 		EXTRAPLATDIR="\$(PLATMACDIRS)"
    512 		EXTRAMACHDEPPATH="\$(PLATMACPATH)"
    513 		;;
    514 	*) 
    515 		EXTRAPLATDIR=""
    516 		EXTRAMACHDEPPATH=""
    517 		;;
    518 	esac
    519 fi
    520 AC_MSG_RESULT($EXTRAPLATDIR)
    521 
    522 # Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
    523 # it may influence the way we can build extensions, so distutils
    524 # needs to check it
    525 AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
    526 AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
    527 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
    528 EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
    529 
    530 # checks for alternative programs
    531 
    532 # compiler flags are generated in two sets, BASECFLAGS and OPT.  OPT is just
    533 # for debug/optimization stuff.  BASECFLAGS is for flags that are required
    534 # just to get things to compile and link.  Users are free to override OPT
    535 # when running configure or make.  The build should not break if they do.
    536 # BASECFLAGS should generally not be messed with, however.
    537 
    538 # XXX shouldn't some/most/all of this code be merged with the stuff later
    539 # on that fiddles with OPT and BASECFLAGS?
    540 AC_MSG_CHECKING(for --without-gcc)
    541 AC_ARG_WITH(gcc,
    542             AS_HELP_STRING([--without-gcc], [never use gcc]),
    543 [
    544 	case $withval in
    545 	no)	CC=${CC:-cc}
    546 		without_gcc=yes;;
    547 	yes)	CC=gcc
    548 		without_gcc=no;;
    549 	*)	CC=$withval
    550 		without_gcc=$withval;;
    551 	esac], [
    552 	case $ac_sys_system in
    553 	AIX*)   CC=${CC:-xlc_r}
    554 		without_gcc=;;
    555 	BeOS*)
    556 		case $BE_HOST_CPU in
    557 		ppc)
    558 			CC=mwcc
    559 			without_gcc=yes
    560 			BASECFLAGS="$BASECFLAGS -export pragma"
    561 			OPT="$OPT -O"
    562 			LDFLAGS="$LDFLAGS -nodup"
    563 			;;
    564 		x86)
    565 			CC=gcc
    566 			without_gcc=no
    567 			OPT="$OPT -O"
    568 			;;
    569 		*)
    570 			AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
    571 			;;
    572 		esac
    573 		AR="\$(srcdir)/Modules/ar_beos"
    574 		RANLIB=:
    575 		;;
    576 	*)	without_gcc=no;;
    577 	esac])
    578 AC_MSG_RESULT($without_gcc)
    579 
    580 AC_MSG_CHECKING(for --with-icc)
    581 AC_ARG_WITH(icc,
    582             AS_HELP_STRING([--with-icc], [build with icc]),
    583 [
    584 	case $withval in
    585 	no)	CC=${CC:-cc}
    586 		with_icc=no;;
    587 	yes)	CC=icc
    588 		CXX=icpc
    589 		with_icc=yes;;
    590 	*)	CC=$withval
    591 		with_icc=$withval;;
    592 	esac], [
    593 	with_icc=no])
    594 AC_MSG_RESULT($with_icc)
    595 
    596 # If the user switches compilers, we can't believe the cache
    597 if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
    598 then
    599   AC_MSG_ERROR([cached CC is different -- throw away $cache_file
    600 (it is also a good idea to do 'make clean' before compiling)])
    601 fi
    602 
    603 if test "$MACHDEP" = "irix6" && test "$CC" != "gcc"; then
    604     # Normally, MIPSpro CC treats #error directives as warnings, which means
    605     # a successful exit code is returned (0).  This is a problem because IRIX
    606     # has a bunch of system headers with this guard at the top:
    607     #
    608     #  #ifndef __c99
    609     #  #error This header file is to be used only for c99 mode compilations
    610     #  #else
    611     #
    612     # When autoconf tests for such a header, like stdint.h, this happens:
    613     #
    614     #  configure:4619: cc -c   conftest.c >&5
    615     #  cc-1035 cc: WARNING File = /usr/include/stdint.h, Line = 5
    616     #    #error directive:  This header file is to be used only for c99 mode
    617     #            compilations
    618     #
    619     #    #error This header file is to be used only for c99 mode compilations
    620     #     ^
    621     #
    622     #  configure:4619: $? = 0
    623     #  configure:4619: result: yes
    624     #
    625     # Therefore, we use `-diag_error 1035` to have the compiler treat the
    626     # warning as an error, which causes cc to return a non-zero result,
    627     # which autoconf can interpret correctly.
    628     CFLAGS="$CFLAGS -diag_error 1035"
    629     # Whilst we're here, we might as well make sure CXX defaults to something
    630     # sensible if we're not using gcc.
    631     if test -z "$CXX"; then
    632         CXX="CC"
    633     fi
    634 fi
    635 
    636 # If the user set CFLAGS, use this instead of the automatically
    637 # determined setting
    638 preset_cflags="$CFLAGS"
    639 AC_PROG_CC
    640 if test ! -z "$preset_cflags"
    641 then
    642 	CFLAGS=$preset_cflags
    643 fi
    644 
    645 AC_SUBST(CXX)
    646 AC_SUBST(MAINCC)
    647 AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
    648 AC_ARG_WITH(cxx_main,
    649             AS_HELP_STRING([--with-cxx-main=<compiler>],
    650                            [compile main() and link python executable with C++ compiler]),
    651 [
    652 	
    653 	case $withval in
    654 	no)	with_cxx_main=no
    655 		MAINCC='$(CC)';;
    656 	yes)	with_cxx_main=yes
    657 		MAINCC='$(CXX)';;
    658 	*)	with_cxx_main=yes
    659 		MAINCC=$withval
    660 		if test -z "$CXX"
    661 		then
    662 			CXX=$withval
    663 		fi;;
    664 	esac], [
    665 	with_cxx_main=no
    666 	MAINCC='$(CC)'
    667 ])
    668 AC_MSG_RESULT($with_cxx_main)
    669 
    670 preset_cxx="$CXX"
    671 if test -z "$CXX"
    672 then
    673         case "$CC" in
    674         gcc)    AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
    675         cc)     AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
    676         esac
    677 	if test "$CXX" = "notfound"
    678 	then
    679 		CXX=""
    680 	fi
    681 fi
    682 if test -z "$CXX"
    683 then
    684 	AC_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
    685 	if test "$CXX" = "notfound"
    686 	then
    687 		CXX=""
    688 	fi
    689 fi
    690 if test "$preset_cxx" != "$CXX"
    691 then
    692         AC_MSG_WARN([
    693 
    694   By default, distutils will build C++ extension modules with "$CXX".
    695   If this is not intended, then set CXX on the configure command line.
    696   ])
    697 fi
    698 
    699 MULTIARCH=$($CC --print-multiarch 2>/dev/null)
    700 AC_SUBST(MULTIARCH)
    701 
    702 
    703 # checks for UNIX variants that set C preprocessor variables
    704 AC_USE_SYSTEM_EXTENSIONS
    705 
    706 # Check for unsupported systems
    707 case $ac_sys_system/$ac_sys_release in
    708 atheos*|Linux*/1*)
    709    echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
    710    echo See README for details.
    711    exit 1;;
    712 esac
    713 
    714 AC_EXEEXT
    715 AC_MSG_CHECKING(for --with-suffix)
    716 AC_ARG_WITH(suffix,
    717             AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
    718 [
    719 	case $withval in
    720 	no)	EXEEXT=;;
    721 	yes)	EXEEXT=.exe;;
    722 	*)	EXEEXT=$withval;;
    723 	esac])
    724 AC_MSG_RESULT($EXEEXT)
    725 
    726 # Test whether we're running on a non-case-sensitive system, in which
    727 # case we give a warning if no ext is given
    728 AC_SUBST(BUILDEXEEXT)
    729 AC_MSG_CHECKING(for case-insensitive build directory)
    730 if test ! -d CaseSensitiveTestDir; then
    731 mkdir CaseSensitiveTestDir
    732 fi
    733 
    734 if test -d casesensitivetestdir
    735 then
    736     AC_MSG_RESULT(yes)
    737     BUILDEXEEXT=.exe
    738 else
    739 	AC_MSG_RESULT(no)
    740 	BUILDEXEEXT=$EXEEXT
    741 fi
    742 rmdir CaseSensitiveTestDir
    743 
    744 case $MACHDEP in
    745 bsdos*)
    746     case $CC in
    747     gcc) CC="$CC -D_HAVE_BSDI";;
    748     esac;;
    749 esac
    750 
    751 case $ac_sys_system in
    752 hp*|HP*)
    753     case $CC in
    754     cc|*/cc) CC="$CC -Ae";;
    755     esac;;
    756 SunOS*)
    757     # Some functions have a prototype only with that define, e.g. confstr
    758     AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
    759     ;;
    760 esac
    761 
    762 
    763 AC_SUBST(LIBRARY)
    764 AC_MSG_CHECKING(LIBRARY)
    765 if test -z "$LIBRARY"
    766 then
    767 	LIBRARY='libpython$(VERSION).a'
    768 fi
    769 AC_MSG_RESULT($LIBRARY)
    770 
    771 # LDLIBRARY is the name of the library to link against (as opposed to the
    772 # name of the library into which to insert object files). BLDLIBRARY is also
    773 # the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
    774 # is blank as the main program is not linked directly against LDLIBRARY.
    775 # LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
    776 # systems without shared libraries, LDLIBRARY is the same as LIBRARY
    777 # (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
    778 # DLLLIBRARY is the shared (i.e., DLL) library.
    779 # 
    780 # RUNSHARED is used to run shared python without installed libraries
    781 #
    782 # INSTSONAME is the name of the shared library that will be use to install
    783 # on the system - some systems like version suffix, others don't
    784 AC_SUBST(LDLIBRARY)
    785 AC_SUBST(DLLLIBRARY)
    786 AC_SUBST(BLDLIBRARY)
    787 AC_SUBST(LDLIBRARYDIR)
    788 AC_SUBST(INSTSONAME)
    789 AC_SUBST(RUNSHARED)
    790 LDLIBRARY="$LIBRARY"
    791 BLDLIBRARY='$(LDLIBRARY)'
    792 INSTSONAME='$(LDLIBRARY)'
    793 DLLLIBRARY=''
    794 LDLIBRARYDIR=''
    795 RUNSHARED=''
    796 
    797 # LINKCC is the command that links the python executable -- default is $(CC).
    798 # If CXX is set, and if it is needed to link a main function that was
    799 # compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
    800 # python might then depend on the C++ runtime
    801 # This is altered for AIX in order to build the export list before 
    802 # linking.
    803 AC_SUBST(LINKCC)
    804 AC_MSG_CHECKING(LINKCC)
    805 if test -z "$LINKCC"
    806 then
    807 	LINKCC='$(PURIFY) $(MAINCC)'
    808 	case $ac_sys_system in
    809 	AIX*)
    810 	   exp_extra="\"\""
    811 	   if test $ac_sys_release -ge 5 -o \
    812 		   $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
    813 	       exp_extra="."
    814 	   fi
    815 	   LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
    816 	QNX*)
    817 	   # qcc must be used because the other compilers do not
    818 	   # support -N.
    819 	   LINKCC=qcc;;
    820 	esac
    821 fi
    822 AC_MSG_RESULT($LINKCC)
    823 
    824 # GNULD is set to "yes" if the GNU linker is used.  If this goes wrong
    825 # make sure we default having it set to "no": this is used by
    826 # distutils.unixccompiler to know if it should add --enable-new-dtags
    827 # to linker command lines, and failing to detect GNU ld simply results
    828 # in the same bahaviour as before.
    829 AC_SUBST(GNULD)
    830 AC_MSG_CHECKING(for GNU ld)
    831 ac_prog=ld
    832 if test "$GCC" = yes; then
    833        ac_prog=`$CC -print-prog-name=ld`
    834 fi
    835 case `"$ac_prog" -V 2>&1 < /dev/null` in
    836       *GNU*)
    837           GNULD=yes;;
    838       *)
    839           GNULD=no;;
    840 esac
    841 AC_MSG_RESULT($GNULD)
    842 
    843 AC_MSG_CHECKING(for --enable-shared)
    844 AC_ARG_ENABLE(shared,
    845               AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
    846 
    847 if test -z "$enable_shared"
    848 then 
    849   case $ac_sys_system in
    850   CYGWIN* | atheos*)
    851     enable_shared="yes";;
    852   *)
    853     enable_shared="no";;
    854   esac
    855 fi
    856 AC_MSG_RESULT($enable_shared)
    857 
    858 AC_MSG_CHECKING(for --enable-profiling)
    859 AC_ARG_ENABLE(profiling,
    860               AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]))
    861 if test "x$enable_profiling" = xyes; then
    862   ac_save_cc="$CC"
    863   CC="$CC -pg"
    864   AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
    865     [],
    866     [enable_profiling=no])
    867   CC="$ac_save_cc"
    868 else
    869   enable_profiling=no
    870 fi
    871 AC_MSG_RESULT($enable_profiling)
    872 
    873 if test "x$enable_profiling" = xyes; then
    874   BASECFLAGS="-pg $BASECFLAGS"
    875   LDFLAGS="-pg $LDFLAGS"
    876 fi
    877 
    878 AC_MSG_CHECKING(LDLIBRARY)
    879 
    880 # MacOSX framework builds need more magic. LDLIBRARY is the dynamic
    881 # library that we build, but we do not want to link against it (we
    882 # will find it with a -framework option). For this reason there is an
    883 # extra variable BLDLIBRARY against which Python and the extension
    884 # modules are linked, BLDLIBRARY. This is normally the same as
    885 # LDLIBRARY, but empty for MacOSX framework builds.
    886 if test "$enable_framework"
    887 then
    888   LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
    889   RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}}
    890   BLDLIBRARY=''
    891 else
    892   BLDLIBRARY='$(LDLIBRARY)'
    893 fi  
    894 
    895 # Other platforms follow
    896 if test $enable_shared = "yes"; then
    897   AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
    898   case $ac_sys_system in
    899     BeOS*)
    900           LDLIBRARY='libpython$(VERSION).so'
    901           ;;
    902     CYGWIN*)
    903           LDLIBRARY='libpython$(VERSION).dll.a'
    904           DLLLIBRARY='libpython$(VERSION).dll'
    905           ;;
    906     SunOS*)
    907 	  LDLIBRARY='libpython$(VERSION).so'
    908 	  BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
    909 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    910 	  INSTSONAME="$LDLIBRARY".$SOVERSION
    911           ;;
    912     Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
    913 	  LDLIBRARY='libpython$(VERSION).so'
    914 	  BLDLIBRARY='-L. -lpython$(VERSION)'
    915 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    916 	  case $ac_sys_system in
    917 	      FreeBSD*)
    918 		SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
    919 		;;
    920 	  esac
    921 	  INSTSONAME="$LDLIBRARY".$SOVERSION
    922 	  ;;
    923     hp*|HP*)
    924 	  case `uname -m` in
    925 		ia64)
    926 			LDLIBRARY='libpython$(VERSION).so'
    927 			;;
    928 		*)
    929 			LDLIBRARY='libpython$(VERSION).sl'
    930 			;;
    931 	  esac
    932 	  BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
    933 	  RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}}
    934 	  ;;
    935     OSF*)
    936 	  LDLIBRARY='libpython$(VERSION).so'
    937 	  BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
    938 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    939 	  ;;
    940     atheos*)
    941 	  LDLIBRARY='libpython$(VERSION).so'
    942 	  BLDLIBRARY='-L. -lpython$(VERSION)'
    943 	  RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
    944 	  ;;
    945     Darwin*)
    946     	LDLIBRARY='libpython$(VERSION).dylib'
    947 	BLDLIBRARY='-L. -lpython$(VERSION)'
    948 	RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
    949 	;;
    950     AIX*)
    951 	LDLIBRARY='libpython$(VERSION).so'
    952 	RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}}
    953 	;;
    954 
    955   esac
    956 else # shared is disabled
    957   case $ac_sys_system in
    958     CYGWIN*)
    959           BLDLIBRARY='$(LIBRARY)'
    960           LDLIBRARY='libpython$(VERSION).dll.a'
    961           ;;
    962   esac
    963 fi
    964 
    965 if test "$cross_compiling" = yes; then
    966 	RUNSHARED=
    967 fi
    968 
    969 AC_MSG_RESULT($LDLIBRARY)
    970 
    971 AC_PROG_RANLIB
    972 AC_SUBST(AR)
    973 AC_CHECK_TOOLS(AR, ar aal, ar)
    974 
    975 # tweak ARFLAGS only if the user didn't set it on the command line
    976 AC_SUBST(ARFLAGS)
    977 if test -z "$ARFLAGS"
    978 then
    979         ARFLAGS="rc"
    980 fi
    981 
    982 AC_SUBST(SVNVERSION)
    983 AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
    984 if test $SVNVERSION = found
    985 then
    986 	SVNVERSION="svnversion \$(srcdir)"
    987 else
    988 	SVNVERSION="echo Unversioned directory"
    989 fi
    990 
    991 AC_SUBST(HGVERSION)
    992 AC_SUBST(HGTAG)
    993 AC_SUBST(HGBRANCH)
    994 AC_CHECK_PROG(HAS_HG, hg, found, not-found)
    995 if test $HAS_HG = found
    996 then
    997     HGVERSION="hg id -i \$(srcdir)"
    998     HGTAG="hg id -t \$(srcdir)"
    999     HGBRANCH="hg id -b \$(srcdir)"
   1000 else
   1001     HGVERSION=""
   1002     HGTAG=""
   1003     HGBRANCH=""
   1004 fi
   1005 
   1006 case $MACHDEP in
   1007 bsdos*|hp*|HP*)
   1008 	# install -d does not work on BSDI or HP-UX
   1009 	if test -z "$INSTALL"
   1010 	then
   1011 		INSTALL="${srcdir}/install-sh -c"
   1012 	fi
   1013 esac
   1014 AC_PROG_INSTALL
   1015 AC_PROG_MKDIR_P
   1016 
   1017 # Not every filesystem supports hard links
   1018 AC_SUBST(LN)
   1019 if test -z "$LN" ; then
   1020 	case $ac_sys_system in
   1021 		BeOS*) LN="ln -s";;
   1022 		CYGWIN*) LN="ln -s";;
   1023 		atheos*) LN="ln -s";;
   1024 		*) LN=ln;;
   1025 	esac
   1026 fi
   1027 
   1028 # Check for --with-pydebug
   1029 AC_MSG_CHECKING(for --with-pydebug)
   1030 AC_ARG_WITH(pydebug, 
   1031             AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
   1032 [
   1033 if test "$withval" != no
   1034 then 
   1035   AC_DEFINE(Py_DEBUG, 1, 
   1036   [Define if you want to build an interpreter with many run-time checks.]) 
   1037   AC_MSG_RESULT(yes); 
   1038   Py_DEBUG='true'
   1039 else AC_MSG_RESULT(no); Py_DEBUG='false'
   1040 fi],
   1041 [AC_MSG_RESULT(no)])
   1042 
   1043 # XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
   1044 # merged with this chunk of code?
   1045 
   1046 # Optimizer/debugger flags
   1047 # ------------------------
   1048 # (The following bit of code is complicated enough - please keep things
   1049 # indented properly.  Just pretend you're editing Python code. ;-)
   1050 
   1051 # There are two parallel sets of case statements below, one that checks to
   1052 # see if OPT was set and one that does BASECFLAGS setting based upon
   1053 # compiler and platform.  BASECFLAGS tweaks need to be made even if the
   1054 # user set OPT.
   1055 
   1056 # tweak OPT based on compiler and platform, only if the user didn't set
   1057 # it on the command line
   1058 AC_SUBST(OPT)
   1059 if test "${OPT-unset}" = "unset"
   1060 then
   1061     case $GCC in
   1062     yes)
   1063         if test "$CC" != 'g++' ; then
   1064 	    STRICT_PROTO="-Wstrict-prototypes"
   1065 	fi
   1066         # For gcc 4.x we need to use -fwrapv so lets check if its supported
   1067         if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
   1068            WRAP="-fwrapv"
   1069         fi
   1070 
   1071         # Clang also needs -fwrapv
   1072         case $CC in
   1073             *clang*) WRAP="-fwrapv"
   1074             ;;
   1075         esac
   1076 
   1077 	case $ac_cv_prog_cc_g in
   1078 	yes)
   1079 	    if test "$Py_DEBUG" = 'true' ; then
   1080 		# Optimization messes up debuggers, so turn it off for
   1081 		# debug builds.
   1082 		OPT="-g -O0 -Wall $STRICT_PROTO"
   1083 	    else
   1084 		OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
   1085 	    fi
   1086 	    ;;
   1087 	*)
   1088 	    OPT="-O3 -Wall $STRICT_PROTO"
   1089 	    ;;
   1090 	esac
   1091 	case $ac_sys_system in
   1092 	    SCO_SV*) OPT="$OPT -m486 -DSCO5"
   1093 	    ;;
   1094         esac
   1095 	;;
   1096 
   1097     *)
   1098 	OPT="-O"
   1099 	;;
   1100     esac
   1101 fi
   1102 
   1103 AC_SUBST(BASECFLAGS)
   1104 
   1105 # The -arch flags for universal builds on OSX
   1106 UNIVERSAL_ARCH_FLAGS=
   1107 AC_SUBST(UNIVERSAL_ARCH_FLAGS)
   1108 
   1109 # tweak BASECFLAGS based on compiler and platform
   1110 case $GCC in
   1111 yes)
   1112     # Python violates C99 rules, by casting between incompatible
   1113     # pointer types. GCC may generate bad code as a result of that,
   1114     # so use -fno-strict-aliasing if supported.
   1115     AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
   1116      ac_save_cc="$CC"
   1117      CC="$CC -fno-strict-aliasing"
   1118      AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
   1119        AC_COMPILE_IFELSE(
   1120          [AC_LANG_PROGRAM([[]], [[]])],
   1121 	 [ac_cv_no_strict_aliasing_ok=yes],
   1122 	 [ac_cv_no_strict_aliasing_ok=no]))
   1123      CC="$ac_save_cc"
   1124     AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
   1125     if test $ac_cv_no_strict_aliasing_ok = yes
   1126     then
   1127       BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
   1128     fi
   1129 
   1130     # if using gcc on alpha, use -mieee to get (near) full IEEE 754
   1131     # support.  Without this, treatment of subnormals doesn't follow
   1132     # the standard.
   1133     case $host in
   1134          alpha*)
   1135                 BASECFLAGS="$BASECFLAGS -mieee"
   1136                 ;;
   1137     esac
   1138 
   1139     case $ac_sys_system in
   1140 	SCO_SV*)
   1141 	    BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
   1142 	    ;;
   1143 	# is there any other compiler on Darwin besides gcc?
   1144 	Darwin*)
   1145 	    # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
   1146 	    # used to be here, but non-Apple gcc doesn't accept them.
   1147 	    if test "${CC}" = gcc
   1148 	    then
   1149 		AC_MSG_CHECKING(which compiler should be used)
   1150 		case "${UNIVERSALSDK}" in
   1151 		*/MacOSX10.4u.sdk)
   1152 			# Build using 10.4 SDK, force usage of gcc when the 
   1153 			# compiler is gcc, otherwise the user will get very
   1154 			# confusing error messages when building on OSX 10.6
   1155 			CC=gcc-4.0
   1156 			CPP=cpp-4.0
   1157 			;;
   1158 		esac
   1159 		AC_MSG_RESULT($CC)
   1160 	    fi
   1161 
   1162 	    # Calculate the right deployment target for this build.
   1163 	    #
   1164 		cur_target_major=`sw_vers -productVersion | \
   1165 				sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
   1166 		cur_target_minor=`sw_vers -productVersion | \
   1167 				sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
   1168 		cur_target="${cur_target_major}.${cur_target_minor}"
   1169 		if test ${cur_target_major} -eq 10 && \
   1170 		   test ${cur_target_minor} -ge 3
   1171 		then
   1172 		    cur_target=10.3
   1173 		    if test ${enable_universalsdk}; then
   1174 			    if test "${UNIVERSAL_ARCHS}" = "all"; then
   1175 				    # Ensure that the default platform for a 
   1176 				    # 4-way universal build is OSX 10.5, 
   1177 				    # that's the first OS release where 
   1178 				    # 4-way builds make sense.
   1179 				    cur_target='10.5'
   1180 
   1181 			    elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
   1182 				    cur_target='10.5'
   1183 
   1184 			    elif test "${UNIVERSAL_ARCHS}" = "intel"; then
   1185 				    cur_target='10.5'
   1186 
   1187 			    elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
   1188 				    cur_target='10.5'
   1189 			    fi
   1190 		    else
   1191 			    if test `/usr/bin/arch` = "i386"; then
   1192 				    # On Intel macs default to a deployment
   1193 				    # target of 10.4, that's the first OSX
   1194 				    # release with Intel support.
   1195 				    cur_target="10.4"
   1196 			    fi
   1197 		    fi
   1198 	    fi
   1199 	    CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
   1200 	    
   1201 	    # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the 
   1202 	    # environment with a value that is the same as what we'll use
   1203 	    # in the Makefile to ensure that we'll get the same compiler
   1204 	    # environment during configure and build time.
   1205 	    MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
   1206 	    export MACOSX_DEPLOYMENT_TARGET
   1207 	    EXPORT_MACOSX_DEPLOYMENT_TARGET=''
   1208 
   1209 	    if test "${enable_universalsdk}"; then
   1210 		UNIVERSAL_ARCH_FLAGS=""
   1211 	        if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
   1212 		   UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
   1213 		   ARCH_RUN_32BIT=""
   1214 		   LIPO_32BIT_FLAGS=""
   1215 
   1216 	         elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
   1217 		   UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
   1218 		   LIPO_32BIT_FLAGS=""
   1219 		   ARCH_RUN_32BIT="true"
   1220 
   1221 	         elif test "$UNIVERSAL_ARCHS" = "all" ; then
   1222 		   UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
   1223 		   LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
   1224 		   ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
   1225 
   1226 	         elif test "$UNIVERSAL_ARCHS" = "intel" ; then
   1227 		   UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
   1228 		   LIPO_32BIT_FLAGS="-extract i386"
   1229 		   ARCH_RUN_32BIT="/usr/bin/arch -i386"
   1230 
   1231 	         elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
   1232 		   UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
   1233 		   LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
   1234 		   ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
   1235 
   1236 		 else
   1237 	           AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
   1238 
   1239 		 fi
   1240 
   1241 
   1242 		CFLAGS="${UNIVERSAL_ARCH_FLAGS} ${CFLAGS}"
   1243 		if test "${UNIVERSALSDK}" != "/" 
   1244 		then
   1245 			CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
   1246 			LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
   1247 			CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
   1248 		fi
   1249 
   1250 	    fi
   1251 
   1252 
   1253 	    ;;
   1254 	OSF*)
   1255 	    BASECFLAGS="$BASECFLAGS -mieee"
   1256 	    ;;
   1257     esac
   1258     ;;
   1259 
   1260 *)
   1261     case $ac_sys_system in
   1262     OpenUNIX*|UnixWare*)
   1263 	BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
   1264 	;;
   1265     OSF*)
   1266 	BASECFLAGS="$BASECFLAGS -ieee -std"
   1267     	;;
   1268     SCO_SV*)
   1269 	BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
   1270 	;;
   1271     esac
   1272     ;;
   1273 esac
   1274 
   1275 # ICC needs -fp-model strict or floats behave badly
   1276 case "$CC" in
   1277 *icc*)
   1278     BASECFLAGS="$BASECFLAGS -fp-model strict"
   1279     ;;
   1280 esac
   1281 
   1282 if test "$Py_DEBUG" = 'true'; then
   1283   :
   1284 else
   1285   OPT="-DNDEBUG $OPT"
   1286 fi
   1287 
   1288 if test "$ac_arch_flags"
   1289 then
   1290 	BASECFLAGS="$BASECFLAGS $ac_arch_flags"
   1291 fi
   1292 
   1293 # disable check for icc since it seems to pass, but generates a warning
   1294 if test "$CC" = icc
   1295 then
   1296   ac_cv_opt_olimit_ok=no
   1297 fi
   1298 
   1299 AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
   1300 AC_CACHE_VAL(ac_cv_opt_olimit_ok,
   1301 [ac_save_cc="$CC"
   1302 CC="$CC -OPT:Olimit=0"
   1303 AC_COMPILE_IFELSE(
   1304   [AC_LANG_PROGRAM([[]], [[]])],
   1305   [ac_cv_opt_olimit_ok=yes],
   1306   [ac_cv_opt_olimit_ok=no]
   1307   )
   1308 CC="$ac_save_cc"])
   1309 AC_MSG_RESULT($ac_cv_opt_olimit_ok)
   1310 if test $ac_cv_opt_olimit_ok = yes; then
   1311     case $ac_sys_system in
   1312 	# XXX is this branch needed? On MacOSX 10.2.2 the result of the
   1313 	# olimit_ok test is "no".  Is it "yes" in some other Darwin-esque
   1314 	# environment?
   1315         Darwin*)
   1316 	    ;;
   1317         # XXX thankfully this useless troublemaker of a flag has been
   1318         # eradicated in the 3.x line.  For now, make sure it isn't picked
   1319         # up by any of our other platforms that use CC.
   1320         AIX*|SunOS*|HP-UX*|IRIX*)
   1321             ;;
   1322         *)
   1323 	    BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
   1324 	    ;;
   1325     esac
   1326 else
   1327   AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
   1328   AC_CACHE_VAL(ac_cv_olimit_ok,
   1329   [ac_save_cc="$CC"
   1330   CC="$CC -Olimit 1500"
   1331   AC_COMPILE_IFELSE(
   1332     [AC_LANG_PROGRAM([[]], [[]])],
   1333     [ac_cv_olimit_ok=yes],
   1334     [ac_cv_olimit_ok=no]
   1335     )
   1336   CC="$ac_save_cc"])
   1337   AC_MSG_RESULT($ac_cv_olimit_ok)
   1338   if test $ac_cv_olimit_ok = yes; then
   1339     case $ac_sys_system in
   1340         # Issue #16534: On HP-UX ac_cv_olimit_ok=yes is a false positive.
   1341         HP-UX*)
   1342             ;;
   1343         *)
   1344             BASECFLAGS="$BASECFLAGS -Olimit 1500"
   1345             ;;
   1346     esac
   1347   fi
   1348 fi
   1349 
   1350 # Check whether GCC supports PyArg_ParseTuple format
   1351 if test "$GCC" = "yes"
   1352 then
   1353   AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
   1354   save_CFLAGS=$CFLAGS
   1355   CFLAGS="$CFLAGS -Werror -Wformat"
   1356   AC_COMPILE_IFELSE([
   1357     AC_LANG_PROGRAM([[void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));]], [[]])
   1358   ],[
   1359     AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1,
   1360       [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
   1361     AC_MSG_RESULT(yes)
   1362   ],[
   1363     AC_MSG_RESULT(no)
   1364   ])
   1365   CFLAGS=$save_CFLAGS
   1366 fi
   1367 
   1368 
   1369 # Enable optimization flags
   1370 AC_SUBST(DEF_MAKE_ALL_RULE)
   1371 AC_SUBST(DEF_MAKE_RULE)
   1372 Py_OPT='false'
   1373 AC_MSG_CHECKING(for --enable-optimizations)
   1374 AC_ARG_ENABLE(optimizations, AS_HELP_STRING([--enable-optimizations], [Enable expensive optimizations (PGO, maybe LTO, etc).  Disabled by default.]),
   1375 [
   1376 if test "$withval" != no
   1377 then
   1378   Py_OPT='true'
   1379   AC_MSG_RESULT(yes);
   1380 else
   1381   Py_OPT='false'
   1382   AC_MSG_RESULT(no);
   1383 fi],
   1384 [AC_MSG_RESULT(no)])
   1385 if test "$Py_OPT" = 'true' ; then
   1386   # Intentionally not forcing Py_LTO='true' here.  Too many toolchains do not
   1387   # compile working code using it and both test_distutils and test_gdb are
   1388   # broken when you do managed to get a toolchain that works with it.  People
   1389   # who want LTO need to use --with-lto themselves.
   1390   Py_LTO='true'
   1391   DEF_MAKE_ALL_RULE="profile-opt"
   1392   REQUIRE_PGO="yes"
   1393   DEF_MAKE_RULE="build_all"
   1394 else
   1395   DEF_MAKE_ALL_RULE="build_all"
   1396   REQUIRE_PGO="no"
   1397   DEF_MAKE_RULE="all"
   1398 fi
   1399 
   1400 
   1401 # Enable LTO flags
   1402 AC_SUBST(LTOFLAGS)
   1403 AC_MSG_CHECKING(for --with-lto)
   1404 AC_ARG_WITH(lto, AS_HELP_STRING([--with-lto], [Enable Link Time Optimization in PGO builds. Disabled by default.]),
   1405 [
   1406 if test "$withval" != no
   1407 then
   1408   Py_LTO='true'
   1409   AC_MSG_RESULT(yes);
   1410 else
   1411   Py_LTO='false'
   1412   AC_MSG_RESULT(no);
   1413 fi],
   1414 [AC_MSG_RESULT(no)])
   1415 if test "$Py_LTO" = 'true' ; then
   1416   case $CC in
   1417     *clang*)
   1418       # Any changes made here should be reflected in the GCC+Darwin case below
   1419       LTOFLAGS="-flto"
   1420       ;;
   1421     *gcc*)
   1422       case $ac_sys_system in
   1423         Darwin*)
   1424           LTOFLAGS="-flto"
   1425           ;;
   1426         *)
   1427           LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none"
   1428           ;;
   1429       esac
   1430       ;;
   1431   esac
   1432 fi
   1433 
   1434 
   1435 # Enable PGO flags.
   1436 AC_SUBST(PGO_PROF_GEN_FLAG)
   1437 AC_SUBST(PGO_PROF_USE_FLAG)
   1438 AC_SUBST(LLVM_PROF_MERGER)
   1439 AC_SUBST(LLVM_PROF_FILE)
   1440 AC_SUBST(LLVM_PROF_ERR)
   1441 # Make this work on systems where llvm tools are not installed with their
   1442 # normal names in the default $PATH (ie: Ubuntu).  They exist under the
   1443 # non-suffixed name in their versioned llvm directory.
   1444 llvm_bin_dir=''
   1445 llvm_path="${PATH}"
   1446 if test "${CC}" = "clang"
   1447 then
   1448   clang_bin=`which clang`
   1449   # Some systems install clang elsewhere as a symlink to the real path
   1450   # which is where the related llvm tools are located.
   1451   if test -L "${clang_bin}"
   1452   then
   1453     clang_dir=`dirname "${clang_bin}"`
   1454     clang_bin=`readlink "${clang_bin}"`
   1455     llvm_bin_dir="${clang_dir}/"`dirname "${clang_bin}"`
   1456     llvm_path="${llvm_path}${PATH_SEPARATOR}${llvm_bin_dir}"
   1457   fi
   1458 fi
   1459 AC_SUBST(LLVM_PROFDATA)
   1460 AC_PATH_TARGET_TOOL(LLVM_PROFDATA, llvm-profdata, '', ${llvm_path})
   1461 AC_SUBST(LLVM_PROF_FOUND)
   1462 if test -n "${LLVM_PROFDATA}" -a -x "${LLVM_PROFDATA}"
   1463 then
   1464   LLVM_PROF_FOUND="found"
   1465 else
   1466   LLVM_PROF_FOUND="not-found"
   1467 fi
   1468 if test "$ac_sys_system" = "Darwin" -a "${LLVM_PROF_FOUND}" = "not-found"
   1469 then
   1470   found_llvm_profdata=`/usr/bin/xcrun -find llvm-profdata 2>/dev/null`
   1471   if test -n "${found_llvm_profdata}"
   1472   then
   1473     # llvm-profdata isn't directly in $PATH in some cases.
   1474     # https://apple.stackexchange.com/questions/197053/
   1475     LLVM_PROFDATA='/usr/bin/xcrun llvm-profdata'
   1476     LLVM_PROF_FOUND=found
   1477     AC_MSG_NOTICE([llvm-profdata found via xcrun: ${LLVM_PROFDATA}])
   1478   fi
   1479 fi
   1480 LLVM_PROF_ERR=no
   1481 case $CC in
   1482   *clang*)
   1483     # Any changes made here should be reflected in the GCC+Darwin case below
   1484     PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
   1485     PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd"
   1486     LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr"
   1487     LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\""
   1488     if test $LLVM_PROF_FOUND = not-found
   1489     then
   1490       LLVM_PROF_ERR=yes
   1491       if test "${REQUIRE_PGO}" = "yes"
   1492       then
   1493         AC_MSG_ERROR([llvm-profdata is required for a --enable-optimizations build but could not be found.])
   1494       fi
   1495     fi
   1496     ;;
   1497   *gcc*)
   1498     case $ac_sys_system in
   1499       Darwin*)
   1500         PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
   1501         PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd"
   1502         LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr"
   1503         LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\""
   1504         if test "${LLVM_PROF_FOUND}" = "not-found"
   1505         then
   1506           LLVM_PROF_ERR=yes
   1507           if test "${REQUIRE_PGO}" = "yes"
   1508 	  then
   1509 	    AC_MSG_ERROR([llvm-profdata is required for a --enable-optimizations build but could not be found.])
   1510 	  fi
   1511         fi
   1512         ;;
   1513       *)
   1514         PGO_PROF_GEN_FLAG="-fprofile-generate"
   1515         PGO_PROF_USE_FLAG="-fprofile-use -fprofile-correction"
   1516         LLVM_PROF_MERGER="true"
   1517         LLVM_PROF_FILE=""
   1518         ;;
   1519     esac
   1520     ;;
   1521   *icc*)
   1522     PGO_PROF_GEN_FLAG="-prof-gen"
   1523     PGO_PROF_USE_FLAG="-prof-use"
   1524     LLVM_PROF_MERGER="true"
   1525     LLVM_PROF_FILE=""
   1526     ;;
   1527 esac
   1528 
   1529 
   1530 # On some compilers, pthreads are available without further options
   1531 # (e.g. MacOS X). On some of these systems, the compiler will not
   1532 # complain if unaccepted options are passed (e.g. gcc on Mac OS X).
   1533 # So we have to see first whether pthreads are available without
   1534 # options before we can check whether -Kpthread improves anything.
   1535 AC_MSG_CHECKING(whether pthreads are available without options)
   1536 AC_CACHE_VAL(ac_cv_pthread_is_default,
   1537 [AC_RUN_IFELSE([AC_LANG_SOURCE([[
   1538 #include <stdio.h>
   1539 #include <pthread.h>
   1540 
   1541 void* routine(void* p){return NULL;}
   1542 
   1543 int main(){
   1544   pthread_t p;
   1545   if(pthread_create(&p,NULL,routine,NULL)!=0)
   1546     return 1;
   1547   (void)pthread_detach(p);
   1548   return 0;
   1549 }
   1550 ]])],[
   1551   ac_cv_pthread_is_default=yes
   1552   ac_cv_kthread=no
   1553   ac_cv_pthread=no
   1554 ],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
   1555 ])
   1556 AC_MSG_RESULT($ac_cv_pthread_is_default)
   1557 
   1558 
   1559 if test $ac_cv_pthread_is_default = yes 
   1560 then
   1561   ac_cv_kpthread=no
   1562 else
   1563 # -Kpthread, if available, provides the right #defines
   1564 # and linker options to make pthread_create available
   1565 # Some compilers won't report that they do not support -Kpthread,
   1566 # so we need to run a program to see whether it really made the
   1567 # function available.
   1568 AC_MSG_CHECKING(whether $CC accepts -Kpthread)
   1569 AC_CACHE_VAL(ac_cv_kpthread,
   1570 [ac_save_cc="$CC"
   1571 CC="$CC -Kpthread"
   1572 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   1573 #include <stdio.h>
   1574 #include <pthread.h>
   1575 
   1576 void* routine(void* p){return NULL;}
   1577 
   1578 int main(){
   1579   pthread_t p;
   1580   if(pthread_create(&p,NULL,routine,NULL)!=0)
   1581     return 1;
   1582   (void)pthread_detach(p);
   1583   return 0;
   1584 }
   1585 ]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
   1586 CC="$ac_save_cc"])
   1587 AC_MSG_RESULT($ac_cv_kpthread)
   1588 fi
   1589 
   1590 if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
   1591 then
   1592 # -Kthread, if available, provides the right #defines
   1593 # and linker options to make pthread_create available
   1594 # Some compilers won't report that they do not support -Kthread,
   1595 # so we need to run a program to see whether it really made the
   1596 # function available.
   1597 AC_MSG_CHECKING(whether $CC accepts -Kthread)
   1598 AC_CACHE_VAL(ac_cv_kthread,
   1599 [ac_save_cc="$CC"
   1600 CC="$CC -Kthread"
   1601 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   1602 #include <stdio.h>
   1603 #include <pthread.h>
   1604 
   1605 void* routine(void* p){return NULL;}
   1606 
   1607 int main(){
   1608   pthread_t p;
   1609   if(pthread_create(&p,NULL,routine,NULL)!=0)
   1610     return 1;
   1611   (void)pthread_detach(p);
   1612   return 0;
   1613 }
   1614 ]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
   1615 CC="$ac_save_cc"])
   1616 AC_MSG_RESULT($ac_cv_kthread)
   1617 fi
   1618 
   1619 if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
   1620 then
   1621 # -pthread, if available, provides the right #defines
   1622 # and linker options to make pthread_create available
   1623 # Some compilers won't report that they do not support -pthread,
   1624 # so we need to run a program to see whether it really made the
   1625 # function available.
   1626 AC_MSG_CHECKING(whether $CC accepts -pthread)
   1627 AC_CACHE_VAL(ac_cv_pthread,
   1628 [ac_save_cc="$CC"
   1629 CC="$CC -pthread"
   1630 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   1631 #include <stdio.h>
   1632 #include <pthread.h>
   1633 
   1634 void* routine(void* p){return NULL;}
   1635 
   1636 int main(){
   1637   pthread_t p;
   1638   if(pthread_create(&p,NULL,routine,NULL)!=0)
   1639     return 1;
   1640   (void)pthread_detach(p);
   1641   return 0;
   1642 }
   1643 ]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
   1644 CC="$ac_save_cc"])
   1645 AC_MSG_RESULT($ac_cv_pthread)
   1646 fi
   1647 
   1648 # If we have set a CC compiler flag for thread support then
   1649 # check if it works for CXX, too.
   1650 ac_cv_cxx_thread=no
   1651 if test ! -z "$CXX"
   1652 then
   1653 AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
   1654 ac_save_cxx="$CXX"
   1655 
   1656 if test "$ac_cv_kpthread" = "yes"
   1657 then
   1658   CXX="$CXX -Kpthread"  
   1659   ac_cv_cxx_thread=yes
   1660 elif test "$ac_cv_kthread" = "yes"
   1661 then
   1662   CXX="$CXX -Kthread"
   1663   ac_cv_cxx_thread=yes
   1664 elif test "$ac_cv_pthread" = "yes"
   1665 then 
   1666   CXX="$CXX -pthread"
   1667   ac_cv_cxx_thread=yes
   1668 fi
   1669 
   1670 if test $ac_cv_cxx_thread = yes
   1671 then
   1672   echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
   1673   $CXX -c conftest.$ac_ext 2>&5
   1674   if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
   1675      && test -s conftest$ac_exeext && ./conftest$ac_exeext
   1676   then
   1677     ac_cv_cxx_thread=yes
   1678   else
   1679     ac_cv_cxx_thread=no
   1680   fi
   1681   rm -fr conftest*
   1682 fi
   1683 AC_MSG_RESULT($ac_cv_cxx_thread)
   1684 fi
   1685 CXX="$ac_save_cxx"
   1686 
   1687 dnl # check for ANSI or K&R ("traditional") preprocessor
   1688 dnl AC_MSG_CHECKING(for C preprocessor type)
   1689 dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   1690 dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
   1691 dnl int foo;
   1692 dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
   1693 dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
   1694 dnl AC_MSG_RESULT($cpp_type)
   1695 
   1696 # checks for header files
   1697 AC_HEADER_STDC
   1698 AC_CHECK_HEADERS(asm/types.h conio.h direct.h dlfcn.h errno.h \
   1699 fcntl.h grp.h \
   1700 ieeefp.h io.h langinfo.h libintl.h poll.h process.h pthread.h \
   1701 shadow.h signal.h stdint.h stropts.h termios.h thread.h \
   1702 unistd.h utime.h \
   1703 sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
   1704 sys/lock.h sys/mkdev.h sys/modem.h \
   1705 sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
   1706 sys/termio.h sys/time.h \
   1707 sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
   1708 sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
   1709 bluetooth/bluetooth.h linux/tipc.h spawn.h util.h alloca.h)
   1710 AC_HEADER_DIRENT
   1711 AC_HEADER_MAJOR
   1712 
   1713 # On Linux, netlink.h requires asm/types.h
   1714 AC_CHECK_HEADERS(linux/netlink.h,,,[
   1715 #ifdef HAVE_ASM_TYPES_H
   1716 #include <asm/types.h>
   1717 #endif
   1718 #ifdef HAVE_SYS_SOCKET_H
   1719 #include <sys/socket.h>
   1720 #endif
   1721 ])
   1722 
   1723 # checks for typedefs
   1724 was_it_defined=no
   1725 AC_MSG_CHECKING(for clock_t in time.h)
   1726 AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
   1727     AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
   1728 ])
   1729 AC_MSG_RESULT($was_it_defined)
   1730 
   1731 # Check whether using makedev requires defining _OSF_SOURCE
   1732 AC_MSG_CHECKING(for makedev)
   1733 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
   1734 #if defined(MAJOR_IN_MKDEV)
   1735 #include <sys/mkdev.h>
   1736 #elif defined(MAJOR_IN_SYSMACROS)
   1737 #include <sys/sysmacros.h>
   1738 #else
   1739 #include <sys/types.h>
   1740 #endif ]], [[ makedev(0, 0) ]])],
   1741 [ac_cv_has_makedev=yes],
   1742 [ac_cv_has_makedev=no])
   1743 if test "$ac_cv_has_makedev" = "no"; then
   1744     # we didn't link, try if _OSF_SOURCE will allow us to link
   1745     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
   1746 #define _OSF_SOURCE 1
   1747 #include <sys/types.h>
   1748     ]], [[ makedev(0, 0) ]])],
   1749 [ac_cv_has_makedev=yes],
   1750 [ac_cv_has_makedev=no])
   1751     if test "$ac_cv_has_makedev" = "yes"; then
   1752         AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
   1753     fi
   1754 fi
   1755 AC_MSG_RESULT($ac_cv_has_makedev)
   1756 if test "$ac_cv_has_makedev" = "yes"; then
   1757     AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
   1758 fi
   1759 
   1760 # Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
   1761 # the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
   1762 # defined, but the compiler does not support pragma redefine_extname,
   1763 # and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
   1764 # structures (such as rlimit64) without declaring them. As a
   1765 # work-around, disable LFS on such configurations
   1766 
   1767 use_lfs=yes
   1768 AC_MSG_CHECKING(Solaris LFS bug)
   1769 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   1770 #define _LARGEFILE_SOURCE 1
   1771 #define _FILE_OFFSET_BITS 64
   1772 #include <sys/resource.h>
   1773 ]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
   1774 AC_MSG_RESULT($sol_lfs_bug)
   1775 if test "$sol_lfs_bug" = "yes"; then
   1776   use_lfs=no
   1777 fi
   1778 
   1779 if test "$use_lfs" = "yes"; then
   1780 # Two defines needed to enable largefile support on various platforms
   1781 # These may affect some typedefs
   1782 case $ac_sys_system/$ac_sys_release in
   1783 AIX*)
   1784     AC_DEFINE(_LARGE_FILES, 1, 
   1785     [This must be defined on AIX systems to enable large file support.])
   1786     ;;
   1787 esac
   1788 AC_DEFINE(_LARGEFILE_SOURCE, 1, 
   1789 [This must be defined on some systems to enable large file support.])
   1790 AC_DEFINE(_FILE_OFFSET_BITS, 64,
   1791 [This must be set to 64 on some systems to enable large file support.])
   1792 fi
   1793 
   1794 # Add some code to confdefs.h so that the test for off_t works on SCO
   1795 cat >> confdefs.h <<\EOF
   1796 #if defined(SCO_DS)
   1797 #undef _OFF_T
   1798 #endif
   1799 EOF
   1800 
   1801 # Type availability checks
   1802 AC_TYPE_MODE_T
   1803 AC_TYPE_OFF_T
   1804 AC_TYPE_PID_T
   1805 AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
   1806 AC_TYPE_SIZE_T
   1807 AC_TYPE_UID_T
   1808 
   1809 # There are two separate checks for each of the exact-width integer types we
   1810 # need.  First we check whether the type is available using the usual
   1811 # AC_CHECK_TYPE macro with the default includes (which includes <inttypes.h>
   1812 # and <stdint.h> where available).  We then also use the special type checks of
   1813 # the form AC_TYPE_UINT32_T, which in the case that uint32_t is not available
   1814 # directly, #define's uint32_t to be a suitable type.
   1815 
   1816 AC_CHECK_TYPE(uint32_t,
   1817   AC_DEFINE(HAVE_UINT32_T, 1, [Define if your compiler provides uint32_t.]),,)
   1818 AC_TYPE_UINT32_T
   1819 
   1820 AC_CHECK_TYPE(uint64_t,
   1821   AC_DEFINE(HAVE_UINT64_T, 1, [Define if your compiler provides uint64_t.]),,)
   1822 AC_TYPE_UINT64_T
   1823 
   1824 AC_CHECK_TYPE(int32_t,
   1825   AC_DEFINE(HAVE_INT32_T, 1, [Define if your compiler provides int32_t.]),,)
   1826 AC_TYPE_INT32_T
   1827 
   1828 AC_CHECK_TYPE(int64_t,
   1829   AC_DEFINE(HAVE_INT64_T, 1, [Define if your compiler provides int64_t.]),,)
   1830 AC_TYPE_INT64_T
   1831 
   1832 AC_CHECK_TYPE(ssize_t,
   1833   AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
   1834 
   1835 # Sizes of various common basic types
   1836 # ANSI C requires sizeof(char) == 1, so no need to check it
   1837 AC_CHECK_SIZEOF(int, 4)
   1838 AC_CHECK_SIZEOF(long, 4)
   1839 AC_CHECK_SIZEOF(void *, 4)
   1840 AC_CHECK_SIZEOF(short, 2)
   1841 AC_CHECK_SIZEOF(float, 4)
   1842 AC_CHECK_SIZEOF(double, 8)
   1843 AC_CHECK_SIZEOF(fpos_t, 4)
   1844 AC_CHECK_SIZEOF(size_t, 4)
   1845 AC_CHECK_SIZEOF(pid_t, 4)
   1846 
   1847 AC_MSG_CHECKING(for long long support)
   1848 have_long_long=no
   1849 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long x; x = (long long)0;]])],[
   1850   AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.]) 
   1851   have_long_long=yes
   1852 ],[])
   1853 AC_MSG_RESULT($have_long_long)
   1854 if test "$have_long_long" = yes ; then
   1855 AC_CHECK_SIZEOF(long long, 8)
   1856 fi
   1857 
   1858 AC_MSG_CHECKING(for long double support)
   1859 have_long_double=no
   1860 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
   1861   AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
   1862   have_long_double=yes
   1863 ],[])
   1864 AC_MSG_RESULT($have_long_double)
   1865 if test "$have_long_double" = yes ; then
   1866 AC_CHECK_SIZEOF(long double, 12)
   1867 fi
   1868 
   1869 AC_MSG_CHECKING(for _Bool support)
   1870 have_c99_bool=no
   1871 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Bool x; x = (_Bool)0;]])],[
   1872   AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.]) 
   1873   have_c99_bool=yes
   1874 ],[])
   1875 AC_MSG_RESULT($have_c99_bool)
   1876 if test "$have_c99_bool" = yes ; then
   1877 AC_CHECK_SIZEOF(_Bool, 1)
   1878 fi
   1879 
   1880 AC_CHECK_TYPES(uintptr_t, 
   1881    [AC_CHECK_SIZEOF(uintptr_t, 4)], 
   1882    [], [#ifdef HAVE_STDINT_H
   1883         #include <stdint.h>
   1884         #endif
   1885         #ifdef HAVE_INTTYPES_H
   1886         #include <inttypes.h>
   1887         #endif])
   1888 
   1889 AC_CHECK_SIZEOF(off_t, [], [
   1890 #ifdef HAVE_SYS_TYPES_H
   1891 #include <sys/types.h>
   1892 #endif
   1893 ])
   1894 
   1895 AC_MSG_CHECKING(whether to enable large file support)
   1896 if test "$have_long_long" = yes
   1897 then
   1898 if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
   1899 	"$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
   1900   AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1, 
   1901   [Defined to enable large file support when an off_t is bigger than a long
   1902    and long long is available and at least as big as an off_t. You may need
   1903    to add some flags for configuration and compilation to enable this mode.
   1904    (For Solaris and Linux, the necessary defines are already defined.)])
   1905   AC_MSG_RESULT(yes)
   1906 else
   1907   AC_MSG_RESULT(no)
   1908 fi
   1909 else
   1910   AC_MSG_RESULT(no)
   1911 fi
   1912 
   1913 AC_CHECK_SIZEOF(time_t, [], [
   1914 #ifdef HAVE_SYS_TYPES_H
   1915 #include <sys/types.h>
   1916 #endif
   1917 #ifdef HAVE_TIME_H
   1918 #include <time.h>
   1919 #endif
   1920 ])
   1921 
   1922 # if have pthread_t then define SIZEOF_PTHREAD_T
   1923 ac_save_cc="$CC"
   1924 if test "$ac_cv_kpthread" = "yes"
   1925 then CC="$CC -Kpthread"
   1926 elif test "$ac_cv_kthread" = "yes"
   1927 then CC="$CC -Kthread"
   1928 elif test "$ac_cv_pthread" = "yes"
   1929 then CC="$CC -pthread"
   1930 fi
   1931 AC_MSG_CHECKING(for pthread_t)
   1932 have_pthread_t=no
   1933 AC_COMPILE_IFELSE([
   1934   AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
   1935 ],[have_pthread_t=yes],[])
   1936 AC_MSG_RESULT($have_pthread_t)
   1937 if test "$have_pthread_t" = yes ; then
   1938   AC_CHECK_SIZEOF(pthread_t, [], [
   1939 #ifdef HAVE_PTHREAD_H
   1940 #include <pthread.h>
   1941 #endif
   1942   ])
   1943 fi
   1944 CC="$ac_save_cc"
   1945 
   1946 AC_MSG_CHECKING(for --enable-toolbox-glue)
   1947 AC_ARG_ENABLE(toolbox-glue,
   1948               AS_HELP_STRING([--enable-toolbox-glue], [disable/enable MacOSX glue code for extensions]))
   1949 
   1950 if test -z "$enable_toolbox_glue"
   1951 then 
   1952 	case $ac_sys_system/$ac_sys_release in
   1953 	Darwin/*)
   1954 		enable_toolbox_glue="yes";;
   1955 	*)
   1956 		enable_toolbox_glue="no";;
   1957 	esac
   1958 fi
   1959 case "$enable_toolbox_glue" in
   1960 yes)
   1961 	extra_machdep_objs="Python/mactoolboxglue.o"
   1962 	extra_undefs="-u _PyMac_Error"
   1963 	AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
   1964          [Define if you want to use MacPython modules on MacOSX in unix-Python.])
   1965 	;;
   1966 *)
   1967 	extra_machdep_objs=""
   1968 	extra_undefs=""
   1969 	;;
   1970 esac
   1971 AC_MSG_RESULT($enable_toolbox_glue)
   1972 
   1973 
   1974 AC_SUBST(OTHER_LIBTOOL_OPT)
   1975 case $ac_sys_system/$ac_sys_release in
   1976   Darwin/@<:@01567@:>@\..*) 
   1977     OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
   1978     ;;
   1979   Darwin/*)
   1980     OTHER_LIBTOOL_OPT=""
   1981     ;;
   1982 esac
   1983 
   1984 
   1985 AC_SUBST(LIBTOOL_CRUFT)
   1986 case $ac_sys_system/$ac_sys_release in
   1987   Darwin/@<:@01567@:>@\..*) 
   1988     LIBTOOL_CRUFT="-framework System -lcc_dynamic"
   1989     if test "${enable_universalsdk}"; then
   1990 	    :
   1991     else
   1992         LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
   1993     fi
   1994     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
   1995     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
   1996   Darwin/*)
   1997     gcc_version=`gcc -dumpversion`
   1998     if test ${gcc_version} '<' 4.0
   1999         then
   2000             LIBTOOL_CRUFT="-lcc_dynamic"
   2001         else 
   2002             LIBTOOL_CRUFT=""
   2003     fi
   2004     AC_RUN_IFELSE([AC_LANG_SOURCE([[
   2005     #include <unistd.h>
   2006     int main(int argc, char*argv[])
   2007     {
   2008       if (sizeof(long) == 4) {
   2009     	  return 0;
   2010       } else {
   2011       	  return 1;
   2012       }
   2013     }
   2014     ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
   2015     
   2016     if test "${ac_osx_32bit}" = "yes"; then
   2017     	case `/usr/bin/arch` in
   2018     	i386) 
   2019     		MACOSX_DEFAULT_ARCH="i386" 
   2020     		;;
   2021     	ppc) 
   2022     		MACOSX_DEFAULT_ARCH="ppc" 
   2023     		;;
   2024     	*)
   2025     		AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
   2026     		;;
   2027     	esac
   2028     else
   2029     	case `/usr/bin/arch` in
   2030     	i386) 
   2031     		MACOSX_DEFAULT_ARCH="x86_64" 
   2032     		;;
   2033     	ppc) 
   2034     		MACOSX_DEFAULT_ARCH="ppc64" 
   2035     		;;
   2036     	*)
   2037     		AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
   2038     		;;
   2039     	esac
   2040 
   2041 	#ARCH_RUN_32BIT="true"
   2042     fi
   2043 
   2044     LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
   2045     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
   2046     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
   2047 esac
   2048 
   2049 AC_MSG_CHECKING(for --enable-framework)
   2050 if test "$enable_framework"
   2051 then
   2052 	BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
   2053 	# -F. is needed to allow linking to the framework while 
   2054 	# in the build location.
   2055 	AC_DEFINE(WITH_NEXT_FRAMEWORK, 1, 
   2056          [Define if you want to produce an OpenStep/Rhapsody framework
   2057          (shared library plus accessory files).])
   2058 	AC_MSG_RESULT(yes)
   2059 	if test $enable_shared = "yes"
   2060 	then
   2061 		AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead. See Mac/README.])
   2062 	fi
   2063 else
   2064 	AC_MSG_RESULT(no)
   2065 fi
   2066 
   2067 AC_MSG_CHECKING(for dyld)
   2068 case $ac_sys_system/$ac_sys_release in
   2069   Darwin/*)
   2070   	AC_DEFINE(WITH_DYLD, 1, 
   2071         [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
   2072          dynamic linker (dyld) instead of the old-style (NextStep) dynamic
   2073          linker (rld). Dyld is necessary to support frameworks.])
   2074   	AC_MSG_RESULT(always on for Darwin)
   2075   	;;
   2076   *)
   2077 	AC_MSG_RESULT(no)
   2078 	;;
   2079 esac
   2080 
   2081 # Set info about shared libraries.
   2082 AC_SUBST(SO)
   2083 AC_SUBST(LDSHARED)
   2084 AC_SUBST(LDCXXSHARED)
   2085 AC_SUBST(BLDSHARED)
   2086 AC_SUBST(CCSHARED)
   2087 AC_SUBST(LINKFORSHARED)
   2088 # SO is the extension of shared libraries `(including the dot!)
   2089 # -- usually .so, .sl on HP-UX, .dll on Cygwin
   2090 AC_MSG_CHECKING(SO)
   2091 if test -z "$SO"
   2092 then
   2093 	case $ac_sys_system in
   2094 	hp*|HP*)
   2095 		case `uname -m` in
   2096 			ia64) SO=.so;;
   2097 	  		*)    SO=.sl;;
   2098 		esac
   2099 		;;
   2100 	CYGWIN*)   SO=.dll;;
   2101 	*)	   SO=.so;;
   2102 	esac
   2103 else
   2104 	# this might also be a termcap variable, see #610332
   2105         echo
   2106         echo '====================================================================='
   2107         echo '+                                                                   +'
   2108 	echo '+ WARNING: You have set SO in your environment.                     +'
   2109         echo '+ Do you really mean to change the extension for shared libraries?  +'
   2110         echo '+ Continuing in 10 seconds to let you to ponder.                    +'
   2111         echo '+                                                                   +'
   2112         echo '====================================================================='
   2113 	sleep 10
   2114 fi
   2115 AC_MSG_RESULT($SO)
   2116 
   2117 AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
   2118 # LDSHARED is the ld *command* used to create shared library
   2119 # -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
   2120 # (Shared libraries in this instance are shared modules to be loaded into
   2121 # Python, as opposed to building Python itself as a shared library.)
   2122 AC_MSG_CHECKING(LDSHARED)
   2123 if test -z "$LDSHARED"
   2124 then
   2125 	case $ac_sys_system/$ac_sys_release in
   2126 	AIX*)
   2127 		BLDSHARED="Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
   2128 		LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
   2129 		;;
   2130 	BeOS*)
   2131 		BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
   2132 		LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
   2133 		;;
   2134 	IRIX/5*) LDSHARED="ld -shared";;
   2135 	IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
   2136 	SunOS/5*) 
   2137 		if test "$GCC" = "yes" ; then
   2138 			LDSHARED='$(CC) -shared'
   2139 			LDCXXSHARED='$(CXX) -shared'
   2140 		else
   2141 			LDSHARED='$(CC) -G'
   2142 			LDCXXSHARED='$(CXX) -G'
   2143 		fi ;;
   2144 	hp*|HP*)
   2145 		if test "$GCC" = "yes" ; then
   2146 			LDSHARED='$(CC) -shared'
   2147 			LDCXXSHARED='$(CXX) -shared'
   2148 		else
   2149 			LDSHARED='ld -b'
   2150 		fi ;;
   2151 	OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
   2152 	Darwin/1.3*)
   2153 		LDSHARED='$(CC) -bundle'
   2154 		LDCXXSHARED='$(CXX) -bundle'
   2155 		if test "$enable_framework" ; then
   2156 			# Link against the framework. All externals should be defined.
   2157 			BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
   2158 			LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
   2159 			LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
   2160 		else
   2161 			# No framework. Ignore undefined symbols, assuming they come from Python
   2162 			LDSHARED="$LDSHARED -undefined suppress"
   2163 			LDCXXSHARED="$LDCXXSHARED -undefined suppress"
   2164 		fi ;;
   2165 	Darwin/1.4*|Darwin/5.*|Darwin/6.*)
   2166 		LDSHARED='$(CC) -bundle'
   2167 		LDCXXSHARED='$(CXX) -bundle'
   2168 		if test "$enable_framework" ; then
   2169 			# Link against the framework. All externals should be defined.
   2170 			BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
   2171 			LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
   2172 			LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
   2173 		else
   2174 			# No framework, use the Python app as bundle-loader
   2175 			BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
   2176 			LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
   2177 			LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
   2178 		fi ;;
   2179 	Darwin/*)
   2180 		# Use -undefined dynamic_lookup whenever possible (10.3 and later).
   2181 		# This allows an extension to be used in any Python
   2182 
   2183 		dep_target_major=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
   2184 				sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
   2185 		dep_target_minor=`echo ${MACOSX_DEPLOYMENT_TARGET} | \
   2186 				sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
   2187 		if test ${dep_target_major} -eq 10 && \
   2188 		   test ${dep_target_minor} -le 2
   2189 		then
   2190 			# building for OS X 10.0 through 10.2
   2191 			LDSHARED='$(CC) -bundle'
   2192 			LDCXXSHARED='$(CXX) -bundle'
   2193 			if test "$enable_framework" ; then
   2194 				# Link against the framework. All externals should be defined.
   2195 				BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
   2196 				LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
   2197 				LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
   2198 			else
   2199 				# No framework, use the Python app as bundle-loader
   2200 				BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
   2201 				LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
   2202 				LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
   2203 			fi
   2204 		else
   2205 			# building for OS X 10.3 and later
   2206 			if test "${enable_universalsdk}"; then
   2207 				LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
   2208 			fi
   2209 			LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
   2210 			LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
   2211 			BLDSHARED="$LDSHARED"
   2212 		fi
   2213 		;;
   2214 	Linux*|GNU*|QNX*)
   2215 		LDSHARED='$(CC) -shared'
   2216 		LDCXXSHARED='$(CXX) -shared';;
   2217 	BSD/OS*/4*)
   2218 		LDSHARED="gcc -shared"
   2219 		LDCXXSHARED="g++ -shared";;
   2220 	FreeBSD*)
   2221 		if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
   2222 		then
   2223 			LDSHARED='$(CC) -shared'
   2224 			LDCXXSHARED='$(CXX) -shared'
   2225 		else
   2226 			LDSHARED="ld -Bshareable"
   2227 		fi;;
   2228 	OpenBSD*)
   2229 		if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
   2230 		then
   2231 				LDSHARED='$(CC) -shared $(CCSHARED)'
   2232 				LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
   2233 		else
   2234 				case `uname -r` in
   2235 				[[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
   2236 				   LDSHARED="ld -Bshareable ${LDFLAGS}"
   2237 				   ;;
   2238 				*)
   2239 				   LDSHARED='$(CC) -shared $(CCSHARED)'
   2240 				   LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
   2241 				   ;;
   2242 				esac
   2243 		fi;;
   2244 	NetBSD*|DragonFly*)
   2245 		LDSHARED='$(CC) -shared'
   2246 		LDCXXSHARED='$(CXX) -shared';;
   2247 	OpenUNIX*|UnixWare*)
   2248 		if test "$GCC" = "yes" ; then
   2249 			LDSHARED='$(CC) -shared'
   2250 			LDCXXSHARED='$(CXX) -shared'
   2251 		else
   2252 			LDSHARED='$(CC) -G'
   2253 			LDCXXSHARED='$(CXX) -G'
   2254 		fi;;
   2255 	SCO_SV*)
   2256 		LDSHARED='$(CC) -Wl,-G,-Bexport'
   2257 		LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
   2258 	CYGWIN*)
   2259 		LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
   2260 		LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
   2261 	atheos*)
   2262 		LDSHARED="gcc -shared"
   2263 		LDCXXSHARED="g++ -shared";;
   2264 	*)	LDSHARED="ld";;
   2265 	esac
   2266 fi
   2267 AC_MSG_RESULT($LDSHARED)
   2268 LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
   2269 BLDSHARED=${BLDSHARED-$LDSHARED}
   2270 # CCSHARED are the C *flags* used to create objects to go into a shared
   2271 # library (module) -- this is only needed for a few systems
   2272 AC_MSG_CHECKING(CCSHARED)
   2273 if test -z "$CCSHARED"
   2274 then
   2275 	case $ac_sys_system/$ac_sys_release in
   2276 	SunOS*) if test "$GCC" = yes;
   2277 		then CCSHARED="-fPIC";
   2278 		elif test `uname -p` = sparc;
   2279 		then CCSHARED="-xcode=pic32";
   2280 		else CCSHARED="-Kpic";
   2281 		fi;;
   2282 	hp*|HP*) if test "$GCC" = yes;
   2283 		 then CCSHARED="-fPIC";
   2284 		 else CCSHARED="+z";
   2285 		 fi;;
   2286 	Linux*|GNU*) CCSHARED="-fPIC";;
   2287 	BSD/OS*/4*) CCSHARED="-fpic";;
   2288 	FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
   2289 	OpenUNIX*|UnixWare*)
   2290 		if test "$GCC" = "yes"
   2291 		then CCSHARED="-fPIC"
   2292 		else CCSHARED="-KPIC"
   2293 		fi;;
   2294 	SCO_SV*)
   2295 		if test "$GCC" = "yes"
   2296 		then CCSHARED="-fPIC"
   2297 		else CCSHARED="-Kpic -belf"
   2298 		fi;;
   2299 	IRIX*/6*)  case $CC in
   2300 		   *gcc*) CCSHARED="-shared";;
   2301 		   *) CCSHARED="";;
   2302 		   esac;;
   2303 	atheos*) CCSHARED="-fPIC";;
   2304 	esac
   2305 fi
   2306 AC_MSG_RESULT($CCSHARED)
   2307 # LINKFORSHARED are the flags passed to the $(CC) command that links
   2308 # the python executable -- this is only needed for a few systems
   2309 AC_MSG_CHECKING(LINKFORSHARED)
   2310 if test -z "$LINKFORSHARED"
   2311 then
   2312 	case $ac_sys_system/$ac_sys_release in
   2313 	AIX*)	LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
   2314 	hp*|HP*)
   2315 	    LINKFORSHARED="-Wl,-E -Wl,+s";;
   2316 #	    LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
   2317 	BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
   2318 	Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
   2319 	# -u libsys_s pulls in all symbols in libsys
   2320 	Darwin/*) 
   2321 		# -u _PyMac_Error is needed to pull in the mac toolbox glue,
   2322 		# which is
   2323 		# not used by the core itself but which needs to be in the core so
   2324 		# that dynamically loaded extension modules have access to it.
   2325 		# -prebind is no longer used, because it actually seems to give a
   2326 		# slowdown in stead of a speedup, maybe due to the large number of
   2327 		# dynamic loads Python does.
   2328 
   2329 		LINKFORSHARED="$extra_undefs"
   2330 		if test "$enable_framework"
   2331 		then
   2332 			LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
   2333 		fi
   2334 		LINKFORSHARED="$LINKFORSHARED";;
   2335 	OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
   2336 	SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
   2337 	ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
   2338 	FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) 
   2339 		if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
   2340 		then
   2341 			LINKFORSHARED="-Wl,--export-dynamic"
   2342 		fi;;
   2343 	SunOS/5*) case $CC in
   2344 		  *gcc*)
   2345 		    if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
   2346 		    then
   2347 			LINKFORSHARED="-Xlinker --export-dynamic"
   2348 		    fi;;
   2349 		  esac;;
   2350 	CYGWIN*)
   2351 		if test $enable_shared = "no"
   2352 		then
   2353 			LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
   2354 		fi;;
   2355 	QNX*)
   2356 		# -Wl,-E causes the symbols to be added to the dynamic
   2357 		# symbol table so that they can be found when a module
   2358 		# is loaded.  -N 2048K causes the stack size to be set
   2359 		# to 2048 kilobytes so that the stack doesn't overflow
   2360 		# when running test_compile.py.
   2361 		LINKFORSHARED='-Wl,-E -N 2048K';;
   2362 	esac
   2363 fi
   2364 AC_MSG_RESULT($LINKFORSHARED)
   2365 
   2366 
   2367 AC_SUBST(CFLAGSFORSHARED)
   2368 AC_MSG_CHECKING(CFLAGSFORSHARED)
   2369 if test ! "$LIBRARY" = "$LDLIBRARY"
   2370 then
   2371 	case $ac_sys_system in
   2372 	CYGWIN*)
   2373 		# Cygwin needs CCSHARED when building extension DLLs
   2374 		# but not when building the interpreter DLL.
   2375 		CFLAGSFORSHARED='';;
   2376 	*)
   2377 		CFLAGSFORSHARED='$(CCSHARED)'
   2378 	esac
   2379 fi
   2380 AC_MSG_RESULT($CFLAGSFORSHARED)
   2381 
   2382 # SHLIBS are libraries (except -lc and -lm) to link to the python shared
   2383 # library (with --enable-shared).
   2384 # For platforms on which shared libraries are not allowed to have unresolved
   2385 # symbols, this must be set to $(LIBS) (expanded by make). We do this even
   2386 # if it is not required, since it creates a dependency of the shared library
   2387 # to LIBS. This, in turn, means that applications linking the shared libpython
   2388 # don't need to link LIBS explicitly. The default should be only changed
   2389 # on systems where this approach causes problems.
   2390 AC_SUBST(SHLIBS)
   2391 AC_MSG_CHECKING(SHLIBS)
   2392 case "$ac_sys_system" in
   2393 	*)
   2394 		SHLIBS='$(LIBS)';;
   2395 esac
   2396 AC_MSG_RESULT($SHLIBS)
   2397 
   2398 
   2399 # checks for libraries
   2400 AC_CHECK_LIB(dl, dlopen)	# Dynamic linking for SunOS/Solaris and SYSV
   2401 AC_CHECK_LIB(dld, shl_load)	# Dynamic linking for HP-UX
   2402 
   2403 # only check for sem_init if thread support is requested
   2404 if test "$with_threads" = "yes" -o -z "$with_threads"; then
   2405     AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
   2406 						# posix4 on Solaris 2.6
   2407 						# pthread (first!) on Linux
   2408 fi
   2409 
   2410 # check if we need libintl for locale functions
   2411 AC_CHECK_LIB(intl, textdomain,
   2412 	AC_DEFINE(WITH_LIBINTL, 1,
   2413 	[Define to 1 if libintl is needed for locale functions.]))
   2414 
   2415 # checks for system dependent C++ extensions support
   2416 case "$ac_sys_system" in
   2417 	AIX*)	AC_MSG_CHECKING(for genuine AIX C++ extensions support)
   2418 		AC_LINK_IFELSE([
   2419 		  AC_LANG_PROGRAM([[#include <load.h>]],
   2420 				  [[loadAndInit("", 0, "")]])
   2421 		],[
   2422 		  AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
   2423                       [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
   2424                        and you want support for AIX C++ shared extension modules.])
   2425 		  AC_MSG_RESULT(yes)
   2426 		],[
   2427 		  AC_MSG_RESULT(no)
   2428 		]);;
   2429 	*) ;;
   2430 esac
   2431 
   2432 # Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
   2433 # BeOS' sockets are stashed in libnet.
   2434 AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
   2435 AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
   2436 
   2437 case "$ac_sys_system" in
   2438 BeOS*)
   2439 AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
   2440 ;;
   2441 esac
   2442 
   2443 AC_MSG_CHECKING(for --with-libs)
   2444 AC_ARG_WITH(libs,
   2445             AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
   2446 [
   2447 AC_MSG_RESULT($withval)
   2448 LIBS="$withval $LIBS"
   2449 ],
   2450 [AC_MSG_RESULT(no)])
   2451 
   2452 PKG_PROG_PKG_CONFIG
   2453 
   2454 # Check for use of the system expat library
   2455 AC_MSG_CHECKING(for --with-system-expat)
   2456 AC_ARG_WITH(system_expat,
   2457             AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),
   2458             [],
   2459             [with_system_expat="no"])
   2460 
   2461 AC_MSG_RESULT($with_system_expat)
   2462 
   2463 # Check for use of the system libffi library
   2464 AC_MSG_CHECKING(for --with-system-ffi)
   2465 AC_ARG_WITH(system_ffi,
   2466             AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),
   2467             [],
   2468             [with_system_ffi="no"])
   2469 
   2470 if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
   2471     LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
   2472 else
   2473     LIBFFI_INCLUDEDIR=""
   2474 fi
   2475 AC_SUBST(LIBFFI_INCLUDEDIR)
   2476 
   2477 AC_MSG_RESULT($with_system_ffi)
   2478 
   2479 # Check for --with-tcltk-includes=path and --with-tcltk-libs=path
   2480 AC_SUBST(TCLTK_INCLUDES)
   2481 AC_SUBST(TCLTK_LIBS)
   2482 AC_MSG_CHECKING(for --with-tcltk-includes)
   2483 AC_ARG_WITH(tcltk-includes,
   2484             AS_HELP_STRING([--with-tcltk-includes='-I...'], [override search for Tcl and Tk include files]),
   2485             [],
   2486             [with_tcltk_includes="default"])
   2487 AC_MSG_RESULT($with_tcltk_includes)
   2488 AC_MSG_CHECKING(for --with-tcltk-libs)
   2489 AC_ARG_WITH(tcltk-libs,
   2490             AS_HELP_STRING([--with-tcltk-libs='-L...'], [override search for Tcl and Tk libs]),
   2491             [],
   2492             [with_tcltk_libs="default"])
   2493 AC_MSG_RESULT($with_tcltk_libs)
   2494 if test "x$with_tcltk_includes" = xdefault || test "x$with_tcltk_libs" = xdefault
   2495 then
   2496   if test "x$with_tcltk_includes" != "x$with_tcltk_libs"
   2497   then
   2498     AC_MSG_ERROR([use both --with-tcltk-includes='...' and --with-tcltk-libs='...' or neither])
   2499   fi
   2500   TCLTK_INCLUDES=""
   2501   TCLTK_LIBS=""
   2502 else
   2503   TCLTK_INCLUDES="$with_tcltk_includes"
   2504   TCLTK_LIBS="$with_tcltk_libs"
   2505 fi
   2506 
   2507 # Check for --with-dbmliborder
   2508 AC_MSG_CHECKING(for --with-dbmliborder)
   2509 AC_ARG_WITH(dbmliborder,
   2510             AS_HELP_STRING([--with-dbmliborder=db1:db2:...], [order to check db backends for dbm. Valid value is a colon separated string with the backend names `ndbm', `gdbm' and `bdb'.]),
   2511 [
   2512 if test x$with_dbmliborder = xyes
   2513 then
   2514 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
   2515 else
   2516   for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
   2517     if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
   2518     then
   2519       AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
   2520     fi
   2521   done
   2522 fi])
   2523 AC_MSG_RESULT($with_dbmliborder)
   2524 
   2525 # Determine if signalmodule should be used.
   2526 AC_SUBST(USE_SIGNAL_MODULE)
   2527 AC_SUBST(SIGNAL_OBJS)
   2528 AC_MSG_CHECKING(for --with-signal-module)
   2529 AC_ARG_WITH(signal-module,
   2530             AS_HELP_STRING([--with-signal-module], [disable/enable signal module]))
   2531 
   2532 if test -z "$with_signal_module"
   2533 then with_signal_module="yes"
   2534 fi
   2535 AC_MSG_RESULT($with_signal_module)
   2536 
   2537 if test "${with_signal_module}" = "yes"; then
   2538 	USE_SIGNAL_MODULE=""
   2539 	SIGNAL_OBJS=""
   2540 else
   2541 	USE_SIGNAL_MODULE="#"
   2542 	SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
   2543 fi
   2544 
   2545 # This is used to generate Setup.config
   2546 AC_SUBST(USE_THREAD_MODULE)
   2547 USE_THREAD_MODULE=""
   2548 
   2549 AC_MSG_CHECKING(for --with-dec-threads)
   2550 AC_SUBST(LDLAST)
   2551 AC_ARG_WITH(dec-threads,
   2552             AS_HELP_STRING([--with-dec-threads], [use DEC Alpha/OSF1 thread-safe libraries]),
   2553 [
   2554 AC_MSG_RESULT($withval)
   2555 LDLAST=-threads
   2556 if test "${with_thread+set}" != set; then
   2557    with_thread="$withval";
   2558 fi],
   2559 [AC_MSG_RESULT(no)])
   2560 
   2561 # Templates for things AC_DEFINEd more than once.
   2562 # For a single AC_DEFINE, no template is needed.
   2563 AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
   2564 AH_TEMPLATE(_REENTRANT,
   2565   [Define to force use of thread-safe errno, h_errno, and other functions])
   2566 AH_TEMPLATE(WITH_THREAD,
   2567   [Define if you want to compile in rudimentary thread support])
   2568 
   2569 AC_MSG_CHECKING(for --with-threads)
   2570 dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
   2571 AC_ARG_WITH(threads,
   2572             AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
   2573 
   2574 # --with-thread is deprecated, but check for it anyway
   2575 dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
   2576 AC_ARG_WITH(thread,
   2577             AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
   2578             [with_threads=$with_thread])
   2579 
   2580 if test -z "$with_threads"
   2581 then with_threads="yes"
   2582 fi
   2583 AC_MSG_RESULT($with_threads)
   2584 
   2585 AC_SUBST(THREADOBJ)
   2586 if test "$with_threads" = "no"
   2587 then
   2588     USE_THREAD_MODULE="#"
   2589 elif test "$ac_cv_pthread_is_default" = yes
   2590 then
   2591     AC_DEFINE(WITH_THREAD)
   2592     # Defining _REENTRANT on system with POSIX threads should not hurt.
   2593     AC_DEFINE(_REENTRANT)
   2594     posix_threads=yes
   2595     THREADOBJ="Python/thread.o"    
   2596 elif test "$ac_cv_kpthread" = "yes"
   2597 then
   2598     CC="$CC -Kpthread"
   2599     if test "$ac_cv_cxx_thread" = "yes"; then
   2600         CXX="$CXX -Kpthread"
   2601     fi
   2602     AC_DEFINE(WITH_THREAD)
   2603     posix_threads=yes
   2604     THREADOBJ="Python/thread.o"
   2605 elif test "$ac_cv_kthread" = "yes"
   2606 then
   2607     CC="$CC -Kthread"
   2608     if test "$ac_cv_cxx_thread" = "yes"; then
   2609         CXX="$CXX -Kthread"
   2610     fi
   2611     AC_DEFINE(WITH_THREAD)
   2612     posix_threads=yes
   2613     THREADOBJ="Python/thread.o"
   2614 elif test "$ac_cv_pthread" = "yes"
   2615 then
   2616     CC="$CC -pthread"
   2617     if test "$ac_cv_cxx_thread" = "yes"; then
   2618         CXX="$CXX -pthread"
   2619     fi
   2620     AC_DEFINE(WITH_THREAD)
   2621     posix_threads=yes
   2622     THREADOBJ="Python/thread.o"
   2623 else
   2624     if test ! -z "$with_threads" -a -d "$with_threads"
   2625     then LDFLAGS="$LDFLAGS -L$with_threads"
   2626     fi
   2627     if test ! -z "$withval" -a -d "$withval"
   2628     then LDFLAGS="$LDFLAGS -L$withval"
   2629     fi
   2630 
   2631     # According to the POSIX spec, a pthreads implementation must
   2632     # define _POSIX_THREADS in unistd.h. Some apparently don't
   2633     # (e.g. gnu pth with pthread emulation)
   2634     AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
   2635     AC_EGREP_CPP(yes,
   2636     [
   2637 #include <unistd.h>
   2638 #ifdef _POSIX_THREADS
   2639 yes
   2640 #endif
   2641     ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
   2642     AC_MSG_RESULT($unistd_defines_pthreads)
   2643 
   2644     AC_DEFINE(_REENTRANT)
   2645     AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
   2646     AC_DEFINE(C_THREADS)
   2647     AC_DEFINE(HURD_C_THREADS, 1,
   2648     [Define if you are using Mach cthreads directly under /include])
   2649     LIBS="$LIBS -lthreads"
   2650     THREADOBJ="Python/thread.o"],[
   2651     AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
   2652     AC_DEFINE(C_THREADS)
   2653     AC_DEFINE(MACH_C_THREADS, 1,
   2654     [Define if you are using Mach cthreads under mach /])
   2655     THREADOBJ="Python/thread.o"],[
   2656     AC_MSG_CHECKING(for --with-pth)
   2657     AC_ARG_WITH([pth],
   2658                 AS_HELP_STRING([--with-pth], [use GNU pth threading libraries]),
   2659                 [AC_MSG_RESULT($withval)
   2660                   AC_DEFINE([WITH_THREAD])
   2661                   AC_DEFINE([HAVE_PTH], 1,
   2662                             [Define if you have GNU PTH threads.])
   2663                   LIBS="-lpth $LIBS"
   2664                   THREADOBJ="Python/thread.o"],
   2665 	        [AC_MSG_RESULT(no)
   2666 
   2667     # Just looking for pthread_create in libpthread is not enough:
   2668     # on HP/UX, pthread.h renames pthread_create to a different symbol name.
   2669     # So we really have to include pthread.h, and then link.
   2670     _libs=$LIBS
   2671     LIBS="$LIBS -lpthread"
   2672     AC_MSG_CHECKING([for pthread_create in -lpthread])
   2673     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
   2674 #include <stdio.h>
   2675 #include <pthread.h>
   2676 
   2677 void * start_routine (void *arg) { exit (0); }]], [[
   2678 pthread_create (NULL, NULL, start_routine, NULL)]])],[
   2679     AC_MSG_RESULT(yes)
   2680     AC_DEFINE(WITH_THREAD)
   2681     posix_threads=yes
   2682     THREADOBJ="Python/thread.o"],[
   2683     LIBS=$_libs
   2684     AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
   2685     posix_threads=yes
   2686     THREADOBJ="Python/thread.o"],[
   2687     AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
   2688     AC_DEFINE(ATHEOS_THREADS, 1,
   2689     [Define this if you have AtheOS threads.])
   2690     THREADOBJ="Python/thread.o"],[
   2691     AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
   2692     AC_DEFINE(BEOS_THREADS, 1,
   2693     [Define this if you have BeOS threads.])
   2694     THREADOBJ="Python/thread.o"],[
   2695     AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
   2696     posix_threads=yes
   2697     LIBS="$LIBS -lpthreads"
   2698     THREADOBJ="Python/thread.o"], [
   2699     AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
   2700     posix_threads=yes
   2701     LIBS="$LIBS -lc_r"
   2702     THREADOBJ="Python/thread.o"], [
   2703     AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
   2704     posix_threads=yes
   2705     LIBS="$LIBS -lpthread"
   2706     THREADOBJ="Python/thread.o"], [
   2707     AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
   2708     posix_threads=yes
   2709     LIBS="$LIBS -lcma"
   2710     THREADOBJ="Python/thread.o"],[
   2711     USE_THREAD_MODULE="#"])
   2712     ])])])])])])])])])])
   2713 
   2714     AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
   2715     LIBS="$LIBS -lmpc"
   2716     THREADOBJ="Python/thread.o"
   2717     USE_THREAD_MODULE=""])
   2718 
   2719     if test "$posix_threads" != "yes"; then     
   2720       AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
   2721       LIBS="$LIBS -lthread"
   2722       THREADOBJ="Python/thread.o"
   2723       USE_THREAD_MODULE=""])
   2724     fi
   2725 
   2726     if test "$USE_THREAD_MODULE" != "#"
   2727     then
   2728         # If the above checks didn't disable threads, (at least) OSF1
   2729         # needs this '-threads' argument during linking.
   2730         case $ac_sys_system in
   2731         OSF1) LDLAST=-threads;;
   2732         esac
   2733     fi
   2734 fi
   2735 
   2736 if test "$posix_threads" = "yes"; then
   2737       if test "$unistd_defines_pthreads" = "no"; then
   2738          AC_DEFINE(_POSIX_THREADS, 1,
   2739          [Define if you have POSIX threads, 
   2740           and your system does not define that.])
   2741       fi
   2742 
   2743       # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
   2744       case  $ac_sys_system/$ac_sys_release in
   2745       SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
   2746                        [Defined for Solaris 2.6 bug in pthread header.])
   2747 		       ;;
   2748       SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
   2749 		       [Define if the Posix semaphores do not work on your system])
   2750 		       ;;
   2751       AIX/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
   2752 		       [Define if the Posix semaphores do not work on your system])
   2753 		       ;;
   2754       esac
   2755 
   2756       AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
   2757       AC_CACHE_VAL(ac_cv_pthread_system_supported,
   2758       [AC_RUN_IFELSE([AC_LANG_SOURCE([[
   2759       #include <stdio.h>
   2760       #include <pthread.h>
   2761       void *foo(void *parm) {
   2762         return NULL;
   2763       }
   2764       main() {
   2765         pthread_attr_t attr;
   2766         pthread_t id;
   2767         if (pthread_attr_init(&attr)) exit(-1);
   2768         if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
   2769         if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
   2770         exit(0);
   2771       }]])],
   2772       [ac_cv_pthread_system_supported=yes],
   2773       [ac_cv_pthread_system_supported=no],
   2774       [ac_cv_pthread_system_supported=no])
   2775       ])
   2776       AC_MSG_RESULT($ac_cv_pthread_system_supported)
   2777       if test "$ac_cv_pthread_system_supported" = "yes"; then
   2778         AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
   2779       fi
   2780       AC_CHECK_FUNCS(pthread_sigmask,
   2781         [case $ac_sys_system in
   2782         CYGWIN*)
   2783           AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
   2784             [Define if pthread_sigmask() does not work on your system.])
   2785             ;;
   2786         esac])
   2787       AC_CHECK_FUNCS(pthread_atfork)
   2788 fi
   2789 
   2790 
   2791 # Check for enable-ipv6
   2792 AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
   2793 AC_MSG_CHECKING([if --enable-ipv6 is specified])
   2794 AC_ARG_ENABLE(ipv6,
   2795 [  --enable-ipv6           Enable ipv6 (with ipv4) support
   2796   --disable-ipv6          Disable ipv6 support],
   2797 [ case "$enableval" in
   2798   no)
   2799        AC_MSG_RESULT(no)
   2800        ipv6=no
   2801        ;;
   2802   *)   AC_MSG_RESULT(yes)
   2803        AC_DEFINE(ENABLE_IPV6)
   2804        ipv6=yes
   2805        ;;
   2806   esac ],
   2807 
   2808 [
   2809 dnl the check does not work on cross compilation case...
   2810   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* AF_INET6 available check */
   2811 #include <sys/types.h>
   2812 #include <sys/socket.h>]],
   2813 [[int domain = AF_INET6;]])],[
   2814   AC_MSG_RESULT(yes)
   2815   ipv6=yes
   2816 ],[
   2817   AC_MSG_RESULT(no)
   2818   ipv6=no
   2819 ])
   2820 
   2821 if test "$ipv6" = "yes"; then
   2822 	AC_MSG_CHECKING(if RFC2553 API is available)
   2823 	AC_COMPILE_IFELSE([
   2824 	  AC_LANG_PROGRAM([[#include <sys/types.h>
   2825 #include <netinet/in.h>]],
   2826 			  [[struct sockaddr_in6 x;
   2827 			    x.sin6_scope_id;]])
   2828 	],[
   2829 	  AC_MSG_RESULT(yes)
   2830 	  ipv6=yes
   2831 	],[
   2832 	  AC_MSG_RESULT(no, IPv6 disabled)
   2833 	  ipv6=no
   2834 	])
   2835 fi
   2836 
   2837 if test "$ipv6" = "yes"; then
   2838 	AC_DEFINE(ENABLE_IPV6)
   2839 fi
   2840 ])
   2841 
   2842 ipv6type=unknown
   2843 ipv6lib=none
   2844 ipv6trylibc=no
   2845 
   2846 if test "$ipv6" = "yes"; then
   2847 	AC_MSG_CHECKING([ipv6 stack type])
   2848 	for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
   2849 	do
   2850 		case $i in
   2851 		inria)
   2852 			dnl http://www.kame.net/
   2853 			AC_EGREP_CPP(yes, [
   2854 #include <netinet/in.h>
   2855 #ifdef IPV6_INRIA_VERSION
   2856 yes
   2857 #endif],
   2858 				[ipv6type=$i])
   2859 			;;
   2860 		kame)
   2861 			dnl http://www.kame.net/
   2862 			AC_EGREP_CPP(yes, [
   2863 #include <netinet/in.h>
   2864 #ifdef __KAME__
   2865 yes
   2866 #endif],
   2867 				[ipv6type=$i;
   2868 				ipv6lib=inet6
   2869 				ipv6libdir=/usr/local/v6/lib
   2870 				ipv6trylibc=yes])
   2871 			;;
   2872 		linux-glibc)
   2873 			dnl http://www.v6.linux.or.jp/
   2874 			AC_EGREP_CPP(yes, [
   2875 #include <features.h>
   2876 #if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
   2877 yes
   2878 #endif],
   2879 				[ipv6type=$i;
   2880 				ipv6trylibc=yes])
   2881 			;;
   2882 		linux-inet6)
   2883 			dnl http://www.v6.linux.or.jp/
   2884 			if test -d /usr/inet6; then
   2885 				ipv6type=$i
   2886 				ipv6lib=inet6
   2887 				ipv6libdir=/usr/inet6/lib
   2888 				BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
   2889 			fi
   2890 			;;
   2891 		solaris)
   2892 			if test -f /etc/netconfig; then
   2893                           if $GREP -q tcp6 /etc/netconfig; then
   2894 				ipv6type=$i
   2895 				ipv6trylibc=yes
   2896                           fi
   2897                         fi
   2898 			;;
   2899 		toshiba)
   2900 			AC_EGREP_CPP(yes, [
   2901 #include <sys/param.h>
   2902 #ifdef _TOSHIBA_INET6
   2903 yes
   2904 #endif],
   2905 				[ipv6type=$i;
   2906 				ipv6lib=inet6;
   2907 				ipv6libdir=/usr/local/v6/lib])
   2908 			;;
   2909 		v6d)
   2910 			AC_EGREP_CPP(yes, [
   2911 #include </usr/local/v6/include/sys/v6config.h>
   2912 #ifdef __V6D__
   2913 yes
   2914 #endif],
   2915 				[ipv6type=$i;
   2916 				ipv6lib=v6;
   2917 				ipv6libdir=/usr/local/v6/lib;
   2918 				BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
   2919 			;;
   2920 		zeta)
   2921 			AC_EGREP_CPP(yes, [
   2922 #include <sys/param.h>
   2923 #ifdef _ZETA_MINAMI_INET6
   2924 yes
   2925 #endif],
   2926 				[ipv6type=$i;
   2927 				ipv6lib=inet6;
   2928 				ipv6libdir=/usr/local/v6/lib])
   2929 			;;
   2930 		esac
   2931 		if test "$ipv6type" != "unknown"; then
   2932 			break
   2933 		fi
   2934 	done
   2935 	AC_MSG_RESULT($ipv6type)
   2936 fi
   2937 
   2938 if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
   2939 	if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
   2940 		LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
   2941 		echo "using lib$ipv6lib"
   2942 	else
   2943 		if test $ipv6trylibc = "yes"; then
   2944 			echo "using libc"
   2945 		else
   2946 			echo 'Fatal: no $ipv6lib library found.  cannot continue.'
   2947 			echo "You need to fetch lib$ipv6lib.a from appropriate"
   2948 			echo 'ipv6 kit and compile beforehand.'
   2949 			exit 1
   2950 		fi
   2951 	fi
   2952 fi
   2953 
   2954 AC_MSG_CHECKING(for OSX 10.5 SDK or later)
   2955 AC_COMPILE_IFELSE([
   2956   AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
   2957 ],[
   2958   AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
   2959   AC_MSG_RESULT(yes)
   2960 ],[
   2961   AC_MSG_RESULT(no)
   2962 ])
   2963 
   2964 # Check for --with-doc-strings
   2965 AC_MSG_CHECKING(for --with-doc-strings)
   2966 AC_ARG_WITH(doc-strings,
   2967             AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
   2968 
   2969 if test -z "$with_doc_strings"
   2970 then with_doc_strings="yes"
   2971 fi
   2972 if test "$with_doc_strings" != "no"
   2973 then
   2974     AC_DEFINE(WITH_DOC_STRINGS, 1,
   2975       [Define if you want documentation strings in extension modules])
   2976 fi
   2977 AC_MSG_RESULT($with_doc_strings)
   2978 
   2979 # Check for Python-specific malloc support
   2980 AC_MSG_CHECKING(for --with-tsc)
   2981 AC_ARG_WITH(tsc,
   2982 	    AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
   2983 if test "$withval" != no
   2984 then 
   2985   AC_DEFINE(WITH_TSC, 1, 
   2986     [Define to profile with the Pentium timestamp counter]) 
   2987     AC_MSG_RESULT(yes)
   2988 else AC_MSG_RESULT(no)
   2989 fi],
   2990 [AC_MSG_RESULT(no)])
   2991 
   2992 # Check for Python-specific malloc support
   2993 AC_MSG_CHECKING(for --with-pymalloc)
   2994 AC_ARG_WITH(pymalloc,
   2995             AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
   2996 
   2997 if test -z "$with_pymalloc"
   2998 then with_pymalloc="yes"
   2999 fi
   3000 if test "$with_pymalloc" != "no"
   3001 then
   3002     AC_DEFINE(WITH_PYMALLOC, 1, 
   3003      [Define if you want to compile in Python-specific mallocs])
   3004 fi
   3005 AC_MSG_RESULT($with_pymalloc)
   3006 
   3007 # Check for Valgrind support
   3008 AC_MSG_CHECKING([for --with-valgrind])
   3009 AC_ARG_WITH([valgrind],
   3010   AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
   3011   with_valgrind=no)
   3012 AC_MSG_RESULT([$with_valgrind])
   3013 if test "$with_valgrind" != no; then
   3014     AC_CHECK_HEADER([valgrind/valgrind.h],
   3015       [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
   3016       [AC_MSG_ERROR([Valgrind support requested but headers not available])]
   3017     )
   3018 fi
   3019 
   3020 # Check for --with-wctype-functions
   3021 AC_MSG_CHECKING(for --with-wctype-functions)
   3022 AC_ARG_WITH(wctype-functions, 
   3023             AS_HELP_STRING([--with-wctype-functions], [use wctype.h functions]),
   3024 [
   3025 if test "$withval" != no
   3026 then 
   3027   AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
   3028   [Define if you want wctype.h functions to be used instead of the
   3029    one supplied by Python itself. (see Include/unicodectype.h).]) 
   3030   AC_MSG_RESULT(yes)
   3031 else AC_MSG_RESULT(no)
   3032 fi],
   3033 [AC_MSG_RESULT(no)])
   3034 
   3035 # -I${DLINCLDIR} is added to the compile rule for importdl.o
   3036 AC_SUBST(DLINCLDIR)
   3037 DLINCLDIR=.
   3038 
   3039 # the dlopen() function means we might want to use dynload_shlib.o. some
   3040 # platforms, such as AIX, have dlopen(), but don't want to use it.
   3041 AC_CHECK_FUNCS(dlopen)
   3042 
   3043 # DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
   3044 # loading of modules.
   3045 AC_SUBST(DYNLOADFILE)
   3046 AC_MSG_CHECKING(DYNLOADFILE)
   3047 if test -z "$DYNLOADFILE"
   3048 then
   3049 	case $ac_sys_system/$ac_sys_release in
   3050 	AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
   3051 	if test "$ac_cv_func_dlopen" = yes
   3052 	then DYNLOADFILE="dynload_shlib.o"
   3053 	else DYNLOADFILE="dynload_aix.o"
   3054 	fi
   3055 	;;
   3056 	BeOS*) DYNLOADFILE="dynload_beos.o";;
   3057 	hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
   3058 	# Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
   3059 	Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
   3060 	atheos*) DYNLOADFILE="dynload_atheos.o";;
   3061 	*)
   3062 	# use dynload_shlib.c and dlopen() if we have it; otherwise stub
   3063 	# out any dynamic loading
   3064 	if test "$ac_cv_func_dlopen" = yes
   3065 	then DYNLOADFILE="dynload_shlib.o"
   3066 	else DYNLOADFILE="dynload_stub.o"
   3067 	fi
   3068 	;;
   3069 	esac
   3070 fi
   3071 AC_MSG_RESULT($DYNLOADFILE)
   3072 if test "$DYNLOADFILE" != "dynload_stub.o"
   3073 then
   3074 	AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
   3075         [Defined when any dynamic module loading is enabled.])
   3076 fi
   3077 
   3078 # MACHDEP_OBJS can be set to platform-specific object files needed by Python
   3079 
   3080 AC_SUBST(MACHDEP_OBJS)
   3081 AC_MSG_CHECKING(MACHDEP_OBJS)
   3082 if test -z "$MACHDEP_OBJS"
   3083 then
   3084 	MACHDEP_OBJS=$extra_machdep_objs
   3085 else
   3086 	MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
   3087 fi
   3088 AC_MSG_RESULT(MACHDEP_OBJS)
   3089 
   3090 # checks for library functions
   3091 AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
   3092  clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
   3093  gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
   3094  getentropy \
   3095  getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
   3096  initgroups kill killpg lchmod lchown lstat mkfifo mknod mktime mmap \
   3097  mremap nice pathconf pause plock poll pthread_init \
   3098  putenv readlink realpath \
   3099  select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
   3100  setgid \
   3101  setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
   3102  setlocale setregid setreuid setresuid setresgid \
   3103  setsid setpgid setpgrp setuid setvbuf snprintf \
   3104  sigaction siginterrupt sigrelse strftime \
   3105  sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
   3106  truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
   3107 
   3108 # For some functions, having a definition is not sufficient, since
   3109 # we want to take their address.
   3110 AC_MSG_CHECKING(for chroot)
   3111 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
   3112   [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
   3113    AC_MSG_RESULT(yes)],
   3114   [AC_MSG_RESULT(no)
   3115 ])
   3116 AC_MSG_CHECKING(for link)
   3117 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
   3118   [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
   3119    AC_MSG_RESULT(yes)],
   3120   [AC_MSG_RESULT(no)
   3121 ])
   3122 AC_MSG_CHECKING(for symlink)
   3123 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
   3124   [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
   3125    AC_MSG_RESULT(yes)],
   3126   [AC_MSG_RESULT(no)
   3127 ])
   3128 AC_MSG_CHECKING(for fchdir)
   3129 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
   3130   [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
   3131    AC_MSG_RESULT(yes)],
   3132   [AC_MSG_RESULT(no)
   3133 ])
   3134 AC_MSG_CHECKING(for fsync)
   3135 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
   3136   [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
   3137    AC_MSG_RESULT(yes)],
   3138   [AC_MSG_RESULT(no)
   3139 ])
   3140 AC_MSG_CHECKING(for fdatasync)
   3141 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
   3142   [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
   3143    AC_MSG_RESULT(yes)],
   3144   [AC_MSG_RESULT(no)
   3145 ])
   3146 AC_MSG_CHECKING(for epoll)
   3147 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
   3148   [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
   3149    AC_MSG_RESULT(yes)],
   3150   [AC_MSG_RESULT(no)
   3151 ])
   3152 AC_MSG_CHECKING(for kqueue)
   3153 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3154 #include <sys/types.h>
   3155 #include <sys/event.h>
   3156     ]], [[int x=kqueue()]])],
   3157   [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
   3158    AC_MSG_RESULT(yes)],
   3159   [AC_MSG_RESULT(no)
   3160 ])
   3161 # On some systems (eg. FreeBSD 5), we would find a definition of the
   3162 # functions ctermid_r, setgroups in the library, but no prototype
   3163 # (e.g. because we use _XOPEN_SOURCE). See whether we can take their
   3164 # address to avoid compiler warnings and potential miscompilations
   3165 # because of the missing prototypes.
   3166 
   3167 AC_MSG_CHECKING(for ctermid_r)
   3168 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3169 #include <stdio.h>
   3170 ]], [[void* p = ctermid_r]])],
   3171   [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
   3172    AC_MSG_RESULT(yes)],
   3173   [AC_MSG_RESULT(no)
   3174 ])
   3175 
   3176 AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
   3177   [AC_COMPILE_IFELSE(
   3178     [AC_LANG_PROGRAM(
   3179       [#include <sys/file.h>],
   3180       [void* p = flock]
   3181     )],
   3182     [ac_cv_flock_decl=yes],
   3183     [ac_cv_flock_decl=no]
   3184   )
   3185 ])
   3186 if test "x${ac_cv_flock_decl}" = xyes; then
   3187   AC_CHECK_FUNCS(flock,,
   3188     AC_CHECK_LIB(bsd,flock,
   3189       [AC_DEFINE(HAVE_FLOCK)
   3190        AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
   3191     ])
   3192   )
   3193 fi
   3194 
   3195 AC_MSG_CHECKING(for getpagesize)
   3196 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3197 #include <unistd.h>
   3198 ]], [[void* p = getpagesize]])],
   3199   [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
   3200    AC_MSG_RESULT(yes)],
   3201   [AC_MSG_RESULT(no)
   3202 ])
   3203 
   3204 AC_MSG_CHECKING(for broken unsetenv)
   3205 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3206 #include <stdlib.h>
   3207 ]], [[int res = unsetenv("DUMMY")]])],
   3208   [AC_MSG_RESULT(no)],
   3209   [AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, Define if `unsetenv` does not return an int.)
   3210    AC_MSG_RESULT(yes)
   3211 ])
   3212 
   3213 dnl check for true
   3214 AC_CHECK_PROGS(TRUE, true, /bin/true)
   3215 
   3216 dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
   3217 dnl On others, they are in the C library, so we to take no action
   3218 AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
   3219   AC_CHECK_LIB(resolv, inet_aton)
   3220 )
   3221 
   3222 # On Tru64, chflags seems to be present, but calling it will
   3223 # exit Python
   3224 AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
   3225 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   3226 #include <sys/stat.h>
   3227 #include <unistd.h>
   3228 int main(int argc, char*argv[])
   3229 {
   3230   if(chflags(argv[0], 0) != 0)
   3231     return 1;
   3232   return 0;
   3233 }
   3234 ]])],
   3235 [ac_cv_have_chflags=yes],
   3236 [ac_cv_have_chflags=no],
   3237 [ac_cv_have_chflags=cross])
   3238 ])
   3239 if test "$ac_cv_have_chflags" = cross ; then
   3240   AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
   3241 fi
   3242 if test "$ac_cv_have_chflags" = yes ; then
   3243   AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.])
   3244 fi
   3245 
   3246 AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
   3247 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   3248 #include <sys/stat.h>
   3249 #include <unistd.h>
   3250 int main(int argc, char*argv[])
   3251 {
   3252   if(lchflags(argv[0], 0) != 0)
   3253     return 1;
   3254   return 0;
   3255 }
   3256 ]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
   3257 ])
   3258 if test "$ac_cv_have_lchflags" = cross ; then
   3259   AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
   3260 fi
   3261 if test "$ac_cv_have_lchflags" = yes ; then
   3262   AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.])
   3263 fi
   3264 
   3265 dnl Check if system zlib has *Copy() functions
   3266 dnl
   3267 dnl On MacOSX the linker will search for dylibs on the entire linker path
   3268 dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
   3269 dnl to revert to a more traditional unix behaviour and make it possible to
   3270 dnl override the system libz with a local static library of libz. Temporarily
   3271 dnl add that flag to our CFLAGS as well to ensure that we check the version
   3272 dnl of libz that will be used by setup.py. 
   3273 dnl The -L/usr/local/lib is needed as wel to get the same compilation 
   3274 dnl environment as setup.py (and leaving it out can cause configure to use the
   3275 dnl wrong version of the library)
   3276 case $ac_sys_system/$ac_sys_release in
   3277 Darwin/*) 
   3278 	_CUR_CFLAGS="${CFLAGS}"
   3279 	_CUR_LDFLAGS="${LDFLAGS}"
   3280 	CFLAGS="${CFLAGS} -Wl,-search_paths_first"
   3281 	LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
   3282 	;;
   3283 esac
   3284 
   3285 AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
   3286 
   3287 case $ac_sys_system/$ac_sys_release in
   3288 Darwin/*) 
   3289 	CFLAGS="${_CUR_CFLAGS}"
   3290 	LDFLAGS="${_CUR_LDFLAGS}"
   3291 	;;
   3292 esac
   3293 
   3294 AC_MSG_CHECKING(for hstrerror)
   3295 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
   3296 #include <netdb.h>
   3297 ]], [[void* p = hstrerror; hstrerror(0)]])],
   3298   [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
   3299    AC_MSG_RESULT(yes)],
   3300   [AC_MSG_RESULT(no)
   3301 ])
   3302 
   3303 AC_MSG_CHECKING(for inet_aton)
   3304 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
   3305 #include <sys/types.h>
   3306 #include <sys/socket.h>
   3307 #include <netinet/in.h>
   3308 #include <arpa/inet.h>
   3309 ]], [[void* p = inet_aton;inet_aton(0,0)]])],
   3310   [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
   3311    AC_MSG_RESULT(yes)],
   3312   [AC_MSG_RESULT(no)
   3313 ])
   3314 
   3315 AC_MSG_CHECKING(for inet_pton)
   3316 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3317 #include <sys/types.h>
   3318 #include <sys/socket.h>
   3319 #include <netinet/in.h>
   3320 #include <arpa/inet.h>
   3321 ]], [[void* p = inet_pton]])],
   3322   [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
   3323    AC_MSG_RESULT(yes)],
   3324   [AC_MSG_RESULT(no)
   3325 ])
   3326 
   3327 # On some systems, setgroups is in unistd.h, on others, in grp.h
   3328 AC_MSG_CHECKING(for setgroups)
   3329 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3330 #include <unistd.h>
   3331 #ifdef HAVE_GRP_H
   3332 #include <grp.h>
   3333 #endif
   3334 ]], [[void* p = setgroups]])],
   3335   [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
   3336    AC_MSG_RESULT(yes)],
   3337   [AC_MSG_RESULT(no)
   3338 ])
   3339 
   3340 # check for openpty and forkpty
   3341 
   3342 AC_CHECK_FUNCS(openpty,, 
   3343    AC_CHECK_LIB(util,openpty,
   3344      [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
   3345      AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
   3346    )
   3347 )
   3348 AC_CHECK_FUNCS(forkpty,, 
   3349    AC_CHECK_LIB(util,forkpty, 
   3350      [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
   3351      AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
   3352    )
   3353 )
   3354 
   3355 # Stuff for expat.
   3356 AC_CHECK_FUNCS(memmove)
   3357 
   3358 # check for long file support functions
   3359 AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
   3360 
   3361 AC_REPLACE_FUNCS(dup2 getcwd strdup)
   3362 AC_CHECK_FUNCS(getpgrp, 
   3363   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
   3364     [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
   3365     [])
   3366 )
   3367 AC_CHECK_FUNCS(setpgrp,
   3368   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
   3369     [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
   3370     [])
   3371 )
   3372 AC_CHECK_FUNCS(gettimeofday, 
   3373   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
   3374   				     [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
   3375     [],
   3376     [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
   3377       [Define if gettimeofday() does not have second (timezone) argument
   3378        This is the case on Motorola V4 (R40V4.2)])
   3379     ])
   3380 )
   3381 
   3382 AC_MSG_CHECKING(for major, minor, and makedev)
   3383 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
   3384 #if defined(MAJOR_IN_MKDEV)
   3385 #include <sys/mkdev.h>
   3386 #elif defined(MAJOR_IN_SYSMACROS)
   3387 #include <sys/sysmacros.h>
   3388 #else
   3389 #include <sys/types.h>
   3390 #endif
   3391 ]], [[
   3392   makedev(major(0),minor(0));
   3393 ]])],[
   3394   AC_DEFINE(HAVE_DEVICE_MACROS, 1,
   3395 	    [Define to 1 if you have the device macros.])
   3396   AC_MSG_RESULT(yes)
   3397 ],[
   3398   AC_MSG_RESULT(no)
   3399 ])
   3400 
   3401 # On OSF/1 V5.1, getaddrinfo is available, but a define
   3402 # for [no]getaddrinfo in netdb.h. 
   3403 AC_MSG_CHECKING(for getaddrinfo)
   3404 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
   3405 #include <sys/types.h>
   3406 #include <sys/socket.h>
   3407 #include <netdb.h>
   3408 #include <stdio.h>
   3409 ]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
   3410 [have_getaddrinfo=yes],
   3411 [have_getaddrinfo=no])
   3412 AC_MSG_RESULT($have_getaddrinfo)
   3413 if test $have_getaddrinfo = yes
   3414 then
   3415   AC_MSG_CHECKING(getaddrinfo bug)
   3416   AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
   3417   AC_RUN_IFELSE([AC_LANG_SOURCE([[[
   3418 #include <stdio.h>
   3419 #include <sys/types.h>
   3420 #include <netdb.h>
   3421 #include <string.h>
   3422 #include <sys/socket.h>
   3423 #include <netinet/in.h>
   3424 
   3425 int main()
   3426 {
   3427   int passive, gaierr, inet4 = 0, inet6 = 0;
   3428   struct addrinfo hints, *ai, *aitop;
   3429   char straddr[INET6_ADDRSTRLEN], strport[16];
   3430 
   3431   for (passive = 0; passive <= 1; passive++) {
   3432     memset(&hints, 0, sizeof(hints));
   3433     hints.ai_family = AF_UNSPEC;
   3434     hints.ai_flags = passive ? AI_PASSIVE : 0;
   3435     hints.ai_socktype = SOCK_STREAM;
   3436     hints.ai_protocol = IPPROTO_TCP;
   3437     if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
   3438       (void)gai_strerror(gaierr);
   3439       goto bad;
   3440     }
   3441     for (ai = aitop; ai; ai = ai->ai_next) {
   3442       if (ai->ai_addr == NULL ||
   3443           ai->ai_addrlen == 0 ||
   3444           getnameinfo(ai->ai_addr, ai->ai_addrlen,
   3445                       straddr, sizeof(straddr), strport, sizeof(strport),
   3446                       NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
   3447         goto bad;
   3448       }
   3449       switch (ai->ai_family) {
   3450       case AF_INET:
   3451         if (strcmp(strport, "54321") != 0) {
   3452           goto bad;
   3453         }
   3454         if (passive) {
   3455           if (strcmp(straddr, "0.0.0.0") != 0) {
   3456             goto bad;
   3457           }
   3458         } else {
   3459           if (strcmp(straddr, "127.0.0.1") != 0) {
   3460             goto bad;
   3461           }
   3462         }
   3463         inet4++;
   3464         break;
   3465       case AF_INET6:
   3466         if (strcmp(strport, "54321") != 0) {
   3467           goto bad;
   3468         }
   3469         if (passive) {
   3470           if (strcmp(straddr, "::") != 0) {
   3471             goto bad;
   3472           }
   3473         } else {
   3474           if (strcmp(straddr, "::1") != 0) {
   3475             goto bad;
   3476           }
   3477         }
   3478         inet6++;
   3479         break;
   3480       case AF_UNSPEC:
   3481         goto bad;
   3482         break;
   3483       default:
   3484         /* another family support? */
   3485         break;
   3486       }
   3487     }
   3488     freeaddrinfo(aitop);
   3489     aitop = NULL;
   3490   }
   3491 
   3492   if (!(inet4 == 0 || inet4 == 2))
   3493     goto bad;
   3494   if (!(inet6 == 0 || inet6 == 2))
   3495     goto bad;
   3496 
   3497   if (aitop)
   3498     freeaddrinfo(aitop);
   3499   return 0;
   3500 
   3501  bad:
   3502   if (aitop)
   3503     freeaddrinfo(aitop);
   3504   return 1;
   3505 }
   3506 ]]])],
   3507 [ac_cv_buggy_getaddrinfo=no],
   3508 [ac_cv_buggy_getaddrinfo=yes],
   3509 [
   3510 if test "${enable_ipv6+set}" = set; then
   3511   ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6"
   3512 else
   3513   ac_cv_buggy_getaddrinfo=yes
   3514 fi]))
   3515 fi
   3516 
   3517 AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
   3518 
   3519 if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
   3520 then
   3521 	if test $ipv6 = yes
   3522 	then
   3523 		echo 'Fatal: You must get working getaddrinfo() function.'
   3524 		echo '       or you can specify "--disable-ipv6"'.
   3525 		exit 1
   3526 	fi
   3527 else
   3528 	AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
   3529 fi
   3530 
   3531 AC_CHECK_FUNCS(getnameinfo)
   3532 
   3533 # checks for structures
   3534 AC_HEADER_TIME
   3535 AC_STRUCT_TM
   3536 AC_STRUCT_TIMEZONE
   3537 AC_CHECK_MEMBERS([struct stat.st_rdev])
   3538 AC_CHECK_MEMBERS([struct stat.st_blksize])
   3539 AC_CHECK_MEMBERS([struct stat.st_flags])
   3540 AC_CHECK_MEMBERS([struct stat.st_gen])
   3541 AC_CHECK_MEMBERS([struct stat.st_birthtime])
   3542 AC_CHECK_MEMBERS([struct stat.st_blocks])
   3543 
   3544 AC_MSG_CHECKING(for time.h that defines altzone)
   3545 AC_CACHE_VAL(ac_cv_header_time_altzone,[
   3546   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
   3547     [ac_cv_header_time_altzone=yes],
   3548     [ac_cv_header_time_altzone=no])
   3549   ])
   3550 AC_MSG_RESULT($ac_cv_header_time_altzone)
   3551 if test $ac_cv_header_time_altzone = yes; then
   3552   AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
   3553 fi
   3554 
   3555 was_it_defined=no
   3556 AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
   3557 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3558 #include <sys/types.h>
   3559 #include <sys/select.h>
   3560 #include <sys/time.h>
   3561 ]], [[;]])],[
   3562   AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
   3563   [Define if  you can safely include both <sys/select.h> and <sys/time.h>
   3564    (which you can't on SCO ODT 3.0).]) 
   3565   was_it_defined=yes
   3566 ],[])
   3567 AC_MSG_RESULT($was_it_defined)
   3568 
   3569 AC_MSG_CHECKING(for addrinfo)
   3570 AC_CACHE_VAL(ac_cv_struct_addrinfo,
   3571 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
   3572   [ac_cv_struct_addrinfo=yes],
   3573   [ac_cv_struct_addrinfo=no]))
   3574 AC_MSG_RESULT($ac_cv_struct_addrinfo)
   3575 if test $ac_cv_struct_addrinfo = yes; then
   3576 	AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
   3577 fi
   3578 
   3579 AC_MSG_CHECKING(for sockaddr_storage)
   3580 AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
   3581 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3582 #		include <sys/types.h>
   3583 #		include <sys/socket.h>]], [[struct sockaddr_storage s]])],
   3584   [ac_cv_struct_sockaddr_storage=yes],
   3585   [ac_cv_struct_sockaddr_storage=no]))
   3586 AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
   3587 if test $ac_cv_struct_sockaddr_storage = yes; then
   3588 	AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
   3589 fi
   3590 
   3591 # checks for compiler characteristics
   3592 
   3593 AC_C_CHAR_UNSIGNED
   3594 AC_C_CONST
   3595 
   3596 works=no
   3597 AC_MSG_CHECKING(for working volatile)
   3598 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
   3599   [works=yes],
   3600   [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
   3601 )
   3602 AC_MSG_RESULT($works)
   3603 
   3604 works=no
   3605 AC_MSG_CHECKING(for working signed char)
   3606 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
   3607   [works=yes],
   3608   [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
   3609 )
   3610 AC_MSG_RESULT($works)
   3611 
   3612 have_prototypes=no
   3613 AC_MSG_CHECKING(for prototypes)
   3614 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
   3615   [AC_DEFINE(HAVE_PROTOTYPES, 1, 
   3616      [Define if your compiler supports function prototype]) 
   3617    have_prototypes=yes],
   3618   []
   3619 )
   3620 AC_MSG_RESULT($have_prototypes)
   3621 
   3622 works=no
   3623 AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
   3624 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3625 #include <stdarg.h>
   3626 int foo(int x, ...) {
   3627 	va_list va;
   3628 	va_start(va, x);
   3629 	va_arg(va, int);
   3630 	va_arg(va, char *);
   3631 	va_arg(va, double);
   3632 	return 0;
   3633 }
   3634 ]], [[return foo(10, "", 3.14);]])],[
   3635   AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
   3636    [Define if your compiler supports variable length function prototypes
   3637    (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>]) 
   3638   works=yes
   3639 ],[])
   3640 AC_MSG_RESULT($works)
   3641 
   3642 # check for socketpair
   3643 AC_MSG_CHECKING(for socketpair)
   3644 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3645 #include <sys/types.h>
   3646 #include <sys/socket.h>
   3647 ]], [[void *x=socketpair]])],
   3648   [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
   3649    AC_MSG_RESULT(yes)],
   3650   [AC_MSG_RESULT(no)]
   3651 )
   3652 
   3653 # check if sockaddr has sa_len member
   3654 AC_MSG_CHECKING(if sockaddr has sa_len member)
   3655 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
   3656 #include <sys/socket.h>]], [[struct sockaddr x;
   3657 x.sa_len = 0;]])],
   3658   [AC_MSG_RESULT(yes)
   3659    AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
   3660   [AC_MSG_RESULT(no)]
   3661 )
   3662 
   3663 va_list_is_array=no
   3664 AC_MSG_CHECKING(whether va_list is an array)
   3665 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3666 #ifdef HAVE_STDARG_PROTOTYPES
   3667 #include <stdarg.h>
   3668 #else
   3669 #include <varargs.h>
   3670 #endif
   3671 ]], [[va_list list1, list2; list1 = list2;]])],[],[
   3672  AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind]) 
   3673  va_list_is_array=yes
   3674 ])
   3675 AC_MSG_RESULT($va_list_is_array)
   3676 
   3677 # sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
   3678 AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
   3679   [Define this if you have some version of gethostbyname_r()])
   3680 
   3681 AC_CHECK_FUNC(gethostbyname_r, [
   3682   AC_DEFINE(HAVE_GETHOSTBYNAME_R)
   3683   AC_MSG_CHECKING([gethostbyname_r with 6 args])
   3684   OLD_CFLAGS=$CFLAGS
   3685   CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
   3686   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3687 #   include <netdb.h>
   3688   ]], [[
   3689     char *name;
   3690     struct hostent *he, *res;
   3691     char buffer[2048];
   3692     int buflen = 2048;
   3693     int h_errnop;
   3694 
   3695     (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
   3696   ]])],[
   3697     AC_DEFINE(HAVE_GETHOSTBYNAME_R)
   3698     AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
   3699     [Define this if you have the 6-arg version of gethostbyname_r().])
   3700     AC_MSG_RESULT(yes)
   3701   ],[
   3702     AC_MSG_RESULT(no)
   3703     AC_MSG_CHECKING([gethostbyname_r with 5 args])
   3704     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3705 #       include <netdb.h>
   3706       ]], [[
   3707         char *name;
   3708         struct hostent *he;
   3709         char buffer[2048];
   3710         int buflen = 2048;
   3711         int h_errnop;
   3712 
   3713         (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
   3714       ]])],
   3715       [
   3716         AC_DEFINE(HAVE_GETHOSTBYNAME_R)
   3717         AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
   3718           [Define this if you have the 5-arg version of gethostbyname_r().])
   3719         AC_MSG_RESULT(yes)
   3720       ], [
   3721         AC_MSG_RESULT(no)
   3722         AC_MSG_CHECKING([gethostbyname_r with 3 args])
   3723         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   3724 #           include <netdb.h>
   3725           ]], [[
   3726             char *name;
   3727             struct hostent *he;
   3728             struct hostent_data data;
   3729 
   3730             (void) gethostbyname_r(name, he, &data);
   3731           ]])],
   3732           [
   3733             AC_DEFINE(HAVE_GETHOSTBYNAME_R)
   3734             AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
   3735               [Define this if you have the 3-arg version of gethostbyname_r().])
   3736             AC_MSG_RESULT(yes)
   3737           ], [
   3738            AC_MSG_RESULT(no)
   3739         ])
   3740     ])
   3741   ])
   3742   CFLAGS=$OLD_CFLAGS
   3743 ], [
   3744   AC_CHECK_FUNCS(gethostbyname)
   3745 ])
   3746 AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
   3747 AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
   3748 AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
   3749 AC_SUBST(HAVE_GETHOSTBYNAME_R)
   3750 AC_SUBST(HAVE_GETHOSTBYNAME)
   3751 
   3752 # checks for system services
   3753 # (none yet)
   3754 
   3755 # Linux requires this for correct f.p. operations
   3756 AC_CHECK_FUNC(__fpu_control,
   3757   [],
   3758   [AC_CHECK_LIB(ieee, __fpu_control)
   3759 ])
   3760 
   3761 # Check for --with-fpectl
   3762 AC_MSG_CHECKING(for --with-fpectl)
   3763 AC_ARG_WITH(fpectl,
   3764             AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
   3765 [
   3766 if test "$withval" != no
   3767 then 
   3768   AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
   3769   [Define if you want SIGFPE handled (see Include/pyfpe.h).]) 
   3770   AC_MSG_RESULT(yes)
   3771 else AC_MSG_RESULT(no)
   3772 fi],
   3773 [AC_MSG_RESULT(no)])
   3774 
   3775 # check for --with-libm=...
   3776 AC_SUBST(LIBM)
   3777 case $ac_sys_system in
   3778 Darwin) ;;
   3779 BeOS) ;;
   3780 *) LIBM=-lm
   3781 esac
   3782 AC_MSG_CHECKING(for --with-libm=STRING)
   3783 AC_ARG_WITH(libm,
   3784             AS_HELP_STRING([--with-libm=STRING], [math library]),
   3785 [
   3786 if test "$withval" = no
   3787 then LIBM=
   3788      AC_MSG_RESULT(force LIBM empty)
   3789 elif test "$withval" != yes
   3790 then LIBM=$withval
   3791      AC_MSG_RESULT(set LIBM="$withval")
   3792 else AC_MSG_ERROR([proper usage is --with-libm=STRING])
   3793 fi],
   3794 [AC_MSG_RESULT(default LIBM="$LIBM")])
   3795 
   3796 # check for --with-libc=...
   3797 AC_SUBST(LIBC)
   3798 AC_MSG_CHECKING(for --with-libc=STRING)
   3799 AC_ARG_WITH(libc,
   3800             AS_HELP_STRING([--with-libc=STRING], [C library]),
   3801 [
   3802 if test "$withval" = no
   3803 then LIBC=
   3804      AC_MSG_RESULT(force LIBC empty)
   3805 elif test "$withval" != yes
   3806 then LIBC=$withval
   3807      AC_MSG_RESULT(set LIBC="$withval")
   3808 else AC_MSG_ERROR([proper usage is --with-libc=STRING])
   3809 fi],
   3810 [AC_MSG_RESULT(default LIBC="$LIBC")])
   3811 
   3812 # **************************************************
   3813 # * Check for various properties of floating point *
   3814 # **************************************************
   3815 
   3816 AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
   3817 AC_CACHE_VAL(ac_cv_little_endian_double, [
   3818 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   3819 #include <string.h>
   3820 int main() {
   3821     double x = 9006104071832581.0;
   3822     if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
   3823         return 0;
   3824     else
   3825         return 1;
   3826 }
   3827 ]])],
   3828 [ac_cv_little_endian_double=yes],
   3829 [ac_cv_little_endian_double=no],
   3830 [ac_cv_little_endian_double=no])])
   3831 AC_MSG_RESULT($ac_cv_little_endian_double)
   3832 if test "$ac_cv_little_endian_double" = yes
   3833 then
   3834   AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
   3835   [Define if C doubles are 64-bit IEEE 754 binary format, stored
   3836    with the least significant byte first])
   3837 fi
   3838 
   3839 AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
   3840 AC_CACHE_VAL(ac_cv_big_endian_double, [
   3841 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   3842 #include <string.h>
   3843 int main() {
   3844     double x = 9006104071832581.0;
   3845     if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
   3846         return 0;
   3847     else
   3848         return 1;
   3849 }
   3850 ]])],
   3851 [ac_cv_big_endian_double=yes],
   3852 [ac_cv_big_endian_double=no],
   3853 [ac_cv_big_endian_double=no])])
   3854 AC_MSG_RESULT($ac_cv_big_endian_double)
   3855 if test "$ac_cv_big_endian_double" = yes
   3856 then
   3857   AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
   3858   [Define if C doubles are 64-bit IEEE 754 binary format, stored
   3859    with the most significant byte first])
   3860 fi
   3861 
   3862 # Some ARM platforms use a mixed-endian representation for doubles.
   3863 # While Python doesn't currently have full support for these platforms
   3864 # (see e.g., issue 1762561), we can at least make sure that float <-> string
   3865 # conversions work.
   3866 AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
   3867 AC_CACHE_VAL(ac_cv_mixed_endian_double, [
   3868 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   3869 #include <string.h>
   3870 int main() {
   3871     double x = 9006104071832581.0;
   3872     if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
   3873         return 0;
   3874     else
   3875         return 1;
   3876 }
   3877 ]])],
   3878 [ac_cv_mixed_endian_double=yes],
   3879 [ac_cv_mixed_endian_double=no],
   3880 [ac_cv_mixed_endian_double=no])])
   3881 AC_MSG_RESULT($ac_cv_mixed_endian_double)
   3882 if test "$ac_cv_mixed_endian_double" = yes
   3883 then
   3884   AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
   3885   [Define if C doubles are 64-bit IEEE 754 binary format, stored
   3886    in ARM mixed-endian order (byte order 45670123)])
   3887 fi
   3888 
   3889 # The short float repr introduced in Python 3.1 requires the
   3890 # correctly-rounded string <-> double conversion functions from
   3891 # Python/dtoa.c, which in turn require that the FPU uses 53-bit
   3892 # rounding; this is a problem on x86, where the x87 FPU has a default
   3893 # rounding precision of 64 bits.  For gcc/x86, we can fix this by
   3894 # using inline assembler to get and set the x87 FPU control word.
   3895 
   3896 # This inline assembler syntax may also work for suncc and icc,
   3897 # so we try it on all platforms.
   3898 
   3899 AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
   3900 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
   3901   unsigned short cw;
   3902   __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
   3903   __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
   3904 ]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
   3905 AC_MSG_RESULT($have_gcc_asm_for_x87)
   3906 if test "$have_gcc_asm_for_x87" = yes
   3907 then
   3908     AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
   3909     [Define if we can use gcc inline assembler to get and set x87 control word])
   3910 fi
   3911 
   3912 # Detect whether system arithmetic is subject to x87-style double
   3913 # rounding issues.  The result of this test has little meaning on non
   3914 # IEEE 754 platforms.  On IEEE 754, test should return 1 if rounding
   3915 # mode is round-to-nearest and double rounding issues are present, and
   3916 # 0 otherwise.  See http://bugs.python.org/issue2937 for more info.
   3917 AC_MSG_CHECKING(for x87-style double rounding)
   3918 # $BASECFLAGS may affect the result
   3919 ac_save_cc="$CC"
   3920 CC="$CC $BASECFLAGS"
   3921 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   3922 #include <stdlib.h>
   3923 #include <math.h>
   3924 int main() {
   3925     volatile double x, y, z;
   3926     /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
   3927     x = 0.99999999999999989; /* 1-2**-53 */
   3928     y = 1./x;
   3929     if (y != 1.)
   3930         exit(0);
   3931     /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
   3932     x = 1e16;
   3933     y = 2.99999;
   3934     z = x + y;
   3935     if (z != 1e16+4.)
   3936         exit(0);
   3937     /* both tests show evidence of double rounding */
   3938     exit(1);
   3939 }
   3940 ]])],
   3941 [ac_cv_x87_double_rounding=no],
   3942 [ac_cv_x87_double_rounding=yes],
   3943 [ac_cv_x87_double_rounding=no])
   3944 CC="$ac_save_cc"
   3945 AC_MSG_RESULT($ac_cv_x87_double_rounding)
   3946 if test "$ac_cv_x87_double_rounding" = yes
   3947 then
   3948   AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
   3949   [Define if arithmetic is subject to x87-style double rounding issue])
   3950 fi
   3951 
   3952 # ************************************
   3953 # * Check for mathematical functions *
   3954 # ************************************
   3955 
   3956 LIBS_SAVE=$LIBS
   3957 LIBS="$LIBS $LIBM"
   3958 
   3959 # On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
   3960 # -0. on some architectures.
   3961 AC_MSG_CHECKING(whether tanh preserves the sign of zero)
   3962 AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
   3963 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   3964 #include <math.h>
   3965 #include <stdlib.h>
   3966 int main() {
   3967     /* return 0 if either negative zeros don't exist
   3968        on this platform or if negative zeros exist
   3969        and tanh(-0.) == -0. */
   3970   if (atan2(0., -1.) == atan2(-0., -1.) ||
   3971       atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
   3972   else exit(1);
   3973 }
   3974 ]])],
   3975 [ac_cv_tanh_preserves_zero_sign=yes],
   3976 [ac_cv_tanh_preserves_zero_sign=no],
   3977 [ac_cv_tanh_preserves_zero_sign=no])])
   3978 AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
   3979 if test "$ac_cv_tanh_preserves_zero_sign" = yes
   3980 then
   3981   AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
   3982   [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
   3983 fi
   3984 
   3985 AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
   3986 AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
   3987 AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
   3988 
   3989 LIBS=$LIBS_SAVE
   3990 
   3991 # For multiprocessing module, check that sem_open
   3992 # actually works.  For FreeBSD versions <= 7.2,
   3993 # the kernel module that provides POSIX semaphores
   3994 # isn't loaded by default, so an attempt to call
   3995 # sem_open results in a 'Signal 12' error.
   3996 AC_MSG_CHECKING(whether POSIX semaphores are enabled)
   3997 AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
   3998 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   3999 #include <unistd.h>
   4000 #include <fcntl.h>
   4001 #include <stdio.h>
   4002 #include <semaphore.h>
   4003 #include <sys/stat.h>
   4004 
   4005 int main(void) {
   4006   sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
   4007   if (a == SEM_FAILED) {
   4008     perror("sem_open");
   4009     return 1;
   4010   }
   4011   sem_close(a);
   4012   sem_unlink("/autoconf");
   4013   return 0;
   4014 }
   4015 ]])],
   4016 [ac_cv_posix_semaphores_enabled=yes],
   4017 [ac_cv_posix_semaphores_enabled=no],
   4018 [ac_cv_posix_semaphores_enabled=yes])
   4019 )
   4020 AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
   4021 if test $ac_cv_posix_semaphores_enabled = no
   4022 then
   4023   AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
   4024             [Define if POSIX semaphores aren't enabled on your system])
   4025 fi
   4026 
   4027 # Multiprocessing check for broken sem_getvalue
   4028 AC_MSG_CHECKING(for broken sem_getvalue)
   4029 AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
   4030 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   4031 #include <unistd.h>
   4032 #include <fcntl.h>
   4033 #include <stdio.h>
   4034 #include <semaphore.h>
   4035 #include <sys/stat.h>
   4036 
   4037 int main(void){
   4038   sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
   4039   int count;
   4040   int res;
   4041   if(a==SEM_FAILED){
   4042     perror("sem_open");
   4043     return 1;
   4044 
   4045   }
   4046   res = sem_getvalue(a, &count);
   4047   sem_close(a);
   4048   sem_unlink("/autocftw");
   4049   return res==-1 ? 1 : 0;
   4050 }
   4051 ]])],
   4052 [ac_cv_broken_sem_getvalue=no],
   4053 [ac_cv_broken_sem_getvalue=yes],
   4054 [ac_cv_broken_sem_getvalue=yes])
   4055 )
   4056 AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
   4057 if test $ac_cv_broken_sem_getvalue = yes
   4058 then
   4059   AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
   4060   [define to 1 if your sem_getvalue is broken.])
   4061 fi
   4062 
   4063 # determine what size digit to use for Python's longs
   4064 AC_MSG_CHECKING([digit size for Python's longs])
   4065 AC_ARG_ENABLE(big-digits,
   4066 AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
   4067 [case $enable_big_digits in
   4068 yes)
   4069   enable_big_digits=30 ;;
   4070 no)
   4071   enable_big_digits=15 ;;
   4072 [15|30])
   4073   ;;
   4074 *)
   4075   AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
   4076 esac
   4077 AC_MSG_RESULT($enable_big_digits)
   4078 AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
   4079 ],
   4080 [AC_MSG_RESULT(no value specified)])
   4081 
   4082 # check for wchar.h
   4083 AC_CHECK_HEADER(wchar.h, [
   4084   AC_DEFINE(HAVE_WCHAR_H, 1, 
   4085   [Define if the compiler provides a wchar.h header file.]) 
   4086   wchar_h="yes"
   4087 ],
   4088 wchar_h="no"
   4089 )
   4090 
   4091 # determine wchar_t size
   4092 if test "$wchar_h" = yes
   4093 then
   4094   AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
   4095 fi
   4096 
   4097 AC_MSG_CHECKING(for UCS-4 tcl)
   4098 have_ucs4_tcl=no
   4099 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   4100 #include <tcl.h>
   4101 #if TCL_UTF_MAX != 6
   4102 # error "NOT UCS4_TCL"
   4103 #endif]], [[]])],[
   4104   AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
   4105   have_ucs4_tcl=yes
   4106 ],[])
   4107 AC_MSG_RESULT($have_ucs4_tcl)
   4108 
   4109 # check whether wchar_t is signed or not
   4110 if test "$wchar_h" = yes
   4111 then
   4112   # check whether wchar_t is signed or not
   4113   AC_MSG_CHECKING(whether wchar_t is signed)
   4114   AC_CACHE_VAL(ac_cv_wchar_t_signed, [
   4115   AC_RUN_IFELSE([AC_LANG_SOURCE([[
   4116   #include <wchar.h>
   4117   int main()
   4118   {
   4119 	/* Success: exit code 0 */
   4120         exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
   4121   }
   4122   ]])],
   4123   [ac_cv_wchar_t_signed=yes],
   4124   [ac_cv_wchar_t_signed=no],
   4125   [ac_cv_wchar_t_signed=yes])])
   4126   AC_MSG_RESULT($ac_cv_wchar_t_signed)
   4127 fi
   4128   
   4129 AC_MSG_CHECKING(what type to use for unicode)
   4130 dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
   4131 AC_ARG_ENABLE(unicode, 
   4132               AS_HELP_STRING([--enable-unicode@<:@=ucs@<:@24@:>@@:>@], [Enable Unicode strings (default is ucs2)]),
   4133               [],
   4134               [enable_unicode=yes])
   4135 
   4136 if test $enable_unicode = yes
   4137 then
   4138   # Without any arguments, Py_UNICODE defaults to two-byte mode
   4139   case "$have_ucs4_tcl" in
   4140   yes) enable_unicode="ucs4"
   4141        ;;
   4142   *)   enable_unicode="ucs2"
   4143        ;;
   4144   esac
   4145 fi
   4146 
   4147 AH_TEMPLATE(Py_UNICODE_SIZE,
   4148   [Define as the size of the unicode type.])
   4149 case "$enable_unicode" in
   4150 ucs2) unicode_size="2"
   4151       AC_DEFINE(Py_UNICODE_SIZE,2)
   4152       ;;
   4153 ucs4) unicode_size="4"
   4154       AC_DEFINE(Py_UNICODE_SIZE,4)
   4155       ;;
   4156 no)   ;;      # To allow --disable-unicode
   4157 *) AC_MSG_ERROR([invalid value for --enable-unicode. Use either ucs2 or ucs4 (lowercase).]) ;;
   4158 esac
   4159 
   4160 AH_TEMPLATE(PY_UNICODE_TYPE,
   4161   [Define as the integral type used for Unicode representation.])
   4162 
   4163 AC_SUBST(UNICODE_OBJS)
   4164 if test "$enable_unicode" = "no"
   4165 then
   4166   UNICODE_OBJS=""
   4167   AC_MSG_RESULT(not used)
   4168 else
   4169   UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
   4170   AC_DEFINE(Py_USING_UNICODE, 1,
   4171   [Define if you want to have a Unicode type.])
   4172 
   4173   # wchar_t is only usable if it maps to an unsigned type
   4174   if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
   4175           -a "$ac_cv_wchar_t_signed" = "no"
   4176   then
   4177     PY_UNICODE_TYPE="wchar_t"
   4178     AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
   4179     [Define if you have a useable wchar_t type defined in wchar.h; useable
   4180      means wchar_t must be an unsigned type with at least 16 bits. (see
   4181      Include/unicodeobject.h).])
   4182     AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
   4183   elif test "$ac_cv_sizeof_short" = "$unicode_size"
   4184   then
   4185        PY_UNICODE_TYPE="unsigned short"
   4186        AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
   4187   elif test "$ac_cv_sizeof_long" = "$unicode_size"
   4188   then
   4189        PY_UNICODE_TYPE="unsigned long"
   4190        AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
   4191   else
   4192        PY_UNICODE_TYPE="no type found"
   4193   fi
   4194   AC_MSG_RESULT($PY_UNICODE_TYPE)
   4195 fi
   4196 
   4197 # check for endianness
   4198 AC_C_BIGENDIAN
   4199 
   4200 # Check whether right shifting a negative integer extends the sign bit
   4201 # or fills with zeros (like the Cray J90, according to Tim Peters).
   4202 AC_MSG_CHECKING(whether right shift extends the sign bit)
   4203 AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
   4204 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   4205 int main()
   4206 {
   4207 	exit(((-1)>>3 == -1) ? 0 : 1);
   4208 }
   4209 ]])],
   4210 [ac_cv_rshift_extends_sign=yes],
   4211 [ac_cv_rshift_extends_sign=no],
   4212 [ac_cv_rshift_extends_sign=yes])])
   4213 AC_MSG_RESULT($ac_cv_rshift_extends_sign)
   4214 if test "$ac_cv_rshift_extends_sign" = no
   4215 then
   4216   AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
   4217   [Define if i>>j for signed int i does not extend the sign bit
   4218    when i < 0])
   4219 fi
   4220 
   4221 # check for getc_unlocked and related locking functions
   4222 AC_MSG_CHECKING(for getc_unlocked() and friends)
   4223 AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
   4224 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
   4225 	FILE *f = fopen("/dev/null", "r");
   4226 	flockfile(f);
   4227 	getc_unlocked(f);
   4228 	funlockfile(f);
   4229 ]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
   4230 AC_MSG_RESULT($ac_cv_have_getc_unlocked)
   4231 if test "$ac_cv_have_getc_unlocked" = yes
   4232 then
   4233   AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
   4234   [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
   4235 fi
   4236 
   4237 # check where readline lives
   4238 # save the value of LIBS so we don't actually link Python with readline
   4239 LIBS_no_readline=$LIBS
   4240 
   4241 # On some systems we need to link readline to a termcap compatible
   4242 # library.  NOTE: Keep the precedence of listed libraries synchronised
   4243 # with setup.py.
   4244 py_cv_lib_readline=no
   4245 AC_MSG_CHECKING([how to link readline libs])
   4246 for py_libtermcap in "" ncursesw ncurses curses termcap; do
   4247   if test -z "$py_libtermcap"; then
   4248     READLINE_LIBS="-lreadline"
   4249   else
   4250     READLINE_LIBS="-lreadline -l$py_libtermcap"
   4251   fi
   4252   LIBS="$READLINE_LIBS $LIBS_no_readline"
   4253   AC_LINK_IFELSE(
   4254     [AC_LANG_CALL([],[readline])],
   4255     [py_cv_lib_readline=yes])
   4256   if test $py_cv_lib_readline = yes; then
   4257     break
   4258   fi
   4259 done
   4260 # Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
   4261 #AC_SUBST([READLINE_LIBS])
   4262 if test $py_cv_lib_readline = no; then
   4263   AC_MSG_RESULT([none])
   4264 else
   4265   AC_MSG_RESULT([$READLINE_LIBS])
   4266   AC_DEFINE(HAVE_LIBREADLINE, 1,
   4267     [Define if you have the readline library (-lreadline).])
   4268 fi
   4269 
   4270 # check for readline 2.1
   4271 AC_CHECK_LIB(readline, rl_callback_handler_install,
   4272 	AC_DEFINE(HAVE_RL_CALLBACK, 1,
   4273         [Define if you have readline 2.1]), ,$READLINE_LIBS)
   4274 
   4275 # check for readline 2.2
   4276 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
   4277   [have_readline=yes],
   4278   [have_readline=no]
   4279 )
   4280 if test $have_readline = yes
   4281 then
   4282   AC_EGREP_HEADER([extern int rl_completion_append_character;],
   4283   [readline/readline.h],
   4284   AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
   4285   [Define if you have readline 2.2]), )
   4286   AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
   4287   [readline/readline.h],
   4288   AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
   4289   [Define if you have rl_completion_suppress_append]), )
   4290 fi
   4291 
   4292 # check for readline 4.0
   4293 AC_CHECK_LIB(readline, rl_pre_input_hook,
   4294 	AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
   4295         [Define if you have readline 4.0]), ,$READLINE_LIBS)
   4296 
   4297 # also in 4.0
   4298 AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
   4299 	AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
   4300         [Define if you have readline 4.0]), ,$READLINE_LIBS)
   4301 
   4302 # also in 4.0, but not in editline
   4303 AC_CHECK_LIB(readline, rl_resize_terminal,
   4304 	AC_DEFINE(HAVE_RL_RESIZE_TERMINAL, 1,
   4305         [Define if you have readline 4.0]), ,$READLINE_LIBS)
   4306 
   4307 # check for readline 4.2
   4308 AC_CHECK_LIB(readline, rl_completion_matches,
   4309 	AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
   4310         [Define if you have readline 4.2]), ,$READLINE_LIBS)
   4311 
   4312 # also in readline 4.2
   4313 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
   4314   [have_readline=yes],
   4315   [have_readline=no]
   4316 )
   4317 if test $have_readline = yes
   4318 then
   4319   AC_EGREP_HEADER([extern int rl_catch_signals;],
   4320   [readline/readline.h],
   4321   AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
   4322   [Define if you can turn off readline's signal handling.]), )
   4323 fi
   4324 
   4325 # End of readline checks: restore LIBS
   4326 LIBS=$LIBS_no_readline
   4327 
   4328 AC_MSG_CHECKING(for broken nice())
   4329 AC_CACHE_VAL(ac_cv_broken_nice, [
   4330 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   4331 int main()
   4332 {
   4333 	int val1 = nice(1);
   4334 	if (val1 != -1 && val1 == nice(2))
   4335 		exit(0);
   4336 	exit(1);
   4337 }
   4338 ]])],
   4339 [ac_cv_broken_nice=yes],
   4340 [ac_cv_broken_nice=no],
   4341 [ac_cv_broken_nice=no])])
   4342 AC_MSG_RESULT($ac_cv_broken_nice)
   4343 if test "$ac_cv_broken_nice" = yes
   4344 then
   4345   AC_DEFINE(HAVE_BROKEN_NICE, 1,
   4346   [Define if nice() returns success/failure instead of the new priority.])
   4347 fi
   4348 
   4349 AC_MSG_CHECKING(for broken poll())
   4350 AC_CACHE_VAL(ac_cv_broken_poll,
   4351 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   4352 #include <poll.h>
   4353 
   4354 int main()
   4355 {
   4356     struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
   4357     int poll_test;
   4358 
   4359     close (42);
   4360 
   4361     poll_test = poll(&poll_struct, 1, 0);
   4362     if (poll_test < 0)
   4363         return 0;
   4364     else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
   4365         return 0;
   4366     else
   4367         return 1;
   4368 }
   4369 ]])],
   4370 [ac_cv_broken_poll=yes],
   4371 [ac_cv_broken_poll=no],
   4372 [ac_cv_broken_poll=no]))
   4373 AC_MSG_RESULT($ac_cv_broken_poll)
   4374 if test "$ac_cv_broken_poll" = yes
   4375 then
   4376   AC_DEFINE(HAVE_BROKEN_POLL, 1,
   4377       [Define if poll() sets errno on invalid file descriptors.])
   4378 fi
   4379 
   4380 # Before we can test tzset, we need to check if struct tm has a tm_zone 
   4381 # (which is not required by ISO C or UNIX spec) and/or if we support
   4382 # tzname[]
   4383 AC_STRUCT_TIMEZONE
   4384 
   4385 # check tzset(3) exists and works like we expect it to
   4386 AC_MSG_CHECKING(for working tzset())
   4387 AC_CACHE_VAL(ac_cv_working_tzset, [
   4388 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   4389 #include <stdlib.h>
   4390 #include <time.h>
   4391 #include <string.h>
   4392 
   4393 #if HAVE_TZNAME
   4394 extern char *tzname[];
   4395 #endif
   4396 
   4397 int main()
   4398 {
   4399 	/* Note that we need to ensure that not only does tzset(3)
   4400 	   do 'something' with localtime, but it works as documented
   4401 	   in the library reference and as expected by the test suite.
   4402 	   This includes making sure that tzname is set properly if
   4403 	   tm->tm_zone does not exist since it is the alternative way
   4404 	   of getting timezone info.
   4405 
   4406 	   Red Hat 6.2 doesn't understand the southern hemisphere 
   4407 	   after New Year's Day.
   4408 	*/
   4409 
   4410 	time_t groundhogday = 1044144000; /* GMT-based */
   4411 	time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
   4412 
   4413 	putenv("TZ=UTC+0");
   4414 	tzset();
   4415 	if (localtime(&groundhogday)->tm_hour != 0)
   4416 	    exit(1);
   4417 #if HAVE_TZNAME
   4418 	/* For UTC, tzname[1] is sometimes "", sometimes "   " */
   4419 	if (strcmp(tzname[0], "UTC") || 
   4420 		(tzname[1][0] != 0 && tzname[1][0] != ' '))
   4421 	    exit(1);
   4422 #endif
   4423 
   4424 	putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
   4425 	tzset();
   4426 	if (localtime(&groundhogday)->tm_hour != 19)
   4427 	    exit(1);
   4428 #if HAVE_TZNAME
   4429 	if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
   4430 	    exit(1);
   4431 #endif
   4432 
   4433 	putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
   4434 	tzset();
   4435 	if (localtime(&groundhogday)->tm_hour != 11)
   4436 	    exit(1);
   4437 #if HAVE_TZNAME
   4438 	if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
   4439 	    exit(1);
   4440 #endif
   4441 
   4442 #if HAVE_STRUCT_TM_TM_ZONE
   4443 	if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
   4444 	    exit(1);
   4445 	if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
   4446 	    exit(1);
   4447 #endif
   4448 
   4449 	exit(0);
   4450 }
   4451 ]])],
   4452 [ac_cv_working_tzset=yes],
   4453 [ac_cv_working_tzset=no],
   4454 [ac_cv_working_tzset=no])])
   4455 AC_MSG_RESULT($ac_cv_working_tzset)
   4456 if test "$ac_cv_working_tzset" = yes
   4457 then
   4458   AC_DEFINE(HAVE_WORKING_TZSET, 1,
   4459   [Define if tzset() actually switches the local timezone in a meaningful way.])
   4460 fi
   4461 
   4462 # Look for subsecond timestamps in struct stat
   4463 AC_MSG_CHECKING(for tv_nsec in struct stat)
   4464 AC_CACHE_VAL(ac_cv_stat_tv_nsec,
   4465 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
   4466 struct stat st;
   4467 st.st_mtim.tv_nsec = 1;
   4468 ]])],
   4469 [ac_cv_stat_tv_nsec=yes],
   4470 [ac_cv_stat_tv_nsec=no]))
   4471 AC_MSG_RESULT($ac_cv_stat_tv_nsec)
   4472 if test "$ac_cv_stat_tv_nsec" = yes
   4473 then
   4474   AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
   4475   [Define if you have struct stat.st_mtim.tv_nsec])
   4476 fi
   4477 
   4478 # Look for BSD style subsecond timestamps in struct stat
   4479 AC_MSG_CHECKING(for tv_nsec2 in struct stat)
   4480 AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
   4481 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
   4482 struct stat st;
   4483 st.st_mtimespec.tv_nsec = 1;
   4484 ]])],
   4485 [ac_cv_stat_tv_nsec2=yes],
   4486 [ac_cv_stat_tv_nsec2=no]))
   4487 AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
   4488 if test "$ac_cv_stat_tv_nsec2" = yes
   4489 then
   4490   AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
   4491   [Define if you have struct stat.st_mtimensec])
   4492 fi
   4493 
   4494 # first curses configure check
   4495 ac_save_cppflags="$CPPFLAGS"
   4496 CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
   4497 
   4498 AC_CHECK_HEADERS(curses.h ncurses.h)
   4499 
   4500 # On Solaris, term.h requires curses.h
   4501 AC_CHECK_HEADERS(term.h,,,[
   4502 #ifdef HAVE_CURSES_H
   4503 #include <curses.h>
   4504 #endif
   4505 ])
   4506 
   4507 # On HP/UX 11.0, mvwdelch is a block with a return statement
   4508 AC_MSG_CHECKING(whether mvwdelch is an expression)
   4509 AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
   4510 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
   4511   int rtn;
   4512   rtn = mvwdelch(0,0,0);
   4513 ]])],
   4514 [ac_cv_mvwdelch_is_expression=yes],
   4515 [ac_cv_mvwdelch_is_expression=no]))
   4516 AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
   4517 
   4518 if test "$ac_cv_mvwdelch_is_expression" = yes
   4519 then
   4520   AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
   4521   [Define if mvwdelch in curses.h is an expression.])
   4522 fi
   4523 
   4524 AC_MSG_CHECKING(whether WINDOW has _flags)
   4525 AC_CACHE_VAL(ac_cv_window_has_flags,
   4526 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
   4527   WINDOW *w;
   4528   w->_flags = 0;
   4529 ]])],
   4530 [ac_cv_window_has_flags=yes],
   4531 [ac_cv_window_has_flags=no]))
   4532 AC_MSG_RESULT($ac_cv_window_has_flags)
   4533 
   4534 
   4535 if test "$ac_cv_window_has_flags" = yes
   4536 then
   4537   AC_DEFINE(WINDOW_HAS_FLAGS, 1, 
   4538   [Define if WINDOW in curses.h offers a field _flags.])
   4539 fi
   4540 
   4541 AC_MSG_CHECKING(for is_term_resized)
   4542 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
   4543   [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
   4544    AC_MSG_RESULT(yes)],
   4545   [AC_MSG_RESULT(no)]
   4546 )
   4547 
   4548 AC_MSG_CHECKING(for resize_term)
   4549 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
   4550   [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
   4551    AC_MSG_RESULT(yes)],
   4552   [AC_MSG_RESULT(no)]
   4553 )
   4554 
   4555 AC_MSG_CHECKING(for resizeterm)
   4556 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
   4557   [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
   4558    AC_MSG_RESULT(yes)],
   4559   [AC_MSG_RESULT(no)]
   4560 )
   4561 # last curses configure check
   4562 CPPFLAGS=$ac_save_cppflags
   4563 
   4564 AC_MSG_NOTICE([checking for device files])
   4565 
   4566 dnl NOTE: Inform user how to proceed with files when cross compiling.
   4567 if test "x$cross_compiling" = xyes; then
   4568   if test "${ac_cv_file__dev_ptmx+set}" != set; then
   4569     AC_MSG_CHECKING([for /dev/ptmx])
   4570     AC_MSG_RESULT([not set])
   4571     AC_MSG_ERROR([set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling])
   4572   fi
   4573   if test "${ac_cv_file__dev_ptc+set}" != set; then
   4574     AC_MSG_CHECKING([for /dev/ptc])
   4575     AC_MSG_RESULT([not set])
   4576     AC_MSG_ERROR([set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling])
   4577   fi
   4578 fi
   4579 
   4580 AC_CHECK_FILE(/dev/ptmx, [], [])
   4581 if test "x$ac_cv_file__dev_ptmx" = xyes; then
   4582   AC_DEFINE(HAVE_DEV_PTMX, 1,
   4583   [Define to 1 if you have the /dev/ptmx device file.])
   4584 fi
   4585 AC_CHECK_FILE(/dev/ptc, [], [])
   4586 if test "x$ac_cv_file__dev_ptc" = xyes; then
   4587   AC_DEFINE(HAVE_DEV_PTC, 1,
   4588   [Define to 1 if you have the /dev/ptc device file.])
   4589 fi
   4590 
   4591 if test "$have_long_long" = yes
   4592 then
   4593   AC_MSG_CHECKING(for %lld and %llu printf() format support)
   4594   AC_CACHE_VAL(ac_cv_have_long_long_format,
   4595   AC_RUN_IFELSE([AC_LANG_SOURCE([[[
   4596   #include <stdio.h>
   4597   #include <stddef.h>
   4598   #include <string.h>
   4599 
   4600   #ifdef HAVE_SYS_TYPES_H
   4601   #include <sys/types.h>
   4602   #endif
   4603 
   4604   int main()
   4605   {
   4606       char buffer[256];
   4607 
   4608       if (sprintf(buffer, "%lld", (long long)123) < 0)
   4609           return 1;
   4610       if (strcmp(buffer, "123"))
   4611           return 1;
   4612 
   4613       if (sprintf(buffer, "%lld", (long long)-123) < 0)
   4614           return 1;
   4615       if (strcmp(buffer, "-123"))
   4616           return 1;
   4617 
   4618       if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
   4619           return 1;
   4620       if (strcmp(buffer, "123"))
   4621           return 1;
   4622 
   4623       return 0;
   4624   }
   4625   ]]])],
   4626   [ac_cv_have_long_long_format=yes],
   4627   [ac_cv_have_long_long_format=no],
   4628   [ac_cv_have_long_long_format="cross -- assuming no"
   4629    if test x$GCC = xyes; then
   4630     save_CFLAGS=$CFLAGS
   4631     CFLAGS="$CFLAGS -Werror -Wformat"
   4632     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   4633         #include <stdio.h>
   4634         #include <stddef.h>
   4635       ]], [[
   4636       char *buffer;
   4637       sprintf(buffer, "%lld", (long long)123);
   4638       sprintf(buffer, "%lld", (long long)-123);
   4639       sprintf(buffer, "%llu", (unsigned long long)123);
   4640       ]])],
   4641       ac_cv_have_long_long_format=yes
   4642     )
   4643     CFLAGS=$save_CFLAGS
   4644    fi])
   4645   )
   4646   AC_MSG_RESULT($ac_cv_have_long_long_format)
   4647 fi
   4648 
   4649 if test "$ac_cv_have_long_long_format" = yes
   4650 then
   4651   AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
   4652   [Define to printf format modifier for long long type])
   4653 fi
   4654 
   4655 if test $ac_sys_system = Darwin
   4656 then
   4657 	LIBS="$LIBS -framework CoreFoundation"
   4658 fi
   4659 
   4660 
   4661 AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
   4662 AC_RUN_IFELSE([AC_LANG_SOURCE([[
   4663 #include <stdio.h>
   4664 #include <stddef.h>
   4665 #include <string.h>
   4666 
   4667 #ifdef HAVE_SYS_TYPES_H
   4668 #include <sys/types.h>
   4669 #endif
   4670 
   4671 #ifdef HAVE_SSIZE_T
   4672 typedef ssize_t Py_ssize_t;
   4673 #elif SIZEOF_VOID_P == SIZEOF_LONG
   4674 typedef long Py_ssize_t;
   4675 #else
   4676 typedef int Py_ssize_t;
   4677 #endif
   4678 
   4679 int main()
   4680 {
   4681     char buffer[256];
   4682 
   4683     if(sprintf(buffer, "%zd", (size_t)123) < 0)
   4684        	return 1;
   4685 
   4686     if (strcmp(buffer, "123"))
   4687 	return 1;
   4688 
   4689     if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
   4690        	return 1;
   4691 
   4692     if (strcmp(buffer, "-123"))
   4693 	return 1;
   4694 
   4695     return 0;
   4696 }
   4697 ]])],
   4698 [ac_cv_have_size_t_format=yes],
   4699 [ac_cv_have_size_t_format=no],
   4700 [ac_cv_have_size_t_format="cross -- assuming yes"
   4701 ])])
   4702 if test "$ac_cv_have_size_t_format" != no ; then
   4703   AC_DEFINE(PY_FORMAT_SIZE_T, "z",
   4704   [Define to printf format modifier for Py_ssize_t])
   4705 fi
   4706 
   4707 AC_CHECK_TYPE(socklen_t,,
   4708   AC_DEFINE(socklen_t,int,
   4709             [Define to `int' if <sys/socket.h> does not define.]),[
   4710 #ifdef HAVE_SYS_TYPES_H
   4711 #include <sys/types.h>
   4712 #endif
   4713 #ifdef HAVE_SYS_SOCKET_H
   4714 #include <sys/socket.h>
   4715 #endif
   4716 ])
   4717 
   4718 case $ac_sys_system in
   4719 AIX*)
   4720   AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
   4721 esac
   4722 
   4723 
   4724 AC_SUBST(THREADHEADERS)
   4725 
   4726 for h in `(cd $srcdir;echo Python/thread_*.h)`
   4727 do
   4728   THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
   4729 done
   4730 
   4731 AC_SUBST(SRCDIRS)
   4732 SRCDIRS="Parser Grammar Objects Python Modules Mac"
   4733 AC_MSG_CHECKING(for build directories)
   4734 for dir in $SRCDIRS; do
   4735     if test ! -d $dir; then
   4736         mkdir $dir
   4737     fi
   4738 done
   4739 
   4740 # BEGIN_COMPUTED_GOTO 
   4741 # Check for --with-computed-gotos
   4742 AC_MSG_CHECKING(for --with-computed-gotos)
   4743 AC_ARG_WITH(computed-gotos,
   4744             AS_HELP_STRING([--with(out)-computed-gotos],
   4745                            [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
   4746 [
   4747 if test "$withval" = yes
   4748 then 
   4749   AC_DEFINE(USE_COMPUTED_GOTOS, 1,
   4750   [Define if you want to use computed gotos in ceval.c.]) 
   4751   AC_MSG_RESULT(yes)
   4752 fi
   4753 if test "$withval" = no
   4754 then 
   4755   AC_DEFINE(USE_COMPUTED_GOTOS, 0,
   4756   [Define if you want to use computed gotos in ceval.c.]) 
   4757   AC_MSG_RESULT(no)
   4758 fi
   4759 ],
   4760 [AC_MSG_RESULT(no value specified)])
   4761 
   4762 AC_MSG_CHECKING(whether $CC supports computed gotos)
   4763 AC_CACHE_VAL(ac_cv_computed_gotos,
   4764 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
   4765 int main(int argc, char **argv)
   4766 {
   4767     static void *targets[1] = { &&LABEL1 };
   4768     goto LABEL2;
   4769 LABEL1:
   4770     return 0;
   4771 LABEL2:
   4772     goto *targets[0];
   4773     return 1;
   4774 }
   4775 ]]])],
   4776 [ac_cv_computed_gotos=yes],
   4777 [ac_cv_computed_gotos=no],
   4778 [if test "${with_computed_gotos+set}" = set; then
   4779    ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos"
   4780  else
   4781    ac_cv_computed_gotos=no
   4782  fi]))
   4783 AC_MSG_RESULT($ac_cv_computed_gotos)
   4784 case "$ac_cv_computed_gotos" in yes*)
   4785   AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
   4786   [Define if the C compiler supports computed gotos.])
   4787 esac
   4788 # END_COMPUTED_GOTO
   4789 
   4790 AC_MSG_RESULT(done)
   4791 
   4792 # ensurepip option
   4793 AC_MSG_CHECKING(for ensurepip)
   4794 AC_ARG_WITH(ensurepip,
   4795     [AS_HELP_STRING([--with(out)-ensurepip=@<:@=OPTION@:>@],
   4796         ["install" or "upgrade" using bundled pip, default is "no"])],
   4797     [],
   4798     [with_ensurepip=no])
   4799 AS_CASE($with_ensurepip,
   4800     [yes|upgrade],[ENSUREPIP=upgrade],
   4801     [install],[ENSUREPIP=install],
   4802     [no],[ENSUREPIP=no],
   4803     [AC_MSG_ERROR([--with-ensurepip=upgrade|install|no])])
   4804 AC_MSG_RESULT($ENSUREPIP)
   4805 AC_SUBST(ENSUREPIP)
   4806 
   4807 # generate output files
   4808 AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
   4809 AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
   4810 AC_OUTPUT
   4811 
   4812 echo "creating Modules/Setup"
   4813 if test ! -f Modules/Setup
   4814 then
   4815 	cp $srcdir/Modules/Setup.dist Modules/Setup
   4816 fi
   4817 
   4818 echo "creating Modules/Setup.local"
   4819 if test ! -f Modules/Setup.local
   4820 then
   4821 	echo "# Edit this file for local setup changes" >Modules/Setup.local
   4822 fi
   4823 
   4824 echo "creating Makefile"
   4825 $SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
   4826 			-s Modules Modules/Setup.config \
   4827 			Modules/Setup.local Modules/Setup
   4828 
   4829 case $ac_sys_system in
   4830 BeOS)
   4831         AC_MSG_WARN([
   4832 
   4833   Support for BeOS is deprecated as of Python 2.6.
   4834   See PEP 11 for the gory details.
   4835   ])
   4836   ;;
   4837 *) ;;
   4838 esac
   4839 
   4840 mv config.c Modules
   4841 
   4842 if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then
   4843     echo "" >&AS_MESSAGE_FD
   4844     echo "" >&AS_MESSAGE_FD
   4845     echo "If you want a release build with all optimizations active (LTO, PGO, etc),"
   4846     echo "please run ./configure --enable-optimizations" >&AS_MESSAGE_FD
   4847     echo "" >&AS_MESSAGE_FD
   4848     echo "" >&AS_MESSAGE_FD
   4849 fi
   4850