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