17db96d56Sopenharmony_cidnl *************************************************** 27db96d56Sopenharmony_cidnl * Please run autoreconf -if to test your changes! * 37db96d56Sopenharmony_cidnl *************************************************** 47db96d56Sopenharmony_cidnl 57db96d56Sopenharmony_cidnl Python's configure.ac file requires autoconf 2.69 and autoconf-archive. 67db96d56Sopenharmony_cidnl 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ci# Set VERSION so we only need to edit in one place (i.e., here) 97db96d56Sopenharmony_cim4_define(PYTHON_VERSION, 3.11) 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ciAC_PREREQ([2.69]) 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ciAC_INIT([python],[PYTHON_VERSION],[https://github.com/python/cpython/issues/]) 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_cim4_ifdef( 167db96d56Sopenharmony_ci [AX_C_FLOAT_WORDS_BIGENDIAN], 177db96d56Sopenharmony_ci [], 187db96d56Sopenharmony_ci [AC_MSG_ERROR([Please install autoconf-archive package and re-run autoreconf])] 197db96d56Sopenharmony_ci)dnl 207db96d56Sopenharmony_cim4_ifdef( 217db96d56Sopenharmony_ci [PKG_PROG_PKG_CONFIG], 227db96d56Sopenharmony_ci [], 237db96d56Sopenharmony_ci [AC_MSG_ERROR([Please install pkgconf's m4 macro package and re-run autoreconf])] 247db96d56Sopenharmony_ci)dnl 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_cidnl Helpers for saving and restoring environment variables: 277db96d56Sopenharmony_cidnl - _SAVE_VAR([VAR]) Helper for SAVE_ENV; stores VAR as save_VAR 287db96d56Sopenharmony_cidnl - _RESTORE_VAR([VAR]) Helper for RESTORE_ENV; restores VAR from save_VAR 297db96d56Sopenharmony_cidnl - SAVE_ENV Saves CFLAGS, LDFLAGS, LIBS, and CPPFLAGS 307db96d56Sopenharmony_cidnl - RESTORE_ENV Restores CFLAGS, LDFLAGS, LIBS, and CPPFLAGS 317db96d56Sopenharmony_cidnl - WITH_SAVE_ENV([SCRIPT]) Runs SCRIPT wrapped with SAVE_ENV/RESTORE_ENV 327db96d56Sopenharmony_ciAC_DEFUN([_SAVE_VAR], [AS_VAR_COPY([save_][$1], [$1])])dnl 337db96d56Sopenharmony_ciAC_DEFUN([_RESTORE_VAR], [AS_VAR_COPY([$1], [save_][$1])])dnl 347db96d56Sopenharmony_ciAC_DEFUN([SAVE_ENV], 357db96d56Sopenharmony_ci[_SAVE_VAR([CFLAGS])] 367db96d56Sopenharmony_ci[_SAVE_VAR([CPPFLAGS])] 377db96d56Sopenharmony_ci[_SAVE_VAR([LDFLAGS])] 387db96d56Sopenharmony_ci[_SAVE_VAR([LIBS])] 397db96d56Sopenharmony_ci)dnl 407db96d56Sopenharmony_ciAC_DEFUN([RESTORE_ENV], 417db96d56Sopenharmony_ci[_RESTORE_VAR([CFLAGS])] 427db96d56Sopenharmony_ci[_RESTORE_VAR([CPPFLAGS])] 437db96d56Sopenharmony_ci[_RESTORE_VAR([LDFLAGS])] 447db96d56Sopenharmony_ci[_RESTORE_VAR([LIBS])] 457db96d56Sopenharmony_ci)dnl 467db96d56Sopenharmony_ciAC_DEFUN([WITH_SAVE_ENV], 477db96d56Sopenharmony_ci[SAVE_ENV] 487db96d56Sopenharmony_ci[$1] 497db96d56Sopenharmony_ci[RESTORE_ENV] 507db96d56Sopenharmony_ci)dnl 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_cidnl PY_CHECK_FUNC(FUNCTION, [INCLUDES], [AC_DEFINE-VAR]) 537db96d56Sopenharmony_ciAC_DEFUN([PY_CHECK_FUNC], 547db96d56Sopenharmony_ci[ AS_VAR_PUSHDEF([py_var], [ac_cv_func_$1]) 557db96d56Sopenharmony_ci AS_VAR_PUSHDEF([py_define], m4_ifblank([$3], [[HAVE_]m4_toupper($1)], [$3])) 567db96d56Sopenharmony_ci AC_CACHE_CHECK( 577db96d56Sopenharmony_ci [for $1], 587db96d56Sopenharmony_ci [py_var], 597db96d56Sopenharmony_ci [AC_COMPILE_IFELSE( 607db96d56Sopenharmony_ci [AC_LANG_PROGRAM([$2], [void *x=$1])], 617db96d56Sopenharmony_ci [AS_VAR_SET([py_var], [yes])], 627db96d56Sopenharmony_ci [AS_VAR_SET([py_var], [no])])] 637db96d56Sopenharmony_ci ) 647db96d56Sopenharmony_ci AS_VAR_IF( 657db96d56Sopenharmony_ci [py_var], 667db96d56Sopenharmony_ci [yes], 677db96d56Sopenharmony_ci [AC_DEFINE([py_define], [1], [Define if you have the '$1' function.])]) 687db96d56Sopenharmony_ci AS_VAR_POPDEF([py_var]) 697db96d56Sopenharmony_ci AS_VAR_POPDEF([py_define]) 707db96d56Sopenharmony_ci]) 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_cidnl PY_CHECK_LIB(LIBRARY, FUNCTION, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], [OTHER-LIBRARIES]) 737db96d56Sopenharmony_cidnl Like AC_CHECK_LIB() but does not modify LIBS 747db96d56Sopenharmony_ciAC_DEFUN([PY_CHECK_LIB], 757db96d56Sopenharmony_ci[AS_VAR_COPY([py_check_lib_save_LIBS], [LIBS])] 767db96d56Sopenharmony_ci[AC_CHECK_LIB($1, $2, $3, $4, $5)] 777db96d56Sopenharmony_ci[AS_VAR_COPY([LIBS], [py_check_lib_save_LIBS])] 787db96d56Sopenharmony_ci) 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_cidnl PY_CHECK_EMSCRIPTEN_PORT(PKG_VAR, [EMPORT_ARGS]) 817db96d56Sopenharmony_cidnl Use Emscripten port unless user passes ${PKG_VAR}_CFLAGS 827db96d56Sopenharmony_cidnl or ${PKG_VAR}_LIBS to configure. 837db96d56Sopenharmony_ciAC_DEFUN([PY_CHECK_EMSCRIPTEN_PORT], [ 847db96d56Sopenharmony_ci AS_VAR_PUSHDEF([py_cflags], [$1_CFLAGS]) 857db96d56Sopenharmony_ci AS_VAR_PUSHDEF([py_libs], [$1_LIBS]) 867db96d56Sopenharmony_ci AS_IF([test "$ac_sys_system" = "Emscripten" -a -z "$py_cflags" -a -z "$py_libs"], [ 877db96d56Sopenharmony_ci py_cflags="$2" 887db96d56Sopenharmony_ci py_libs="$2" 897db96d56Sopenharmony_ci ]) 907db96d56Sopenharmony_ci AS_VAR_POPDEF([py_cflags]) 917db96d56Sopenharmony_ci AS_VAR_POPDEF([py_libs]) 927db96d56Sopenharmony_ci]) 937db96d56Sopenharmony_ci 947db96d56Sopenharmony_ciAC_SUBST(BASECPPFLAGS) 957db96d56Sopenharmony_ciif test "$srcdir" != . -a "$srcdir" != "$(pwd)"; then 967db96d56Sopenharmony_ci # If we're building out-of-tree, we need to make sure the following 977db96d56Sopenharmony_ci # resources get picked up before their $srcdir counterparts. 987db96d56Sopenharmony_ci # Objects/ -> typeslots.inc 997db96d56Sopenharmony_ci # Include/ -> Python.h 1007db96d56Sopenharmony_ci # Python/ -> importlib.h 1017db96d56Sopenharmony_ci # (A side effect of this is that these resources will automatically be 1027db96d56Sopenharmony_ci # regenerated when building out-of-tree, regardless of whether or not 1037db96d56Sopenharmony_ci # the $srcdir counterpart is up-to-date. This is an acceptable trade 1047db96d56Sopenharmony_ci # off.) 1057db96d56Sopenharmony_ci BASECPPFLAGS="-IObjects -IInclude -IPython" 1067db96d56Sopenharmony_cielse 1077db96d56Sopenharmony_ci BASECPPFLAGS="" 1087db96d56Sopenharmony_cifi 1097db96d56Sopenharmony_ci 1107db96d56Sopenharmony_ciAC_SUBST(GITVERSION) 1117db96d56Sopenharmony_ciAC_SUBST(GITTAG) 1127db96d56Sopenharmony_ciAC_SUBST(GITBRANCH) 1137db96d56Sopenharmony_ci 1147db96d56Sopenharmony_ciif test -e $srcdir/.git 1157db96d56Sopenharmony_cithen 1167db96d56Sopenharmony_ciAC_CHECK_PROG(HAS_GIT, git, found, not-found) 1177db96d56Sopenharmony_cielse 1187db96d56Sopenharmony_ciHAS_GIT=no-repository 1197db96d56Sopenharmony_cifi 1207db96d56Sopenharmony_ciif test $HAS_GIT = found 1217db96d56Sopenharmony_cithen 1227db96d56Sopenharmony_ci GITVERSION="git --git-dir \$(srcdir)/.git rev-parse --short HEAD" 1237db96d56Sopenharmony_ci GITTAG="git --git-dir \$(srcdir)/.git describe --all --always --dirty" 1247db96d56Sopenharmony_ci GITBRANCH="git --git-dir \$(srcdir)/.git name-rev --name-only HEAD" 1257db96d56Sopenharmony_cielse 1267db96d56Sopenharmony_ci GITVERSION="" 1277db96d56Sopenharmony_ci GITTAG="" 1287db96d56Sopenharmony_ci GITBRANCH="" 1297db96d56Sopenharmony_cifi 1307db96d56Sopenharmony_ci 1317db96d56Sopenharmony_ciAC_CONFIG_SRCDIR([Include/object.h]) 1327db96d56Sopenharmony_ciAC_CONFIG_HEADERS([pyconfig.h]) 1337db96d56Sopenharmony_ci 1347db96d56Sopenharmony_ciAC_CANONICAL_HOST 1357db96d56Sopenharmony_ciAC_SUBST(build) 1367db96d56Sopenharmony_ciAC_SUBST(host) 1377db96d56Sopenharmony_ci 1387db96d56Sopenharmony_ciAS_VAR_IF([cross_compiling], [maybe], 1397db96d56Sopenharmony_ci [AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])] 1407db96d56Sopenharmony_ci) 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci# pybuilddir.txt will be created by --generate-posix-vars in the Makefile 1437db96d56Sopenharmony_cirm -f pybuilddir.txt 1447db96d56Sopenharmony_ci 1457db96d56Sopenharmony_ciAC_ARG_WITH( 1467db96d56Sopenharmony_ci [build-python], 1477db96d56Sopenharmony_ci [AS_HELP_STRING([--with-build-python=python]PYTHON_VERSION, 1487db96d56Sopenharmony_ci [path to build python binary for cross compiling (default: _bootstrap_python or python]PYTHON_VERSION[)])], 1497db96d56Sopenharmony_ci [ 1507db96d56Sopenharmony_ci AC_MSG_CHECKING([for --with-build-python]) 1517db96d56Sopenharmony_ci 1527db96d56Sopenharmony_ci AS_VAR_IF([with_build_python], [yes], [with_build_python=python$PACKAGE_VERSION]) 1537db96d56Sopenharmony_ci AS_VAR_IF([with_build_python], [no], [AC_MSG_ERROR([invalid --with-build-python option: expected path or "yes", not "no"])]) 1547db96d56Sopenharmony_ci 1557db96d56Sopenharmony_ci if ! $(command -v "$with_build_python" >/dev/null 2>&1); then 1567db96d56Sopenharmony_ci AC_MSG_ERROR([invalid or missing build python binary "$with_build_python"]) 1577db96d56Sopenharmony_ci fi 1587db96d56Sopenharmony_ci build_python_ver=$($with_build_python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')") 1597db96d56Sopenharmony_ci if test "$build_python_ver" != "$PACKAGE_VERSION"; then 1607db96d56Sopenharmony_ci AC_MSG_ERROR(["$with_build_python" has incompatible version $build_python_ver (expected: $PACKAGE_VERSION)]) 1617db96d56Sopenharmony_ci fi 1627db96d56Sopenharmony_ci dnl Build Python interpreter is used for regeneration and freezing. 1637db96d56Sopenharmony_ci ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python 1647db96d56Sopenharmony_ci PYTHON_FOR_FREEZE="$with_build_python" 1657db96d56Sopenharmony_ci 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 _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$with_build_python 1667db96d56Sopenharmony_ci AC_MSG_RESULT([$with_build_python]) 1677db96d56Sopenharmony_ci ], [ 1687db96d56Sopenharmony_ci AS_VAR_IF([cross_compiling], [yes], 1697db96d56Sopenharmony_ci [AC_MSG_ERROR([Cross compiling requires --with-build-python])] 1707db96d56Sopenharmony_ci ) 1717db96d56Sopenharmony_ci PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E' 1727db96d56Sopenharmony_ci PYTHON_FOR_FREEZE="./_bootstrap_python" 1737db96d56Sopenharmony_ci ] 1747db96d56Sopenharmony_ci) 1757db96d56Sopenharmony_ciAC_SUBST([PYTHON_FOR_BUILD]) 1767db96d56Sopenharmony_ci 1777db96d56Sopenharmony_ciAC_MSG_CHECKING([for Python interpreter freezing]) 1787db96d56Sopenharmony_ciAC_MSG_RESULT([$PYTHON_FOR_FREEZE]) 1797db96d56Sopenharmony_ciAC_SUBST([PYTHON_FOR_FREEZE]) 1807db96d56Sopenharmony_ci 1817db96d56Sopenharmony_ciAS_VAR_IF([cross_compiling], [yes], 1827db96d56Sopenharmony_ci [ 1837db96d56Sopenharmony_ci dnl external build Python, freezing depends on Programs/_freeze_module.py 1847db96d56Sopenharmony_ci FREEZE_MODULE_BOOTSTRAP='$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py' 1857db96d56Sopenharmony_ci FREEZE_MODULE_BOOTSTRAP_DEPS='$(srcdir)/Programs/_freeze_module.py' 1867db96d56Sopenharmony_ci FREEZE_MODULE='$(FREEZE_MODULE_BOOTSTRAP)' 1877db96d56Sopenharmony_ci FREEZE_MODULE_DEPS='$(FREEZE_MODULE_BOOTSTRAP_DEPS)' 1887db96d56Sopenharmony_ci PYTHON_FOR_BUILD_DEPS='' 1897db96d56Sopenharmony_ci ], 1907db96d56Sopenharmony_ci [ 1917db96d56Sopenharmony_ci dnl internal build tools also depend on Programs/_freeze_module and _bootstrap_python. 1927db96d56Sopenharmony_ci FREEZE_MODULE_BOOTSTRAP='./Programs/_freeze_module' 1937db96d56Sopenharmony_ci FREEZE_MODULE_BOOTSTRAP_DEPS="Programs/_freeze_module" 1947db96d56Sopenharmony_ci FREEZE_MODULE='$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py' 1957db96d56Sopenharmony_ci FREEZE_MODULE_DEPS="_bootstrap_python \$(srcdir)/Programs/_freeze_module.py" 1967db96d56Sopenharmony_ci PYTHON_FOR_BUILD_DEPS='$(BUILDPYTHON)' 1977db96d56Sopenharmony_ci ] 1987db96d56Sopenharmony_ci) 1997db96d56Sopenharmony_ciAC_SUBST([FREEZE_MODULE_BOOTSTRAP]) 2007db96d56Sopenharmony_ciAC_SUBST([FREEZE_MODULE_BOOTSTRAP_DEPS]) 2017db96d56Sopenharmony_ciAC_SUBST([FREEZE_MODULE]) 2027db96d56Sopenharmony_ciAC_SUBST([FREEZE_MODULE_DEPS]) 2037db96d56Sopenharmony_ciAC_SUBST([PYTHON_FOR_BUILD_DEPS]) 2047db96d56Sopenharmony_ci 2057db96d56Sopenharmony_ciAC_CHECK_PROGS([PYTHON_FOR_REGEN], 2067db96d56Sopenharmony_ci [python$PACKAGE_VERSION python3.10 python3.9 python3.8 python3.7 python3.6 python3 python], 2077db96d56Sopenharmony_ci [python3]) 2087db96d56Sopenharmony_ciAC_SUBST(PYTHON_FOR_REGEN) 2097db96d56Sopenharmony_ci 2107db96d56Sopenharmony_ciAC_MSG_CHECKING([Python for regen version]) 2117db96d56Sopenharmony_ciif command -v "$PYTHON_FOR_REGEN" >/dev/null 2>&1; then 2127db96d56Sopenharmony_ci AC_MSG_RESULT([$($PYTHON_FOR_REGEN -V 2>/dev/null)]) 2137db96d56Sopenharmony_cielse 2147db96d56Sopenharmony_ci AC_MSG_RESULT([missing]) 2157db96d56Sopenharmony_cifi 2167db96d56Sopenharmony_ci 2177db96d56Sopenharmony_cidnl Ensure that if prefix is specified, it does not end in a slash. If 2187db96d56Sopenharmony_cidnl it does, we get path names containing '//' which is both ugly and 2197db96d56Sopenharmony_cidnl can cause trouble. 2207db96d56Sopenharmony_ci 2217db96d56Sopenharmony_cidnl Last slash shouldn't be stripped if prefix=/ 2227db96d56Sopenharmony_ciif test "$prefix" != "/"; then 2237db96d56Sopenharmony_ci prefix=`echo "$prefix" | sed -e 's/\/$//g'` 2247db96d56Sopenharmony_cifi 2257db96d56Sopenharmony_ci 2267db96d56Sopenharmony_cidnl This is for stuff that absolutely must end up in pyconfig.h. 2277db96d56Sopenharmony_cidnl Please use pyport.h instead, if possible. 2287db96d56Sopenharmony_ciAH_TOP([ 2297db96d56Sopenharmony_ci#ifndef Py_PYCONFIG_H 2307db96d56Sopenharmony_ci#define Py_PYCONFIG_H 2317db96d56Sopenharmony_ci]) 2327db96d56Sopenharmony_ciAH_BOTTOM([ 2337db96d56Sopenharmony_ci/* Define the macros needed if on a UnixWare 7.x system. */ 2347db96d56Sopenharmony_ci#if defined(__USLC__) && defined(__SCO_VERSION__) 2357db96d56Sopenharmony_ci#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */ 2367db96d56Sopenharmony_ci#endif 2377db96d56Sopenharmony_ci 2387db96d56Sopenharmony_ci#endif /*Py_PYCONFIG_H*/ 2397db96d56Sopenharmony_ci]) 2407db96d56Sopenharmony_ci 2417db96d56Sopenharmony_ci# We don't use PACKAGE_ variables, and they cause conflicts 2427db96d56Sopenharmony_ci# with other autoconf-based packages that include Python.h 2437db96d56Sopenharmony_cigrep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new 2447db96d56Sopenharmony_cirm confdefs.h 2457db96d56Sopenharmony_cimv confdefs.h.new confdefs.h 2467db96d56Sopenharmony_ci 2477db96d56Sopenharmony_ciAC_SUBST(VERSION) 2487db96d56Sopenharmony_ciVERSION=PYTHON_VERSION 2497db96d56Sopenharmony_ci 2507db96d56Sopenharmony_ci# Version number of Python's own shared library file. 2517db96d56Sopenharmony_ciAC_SUBST(SOVERSION) 2527db96d56Sopenharmony_ciSOVERSION=1.0 2537db96d56Sopenharmony_ci 2547db96d56Sopenharmony_ci# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables 2557db96d56Sopenharmony_ci# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable 2567db96d56Sopenharmony_ci# them. 2577db96d56Sopenharmony_ciAC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features]) 2587db96d56Sopenharmony_ci 2597db96d56Sopenharmony_ci# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables 2607db96d56Sopenharmony_ci# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable 2617db96d56Sopenharmony_ci# them. 2627db96d56Sopenharmony_ciAC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features]) 2637db96d56Sopenharmony_ci 2647db96d56Sopenharmony_ci# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables 2657db96d56Sopenharmony_ci# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable 2667db96d56Sopenharmony_ci# them. 2677db96d56Sopenharmony_ciAC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features]) 2687db96d56Sopenharmony_ci 2697db96d56Sopenharmony_ci 2707db96d56Sopenharmony_cidefine_xopen_source=yes 2717db96d56Sopenharmony_ci 2727db96d56Sopenharmony_ci# Arguments passed to configure. 2737db96d56Sopenharmony_ciAC_SUBST(CONFIG_ARGS) 2747db96d56Sopenharmony_ciCONFIG_ARGS="$ac_configure_args" 2757db96d56Sopenharmony_ci 2767db96d56Sopenharmony_cidnl Allow users to disable pkg-config or require pkg-config 2777db96d56Sopenharmony_ciAC_ARG_WITH( 2787db96d56Sopenharmony_ci [pkg-config], 2797db96d56Sopenharmony_ci [AS_HELP_STRING([[--with-pkg-config=[yes|no|check]]], 2807db96d56Sopenharmony_ci [use pkg-config to detect build options (default is check)])], 2817db96d56Sopenharmony_ci [], 2827db96d56Sopenharmony_ci [with_pkg_config=check] 2837db96d56Sopenharmony_ci) 2847db96d56Sopenharmony_ciAS_CASE([$with_pkg_config], 2857db96d56Sopenharmony_ci [yes|check], [ 2867db96d56Sopenharmony_ci if test -z "$PKG_CONFIG"; then 2877db96d56Sopenharmony_ci dnl invalidate stale config.cache values 2887db96d56Sopenharmony_ci AS_UNSET([PKG_CONFIG]) 2897db96d56Sopenharmony_ci AS_UNSET([ac_cv_path_ac_pt_PKG_CONFIG]) 2907db96d56Sopenharmony_ci AS_UNSET([ac_cv_prog_ac_ct_PKG_CONFIG]) 2917db96d56Sopenharmony_ci fi 2927db96d56Sopenharmony_ci PKG_PROG_PKG_CONFIG 2937db96d56Sopenharmony_ci ], 2947db96d56Sopenharmony_ci [no], [ 2957db96d56Sopenharmony_ci PKG_CONFIG='' 2967db96d56Sopenharmony_ci dnl force AX_CHECK_OPENSSL to ignore pkg-config 2977db96d56Sopenharmony_ci ac_cv_path_ac_pt_PKG_CONFIG='' 2987db96d56Sopenharmony_ci ac_cv_prog_ac_ct_PKG_CONFIG='' 2997db96d56Sopenharmony_ci ], 3007db96d56Sopenharmony_ci [AC_MSG_ERROR([invalid argument --with-pkg-config=$with_pkg_config])] 3017db96d56Sopenharmony_ci) 3027db96d56Sopenharmony_ciif test "$with_pkg_config" = yes -a -z "$PKG_CONFIG"; then 3037db96d56Sopenharmony_ci AC_MSG_ERROR([pkg-config is required])] 3047db96d56Sopenharmony_cifi 3057db96d56Sopenharmony_ci 3067db96d56Sopenharmony_ciAC_MSG_CHECKING([for --enable-universalsdk]) 3077db96d56Sopenharmony_ciAC_ARG_ENABLE(universalsdk, 3087db96d56Sopenharmony_ci AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], 3097db96d56Sopenharmony_ci [create a universal binary build. 3107db96d56Sopenharmony_ci SDKDIR specifies which macOS SDK should be used to perform the build, 3117db96d56Sopenharmony_ci see Mac/README.rst. (default is no)]), 3127db96d56Sopenharmony_ci[ 3137db96d56Sopenharmony_ci case $enableval in 3147db96d56Sopenharmony_ci yes) 3157db96d56Sopenharmony_ci # Locate the best usable SDK, see Mac/README for more 3167db96d56Sopenharmony_ci # information 3177db96d56Sopenharmony_ci enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`" 3187db96d56Sopenharmony_ci if ! ( echo $enableval | grep -E '\.sdk' 1>/dev/null ) 3197db96d56Sopenharmony_ci then 3207db96d56Sopenharmony_ci enableval=/Developer/SDKs/MacOSX10.4u.sdk 3217db96d56Sopenharmony_ci if test ! -d "${enableval}" 3227db96d56Sopenharmony_ci then 3237db96d56Sopenharmony_ci enableval=/ 3247db96d56Sopenharmony_ci fi 3257db96d56Sopenharmony_ci fi 3267db96d56Sopenharmony_ci ;; 3277db96d56Sopenharmony_ci esac 3287db96d56Sopenharmony_ci case $enableval in 3297db96d56Sopenharmony_ci no) 3307db96d56Sopenharmony_ci UNIVERSALSDK= 3317db96d56Sopenharmony_ci enable_universalsdk= 3327db96d56Sopenharmony_ci ;; 3337db96d56Sopenharmony_ci *) 3347db96d56Sopenharmony_ci UNIVERSALSDK=$enableval 3357db96d56Sopenharmony_ci if test ! -d "${UNIVERSALSDK}" 3367db96d56Sopenharmony_ci then 3377db96d56Sopenharmony_ci AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}]) 3387db96d56Sopenharmony_ci fi 3397db96d56Sopenharmony_ci ;; 3407db96d56Sopenharmony_ci esac 3417db96d56Sopenharmony_ci 3427db96d56Sopenharmony_ci],[ 3437db96d56Sopenharmony_ci UNIVERSALSDK= 3447db96d56Sopenharmony_ci enable_universalsdk= 3457db96d56Sopenharmony_ci]) 3467db96d56Sopenharmony_ciif test -n "${UNIVERSALSDK}" 3477db96d56Sopenharmony_cithen 3487db96d56Sopenharmony_ci AC_MSG_RESULT(${UNIVERSALSDK}) 3497db96d56Sopenharmony_cielse 3507db96d56Sopenharmony_ci AC_MSG_RESULT(no) 3517db96d56Sopenharmony_cifi 3527db96d56Sopenharmony_ciAC_SUBST(UNIVERSALSDK) 3537db96d56Sopenharmony_ci 3547db96d56Sopenharmony_ciAC_SUBST(ARCH_RUN_32BIT) 3557db96d56Sopenharmony_ciARCH_RUN_32BIT="" 3567db96d56Sopenharmony_ci 3577db96d56Sopenharmony_ci# For backward compatibility reasons we prefer to select '32-bit' if available, 3587db96d56Sopenharmony_ci# otherwise use 'intel' 3597db96d56Sopenharmony_ciUNIVERSAL_ARCHS="32-bit" 3607db96d56Sopenharmony_ciif test "`uname -s`" = "Darwin" 3617db96d56Sopenharmony_cithen 3627db96d56Sopenharmony_ci if test -n "${UNIVERSALSDK}" 3637db96d56Sopenharmony_ci then 3647db96d56Sopenharmony_ci if test -z "`/usr/bin/file -L "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`" 3657db96d56Sopenharmony_ci then 3667db96d56Sopenharmony_ci UNIVERSAL_ARCHS="intel" 3677db96d56Sopenharmony_ci fi 3687db96d56Sopenharmony_ci fi 3697db96d56Sopenharmony_cifi 3707db96d56Sopenharmony_ci 3717db96d56Sopenharmony_ciAC_SUBST(LIPO_32BIT_FLAGS) 3727db96d56Sopenharmony_ciAC_SUBST(LIPO_INTEL64_FLAGS) 3737db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-universal-archs) 3747db96d56Sopenharmony_ciAC_ARG_WITH(universal-archs, 3757db96d56Sopenharmony_ci AS_HELP_STRING([--with-universal-archs=ARCH], 3767db96d56Sopenharmony_ci [specify the kind of macOS universal binary that should be created. 3777db96d56Sopenharmony_ci This option is only valid when --enable-universalsdk is set; options are: 3787db96d56Sopenharmony_ci ("universal2", "intel-64", "intel-32", "intel", "32-bit", 3797db96d56Sopenharmony_ci "64-bit", "3-way", or "all") 3807db96d56Sopenharmony_ci see Mac/README.rst]), 3817db96d56Sopenharmony_ci[ 3827db96d56Sopenharmony_ci UNIVERSAL_ARCHS="$withval" 3837db96d56Sopenharmony_ci], 3847db96d56Sopenharmony_ci[]) 3857db96d56Sopenharmony_ciif test -n "${UNIVERSALSDK}" 3867db96d56Sopenharmony_cithen 3877db96d56Sopenharmony_ci AC_MSG_RESULT(${UNIVERSAL_ARCHS}) 3887db96d56Sopenharmony_cielse 3897db96d56Sopenharmony_ci AC_MSG_RESULT(no) 3907db96d56Sopenharmony_cifi 3917db96d56Sopenharmony_ci 3927db96d56Sopenharmony_ciAC_ARG_WITH(framework-name, 3937db96d56Sopenharmony_ci AS_HELP_STRING([--with-framework-name=FRAMEWORK], 3947db96d56Sopenharmony_ci [specify the name for the python framework on macOS 3957db96d56Sopenharmony_ci only valid when --enable-framework is set. see Mac/README.rst 3967db96d56Sopenharmony_ci (default is 'Python')]), 3977db96d56Sopenharmony_ci[ 3987db96d56Sopenharmony_ci PYTHONFRAMEWORK=${withval} 3997db96d56Sopenharmony_ci PYTHONFRAMEWORKDIR=${withval}.framework 4007db96d56Sopenharmony_ci PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'` 4017db96d56Sopenharmony_ci ],[ 4027db96d56Sopenharmony_ci PYTHONFRAMEWORK=Python 4037db96d56Sopenharmony_ci PYTHONFRAMEWORKDIR=Python.framework 4047db96d56Sopenharmony_ci PYTHONFRAMEWORKIDENTIFIER=org.python.python 4057db96d56Sopenharmony_ci]) 4067db96d56Sopenharmony_cidnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output 4077db96d56Sopenharmony_ciAC_ARG_ENABLE(framework, 4087db96d56Sopenharmony_ci AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], 4097db96d56Sopenharmony_ci [create a Python.framework rather than a traditional Unix install. 4107db96d56Sopenharmony_ci optional INSTALLDIR specifies the installation path. see Mac/README.rst 4117db96d56Sopenharmony_ci (default is no)]), 4127db96d56Sopenharmony_ci[ 4137db96d56Sopenharmony_ci case $enableval in 4147db96d56Sopenharmony_ci yes) 4157db96d56Sopenharmony_ci enableval=/Library/Frameworks 4167db96d56Sopenharmony_ci esac 4177db96d56Sopenharmony_ci case $enableval in 4187db96d56Sopenharmony_ci no) 4197db96d56Sopenharmony_ci PYTHONFRAMEWORK= 4207db96d56Sopenharmony_ci PYTHONFRAMEWORKDIR=no-framework 4217db96d56Sopenharmony_ci PYTHONFRAMEWORKPREFIX= 4227db96d56Sopenharmony_ci PYTHONFRAMEWORKINSTALLDIR= 4237db96d56Sopenharmony_ci FRAMEWORKINSTALLFIRST= 4247db96d56Sopenharmony_ci FRAMEWORKINSTALLLAST= 4257db96d56Sopenharmony_ci FRAMEWORKALTINSTALLFIRST= 4267db96d56Sopenharmony_ci FRAMEWORKALTINSTALLLAST= 4277db96d56Sopenharmony_ci FRAMEWORKPYTHONW= 4287db96d56Sopenharmony_ci if test "x${prefix}" = "xNONE"; then 4297db96d56Sopenharmony_ci FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" 4307db96d56Sopenharmony_ci else 4317db96d56Sopenharmony_ci FRAMEWORKUNIXTOOLSPREFIX="${prefix}" 4327db96d56Sopenharmony_ci fi 4337db96d56Sopenharmony_ci enable_framework= 4347db96d56Sopenharmony_ci ;; 4357db96d56Sopenharmony_ci *) 4367db96d56Sopenharmony_ci PYTHONFRAMEWORKPREFIX="${enableval}" 4377db96d56Sopenharmony_ci PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR 4387db96d56Sopenharmony_ci FRAMEWORKINSTALLFIRST="frameworkinstallstructure" 4397db96d56Sopenharmony_ci FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure " 4407db96d56Sopenharmony_ci FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools" 4417db96d56Sopenharmony_ci FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools" 4427db96d56Sopenharmony_ci FRAMEWORKPYTHONW="frameworkpythonw" 4437db96d56Sopenharmony_ci FRAMEWORKINSTALLAPPSPREFIX="/Applications" 4447db96d56Sopenharmony_ci 4457db96d56Sopenharmony_ci if test "x${prefix}" = "xNONE" ; then 4467db96d56Sopenharmony_ci FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" 4477db96d56Sopenharmony_ci 4487db96d56Sopenharmony_ci else 4497db96d56Sopenharmony_ci FRAMEWORKUNIXTOOLSPREFIX="${prefix}" 4507db96d56Sopenharmony_ci fi 4517db96d56Sopenharmony_ci 4527db96d56Sopenharmony_ci case "${enableval}" in 4537db96d56Sopenharmony_ci /System*) 4547db96d56Sopenharmony_ci FRAMEWORKINSTALLAPPSPREFIX="/Applications" 4557db96d56Sopenharmony_ci if test "${prefix}" = "NONE" ; then 4567db96d56Sopenharmony_ci # See below 4577db96d56Sopenharmony_ci FRAMEWORKUNIXTOOLSPREFIX="/usr" 4587db96d56Sopenharmony_ci fi 4597db96d56Sopenharmony_ci ;; 4607db96d56Sopenharmony_ci 4617db96d56Sopenharmony_ci /Library*) 4627db96d56Sopenharmony_ci FRAMEWORKINSTALLAPPSPREFIX="/Applications" 4637db96d56Sopenharmony_ci ;; 4647db96d56Sopenharmony_ci 4657db96d56Sopenharmony_ci */Library/Frameworks) 4667db96d56Sopenharmony_ci MDIR="`dirname "${enableval}"`" 4677db96d56Sopenharmony_ci MDIR="`dirname "${MDIR}"`" 4687db96d56Sopenharmony_ci FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications" 4697db96d56Sopenharmony_ci 4707db96d56Sopenharmony_ci if test "${prefix}" = "NONE"; then 4717db96d56Sopenharmony_ci # User hasn't specified the 4727db96d56Sopenharmony_ci # --prefix option, but wants to install 4737db96d56Sopenharmony_ci # the framework in a non-default location, 4747db96d56Sopenharmony_ci # ensure that the compatibility links get 4757db96d56Sopenharmony_ci # installed relative to that prefix as well 4767db96d56Sopenharmony_ci # instead of in /usr/local. 4777db96d56Sopenharmony_ci FRAMEWORKUNIXTOOLSPREFIX="${MDIR}" 4787db96d56Sopenharmony_ci fi 4797db96d56Sopenharmony_ci ;; 4807db96d56Sopenharmony_ci 4817db96d56Sopenharmony_ci *) 4827db96d56Sopenharmony_ci FRAMEWORKINSTALLAPPSPREFIX="/Applications" 4837db96d56Sopenharmony_ci ;; 4847db96d56Sopenharmony_ci esac 4857db96d56Sopenharmony_ci 4867db96d56Sopenharmony_ci prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION 4877db96d56Sopenharmony_ci 4887db96d56Sopenharmony_ci # Add files for Mac specific code to the list of output 4897db96d56Sopenharmony_ci # files: 4907db96d56Sopenharmony_ci AC_CONFIG_FILES(Mac/Makefile) 4917db96d56Sopenharmony_ci AC_CONFIG_FILES(Mac/PythonLauncher/Makefile) 4927db96d56Sopenharmony_ci AC_CONFIG_FILES(Mac/Resources/framework/Info.plist) 4937db96d56Sopenharmony_ci AC_CONFIG_FILES(Mac/Resources/app/Info.plist) 4947db96d56Sopenharmony_ci esac 4957db96d56Sopenharmony_ci ],[ 4967db96d56Sopenharmony_ci PYTHONFRAMEWORK= 4977db96d56Sopenharmony_ci PYTHONFRAMEWORKDIR=no-framework 4987db96d56Sopenharmony_ci PYTHONFRAMEWORKPREFIX= 4997db96d56Sopenharmony_ci PYTHONFRAMEWORKINSTALLDIR= 5007db96d56Sopenharmony_ci FRAMEWORKINSTALLFIRST= 5017db96d56Sopenharmony_ci FRAMEWORKINSTALLLAST= 5027db96d56Sopenharmony_ci FRAMEWORKALTINSTALLFIRST= 5037db96d56Sopenharmony_ci FRAMEWORKALTINSTALLLAST= 5047db96d56Sopenharmony_ci FRAMEWORKPYTHONW= 5057db96d56Sopenharmony_ci if test "x${prefix}" = "xNONE" ; then 5067db96d56Sopenharmony_ci FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" 5077db96d56Sopenharmony_ci else 5087db96d56Sopenharmony_ci FRAMEWORKUNIXTOOLSPREFIX="${prefix}" 5097db96d56Sopenharmony_ci fi 5107db96d56Sopenharmony_ci enable_framework= 5117db96d56Sopenharmony_ci 5127db96d56Sopenharmony_ci]) 5137db96d56Sopenharmony_ciAC_SUBST(PYTHONFRAMEWORK) 5147db96d56Sopenharmony_ciAC_SUBST(PYTHONFRAMEWORKIDENTIFIER) 5157db96d56Sopenharmony_ciAC_SUBST(PYTHONFRAMEWORKDIR) 5167db96d56Sopenharmony_ciAC_SUBST(PYTHONFRAMEWORKPREFIX) 5177db96d56Sopenharmony_ciAC_SUBST(PYTHONFRAMEWORKINSTALLDIR) 5187db96d56Sopenharmony_ciAC_SUBST(FRAMEWORKINSTALLFIRST) 5197db96d56Sopenharmony_ciAC_SUBST(FRAMEWORKINSTALLLAST) 5207db96d56Sopenharmony_ciAC_SUBST(FRAMEWORKALTINSTALLFIRST) 5217db96d56Sopenharmony_ciAC_SUBST(FRAMEWORKALTINSTALLLAST) 5227db96d56Sopenharmony_ciAC_SUBST(FRAMEWORKPYTHONW) 5237db96d56Sopenharmony_ciAC_SUBST(FRAMEWORKUNIXTOOLSPREFIX) 5247db96d56Sopenharmony_ciAC_SUBST(FRAMEWORKINSTALLAPPSPREFIX) 5257db96d56Sopenharmony_ci 5267db96d56Sopenharmony_ciAC_DEFINE_UNQUOTED(_PYTHONFRAMEWORK, "${PYTHONFRAMEWORK}", [framework name]) 5277db96d56Sopenharmony_ci 5287db96d56Sopenharmony_ci# Set name for machine-dependent library files 5297db96d56Sopenharmony_ciAC_ARG_VAR([MACHDEP], [name for machine-dependent library files]) 5307db96d56Sopenharmony_ciAC_MSG_CHECKING(MACHDEP) 5317db96d56Sopenharmony_ciif test -z "$MACHDEP" 5327db96d56Sopenharmony_cithen 5337db96d56Sopenharmony_ci # avoid using uname for cross builds 5347db96d56Sopenharmony_ci if test "$cross_compiling" = yes; then 5357db96d56Sopenharmony_ci # ac_sys_system and ac_sys_release are used for setting 5367db96d56Sopenharmony_ci # a lot of different things including 'define_xopen_source' 5377db96d56Sopenharmony_ci # in the case statement below. 5387db96d56Sopenharmony_ci case "$host" in 5397db96d56Sopenharmony_ci *-*-linux-android*) 5407db96d56Sopenharmony_ci ac_sys_system=Linux-android 5417db96d56Sopenharmony_ci ;; 5427db96d56Sopenharmony_ci *-*-linux*) 5437db96d56Sopenharmony_ci ac_sys_system=Linux 5447db96d56Sopenharmony_ci ;; 5457db96d56Sopenharmony_ci *-*-cygwin*) 5467db96d56Sopenharmony_ci ac_sys_system=Cygwin 5477db96d56Sopenharmony_ci ;; 5487db96d56Sopenharmony_ci *-*-vxworks*) 5497db96d56Sopenharmony_ci ac_sys_system=VxWorks 5507db96d56Sopenharmony_ci ;; 5517db96d56Sopenharmony_ci *-*-emscripten) 5527db96d56Sopenharmony_ci ac_sys_system=Emscripten 5537db96d56Sopenharmony_ci ;; 5547db96d56Sopenharmony_ci *-*-wasi) 5557db96d56Sopenharmony_ci ac_sys_system=WASI 5567db96d56Sopenharmony_ci ;; 5577db96d56Sopenharmony_ci *) 5587db96d56Sopenharmony_ci # for now, limit cross builds to known configurations 5597db96d56Sopenharmony_ci MACHDEP="unknown" 5607db96d56Sopenharmony_ci AC_MSG_ERROR([cross build not supported for $host]) 5617db96d56Sopenharmony_ci esac 5627db96d56Sopenharmony_ci ac_sys_release= 5637db96d56Sopenharmony_ci else 5647db96d56Sopenharmony_ci ac_sys_system=`uname -s` 5657db96d56Sopenharmony_ci if test "$ac_sys_system" = "AIX" \ 5667db96d56Sopenharmony_ci -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then 5677db96d56Sopenharmony_ci ac_sys_release=`uname -v` 5687db96d56Sopenharmony_ci else 5697db96d56Sopenharmony_ci ac_sys_release=`uname -r` 5707db96d56Sopenharmony_ci fi 5717db96d56Sopenharmony_ci fi 5727db96d56Sopenharmony_ci ac_md_system=`echo $ac_sys_system | 5737db96d56Sopenharmony_ci tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'` 5747db96d56Sopenharmony_ci ac_md_release=`echo $ac_sys_release | 5757db96d56Sopenharmony_ci tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'` 5767db96d56Sopenharmony_ci MACHDEP="$ac_md_system$ac_md_release" 5777db96d56Sopenharmony_ci 5787db96d56Sopenharmony_ci case $MACHDEP in 5797db96d56Sopenharmony_ci aix*) MACHDEP="aix";; 5807db96d56Sopenharmony_ci linux*) MACHDEP="linux";; 5817db96d56Sopenharmony_ci cygwin*) MACHDEP="cygwin";; 5827db96d56Sopenharmony_ci darwin*) MACHDEP="darwin";; 5837db96d56Sopenharmony_ci '') MACHDEP="unknown";; 5847db96d56Sopenharmony_ci esac 5857db96d56Sopenharmony_cifi 5867db96d56Sopenharmony_ciAC_MSG_RESULT("$MACHDEP") 5877db96d56Sopenharmony_ci 5887db96d56Sopenharmony_ciAC_SUBST(_PYTHON_HOST_PLATFORM) 5897db96d56Sopenharmony_ciif test "$cross_compiling" = yes; then 5907db96d56Sopenharmony_ci case "$host" in 5917db96d56Sopenharmony_ci *-*-linux*) 5927db96d56Sopenharmony_ci case "$host_cpu" in 5937db96d56Sopenharmony_ci arm*) 5947db96d56Sopenharmony_ci _host_cpu=arm 5957db96d56Sopenharmony_ci ;; 5967db96d56Sopenharmony_ci *) 5977db96d56Sopenharmony_ci _host_cpu=$host_cpu 5987db96d56Sopenharmony_ci esac 5997db96d56Sopenharmony_ci ;; 6007db96d56Sopenharmony_ci *-*-cygwin*) 6017db96d56Sopenharmony_ci _host_cpu= 6027db96d56Sopenharmony_ci ;; 6037db96d56Sopenharmony_ci *-*-vxworks*) 6047db96d56Sopenharmony_ci _host_cpu=$host_cpu 6057db96d56Sopenharmony_ci ;; 6067db96d56Sopenharmony_ci wasm32-*-* | wasm64-*-*) 6077db96d56Sopenharmony_ci _host_cpu=$host_cpu 6087db96d56Sopenharmony_ci ;; 6097db96d56Sopenharmony_ci *) 6107db96d56Sopenharmony_ci # for now, limit cross builds to known configurations 6117db96d56Sopenharmony_ci MACHDEP="unknown" 6127db96d56Sopenharmony_ci AC_MSG_ERROR([cross build not supported for $host]) 6137db96d56Sopenharmony_ci esac 6147db96d56Sopenharmony_ci _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}" 6157db96d56Sopenharmony_cifi 6167db96d56Sopenharmony_ci 6177db96d56Sopenharmony_ci# Some systems cannot stand _XOPEN_SOURCE being defined at all; they 6187db96d56Sopenharmony_ci# disable features if it is defined, without any means to access these 6197db96d56Sopenharmony_ci# features as extensions. For these systems, we skip the definition of 6207db96d56Sopenharmony_ci# _XOPEN_SOURCE. Before adding a system to the list to gain access to 6217db96d56Sopenharmony_ci# some feature, make sure there is no alternative way to access this 6227db96d56Sopenharmony_ci# feature. Also, when using wildcards, make sure you have verified the 6237db96d56Sopenharmony_ci# need for not defining _XOPEN_SOURCE on all systems matching the 6247db96d56Sopenharmony_ci# wildcard, and that the wildcard does not include future systems 6257db96d56Sopenharmony_ci# (which may remove their limitations). 6267db96d56Sopenharmony_cidnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output 6277db96d56Sopenharmony_cicase $ac_sys_system/$ac_sys_release in 6287db96d56Sopenharmony_ci # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined, 6297db96d56Sopenharmony_ci # even though select is a POSIX function. Reported by J. Ribbens. 6307db96d56Sopenharmony_ci # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish. 6317db96d56Sopenharmony_ci # In addition, Stefan Krah confirms that issue #1244610 exists through 6327db96d56Sopenharmony_ci # OpenBSD 4.6, but is fixed in 4.7. 6337db96d56Sopenharmony_ci OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.@<:@0123456@:>@) 6347db96d56Sopenharmony_ci define_xopen_source=no 6357db96d56Sopenharmony_ci # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is 6367db96d56Sopenharmony_ci # also defined. This can be overridden by defining _BSD_SOURCE 6377db96d56Sopenharmony_ci # As this has a different meaning on Linux, only define it on OpenBSD 6387db96d56Sopenharmony_ci AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features]) 6397db96d56Sopenharmony_ci ;; 6407db96d56Sopenharmony_ci OpenBSD/*) 6417db96d56Sopenharmony_ci # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is 6427db96d56Sopenharmony_ci # also defined. This can be overridden by defining _BSD_SOURCE 6437db96d56Sopenharmony_ci # As this has a different meaning on Linux, only define it on OpenBSD 6447db96d56Sopenharmony_ci AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features]) 6457db96d56Sopenharmony_ci ;; 6467db96d56Sopenharmony_ci # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of 6477db96d56Sopenharmony_ci # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by 6487db96d56Sopenharmony_ci # Marc Recht 6497db96d56Sopenharmony_ci NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@) 6507db96d56Sopenharmony_ci define_xopen_source=no;; 6517db96d56Sopenharmony_ci # From the perspective of Solaris, _XOPEN_SOURCE is not so much a 6527db96d56Sopenharmony_ci # request to enable features supported by the standard as a request 6537db96d56Sopenharmony_ci # to disable features not supported by the standard. The best way 6547db96d56Sopenharmony_ci # for Python to use Solaris is simply to leave _XOPEN_SOURCE out 6557db96d56Sopenharmony_ci # entirely and define __EXTENSIONS__ instead. 6567db96d56Sopenharmony_ci SunOS/*) 6577db96d56Sopenharmony_ci define_xopen_source=no;; 6587db96d56Sopenharmony_ci # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE, 6597db96d56Sopenharmony_ci # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice. 6607db96d56Sopenharmony_ci # Reconfirmed for 7.1.4 by Martin v. Loewis. 6617db96d56Sopenharmony_ci OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@) 6627db96d56Sopenharmony_ci define_xopen_source=no;; 6637db96d56Sopenharmony_ci # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE, 6647db96d56Sopenharmony_ci # but used in struct sockaddr.sa_family. Reported by Tim Rice. 6657db96d56Sopenharmony_ci SCO_SV/3.2) 6667db96d56Sopenharmony_ci define_xopen_source=no;; 6677db96d56Sopenharmony_ci # On MacOS X 10.2, a bug in ncurses.h means that it craps out if 6687db96d56Sopenharmony_ci # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which 6697db96d56Sopenharmony_ci # identifies itself as Darwin/7.* 6707db96d56Sopenharmony_ci # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE 6717db96d56Sopenharmony_ci # disables platform specific features beyond repair. 6727db96d56Sopenharmony_ci # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE 6737db96d56Sopenharmony_ci # has no effect, don't bother defining them 6747db96d56Sopenharmony_ci Darwin/@<:@6789@:>@.*) 6757db96d56Sopenharmony_ci define_xopen_source=no;; 6767db96d56Sopenharmony_ci Darwin/@<:@[12]@:>@@<:@0-9@:>@.*) 6777db96d56Sopenharmony_ci define_xopen_source=no;; 6787db96d56Sopenharmony_ci # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from 6797db96d56Sopenharmony_ci # defining NI_NUMERICHOST. 6807db96d56Sopenharmony_ci QNX/6.3.2) 6817db96d56Sopenharmony_ci define_xopen_source=no 6827db96d56Sopenharmony_ci ;; 6837db96d56Sopenharmony_ci # On VxWorks, defining _XOPEN_SOURCE causes compile failures 6847db96d56Sopenharmony_ci # in network headers still using system V types. 6857db96d56Sopenharmony_ci VxWorks/*) 6867db96d56Sopenharmony_ci define_xopen_source=no 6877db96d56Sopenharmony_ci ;; 6887db96d56Sopenharmony_ci 6897db96d56Sopenharmony_ci # On HP-UX, defining _XOPEN_SOURCE to 600 or greater hides 6907db96d56Sopenharmony_ci # chroot() and other functions 6917db96d56Sopenharmony_ci hp*|HP*) 6927db96d56Sopenharmony_ci define_xopen_source=no 6937db96d56Sopenharmony_ci ;; 6947db96d56Sopenharmony_ci 6957db96d56Sopenharmony_ciesac 6967db96d56Sopenharmony_ci 6977db96d56Sopenharmony_ciif test $define_xopen_source = yes 6987db96d56Sopenharmony_cithen 6997db96d56Sopenharmony_ci # X/Open 7, incorporating POSIX.1-2008 7007db96d56Sopenharmony_ci AC_DEFINE(_XOPEN_SOURCE, 700, 7017db96d56Sopenharmony_ci Define to the level of X/Open that your system supports) 7027db96d56Sopenharmony_ci 7037db96d56Sopenharmony_ci # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires 7047db96d56Sopenharmony_ci # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else 7057db96d56Sopenharmony_ci # several APIs are not declared. Since this is also needed in some 7067db96d56Sopenharmony_ci # cases for HP-UX, we define it globally. 7077db96d56Sopenharmony_ci AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, 7087db96d56Sopenharmony_ci Define to activate Unix95-and-earlier features) 7097db96d56Sopenharmony_ci 7107db96d56Sopenharmony_ci AC_DEFINE(_POSIX_C_SOURCE, 200809L, Define to activate features from IEEE Stds 1003.1-2008) 7117db96d56Sopenharmony_cifi 7127db96d56Sopenharmony_ci 7137db96d56Sopenharmony_ci# On HP-UX mbstate_t requires _INCLUDE__STDC_A1_SOURCE 7147db96d56Sopenharmony_cicase $ac_sys_system in 7157db96d56Sopenharmony_ci hp*|HP*) 7167db96d56Sopenharmony_ci define_stdc_a1=yes;; 7177db96d56Sopenharmony_ci *) 7187db96d56Sopenharmony_ci define_stdc_a1=no;; 7197db96d56Sopenharmony_ciesac 7207db96d56Sopenharmony_ci 7217db96d56Sopenharmony_ciif test $define_stdc_a1 = yes 7227db96d56Sopenharmony_cithen 7237db96d56Sopenharmony_ci AC_DEFINE(_INCLUDE__STDC_A1_SOURCE, 1, Define to include mbstate_t for mbrtowc) 7247db96d56Sopenharmony_cifi 7257db96d56Sopenharmony_ci 7267db96d56Sopenharmony_ci# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET, 7277db96d56Sopenharmony_ci# it may influence the way we can build extensions, so distutils 7287db96d56Sopenharmony_ci# needs to check it 7297db96d56Sopenharmony_ciAC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET) 7307db96d56Sopenharmony_ciAC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET) 7317db96d56Sopenharmony_ciCONFIGURE_MACOSX_DEPLOYMENT_TARGET= 7327db96d56Sopenharmony_ciEXPORT_MACOSX_DEPLOYMENT_TARGET='#' 7337db96d56Sopenharmony_ci 7347db96d56Sopenharmony_ci# checks for alternative programs 7357db96d56Sopenharmony_ci 7367db96d56Sopenharmony_ci# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just 7377db96d56Sopenharmony_ci# for debug/optimization stuff. BASECFLAGS is for flags that are required 7387db96d56Sopenharmony_ci# just to get things to compile and link. Users are free to override OPT 7397db96d56Sopenharmony_ci# when running configure or make. The build should not break if they do. 7407db96d56Sopenharmony_ci# BASECFLAGS should generally not be messed with, however. 7417db96d56Sopenharmony_ci 7427db96d56Sopenharmony_ci# If the user switches compilers, we can't believe the cache 7437db96d56Sopenharmony_ciif test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC" 7447db96d56Sopenharmony_cithen 7457db96d56Sopenharmony_ci AC_MSG_ERROR([cached CC is different -- throw away $cache_file 7467db96d56Sopenharmony_ci(it is also a good idea to do 'make clean' before compiling)]) 7477db96d56Sopenharmony_cifi 7487db96d56Sopenharmony_ci 7497db96d56Sopenharmony_ci# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2 7507db96d56Sopenharmony_ci# when the compiler supports them, but we don't always want -O2, and 7517db96d56Sopenharmony_ci# we set -g later. 7527db96d56Sopenharmony_ciif test -z "$CFLAGS"; then 7537db96d56Sopenharmony_ci CFLAGS= 7547db96d56Sopenharmony_cifi 7557db96d56Sopenharmony_ci 7567db96d56Sopenharmony_cidnl Emscripten SDK and WASI SDK default to wasm32. 7577db96d56Sopenharmony_cidnl On Emscripten use MEMORY64 setting to build target wasm64-emscripten. 7587db96d56Sopenharmony_cidnl for wasm64. 7597db96d56Sopenharmony_ciAS_CASE([$host], 7607db96d56Sopenharmony_ci [wasm64-*-emscripten], [ 7617db96d56Sopenharmony_ci AS_VAR_APPEND([CFLAGS], [" -sMEMORY64=1"]) 7627db96d56Sopenharmony_ci AS_VAR_APPEND([LDFLAGS], [" -sMEMORY64=1"]) 7637db96d56Sopenharmony_ci ], 7647db96d56Sopenharmony_ci) 7657db96d56Sopenharmony_ci 7667db96d56Sopenharmony_ciif test "$ac_sys_system" = "Darwin" 7677db96d56Sopenharmony_cithen 7687db96d56Sopenharmony_ci # Compiler selection on MacOSX is more complicated than 7697db96d56Sopenharmony_ci # AC_PROG_CC can handle, see Mac/README for more 7707db96d56Sopenharmony_ci # information 7717db96d56Sopenharmony_ci if test -z "${CC}" 7727db96d56Sopenharmony_ci then 7737db96d56Sopenharmony_ci found_gcc= 7747db96d56Sopenharmony_ci found_clang= 7757db96d56Sopenharmony_ci as_save_IFS=$IFS; IFS=: 7767db96d56Sopenharmony_ci for as_dir in $PATH 7777db96d56Sopenharmony_ci do 7787db96d56Sopenharmony_ci IFS=$as_save_IFS 7797db96d56Sopenharmony_ci if test -x "${as_dir}/gcc"; then 7807db96d56Sopenharmony_ci if test -z "${found_gcc}"; then 7817db96d56Sopenharmony_ci found_gcc="${as_dir}/gcc" 7827db96d56Sopenharmony_ci fi 7837db96d56Sopenharmony_ci fi 7847db96d56Sopenharmony_ci if test -x "${as_dir}/clang"; then 7857db96d56Sopenharmony_ci if test -z "${found_clang}"; then 7867db96d56Sopenharmony_ci found_clang="${as_dir}/clang" 7877db96d56Sopenharmony_ci fi 7887db96d56Sopenharmony_ci fi 7897db96d56Sopenharmony_ci done 7907db96d56Sopenharmony_ci IFS=$as_save_IFS 7917db96d56Sopenharmony_ci 7927db96d56Sopenharmony_ci if test -n "$found_gcc" -a -n "$found_clang" 7937db96d56Sopenharmony_ci then 7947db96d56Sopenharmony_ci if test -n "`"$found_gcc" --version | grep llvm-gcc`" 7957db96d56Sopenharmony_ci then 7967db96d56Sopenharmony_ci AC_MSG_NOTICE([Detected llvm-gcc, falling back to clang]) 7977db96d56Sopenharmony_ci CC="$found_clang" 7987db96d56Sopenharmony_ci CXX="$found_clang++" 7997db96d56Sopenharmony_ci fi 8007db96d56Sopenharmony_ci 8017db96d56Sopenharmony_ci 8027db96d56Sopenharmony_ci elif test -z "$found_gcc" -a -n "$found_clang" 8037db96d56Sopenharmony_ci then 8047db96d56Sopenharmony_ci AC_MSG_NOTICE([No GCC found, use CLANG]) 8057db96d56Sopenharmony_ci CC="$found_clang" 8067db96d56Sopenharmony_ci CXX="$found_clang++" 8077db96d56Sopenharmony_ci 8087db96d56Sopenharmony_ci elif test -z "$found_gcc" -a -z "$found_clang" 8097db96d56Sopenharmony_ci then 8107db96d56Sopenharmony_ci found_clang=`/usr/bin/xcrun -find clang 2>/dev/null` 8117db96d56Sopenharmony_ci if test -n "${found_clang}" 8127db96d56Sopenharmony_ci then 8137db96d56Sopenharmony_ci AC_MSG_NOTICE([Using clang from Xcode.app]) 8147db96d56Sopenharmony_ci CC="${found_clang}" 8157db96d56Sopenharmony_ci CXX="`/usr/bin/xcrun -find clang++`" 8167db96d56Sopenharmony_ci 8177db96d56Sopenharmony_ci # else: use default behaviour 8187db96d56Sopenharmony_ci fi 8197db96d56Sopenharmony_ci fi 8207db96d56Sopenharmony_ci fi 8217db96d56Sopenharmony_cifi 8227db96d56Sopenharmony_ciAC_PROG_CC 8237db96d56Sopenharmony_ciAC_PROG_CPP 8247db96d56Sopenharmony_ciAC_PROG_GREP 8257db96d56Sopenharmony_ciAC_PROG_SED 8267db96d56Sopenharmony_ciAC_PROG_EGREP 8277db96d56Sopenharmony_ci 8287db96d56Sopenharmony_cidnl detect compiler name 8297db96d56Sopenharmony_cidnl check for xlc before clang, newer xlc's can use clang as frontend. 8307db96d56Sopenharmony_cidnl check for GCC last, other compilers set __GNUC__, too. 8317db96d56Sopenharmony_cidnl msvc is listed for completeness. 8327db96d56Sopenharmony_ciAC_CACHE_CHECK([for CC compiler name], [ac_cv_cc_name], [ 8337db96d56Sopenharmony_cicat > conftest.c <<EOF 8347db96d56Sopenharmony_ci#if defined(__INTEL_COMPILER) || defined(__ICC) 8357db96d56Sopenharmony_ci icc 8367db96d56Sopenharmony_ci#elif defined(__ibmxl__) || defined(__xlc__) || defined(__xlC__) 8377db96d56Sopenharmony_ci xlc 8387db96d56Sopenharmony_ci#elif defined(_MSC_VER) 8397db96d56Sopenharmony_ci msvc 8407db96d56Sopenharmony_ci#elif defined(__clang__) 8417db96d56Sopenharmony_ci clang 8427db96d56Sopenharmony_ci#elif defined(__GNUC__) 8437db96d56Sopenharmony_ci gcc 8447db96d56Sopenharmony_ci#else 8457db96d56Sopenharmony_ci# error unknown compiler 8467db96d56Sopenharmony_ci#endif 8477db96d56Sopenharmony_ciEOF 8487db96d56Sopenharmony_ci 8497db96d56Sopenharmony_ciif $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then 8507db96d56Sopenharmony_ci ac_cv_cc_name=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '` 8517db96d56Sopenharmony_cielse 8527db96d56Sopenharmony_ci ac_cv_cc_name="unknown" 8537db96d56Sopenharmony_cifi 8547db96d56Sopenharmony_cirm -f conftest.c conftest.out 8557db96d56Sopenharmony_ci]) 8567db96d56Sopenharmony_ci 8577db96d56Sopenharmony_ci# checks for UNIX variants that set C preprocessor variables 8587db96d56Sopenharmony_ci# may set _GNU_SOURCE, __EXTENSIONS__, _POSIX_PTHREAD_SEMANTICS, 8597db96d56Sopenharmony_ci# _POSIX_SOURCE, _POSIX_1_SOURCE, and more 8607db96d56Sopenharmony_ciAC_USE_SYSTEM_EXTENSIONS 8617db96d56Sopenharmony_ci 8627db96d56Sopenharmony_ciAC_SUBST(CXX) 8637db96d56Sopenharmony_ciAC_SUBST(MAINCC) 8647db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-cxx-main=<compiler>) 8657db96d56Sopenharmony_ciAC_ARG_WITH(cxx_main, 8667db96d56Sopenharmony_ci AS_HELP_STRING([--with-cxx-main@<:@=COMPILER@:>@], 8677db96d56Sopenharmony_ci [compile main() and link Python executable with C++ compiler specified in COMPILER (default is $CXX)]), 8687db96d56Sopenharmony_ci[ 8697db96d56Sopenharmony_ci 8707db96d56Sopenharmony_ci case $withval in 8717db96d56Sopenharmony_ci no) with_cxx_main=no 8727db96d56Sopenharmony_ci MAINCC='$(CC)';; 8737db96d56Sopenharmony_ci yes) with_cxx_main=yes 8747db96d56Sopenharmony_ci MAINCC='$(CXX)';; 8757db96d56Sopenharmony_ci *) with_cxx_main=yes 8767db96d56Sopenharmony_ci MAINCC=$withval 8777db96d56Sopenharmony_ci if test -z "$CXX" 8787db96d56Sopenharmony_ci then 8797db96d56Sopenharmony_ci CXX=$withval 8807db96d56Sopenharmony_ci fi;; 8817db96d56Sopenharmony_ci esac], [ 8827db96d56Sopenharmony_ci with_cxx_main=no 8837db96d56Sopenharmony_ci MAINCC='$(CC)' 8847db96d56Sopenharmony_ci]) 8857db96d56Sopenharmony_ciAC_MSG_RESULT($with_cxx_main) 8867db96d56Sopenharmony_ci 8877db96d56Sopenharmony_cipreset_cxx="$CXX" 8887db96d56Sopenharmony_ciif test -z "$CXX" 8897db96d56Sopenharmony_cithen 8907db96d56Sopenharmony_ci case "$CC" in 8917db96d56Sopenharmony_ci gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;; 8927db96d56Sopenharmony_ci cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;; 8937db96d56Sopenharmony_ci clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;; 8947db96d56Sopenharmony_ci icc|*/icc) AC_PATH_TOOL(CXX, [icpc], [icpc], [notfound]) ;; 8957db96d56Sopenharmony_ci esac 8967db96d56Sopenharmony_ci if test "$CXX" = "notfound" 8977db96d56Sopenharmony_ci then 8987db96d56Sopenharmony_ci CXX="" 8997db96d56Sopenharmony_ci fi 9007db96d56Sopenharmony_cifi 9017db96d56Sopenharmony_ciif test -z "$CXX" 9027db96d56Sopenharmony_cithen 9037db96d56Sopenharmony_ci AC_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound) 9047db96d56Sopenharmony_ci if test "$CXX" = "notfound" 9057db96d56Sopenharmony_ci then 9067db96d56Sopenharmony_ci CXX="" 9077db96d56Sopenharmony_ci fi 9087db96d56Sopenharmony_cifi 9097db96d56Sopenharmony_ciif test "$preset_cxx" != "$CXX" 9107db96d56Sopenharmony_cithen 9117db96d56Sopenharmony_ci AC_MSG_NOTICE([ 9127db96d56Sopenharmony_ci 9137db96d56Sopenharmony_ci By default, distutils will build C++ extension modules with "$CXX". 9147db96d56Sopenharmony_ci If this is not intended, then set CXX on the configure command line. 9157db96d56Sopenharmony_ci ]) 9167db96d56Sopenharmony_cifi 9177db96d56Sopenharmony_ci 9187db96d56Sopenharmony_ci 9197db96d56Sopenharmony_ciAC_MSG_CHECKING([for the platform triplet based on compiler characteristics]) 9207db96d56Sopenharmony_cicat > conftest.c <<EOF 9217db96d56Sopenharmony_ci#undef bfin 9227db96d56Sopenharmony_ci#undef cris 9237db96d56Sopenharmony_ci#undef fr30 9247db96d56Sopenharmony_ci#undef linux 9257db96d56Sopenharmony_ci#undef hppa 9267db96d56Sopenharmony_ci#undef hpux 9277db96d56Sopenharmony_ci#undef i386 9287db96d56Sopenharmony_ci#undef mips 9297db96d56Sopenharmony_ci#undef powerpc 9307db96d56Sopenharmony_ci#undef sparc 9317db96d56Sopenharmony_ci#undef unix 9327db96d56Sopenharmony_ci#if defined(__ANDROID__) 9337db96d56Sopenharmony_ci # Android is not a multiarch system. 9347db96d56Sopenharmony_ci#elif defined(__linux__) 9357db96d56Sopenharmony_ci# if defined(__x86_64__) && defined(__LP64__) 9367db96d56Sopenharmony_ci x86_64-linux-gnu 9377db96d56Sopenharmony_ci# elif defined(__x86_64__) && defined(__ILP32__) 9387db96d56Sopenharmony_ci x86_64-linux-gnux32 9397db96d56Sopenharmony_ci# elif defined(__i386__) 9407db96d56Sopenharmony_ci i386-linux-gnu 9417db96d56Sopenharmony_ci# elif defined(__aarch64__) && defined(__AARCH64EL__) 9427db96d56Sopenharmony_ci# if defined(__ILP32__) 9437db96d56Sopenharmony_ci aarch64_ilp32-linux-gnu 9447db96d56Sopenharmony_ci# else 9457db96d56Sopenharmony_ci aarch64-linux-gnu 9467db96d56Sopenharmony_ci# endif 9477db96d56Sopenharmony_ci# elif defined(__aarch64__) && defined(__AARCH64EB__) 9487db96d56Sopenharmony_ci# if defined(__ILP32__) 9497db96d56Sopenharmony_ci aarch64_be_ilp32-linux-gnu 9507db96d56Sopenharmony_ci# else 9517db96d56Sopenharmony_ci aarch64_be-linux-gnu 9527db96d56Sopenharmony_ci# endif 9537db96d56Sopenharmony_ci# elif defined(__alpha__) 9547db96d56Sopenharmony_ci alpha-linux-gnu 9557db96d56Sopenharmony_ci# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP) 9567db96d56Sopenharmony_ci# if defined(__ARMEL__) 9577db96d56Sopenharmony_ci arm-linux-gnueabihf 9587db96d56Sopenharmony_ci# else 9597db96d56Sopenharmony_ci armeb-linux-gnueabihf 9607db96d56Sopenharmony_ci# endif 9617db96d56Sopenharmony_ci# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP) 9627db96d56Sopenharmony_ci# if defined(__ARMEL__) 9637db96d56Sopenharmony_ci arm-linux-gnueabi 9647db96d56Sopenharmony_ci# else 9657db96d56Sopenharmony_ci armeb-linux-gnueabi 9667db96d56Sopenharmony_ci# endif 9677db96d56Sopenharmony_ci# elif defined(__hppa__) 9687db96d56Sopenharmony_ci hppa-linux-gnu 9697db96d56Sopenharmony_ci# elif defined(__ia64__) 9707db96d56Sopenharmony_ci ia64-linux-gnu 9717db96d56Sopenharmony_ci# elif defined(__m68k__) && !defined(__mcoldfire__) 9727db96d56Sopenharmony_ci m68k-linux-gnu 9737db96d56Sopenharmony_ci# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) && defined(_MIPSEL) 9747db96d56Sopenharmony_ci# if _MIPS_SIM == _ABIO32 9757db96d56Sopenharmony_ci mipsisa32r6el-linux-gnu 9767db96d56Sopenharmony_ci# elif _MIPS_SIM == _ABIN32 9777db96d56Sopenharmony_ci mipsisa64r6el-linux-gnuabin32 9787db96d56Sopenharmony_ci# elif _MIPS_SIM == _ABI64 9797db96d56Sopenharmony_ci mipsisa64r6el-linux-gnuabi64 9807db96d56Sopenharmony_ci# else 9817db96d56Sopenharmony_ci# error unknown platform triplet 9827db96d56Sopenharmony_ci# endif 9837db96d56Sopenharmony_ci# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) 9847db96d56Sopenharmony_ci# if _MIPS_SIM == _ABIO32 9857db96d56Sopenharmony_ci mipsisa32r6-linux-gnu 9867db96d56Sopenharmony_ci# elif _MIPS_SIM == _ABIN32 9877db96d56Sopenharmony_ci mipsisa64r6-linux-gnuabin32 9887db96d56Sopenharmony_ci# elif _MIPS_SIM == _ABI64 9897db96d56Sopenharmony_ci mipsisa64r6-linux-gnuabi64 9907db96d56Sopenharmony_ci# else 9917db96d56Sopenharmony_ci# error unknown platform triplet 9927db96d56Sopenharmony_ci# endif 9937db96d56Sopenharmony_ci# elif defined(__mips_hard_float) && defined(_MIPSEL) 9947db96d56Sopenharmony_ci# if _MIPS_SIM == _ABIO32 9957db96d56Sopenharmony_ci mipsel-linux-gnu 9967db96d56Sopenharmony_ci# elif _MIPS_SIM == _ABIN32 9977db96d56Sopenharmony_ci mips64el-linux-gnuabin32 9987db96d56Sopenharmony_ci# elif _MIPS_SIM == _ABI64 9997db96d56Sopenharmony_ci mips64el-linux-gnuabi64 10007db96d56Sopenharmony_ci# else 10017db96d56Sopenharmony_ci# error unknown platform triplet 10027db96d56Sopenharmony_ci# endif 10037db96d56Sopenharmony_ci# elif defined(__mips_hard_float) 10047db96d56Sopenharmony_ci# if _MIPS_SIM == _ABIO32 10057db96d56Sopenharmony_ci mips-linux-gnu 10067db96d56Sopenharmony_ci# elif _MIPS_SIM == _ABIN32 10077db96d56Sopenharmony_ci mips64-linux-gnuabin32 10087db96d56Sopenharmony_ci# elif _MIPS_SIM == _ABI64 10097db96d56Sopenharmony_ci mips64-linux-gnuabi64 10107db96d56Sopenharmony_ci# else 10117db96d56Sopenharmony_ci# error unknown platform triplet 10127db96d56Sopenharmony_ci# endif 10137db96d56Sopenharmony_ci# elif defined(__or1k__) 10147db96d56Sopenharmony_ci or1k-linux-gnu 10157db96d56Sopenharmony_ci# elif defined(__powerpc__) && defined(__SPE__) 10167db96d56Sopenharmony_ci powerpc-linux-gnuspe 10177db96d56Sopenharmony_ci# elif defined(__powerpc64__) 10187db96d56Sopenharmony_ci# if defined(__LITTLE_ENDIAN__) 10197db96d56Sopenharmony_ci powerpc64le-linux-gnu 10207db96d56Sopenharmony_ci# else 10217db96d56Sopenharmony_ci powerpc64-linux-gnu 10227db96d56Sopenharmony_ci# endif 10237db96d56Sopenharmony_ci# elif defined(__powerpc__) 10247db96d56Sopenharmony_ci powerpc-linux-gnu 10257db96d56Sopenharmony_ci# elif defined(__s390x__) 10267db96d56Sopenharmony_ci s390x-linux-gnu 10277db96d56Sopenharmony_ci# elif defined(__s390__) 10287db96d56Sopenharmony_ci s390-linux-gnu 10297db96d56Sopenharmony_ci# elif defined(__sh__) && defined(__LITTLE_ENDIAN__) 10307db96d56Sopenharmony_ci sh4-linux-gnu 10317db96d56Sopenharmony_ci# elif defined(__sparc__) && defined(__arch64__) 10327db96d56Sopenharmony_ci sparc64-linux-gnu 10337db96d56Sopenharmony_ci# elif defined(__sparc__) 10347db96d56Sopenharmony_ci sparc-linux-gnu 10357db96d56Sopenharmony_ci# elif defined(__riscv) 10367db96d56Sopenharmony_ci# if __riscv_xlen == 32 10377db96d56Sopenharmony_ci riscv32-linux-gnu 10387db96d56Sopenharmony_ci# elif __riscv_xlen == 64 10397db96d56Sopenharmony_ci riscv64-linux-gnu 10407db96d56Sopenharmony_ci# else 10417db96d56Sopenharmony_ci# error unknown platform triplet 10427db96d56Sopenharmony_ci# endif 10437db96d56Sopenharmony_ci# else 10447db96d56Sopenharmony_ci# error unknown platform triplet 10457db96d56Sopenharmony_ci# endif 10467db96d56Sopenharmony_ci#elif defined(__FreeBSD_kernel__) 10477db96d56Sopenharmony_ci# if defined(__LP64__) 10487db96d56Sopenharmony_ci x86_64-kfreebsd-gnu 10497db96d56Sopenharmony_ci# elif defined(__i386__) 10507db96d56Sopenharmony_ci i386-kfreebsd-gnu 10517db96d56Sopenharmony_ci# else 10527db96d56Sopenharmony_ci# error unknown platform triplet 10537db96d56Sopenharmony_ci# endif 10547db96d56Sopenharmony_ci#elif defined(__gnu_hurd__) 10557db96d56Sopenharmony_ci i386-gnu 10567db96d56Sopenharmony_ci#elif defined(__APPLE__) 10577db96d56Sopenharmony_ci darwin 10587db96d56Sopenharmony_ci#elif defined(__VXWORKS__) 10597db96d56Sopenharmony_ci vxworks 10607db96d56Sopenharmony_ci#elif defined(__wasm32__) 10617db96d56Sopenharmony_ci# if defined(__EMSCRIPTEN__) 10627db96d56Sopenharmony_ci wasm32-emscripten 10637db96d56Sopenharmony_ci# elif defined(__wasi__) 10647db96d56Sopenharmony_ci wasm32-wasi 10657db96d56Sopenharmony_ci# else 10667db96d56Sopenharmony_ci# error unknown wasm32 platform 10677db96d56Sopenharmony_ci# endif 10687db96d56Sopenharmony_ci#elif defined(__wasm64__) 10697db96d56Sopenharmony_ci# if defined(__EMSCRIPTEN__) 10707db96d56Sopenharmony_ci wasm64-emscripten 10717db96d56Sopenharmony_ci# elif defined(__wasi__) 10727db96d56Sopenharmony_ci wasm64-wasi 10737db96d56Sopenharmony_ci# else 10747db96d56Sopenharmony_ci# error unknown wasm64 platform 10757db96d56Sopenharmony_ci# endif 10767db96d56Sopenharmony_ci#else 10777db96d56Sopenharmony_ci# error unknown platform triplet 10787db96d56Sopenharmony_ci#endif 10797db96d56Sopenharmony_ci 10807db96d56Sopenharmony_ciEOF 10817db96d56Sopenharmony_ci 10827db96d56Sopenharmony_ciif $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then 10837db96d56Sopenharmony_ci PLATFORM_TRIPLET=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '` 10847db96d56Sopenharmony_ci case "$build_os" in 10857db96d56Sopenharmony_ci linux-musl*) 10867db96d56Sopenharmony_ci PLATFORM_TRIPLET=`echo "$PLATFORM_TRIPLET" | sed 's/linux-gnu/linux-musl/'` 10877db96d56Sopenharmony_ci ;; 10887db96d56Sopenharmony_ci esac 10897db96d56Sopenharmony_ci AC_MSG_RESULT([$PLATFORM_TRIPLET]) 10907db96d56Sopenharmony_cielse 10917db96d56Sopenharmony_ci AC_MSG_RESULT([none]) 10927db96d56Sopenharmony_cifi 10937db96d56Sopenharmony_cirm -f conftest.c conftest.out 10947db96d56Sopenharmony_ci 10957db96d56Sopenharmony_ciAC_MSG_CHECKING([for multiarch]) 10967db96d56Sopenharmony_ciAS_CASE([$ac_sys_system], 10977db96d56Sopenharmony_ci [Darwin*], [MULTIARCH=""], 10987db96d56Sopenharmony_ci [FreeBSD*], [MULTIARCH=""], 10997db96d56Sopenharmony_ci [MULTIARCH=$($CC --print-multiarch 2>/dev/null)] 11007db96d56Sopenharmony_ci) 11017db96d56Sopenharmony_ciAC_SUBST([MULTIARCH]) 11027db96d56Sopenharmony_ciAC_MSG_RESULT([$MULTIARCH]) 11037db96d56Sopenharmony_ci 11047db96d56Sopenharmony_ciif test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then 11057db96d56Sopenharmony_ci if test x$PLATFORM_TRIPLET != x$MULTIARCH; then 11067db96d56Sopenharmony_ci AC_MSG_ERROR([internal configure error for the platform triplet, please file a bug report]) 11077db96d56Sopenharmony_ci fi 11087db96d56Sopenharmony_cielif test x$PLATFORM_TRIPLET != x && test x$MULTIARCH = x; then 11097db96d56Sopenharmony_ci MULTIARCH=$PLATFORM_TRIPLET 11107db96d56Sopenharmony_cifi 11117db96d56Sopenharmony_ciAC_SUBST(PLATFORM_TRIPLET) 11127db96d56Sopenharmony_ci 11137db96d56Sopenharmony_ciif test x$MULTIARCH != x; then 11147db96d56Sopenharmony_ci MULTIARCH_CPPFLAGS="-DMULTIARCH=\\\"$MULTIARCH\\\"" 11157db96d56Sopenharmony_cifi 11167db96d56Sopenharmony_ciAC_SUBST(MULTIARCH_CPPFLAGS) 11177db96d56Sopenharmony_ci 11187db96d56Sopenharmony_cidnl Support tiers according to https://peps.python.org/pep-0011/ 11197db96d56Sopenharmony_cidnl 11207db96d56Sopenharmony_cidnl NOTE: Windows support tiers are defined in PC/pyconfig.h. 11217db96d56Sopenharmony_cidnl 11227db96d56Sopenharmony_ciAC_MSG_CHECKING([for PEP 11 support tier]) 11237db96d56Sopenharmony_ciAS_CASE([$host/$ac_cv_cc_name], 11247db96d56Sopenharmony_ci [x86_64-*-linux-gnu/gcc], [PY_SUPPORT_TIER=1], dnl Linux on AMD64, any vendor, glibc, gcc 11257db96d56Sopenharmony_ci [x86_64-apple-darwin*/clang], [PY_SUPPORT_TIER=1], dnl macOS on Intel, any version 11267db96d56Sopenharmony_ci [i686-pc-windows-msvc/msvc], [PY_SUPPORT_TIER=1], dnl 32bit Windows on Intel, MSVC 11277db96d56Sopenharmony_ci [x86_64-pc-windows-msvc/msvc], [PY_SUPPORT_TIER=1], dnl 64bit Windows on AMD64, MSVC 11287db96d56Sopenharmony_ci 11297db96d56Sopenharmony_ci [aarch64-apple-darwin*/clang], [PY_SUPPORT_TIER=2], dnl macOS on M1, any version 11307db96d56Sopenharmony_ci [aarch64-*-linux-gnu/gcc], [PY_SUPPORT_TIER=2], dnl Linux ARM64, glibc, gcc+clang 11317db96d56Sopenharmony_ci [aarch64-*-linux-gnu/clang], [PY_SUPPORT_TIER=2], 11327db96d56Sopenharmony_ci [powerpc64le-*-linux-gnu/gcc], [PY_SUPPORT_TIER=2], dnl Linux on PPC64 little endian, glibc, gcc 11337db96d56Sopenharmony_ci [x86_64-*-linux-gnu/clang], [PY_SUPPORT_TIER=2], dnl Linux on AMD64, any vendor, glibc, clang 11347db96d56Sopenharmony_ci 11357db96d56Sopenharmony_ci [aarch64-pc-windows-msvc/msvc], [PY_SUPPORT_TIER=3], dnl Windows ARM64, MSVC 11367db96d56Sopenharmony_ci [armv7l-*-linux-gnueabihf/gcc], [PY_SUPPORT_TIER=3], dnl ARMv7 LE with hardware floats, any vendor, glibc, gcc 11377db96d56Sopenharmony_ci [powerpc64le-*-linux-gnu/clang], [PY_SUPPORT_TIER=3], dnl Linux on PPC64 little endian, glibc, clang 11387db96d56Sopenharmony_ci [s390x-*-linux-gnu/gcc], [PY_SUPPORT_TIER=3], dnl Linux on 64bit s390x (big endian), glibc, gcc 11397db96d56Sopenharmony_ci [wasm32-unknown-emscripten/clang], [PY_SUPPORT_TIER=3], dnl WebAssembly Emscripten 11407db96d56Sopenharmony_ci [wasm32-unknown-wasi/clang], [PY_SUPPORT_TIER=3], dnl WebAssembly System Interface 11417db96d56Sopenharmony_ci [x86_64-*-freebsd*/clang], [PY_SUPPORT_TIER=3], dnl FreeBSD on AMD64 11427db96d56Sopenharmony_ci [PY_SUPPORT_TIER=0] 11437db96d56Sopenharmony_ci) 11447db96d56Sopenharmony_ci 11457db96d56Sopenharmony_ciAS_CASE([$PY_SUPPORT_TIER], 11467db96d56Sopenharmony_ci [1], [AC_MSG_RESULT([$host/$ac_cv_cc_name has tier 1 (supported)])], 11477db96d56Sopenharmony_ci [2], [AC_MSG_RESULT([$host/$ac_cv_cc_name has tier 2 (supported)])], 11487db96d56Sopenharmony_ci [3], [AC_MSG_RESULT([$host/$ac_cv_cc_name has tier 3 (partially supported)])], 11497db96d56Sopenharmony_ci [AC_MSG_WARN([$host/$ac_cv_cc_name is not supported])] 11507db96d56Sopenharmony_ci) 11517db96d56Sopenharmony_ci 11527db96d56Sopenharmony_ciAC_DEFINE_UNQUOTED([PY_SUPPORT_TIER], [$PY_SUPPORT_TIER], [PEP 11 Support tier (1, 2, 3 or 0 for unsupported)]) 11537db96d56Sopenharmony_ci 11547db96d56Sopenharmony_ciAC_CACHE_CHECK([for -Wl,--no-as-needed], [ac_cv_wl_no_as_needed], [ 11557db96d56Sopenharmony_ci save_LDFLAGS="$LDFLAGS" 11567db96d56Sopenharmony_ci AS_VAR_APPEND([LDFLAGS], [-Wl,--no-as-needed]) 11577db96d56Sopenharmony_ci AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], 11587db96d56Sopenharmony_ci [NO_AS_NEEDED="-Wl,--no-as-needed" 11597db96d56Sopenharmony_ci ac_cv_wl_no_as_needed=yes], 11607db96d56Sopenharmony_ci [NO_AS_NEEDED="" 11617db96d56Sopenharmony_ci ac_cv_wl_no_as_needed=no]) 11627db96d56Sopenharmony_ci LDFLAGS="$save_LDFLAGS" 11637db96d56Sopenharmony_ci]) 11647db96d56Sopenharmony_ciAC_SUBST(NO_AS_NEEDED) 11657db96d56Sopenharmony_ci 11667db96d56Sopenharmony_ciAC_MSG_CHECKING([for the Android API level]) 11677db96d56Sopenharmony_cicat > conftest.c <<EOF 11687db96d56Sopenharmony_ci#ifdef __ANDROID__ 11697db96d56Sopenharmony_ciandroid_api = __ANDROID_API__ 11707db96d56Sopenharmony_ciarm_arch = __ARM_ARCH 11717db96d56Sopenharmony_ci#else 11727db96d56Sopenharmony_ci#error not Android 11737db96d56Sopenharmony_ci#endif 11747db96d56Sopenharmony_ciEOF 11757db96d56Sopenharmony_ci 11767db96d56Sopenharmony_ciif $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then 11777db96d56Sopenharmony_ci ANDROID_API_LEVEL=`sed -n -e '/__ANDROID_API__/d' -e 's/^android_api = //p' conftest.out` 11787db96d56Sopenharmony_ci _arm_arch=`sed -n -e '/__ARM_ARCH/d' -e 's/^arm_arch = //p' conftest.out` 11797db96d56Sopenharmony_ci AC_MSG_RESULT([$ANDROID_API_LEVEL]) 11807db96d56Sopenharmony_ci if test -z "$ANDROID_API_LEVEL"; then 11817db96d56Sopenharmony_ci AC_MSG_ERROR([Fatal: you must define __ANDROID_API__]) 11827db96d56Sopenharmony_ci fi 11837db96d56Sopenharmony_ci AC_DEFINE_UNQUOTED(ANDROID_API_LEVEL, $ANDROID_API_LEVEL, [The Android API level.]) 11847db96d56Sopenharmony_ci 11857db96d56Sopenharmony_ci AC_MSG_CHECKING([for the Android arm ABI]) 11867db96d56Sopenharmony_ci AC_MSG_RESULT([$_arm_arch]) 11877db96d56Sopenharmony_ci if test "$_arm_arch" = 7; then 11887db96d56Sopenharmony_ci BASECFLAGS="${BASECFLAGS} -mfloat-abi=softfp -mfpu=vfpv3-d16" 11897db96d56Sopenharmony_ci LDFLAGS="${LDFLAGS} -march=armv7-a -Wl,--fix-cortex-a8" 11907db96d56Sopenharmony_ci fi 11917db96d56Sopenharmony_cielse 11927db96d56Sopenharmony_ci AC_MSG_RESULT([not Android]) 11937db96d56Sopenharmony_cifi 11947db96d56Sopenharmony_cirm -f conftest.c conftest.out 11957db96d56Sopenharmony_ci 11967db96d56Sopenharmony_ci# Check for unsupported systems 11977db96d56Sopenharmony_ciAS_CASE([$ac_sys_system/$ac_sys_release], 11987db96d56Sopenharmony_ci [atheos*|Linux*/1*], [ 11997db96d56Sopenharmony_ci AC_MSG_ERROR([m4_normalize([ 12007db96d56Sopenharmony_ci This system \($ac_sys_system/$ac_sys_release\) is no longer supported. 12017db96d56Sopenharmony_ci See README for details. 12027db96d56Sopenharmony_ci ])]) 12037db96d56Sopenharmony_ci ] 12047db96d56Sopenharmony_ci) 12057db96d56Sopenharmony_ci 12067db96d56Sopenharmony_ciAC_MSG_CHECKING([for --with-emscripten-target]) 12077db96d56Sopenharmony_ciAC_ARG_WITH([emscripten-target], 12087db96d56Sopenharmony_ci [AS_HELP_STRING([--with-emscripten-target=@<:@browser|node@:>@], [Emscripten platform])], 12097db96d56Sopenharmony_ci[ 12107db96d56Sopenharmony_ci AS_VAR_IF([ac_sys_system], [Emscripten], [ 12117db96d56Sopenharmony_ci AS_CASE([$with_emscripten_target], 12127db96d56Sopenharmony_ci [browser], [ac_sys_emscripten_target=browser], 12137db96d56Sopenharmony_ci [node], [ac_sys_emscripten_target=node], 12147db96d56Sopenharmony_cidnl Debug builds with source map / dwarf symbols. Py_DEBUG builds easily 12157db96d56Sopenharmony_cidnl run out of stack space. Detached sybmols and map prohibit some 12167db96d56Sopenharmony_cidnl optimizations and increase file size. Options are undocumented so we 12177db96d56Sopenharmony_cidnl are free to remove them in the future. 12187db96d56Sopenharmony_ci [browser-debug], [ac_sys_emscripten_target=browser-debug], 12197db96d56Sopenharmony_ci [node-debug], [ac_sys_emscripten_target=node-debug], 12207db96d56Sopenharmony_ci [AC_MSG_ERROR([Invalid argument: --with-emscripten-target=browser|node])] 12217db96d56Sopenharmony_ci ) 12227db96d56Sopenharmony_ci ], [ 12237db96d56Sopenharmony_ci AC_MSG_ERROR([--with-emscripten-target only applies to Emscripten]) 12247db96d56Sopenharmony_ci ]) 12257db96d56Sopenharmony_ci], [ 12267db96d56Sopenharmony_ci AS_VAR_IF([ac_sys_system], [Emscripten], [ac_sys_emscripten_target=browser]) 12277db96d56Sopenharmony_ci]) 12287db96d56Sopenharmony_ciAC_MSG_RESULT([$ac_sys_emscripten_target]) 12297db96d56Sopenharmony_ci 12307db96d56Sopenharmony_cidnl On Emscripten dlopen() requires -s MAIN_MODULE and -fPIC. The flags 12317db96d56Sopenharmony_cidnl disables dead code elimination and increases the size of the WASM module 12327db96d56Sopenharmony_cidnl by about 1.5 to 2MB. MAIN_MODULE defines __wasm_mutable_globals__. 12337db96d56Sopenharmony_cidnl See https://emscripten.org/docs/compiling/Dynamic-Linking.html 12347db96d56Sopenharmony_ciAC_MSG_CHECKING([for --enable-wasm-dynamic-linking]) 12357db96d56Sopenharmony_ciAC_ARG_ENABLE([wasm-dynamic-linking], 12367db96d56Sopenharmony_ci [AS_HELP_STRING([--enable-wasm-dynamic-linking], 12377db96d56Sopenharmony_ci [Enable dynamic linking support for WebAssembly (default is no)])], 12387db96d56Sopenharmony_ci[ 12397db96d56Sopenharmony_ci AS_CASE([$ac_sys_system], 12407db96d56Sopenharmony_ci [Emscripten], [], 12417db96d56Sopenharmony_ci [WASI], [AC_MSG_ERROR([WASI dynamic linking is not implemented yet.])], 12427db96d56Sopenharmony_ci [AC_MSG_ERROR([--enable-wasm-dynamic-linking only applies to Emscripten and WASI])] 12437db96d56Sopenharmony_ci ) 12447db96d56Sopenharmony_ci], [ 12457db96d56Sopenharmony_ci enable_wasm_dynamic_linking=missing 12467db96d56Sopenharmony_ci]) 12477db96d56Sopenharmony_ciAC_MSG_RESULT([$enable_wasm_dynamic_linking]) 12487db96d56Sopenharmony_ci 12497db96d56Sopenharmony_ciAC_MSG_CHECKING([for --enable-wasm-pthreads]) 12507db96d56Sopenharmony_ciAC_ARG_ENABLE([wasm-pthreads], 12517db96d56Sopenharmony_ci [AS_HELP_STRING([--enable-wasm-pthreads], 12527db96d56Sopenharmony_ci [Enable pthread emulation for WebAssembly (default is no)])], 12537db96d56Sopenharmony_ci[ 12547db96d56Sopenharmony_ci AS_CASE([$ac_sys_system], 12557db96d56Sopenharmony_ci [Emscripten], [], 12567db96d56Sopenharmony_ci [WASI], [AC_MSG_ERROR([WASI threading is not implemented yet.])], 12577db96d56Sopenharmony_ci [AC_MSG_ERROR([--enable-wasm-pthreads only applies to Emscripten and WASI])] 12587db96d56Sopenharmony_ci ) 12597db96d56Sopenharmony_ci], [ 12607db96d56Sopenharmony_ci enable_wasm_pthreads=missing 12617db96d56Sopenharmony_ci]) 12627db96d56Sopenharmony_ciAC_MSG_RESULT([$enable_wasm_pthreads]) 12637db96d56Sopenharmony_ci 12647db96d56Sopenharmony_ciAC_MSG_CHECKING([for --with-suffix]) 12657db96d56Sopenharmony_ciAC_ARG_WITH([suffix], 12667db96d56Sopenharmony_ci [AS_HELP_STRING([--with-suffix=SUFFIX], [set executable suffix to SUFFIX (default is empty, yes is mapped to '.exe')])], 12677db96d56Sopenharmony_ci[ 12687db96d56Sopenharmony_ci AS_CASE([$with_suffix], 12697db96d56Sopenharmony_ci [no], [EXEEXT=], 12707db96d56Sopenharmony_ci [yes], [EXEEXT=.exe], 12717db96d56Sopenharmony_ci [EXEEXT=$with_suffix] 12727db96d56Sopenharmony_ci ) 12737db96d56Sopenharmony_ci], [ 12747db96d56Sopenharmony_ci AS_CASE([$ac_sys_system/$ac_sys_emscripten_target], 12757db96d56Sopenharmony_ci [Emscripten/browser*], [EXEEXT=.js], 12767db96d56Sopenharmony_ci [Emscripten/node*], [EXEEXT=.js], 12777db96d56Sopenharmony_ci [WASI/*], [EXEEXT=.wasm], 12787db96d56Sopenharmony_ci [EXEEXT=] 12797db96d56Sopenharmony_ci ) 12807db96d56Sopenharmony_ci]) 12817db96d56Sopenharmony_ciAC_MSG_RESULT([$EXEEXT]) 12827db96d56Sopenharmony_ci 12837db96d56Sopenharmony_ci# Test whether we're running on a non-case-sensitive system, in which 12847db96d56Sopenharmony_ci# case we give a warning if no ext is given 12857db96d56Sopenharmony_ciAC_SUBST(BUILDEXEEXT) 12867db96d56Sopenharmony_ciAC_MSG_CHECKING(for case-insensitive build directory) 12877db96d56Sopenharmony_ciif test ! -d CaseSensitiveTestDir; then 12887db96d56Sopenharmony_cimkdir CaseSensitiveTestDir 12897db96d56Sopenharmony_cifi 12907db96d56Sopenharmony_ci 12917db96d56Sopenharmony_ciif test -d casesensitivetestdir && test -z "$EXEEXT" 12927db96d56Sopenharmony_cithen 12937db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 12947db96d56Sopenharmony_ci BUILDEXEEXT=.exe 12957db96d56Sopenharmony_cielse 12967db96d56Sopenharmony_ci AC_MSG_RESULT(no) 12977db96d56Sopenharmony_ci BUILDEXEEXT=$EXEEXT 12987db96d56Sopenharmony_cifi 12997db96d56Sopenharmony_cirmdir CaseSensitiveTestDir 13007db96d56Sopenharmony_ci 13017db96d56Sopenharmony_cicase $ac_sys_system in 13027db96d56Sopenharmony_cihp*|HP*) 13037db96d56Sopenharmony_ci case $CC in 13047db96d56Sopenharmony_ci cc|*/cc) CC="$CC -Ae";; 13057db96d56Sopenharmony_ci esac;; 13067db96d56Sopenharmony_ciesac 13077db96d56Sopenharmony_ci 13087db96d56Sopenharmony_ciAC_SUBST(LIBRARY) 13097db96d56Sopenharmony_ciAC_MSG_CHECKING(LIBRARY) 13107db96d56Sopenharmony_ciif test -z "$LIBRARY" 13117db96d56Sopenharmony_cithen 13127db96d56Sopenharmony_ci LIBRARY='libpython$(VERSION)$(ABIFLAGS).a' 13137db96d56Sopenharmony_cifi 13147db96d56Sopenharmony_ciAC_MSG_RESULT($LIBRARY) 13157db96d56Sopenharmony_ci 13167db96d56Sopenharmony_ci# LDLIBRARY is the name of the library to link against (as opposed to the 13177db96d56Sopenharmony_ci# name of the library into which to insert object files). BLDLIBRARY is also 13187db96d56Sopenharmony_ci# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY 13197db96d56Sopenharmony_ci# is blank as the main program is not linked directly against LDLIBRARY. 13207db96d56Sopenharmony_ci# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On 13217db96d56Sopenharmony_ci# systems without shared libraries, LDLIBRARY is the same as LIBRARY 13227db96d56Sopenharmony_ci# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library, 13237db96d56Sopenharmony_ci# DLLLIBRARY is the shared (i.e., DLL) library. 13247db96d56Sopenharmony_ci# 13257db96d56Sopenharmony_ci# RUNSHARED is used to run shared python without installed libraries 13267db96d56Sopenharmony_ci# 13277db96d56Sopenharmony_ci# INSTSONAME is the name of the shared library that will be use to install 13287db96d56Sopenharmony_ci# on the system - some systems like version suffix, others don't 13297db96d56Sopenharmony_ci# 13307db96d56Sopenharmony_ci# LDVERSION is the shared library version number, normally the Python version 13317db96d56Sopenharmony_ci# with the ABI build flags appended. 13327db96d56Sopenharmony_ciAC_SUBST(LDLIBRARY) 13337db96d56Sopenharmony_ciAC_SUBST(DLLLIBRARY) 13347db96d56Sopenharmony_ciAC_SUBST(BLDLIBRARY) 13357db96d56Sopenharmony_ciAC_SUBST(PY3LIBRARY) 13367db96d56Sopenharmony_ciAC_SUBST(LDLIBRARYDIR) 13377db96d56Sopenharmony_ciAC_SUBST(INSTSONAME) 13387db96d56Sopenharmony_ciAC_SUBST(RUNSHARED) 13397db96d56Sopenharmony_ciAC_SUBST(LDVERSION) 13407db96d56Sopenharmony_ciLDLIBRARY="$LIBRARY" 13417db96d56Sopenharmony_ciBLDLIBRARY='$(LDLIBRARY)' 13427db96d56Sopenharmony_ciINSTSONAME='$(LDLIBRARY)' 13437db96d56Sopenharmony_ciDLLLIBRARY='' 13447db96d56Sopenharmony_ciLDLIBRARYDIR='' 13457db96d56Sopenharmony_ciRUNSHARED='' 13467db96d56Sopenharmony_ciLDVERSION="$VERSION" 13477db96d56Sopenharmony_ci 13487db96d56Sopenharmony_ci# LINKCC is the command that links the python executable -- default is $(CC). 13497db96d56Sopenharmony_ci# If CXX is set, and if it is needed to link a main function that was 13507db96d56Sopenharmony_ci# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable: 13517db96d56Sopenharmony_ci# python might then depend on the C++ runtime 13527db96d56Sopenharmony_ciAC_SUBST(LINKCC) 13537db96d56Sopenharmony_ciAC_MSG_CHECKING(LINKCC) 13547db96d56Sopenharmony_ciif test -z "$LINKCC" 13557db96d56Sopenharmony_cithen 13567db96d56Sopenharmony_ci LINKCC='$(PURIFY) $(MAINCC)' 13577db96d56Sopenharmony_ci case $ac_sys_system in 13587db96d56Sopenharmony_ci QNX*) 13597db96d56Sopenharmony_ci # qcc must be used because the other compilers do not 13607db96d56Sopenharmony_ci # support -N. 13617db96d56Sopenharmony_ci LINKCC=qcc;; 13627db96d56Sopenharmony_ci esac 13637db96d56Sopenharmony_cifi 13647db96d56Sopenharmony_ciAC_MSG_RESULT($LINKCC) 13657db96d56Sopenharmony_ci 13667db96d56Sopenharmony_ci# EXPORTSYMS holds the list of exported symbols for AIX. 13677db96d56Sopenharmony_ci# EXPORTSFROM holds the module name exporting symbols on AIX. 13687db96d56Sopenharmony_ciEXPORTSYMS= 13697db96d56Sopenharmony_ciEXPORTSFROM= 13707db96d56Sopenharmony_ciAC_SUBST(EXPORTSYMS) 13717db96d56Sopenharmony_ciAC_SUBST(EXPORTSFROM) 13727db96d56Sopenharmony_ciAC_MSG_CHECKING(EXPORTSYMS) 13737db96d56Sopenharmony_cicase $ac_sys_system in 13747db96d56Sopenharmony_ciAIX*) 13757db96d56Sopenharmony_ci EXPORTSYMS="Modules/python.exp" 13767db96d56Sopenharmony_ci EXPORTSFROM=. # the main executable 13777db96d56Sopenharmony_ci ;; 13787db96d56Sopenharmony_ciesac 13797db96d56Sopenharmony_ciAC_MSG_RESULT($EXPORTSYMS) 13807db96d56Sopenharmony_ci 13817db96d56Sopenharmony_ci# GNULD is set to "yes" if the GNU linker is used. If this goes wrong 13827db96d56Sopenharmony_ci# make sure we default having it set to "no": this is used by 13837db96d56Sopenharmony_ci# distutils.unixccompiler to know if it should add --enable-new-dtags 13847db96d56Sopenharmony_ci# to linker command lines, and failing to detect GNU ld simply results 13857db96d56Sopenharmony_ci# in the same behaviour as before. 13867db96d56Sopenharmony_ciAC_SUBST(GNULD) 13877db96d56Sopenharmony_ciAC_MSG_CHECKING(for GNU ld) 13887db96d56Sopenharmony_ciac_prog=ld 13897db96d56Sopenharmony_ciif test "$GCC" = yes; then 13907db96d56Sopenharmony_ci ac_prog=`$CC -print-prog-name=ld` 13917db96d56Sopenharmony_cifi 13927db96d56Sopenharmony_cicase `"$ac_prog" -V 2>&1 < /dev/null` in 13937db96d56Sopenharmony_ci *GNU*) 13947db96d56Sopenharmony_ci GNULD=yes;; 13957db96d56Sopenharmony_ci *) 13967db96d56Sopenharmony_ci GNULD=no;; 13977db96d56Sopenharmony_ciesac 13987db96d56Sopenharmony_ciAC_MSG_RESULT($GNULD) 13997db96d56Sopenharmony_ci 14007db96d56Sopenharmony_ciAC_MSG_CHECKING(for --enable-shared) 14017db96d56Sopenharmony_ciAC_ARG_ENABLE(shared, 14027db96d56Sopenharmony_ci AS_HELP_STRING([--enable-shared], [enable building a shared Python library (default is no)])) 14037db96d56Sopenharmony_ci 14047db96d56Sopenharmony_ciif test -z "$enable_shared" 14057db96d56Sopenharmony_cithen 14067db96d56Sopenharmony_ci case $ac_sys_system in 14077db96d56Sopenharmony_ci CYGWIN*) 14087db96d56Sopenharmony_ci enable_shared="yes";; 14097db96d56Sopenharmony_ci *) 14107db96d56Sopenharmony_ci enable_shared="no";; 14117db96d56Sopenharmony_ci esac 14127db96d56Sopenharmony_cifi 14137db96d56Sopenharmony_ciAC_MSG_RESULT($enable_shared) 14147db96d56Sopenharmony_ci 14157db96d56Sopenharmony_ci# --with-static-libpython 14167db96d56Sopenharmony_ciSTATIC_LIBPYTHON=1 14177db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-static-libpython) 14187db96d56Sopenharmony_ciAC_ARG_WITH(static-libpython, 14197db96d56Sopenharmony_ci AS_HELP_STRING([--without-static-libpython], 14207db96d56Sopenharmony_ci [do not build libpythonMAJOR.MINOR.a and do not install python.o (default is yes)]), 14217db96d56Sopenharmony_ci[ 14227db96d56Sopenharmony_ciif test "$withval" = no 14237db96d56Sopenharmony_cithen 14247db96d56Sopenharmony_ci AC_MSG_RESULT(no); 14257db96d56Sopenharmony_ci STATIC_LIBPYTHON=0 14267db96d56Sopenharmony_cielse 14277db96d56Sopenharmony_ci AC_MSG_RESULT(yes); 14287db96d56Sopenharmony_cifi], 14297db96d56Sopenharmony_ci[AC_MSG_RESULT(yes)]) 14307db96d56Sopenharmony_ciAC_SUBST(STATIC_LIBPYTHON) 14317db96d56Sopenharmony_ci 14327db96d56Sopenharmony_ciAC_MSG_CHECKING(for --enable-profiling) 14337db96d56Sopenharmony_ciAC_ARG_ENABLE(profiling, 14347db96d56Sopenharmony_ci AS_HELP_STRING([--enable-profiling], [enable C-level code profiling with gprof (default is no)])) 14357db96d56Sopenharmony_ciif test "x$enable_profiling" = xyes; then 14367db96d56Sopenharmony_ci ac_save_cc="$CC" 14377db96d56Sopenharmony_ci CC="$CC -pg" 14387db96d56Sopenharmony_ci AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void) { return 0; }]])], 14397db96d56Sopenharmony_ci [], 14407db96d56Sopenharmony_ci [enable_profiling=no]) 14417db96d56Sopenharmony_ci CC="$ac_save_cc" 14427db96d56Sopenharmony_cielse 14437db96d56Sopenharmony_ci enable_profiling=no 14447db96d56Sopenharmony_cifi 14457db96d56Sopenharmony_ciAC_MSG_RESULT($enable_profiling) 14467db96d56Sopenharmony_ci 14477db96d56Sopenharmony_ciif test "x$enable_profiling" = xyes; then 14487db96d56Sopenharmony_ci BASECFLAGS="-pg $BASECFLAGS" 14497db96d56Sopenharmony_ci LDFLAGS="-pg $LDFLAGS" 14507db96d56Sopenharmony_cifi 14517db96d56Sopenharmony_ci 14527db96d56Sopenharmony_ciAC_MSG_CHECKING(LDLIBRARY) 14537db96d56Sopenharmony_ci 14547db96d56Sopenharmony_ci# MacOSX framework builds need more magic. LDLIBRARY is the dynamic 14557db96d56Sopenharmony_ci# library that we build, but we do not want to link against it (we 14567db96d56Sopenharmony_ci# will find it with a -framework option). For this reason there is an 14577db96d56Sopenharmony_ci# extra variable BLDLIBRARY against which Python and the extension 14587db96d56Sopenharmony_ci# modules are linked, BLDLIBRARY. This is normally the same as 14597db96d56Sopenharmony_ci# LDLIBRARY, but empty for MacOSX framework builds. 14607db96d56Sopenharmony_ciif test "$enable_framework" 14617db96d56Sopenharmony_cithen 14627db96d56Sopenharmony_ci LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' 14637db96d56Sopenharmony_ci RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}} 14647db96d56Sopenharmony_ci BLDLIBRARY='' 14657db96d56Sopenharmony_cielse 14667db96d56Sopenharmony_ci BLDLIBRARY='$(LDLIBRARY)' 14677db96d56Sopenharmony_cifi 14687db96d56Sopenharmony_ci 14697db96d56Sopenharmony_ci# Other platforms follow 14707db96d56Sopenharmony_ciif test $enable_shared = "yes"; then 14717db96d56Sopenharmony_ci PY_ENABLE_SHARED=1 14727db96d56Sopenharmony_ci AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.]) 14737db96d56Sopenharmony_ci case $ac_sys_system in 14747db96d56Sopenharmony_ci CYGWIN*) 14757db96d56Sopenharmony_ci LDLIBRARY='libpython$(LDVERSION).dll.a' 14767db96d56Sopenharmony_ci DLLLIBRARY='libpython$(LDVERSION).dll' 14777db96d56Sopenharmony_ci ;; 14787db96d56Sopenharmony_ci SunOS*) 14797db96d56Sopenharmony_ci LDLIBRARY='libpython$(LDVERSION).so' 14807db96d56Sopenharmony_ci BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)' 14817db96d56Sopenharmony_ci RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 14827db96d56Sopenharmony_ci INSTSONAME="$LDLIBRARY".$SOVERSION 14837db96d56Sopenharmony_ci if test "$with_pydebug" != yes 14847db96d56Sopenharmony_ci then 14857db96d56Sopenharmony_ci PY3LIBRARY=libpython3.so 14867db96d56Sopenharmony_ci fi 14877db96d56Sopenharmony_ci ;; 14887db96d56Sopenharmony_ci Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*) 14897db96d56Sopenharmony_ci LDLIBRARY='libpython$(LDVERSION).so' 14907db96d56Sopenharmony_ci BLDLIBRARY='-L. -lpython$(LDVERSION)' 14917db96d56Sopenharmony_ci RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 14927db96d56Sopenharmony_ci INSTSONAME="$LDLIBRARY".$SOVERSION 14937db96d56Sopenharmony_ci if test "$with_pydebug" != yes 14947db96d56Sopenharmony_ci then 14957db96d56Sopenharmony_ci PY3LIBRARY=libpython3.so 14967db96d56Sopenharmony_ci fi 14977db96d56Sopenharmony_ci ;; 14987db96d56Sopenharmony_ci hp*|HP*) 14997db96d56Sopenharmony_ci case `uname -m` in 15007db96d56Sopenharmony_ci ia64) 15017db96d56Sopenharmony_ci LDLIBRARY='libpython$(LDVERSION).so' 15027db96d56Sopenharmony_ci ;; 15037db96d56Sopenharmony_ci *) 15047db96d56Sopenharmony_ci LDLIBRARY='libpython$(LDVERSION).sl' 15057db96d56Sopenharmony_ci ;; 15067db96d56Sopenharmony_ci esac 15077db96d56Sopenharmony_ci BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)' 15087db96d56Sopenharmony_ci RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}} 15097db96d56Sopenharmony_ci ;; 15107db96d56Sopenharmony_ci Darwin*) 15117db96d56Sopenharmony_ci LDLIBRARY='libpython$(LDVERSION).dylib' 15127db96d56Sopenharmony_ci BLDLIBRARY='-L. -lpython$(LDVERSION)' 15137db96d56Sopenharmony_ci RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}} 15147db96d56Sopenharmony_ci ;; 15157db96d56Sopenharmony_ci AIX*) 15167db96d56Sopenharmony_ci LDLIBRARY='libpython$(LDVERSION).so' 15177db96d56Sopenharmony_ci RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}} 15187db96d56Sopenharmony_ci ;; 15197db96d56Sopenharmony_ci 15207db96d56Sopenharmony_ci esac 15217db96d56Sopenharmony_cielse # shared is disabled 15227db96d56Sopenharmony_ci PY_ENABLE_SHARED=0 15237db96d56Sopenharmony_ci case $ac_sys_system in 15247db96d56Sopenharmony_ci CYGWIN*) 15257db96d56Sopenharmony_ci BLDLIBRARY='$(LIBRARY)' 15267db96d56Sopenharmony_ci LDLIBRARY='libpython$(LDVERSION).dll.a' 15277db96d56Sopenharmony_ci ;; 15287db96d56Sopenharmony_ci esac 15297db96d56Sopenharmony_cifi 15307db96d56Sopenharmony_ci 15317db96d56Sopenharmony_ciif test "$cross_compiling" = yes; then 15327db96d56Sopenharmony_ci RUNSHARED= 15337db96d56Sopenharmony_cifi 15347db96d56Sopenharmony_ci 15357db96d56Sopenharmony_ciAC_ARG_VAR([HOSTRUNNER], [Program to run CPython for the host platform]) 15367db96d56Sopenharmony_ciif test -z "$HOSTRUNNER" 15377db96d56Sopenharmony_cithen 15387db96d56Sopenharmony_ci AS_CASE([$ac_sys_system/$ac_sys_emscripten_target], 15397db96d56Sopenharmony_ci [Emscripten/node*], [ 15407db96d56Sopenharmony_ci AC_PATH_TOOL([NODE], [node], [node]) 15417db96d56Sopenharmony_ci HOSTRUNNER="$NODE" 15427db96d56Sopenharmony_ci # bigint for ctypes c_longlong, c_longdouble 15437db96d56Sopenharmony_ci # no longer available in Node 16 15447db96d56Sopenharmony_ci AC_CACHE_CHECK([for node --experimental-wasm-bigint], [ac_cv_tool_node_wasm_bigint], [ 15457db96d56Sopenharmony_ci if $NODE -v --experimental-wasm-bigint > /dev/null 2>&1; then 15467db96d56Sopenharmony_ci ac_cv_tool_node_wasm_bigint=yes 15477db96d56Sopenharmony_ci else 15487db96d56Sopenharmony_ci ac_cv_tool_node_wasm_bigint=no 15497db96d56Sopenharmony_ci fi 15507db96d56Sopenharmony_ci ]) 15517db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_tool_node_wasm_bigint], [yes], [ 15527db96d56Sopenharmony_ci AS_VAR_APPEND([HOSTRUNNER], [" --experimental-wasm-bigint"]) 15537db96d56Sopenharmony_ci ]) 15547db96d56Sopenharmony_ci 15557db96d56Sopenharmony_ci AS_VAR_IF([enable_wasm_pthreads], [yes], [ 15567db96d56Sopenharmony_ci AS_VAR_APPEND([HOSTRUNNER], [" --experimental-wasm-threads"]) 15577db96d56Sopenharmony_ci # no longer available in Node 16 15587db96d56Sopenharmony_ci AC_CACHE_CHECK([for node --experimental-wasm-bulk-memory], [ac_cv_tool_node_wasm_bulk_memory], [ 15597db96d56Sopenharmony_ci if $NODE -v --experimental-wasm-bulk-memory > /dev/null 2>&1; then 15607db96d56Sopenharmony_ci ac_cv_tool_node_wasm_bulk_memory=yes 15617db96d56Sopenharmony_ci else 15627db96d56Sopenharmony_ci ac_cv_tool_node_wasm_bulk_memory=no 15637db96d56Sopenharmony_ci fi 15647db96d56Sopenharmony_ci ]) 15657db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_tool_node_wasm_bulk_memory], [yes], [ 15667db96d56Sopenharmony_ci AS_VAR_APPEND([HOSTRUNNER], [" --experimental-wasm-bulk-memory"]) 15677db96d56Sopenharmony_ci ]) 15687db96d56Sopenharmony_ci ]) 15697db96d56Sopenharmony_ci 15707db96d56Sopenharmony_ci AS_VAR_IF([host_cpu], [wasm64], [AS_VAR_APPEND([HOSTRUNNER], [" --experimental-wasm-memory64"])]) 15717db96d56Sopenharmony_ci ], 15727db96d56Sopenharmony_ci dnl TODO: support other WASI runtimes 15737db96d56Sopenharmony_ci dnl wasmtime starts the proces with "/" as CWD. For OOT builds add the 15747db96d56Sopenharmony_ci dnl directory containing _sysconfigdata to PYTHONPATH. 15757db96d56Sopenharmony_ci [WASI/*], [HOSTRUNNER='wasmtime run --env PYTHONPATH=/$(shell realpath --relative-to $(abs_srcdir) $(abs_builddir))/$(shell cat pybuilddir.txt) --mapdir /::$(srcdir) --'], 15767db96d56Sopenharmony_ci [HOSTRUNNER=''] 15777db96d56Sopenharmony_ci ) 15787db96d56Sopenharmony_cifi 15797db96d56Sopenharmony_ciAC_SUBST([HOSTRUNNER]) 15807db96d56Sopenharmony_ciAC_MSG_CHECKING([HOSTRUNNER]) 15817db96d56Sopenharmony_ciAC_MSG_RESULT([$HOSTRUNNER]) 15827db96d56Sopenharmony_ci 15837db96d56Sopenharmony_ciif test -n "$HOSTRUNNER"; then 15847db96d56Sopenharmony_ci dnl Pass hostrunner variable as env var in order to expand shell expressions. 15857db96d56Sopenharmony_ci PYTHON_FOR_BUILD="_PYTHON_HOSTRUNNER='$HOSTRUNNER' $PYTHON_FOR_BUILD" 15867db96d56Sopenharmony_cifi 15877db96d56Sopenharmony_ci 15887db96d56Sopenharmony_ciAC_MSG_RESULT($LDLIBRARY) 15897db96d56Sopenharmony_ci 15907db96d56Sopenharmony_ci# LIBRARY_DEPS, LINK_PYTHON_OBJS and LINK_PYTHON_DEPS variable 15917db96d56Sopenharmony_ciAS_CASE([$ac_sys_system/$ac_sys_emscripten_target], 15927db96d56Sopenharmony_ci [Emscripten/browser*], [LIBRARY_DEPS='$(PY3LIBRARY) $(WASM_STDLIB) python.html python.worker.js'], 15937db96d56Sopenharmony_ci [LIBRARY_DEPS='$(PY3LIBRARY) $(EXPORTSYMS)'] 15947db96d56Sopenharmony_ci) 15957db96d56Sopenharmony_ciLINK_PYTHON_DEPS='$(LIBRARY_DEPS)' 15967db96d56Sopenharmony_ciif test "$PY_ENABLE_SHARED" = 1 || test "$enable_framework" ; then 15977db96d56Sopenharmony_ci LIBRARY_DEPS="\$(LDLIBRARY) $LIBRARY_DEPS" 15987db96d56Sopenharmony_ci if test "$STATIC_LIBPYTHON" = 1; then 15997db96d56Sopenharmony_ci LIBRARY_DEPS="\$(LIBRARY) $LIBRARY_DEPS" 16007db96d56Sopenharmony_ci fi 16017db96d56Sopenharmony_ci # Link Python program to the shared library 16027db96d56Sopenharmony_ci LINK_PYTHON_OBJS='$(BLDLIBRARY)' 16037db96d56Sopenharmony_cielse 16047db96d56Sopenharmony_ci if test "$STATIC_LIBPYTHON" = 0; then 16057db96d56Sopenharmony_ci # Build Python needs object files but don't need to build 16067db96d56Sopenharmony_ci # Python static library 16077db96d56Sopenharmony_ci LINK_PYTHON_DEPS="$LIBRARY_DEPS \$(LIBRARY_OBJS)" 16087db96d56Sopenharmony_ci fi 16097db96d56Sopenharmony_ci LIBRARY_DEPS="\$(LIBRARY) $LIBRARY_DEPS" 16107db96d56Sopenharmony_ci # Link Python program to object files 16117db96d56Sopenharmony_ci LINK_PYTHON_OBJS='$(LIBRARY_OBJS)' 16127db96d56Sopenharmony_cifi 16137db96d56Sopenharmony_ciAC_SUBST(LIBRARY_DEPS) 16147db96d56Sopenharmony_ciAC_SUBST(LINK_PYTHON_DEPS) 16157db96d56Sopenharmony_ciAC_SUBST(LINK_PYTHON_OBJS) 16167db96d56Sopenharmony_ci 16177db96d56Sopenharmony_ci# ar program 16187db96d56Sopenharmony_ciAC_SUBST(AR) 16197db96d56Sopenharmony_ciAC_CHECK_TOOLS(AR, ar aal, ar) 16207db96d56Sopenharmony_ci 16217db96d56Sopenharmony_ci# tweak ARFLAGS only if the user didn't set it on the command line 16227db96d56Sopenharmony_ciAC_SUBST(ARFLAGS) 16237db96d56Sopenharmony_ciif test -z "$ARFLAGS" 16247db96d56Sopenharmony_cithen 16257db96d56Sopenharmony_ci ARFLAGS="rcs" 16267db96d56Sopenharmony_cifi 16277db96d56Sopenharmony_ci 16287db96d56Sopenharmony_ciAC_CHECK_TOOLS([READELF], [readelf], [:]) 16297db96d56Sopenharmony_ciif test "$cross_compiling" = yes; then 16307db96d56Sopenharmony_ci case "$READELF" in 16317db96d56Sopenharmony_ci readelf|:) 16327db96d56Sopenharmony_ci AC_MSG_ERROR([readelf for the host is required for cross builds]) 16337db96d56Sopenharmony_ci ;; 16347db96d56Sopenharmony_ci esac 16357db96d56Sopenharmony_cifi 16367db96d56Sopenharmony_ciAC_SUBST(READELF) 16377db96d56Sopenharmony_ci 16387db96d56Sopenharmony_ci 16397db96d56Sopenharmony_cicase $MACHDEP in 16407db96d56Sopenharmony_cihp*|HP*) 16417db96d56Sopenharmony_ci # install -d does not work on HP-UX 16427db96d56Sopenharmony_ci if test -z "$INSTALL" 16437db96d56Sopenharmony_ci then 16447db96d56Sopenharmony_ci INSTALL="${srcdir}/install-sh -c" 16457db96d56Sopenharmony_ci fi 16467db96d56Sopenharmony_ciesac 16477db96d56Sopenharmony_ciAC_PROG_INSTALL 16487db96d56Sopenharmony_ciAC_PROG_MKDIR_P 16497db96d56Sopenharmony_ci 16507db96d56Sopenharmony_ci# Not every filesystem supports hard links 16517db96d56Sopenharmony_ciAC_SUBST(LN) 16527db96d56Sopenharmony_ciif test -z "$LN" ; then 16537db96d56Sopenharmony_ci case $ac_sys_system in 16547db96d56Sopenharmony_ci CYGWIN*) LN="ln -s";; 16557db96d56Sopenharmony_ci *) LN=ln;; 16567db96d56Sopenharmony_ci esac 16577db96d56Sopenharmony_cifi 16587db96d56Sopenharmony_ci 16597db96d56Sopenharmony_ci# For calculating the .so ABI tag. 16607db96d56Sopenharmony_ciAC_SUBST(ABIFLAGS) 16617db96d56Sopenharmony_ciABIFLAGS="" 16627db96d56Sopenharmony_ci 16637db96d56Sopenharmony_ci# Check for --with-pydebug 16647db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-pydebug) 16657db96d56Sopenharmony_ciAC_ARG_WITH(pydebug, 16667db96d56Sopenharmony_ci AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined (default is no)]), 16677db96d56Sopenharmony_ci[ 16687db96d56Sopenharmony_ciif test "$withval" != no 16697db96d56Sopenharmony_cithen 16707db96d56Sopenharmony_ci AC_DEFINE(Py_DEBUG, 1, 16717db96d56Sopenharmony_ci [Define if you want to build an interpreter with many run-time checks.]) 16727db96d56Sopenharmony_ci AC_MSG_RESULT(yes); 16737db96d56Sopenharmony_ci Py_DEBUG='true' 16747db96d56Sopenharmony_ci ABIFLAGS="${ABIFLAGS}d" 16757db96d56Sopenharmony_cielse AC_MSG_RESULT(no); Py_DEBUG='false' 16767db96d56Sopenharmony_cifi], 16777db96d56Sopenharmony_ci[AC_MSG_RESULT(no)]) 16787db96d56Sopenharmony_ci 16797db96d56Sopenharmony_ci# Check for --with-trace-refs 16807db96d56Sopenharmony_ci# --with-trace-refs 16817db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-trace-refs) 16827db96d56Sopenharmony_ciAC_ARG_WITH(trace-refs, 16837db96d56Sopenharmony_ci AS_HELP_STRING( 16847db96d56Sopenharmony_ci [--with-trace-refs], 16857db96d56Sopenharmony_ci [enable tracing references for debugging purpose (default is no)]),, 16867db96d56Sopenharmony_ci with_trace_refs=no) 16877db96d56Sopenharmony_ciAC_MSG_RESULT($with_trace_refs) 16887db96d56Sopenharmony_ci 16897db96d56Sopenharmony_ciif test "$with_trace_refs" = "yes" 16907db96d56Sopenharmony_cithen 16917db96d56Sopenharmony_ci AC_DEFINE(Py_TRACE_REFS, 1, [Define if you want to enable tracing references for debugging purpose]) 16927db96d56Sopenharmony_cifi 16937db96d56Sopenharmony_ci 16947db96d56Sopenharmony_ci 16957db96d56Sopenharmony_ci# Check for --enable-pystats 16967db96d56Sopenharmony_ciAC_MSG_CHECKING([for --enable-pystats]) 16977db96d56Sopenharmony_ciAC_ARG_ENABLE([pystats], 16987db96d56Sopenharmony_ci [AS_HELP_STRING( 16997db96d56Sopenharmony_ci [--enable-pystats], 17007db96d56Sopenharmony_ci [enable internal statistics gathering (default is no)])],, 17017db96d56Sopenharmony_ci [enable_pystats=no] 17027db96d56Sopenharmony_ci) 17037db96d56Sopenharmony_ciAC_MSG_RESULT([$enable_pystats]) 17047db96d56Sopenharmony_ci 17057db96d56Sopenharmony_ciAS_VAR_IF([enable_pystats], [yes], [ 17067db96d56Sopenharmony_ci AC_DEFINE([Py_STATS], [1], [Define if you want to enable internal statistics gathering.]) 17077db96d56Sopenharmony_ci]) 17087db96d56Sopenharmony_ci 17097db96d56Sopenharmony_ci# Check for --with-assertions. 17107db96d56Sopenharmony_ci# This allows enabling assertions without Py_DEBUG. 17117db96d56Sopenharmony_ciassertions='false' 17127db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-assertions) 17137db96d56Sopenharmony_ciAC_ARG_WITH(assertions, 17147db96d56Sopenharmony_ci AS_HELP_STRING([--with-assertions],[build with C assertions enabled (default is no)]), 17157db96d56Sopenharmony_ci[ 17167db96d56Sopenharmony_ciif test "$withval" != no 17177db96d56Sopenharmony_cithen 17187db96d56Sopenharmony_ci assertions='true' 17197db96d56Sopenharmony_cifi], 17207db96d56Sopenharmony_ci[]) 17217db96d56Sopenharmony_ciif test "$assertions" = 'true'; then 17227db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 17237db96d56Sopenharmony_cielif test "$Py_DEBUG" = 'true'; then 17247db96d56Sopenharmony_ci assertions='true' 17257db96d56Sopenharmony_ci AC_MSG_RESULT(implied by --with-pydebug) 17267db96d56Sopenharmony_cielse 17277db96d56Sopenharmony_ci AC_MSG_RESULT(no) 17287db96d56Sopenharmony_cifi 17297db96d56Sopenharmony_ci 17307db96d56Sopenharmony_ci# Enable optimization flags 17317db96d56Sopenharmony_ciAC_SUBST(DEF_MAKE_ALL_RULE) 17327db96d56Sopenharmony_ciAC_SUBST(DEF_MAKE_RULE) 17337db96d56Sopenharmony_ciPy_OPT='false' 17347db96d56Sopenharmony_ciAC_MSG_CHECKING(for --enable-optimizations) 17357db96d56Sopenharmony_ciAC_ARG_ENABLE(optimizations, AS_HELP_STRING( 17367db96d56Sopenharmony_ci [--enable-optimizations], 17377db96d56Sopenharmony_ci [enable expensive, stable optimizations (PGO, etc.) (default is no)]), 17387db96d56Sopenharmony_ci[ 17397db96d56Sopenharmony_ciif test "$enableval" != no 17407db96d56Sopenharmony_cithen 17417db96d56Sopenharmony_ci Py_OPT='true' 17427db96d56Sopenharmony_ci AC_MSG_RESULT(yes); 17437db96d56Sopenharmony_cielse 17447db96d56Sopenharmony_ci Py_OPT='false' 17457db96d56Sopenharmony_ci AC_MSG_RESULT(no); 17467db96d56Sopenharmony_cifi], 17477db96d56Sopenharmony_ci[AC_MSG_RESULT(no)]) 17487db96d56Sopenharmony_ci 17497db96d56Sopenharmony_ciif test "$Py_OPT" = 'true' ; then 17507db96d56Sopenharmony_ci # Intentionally not forcing Py_LTO='true' here. Too many toolchains do not 17517db96d56Sopenharmony_ci # compile working code using it and both test_distutils and test_gdb are 17527db96d56Sopenharmony_ci # broken when you do manage to get a toolchain that works with it. People 17537db96d56Sopenharmony_ci # who want LTO need to use --with-lto themselves. 17547db96d56Sopenharmony_ci DEF_MAKE_ALL_RULE="profile-opt" 17557db96d56Sopenharmony_ci REQUIRE_PGO="yes" 17567db96d56Sopenharmony_ci DEF_MAKE_RULE="build_all" 17577db96d56Sopenharmony_ci case $CC in 17587db96d56Sopenharmony_ci *gcc*) 17597db96d56Sopenharmony_ci AX_CHECK_COMPILE_FLAG([-fno-semantic-interposition],[ 17607db96d56Sopenharmony_ci CFLAGS_NODIST="$CFLAGS_NODIST -fno-semantic-interposition" 17617db96d56Sopenharmony_ci LDFLAGS_NODIST="$LDFLAGS_NODIST -fno-semantic-interposition" 17627db96d56Sopenharmony_ci ]) 17637db96d56Sopenharmony_ci ;; 17647db96d56Sopenharmony_ci esac 17657db96d56Sopenharmony_cielif test "$ac_sys_system" = "Emscripten" -o "$ac_sys_system" = "WASI"; then 17667db96d56Sopenharmony_ci dnl Emscripten does not support shared extensions yet. Build 17677db96d56Sopenharmony_ci dnl "python.[js,wasm]", "pybuilddir.txt", and "platform" files. 17687db96d56Sopenharmony_ci DEF_MAKE_ALL_RULE="build_wasm" 17697db96d56Sopenharmony_ci REQUIRE_PGO="no" 17707db96d56Sopenharmony_ci DEF_MAKE_RULE="all" 17717db96d56Sopenharmony_cielse 17727db96d56Sopenharmony_ci DEF_MAKE_ALL_RULE="build_all" 17737db96d56Sopenharmony_ci REQUIRE_PGO="no" 17747db96d56Sopenharmony_ci DEF_MAKE_RULE="all" 17757db96d56Sopenharmony_cifi 17767db96d56Sopenharmony_ci 17777db96d56Sopenharmony_ciAC_ARG_VAR(PROFILE_TASK, Python args for PGO generation task) 17787db96d56Sopenharmony_ciAC_MSG_CHECKING(PROFILE_TASK) 17797db96d56Sopenharmony_ciif test -z "$PROFILE_TASK" 17807db96d56Sopenharmony_cithen 17817db96d56Sopenharmony_ci PROFILE_TASK='-m test --pgo --timeout=$(TESTTIMEOUT)' 17827db96d56Sopenharmony_cifi 17837db96d56Sopenharmony_ciAC_MSG_RESULT($PROFILE_TASK) 17847db96d56Sopenharmony_ci 17857db96d56Sopenharmony_ci# Make llvm-related checks work on systems where llvm tools are not installed with their 17867db96d56Sopenharmony_ci# normal names in the default $PATH (ie: Ubuntu). They exist under the 17877db96d56Sopenharmony_ci# non-suffixed name in their versioned llvm directory. 17887db96d56Sopenharmony_ci 17897db96d56Sopenharmony_cillvm_bin_dir='' 17907db96d56Sopenharmony_cillvm_path="${PATH}" 17917db96d56Sopenharmony_ciif test "${CC}" = "clang" 17927db96d56Sopenharmony_cithen 17937db96d56Sopenharmony_ci clang_bin=`which clang` 17947db96d56Sopenharmony_ci # Some systems install clang elsewhere as a symlink to the real path 17957db96d56Sopenharmony_ci # which is where the related llvm tools are located. 17967db96d56Sopenharmony_ci if test -L "${clang_bin}" 17977db96d56Sopenharmony_ci then 17987db96d56Sopenharmony_ci clang_dir=`dirname "${clang_bin}"` 17997db96d56Sopenharmony_ci clang_bin=`readlink "${clang_bin}"` 18007db96d56Sopenharmony_ci llvm_bin_dir="${clang_dir}/"`dirname "${clang_bin}"` 18017db96d56Sopenharmony_ci llvm_path="${llvm_path}${PATH_SEPARATOR}${llvm_bin_dir}" 18027db96d56Sopenharmony_ci fi 18037db96d56Sopenharmony_cifi 18047db96d56Sopenharmony_ci 18057db96d56Sopenharmony_ci# Enable LTO flags 18067db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-lto) 18077db96d56Sopenharmony_ciAC_ARG_WITH(lto, AS_HELP_STRING([--with-lto=@<:@full|thin|no|yes@:>@], [enable Link-Time-Optimization in any build (default is no)]), 18087db96d56Sopenharmony_ci[ 18097db96d56Sopenharmony_cicase "$withval" in 18107db96d56Sopenharmony_ci full) 18117db96d56Sopenharmony_ci Py_LTO='true' 18127db96d56Sopenharmony_ci Py_LTO_POLICY='full' 18137db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 18147db96d56Sopenharmony_ci ;; 18157db96d56Sopenharmony_ci thin) 18167db96d56Sopenharmony_ci Py_LTO='true' 18177db96d56Sopenharmony_ci Py_LTO_POLICY='thin' 18187db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 18197db96d56Sopenharmony_ci ;; 18207db96d56Sopenharmony_ci yes) 18217db96d56Sopenharmony_ci Py_LTO='true' 18227db96d56Sopenharmony_ci Py_LTO_POLICY='default' 18237db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 18247db96d56Sopenharmony_ci ;; 18257db96d56Sopenharmony_ci no) 18267db96d56Sopenharmony_ci Py_LTO='false' 18277db96d56Sopenharmony_ci AC_MSG_RESULT(no) 18287db96d56Sopenharmony_ci ;; 18297db96d56Sopenharmony_ci *) 18307db96d56Sopenharmony_ci Py_LTO='false' 18317db96d56Sopenharmony_ci AC_MSG_ERROR([unknown lto option: '$withval']) 18327db96d56Sopenharmony_ci ;; 18337db96d56Sopenharmony_ciesac 18347db96d56Sopenharmony_ci], 18357db96d56Sopenharmony_ci[AC_MSG_RESULT(no)]) 18367db96d56Sopenharmony_ciif test "$Py_LTO" = 'true' ; then 18377db96d56Sopenharmony_ci case $CC in 18387db96d56Sopenharmony_ci *clang*) 18397db96d56Sopenharmony_ci LDFLAGS_NOLTO="-fno-lto" 18407db96d56Sopenharmony_ci dnl Clang linker requires -flto in order to link objects with LTO information. 18417db96d56Sopenharmony_ci dnl Thin LTO is faster and works for object files with full LTO information, too. 18427db96d56Sopenharmony_ci AX_CHECK_COMPILE_FLAG([-flto=thin],[LDFLAGS_NOLTO="-flto=thin"],[LDFLAGS_NOLTO="-flto"]) 18437db96d56Sopenharmony_ci AC_SUBST(LLVM_AR) 18447db96d56Sopenharmony_ci AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path}) 18457db96d56Sopenharmony_ci AC_SUBST(LLVM_AR_FOUND) 18467db96d56Sopenharmony_ci if test -n "${LLVM_AR}" -a -x "${LLVM_AR}" 18477db96d56Sopenharmony_ci then 18487db96d56Sopenharmony_ci LLVM_AR_FOUND="found" 18497db96d56Sopenharmony_ci else 18507db96d56Sopenharmony_ci LLVM_AR_FOUND="not-found" 18517db96d56Sopenharmony_ci fi 18527db96d56Sopenharmony_ci if test "$ac_sys_system" = "Darwin" -a "${LLVM_AR_FOUND}" = "not-found" 18537db96d56Sopenharmony_ci then 18547db96d56Sopenharmony_ci # The Apple-supplied ar in Xcode or the Command Line Tools is apparently sufficient 18557db96d56Sopenharmony_ci found_llvm_ar=`/usr/bin/xcrun -find ar 2>/dev/null` 18567db96d56Sopenharmony_ci if test -n "${found_llvm_ar}" 18577db96d56Sopenharmony_ci then 18587db96d56Sopenharmony_ci LLVM_AR='/usr/bin/xcrun ar' 18597db96d56Sopenharmony_ci LLVM_AR_FOUND=found 18607db96d56Sopenharmony_ci AC_MSG_NOTICE([llvm-ar found via xcrun: ${LLVM_AR}]) 18617db96d56Sopenharmony_ci fi 18627db96d56Sopenharmony_ci fi 18637db96d56Sopenharmony_ci if test $LLVM_AR_FOUND = not-found 18647db96d56Sopenharmony_ci then 18657db96d56Sopenharmony_ci LLVM_PROFR_ERR=yes 18667db96d56Sopenharmony_ci AC_MSG_ERROR([llvm-ar is required for a --with-lto build with clang but could not be found.]) 18677db96d56Sopenharmony_ci else 18687db96d56Sopenharmony_ci LLVM_AR_ERR=no 18697db96d56Sopenharmony_ci fi 18707db96d56Sopenharmony_ci AR="${LLVM_AR}" 18717db96d56Sopenharmony_ci case $ac_sys_system in 18727db96d56Sopenharmony_ci Darwin*) 18737db96d56Sopenharmony_ci # Any changes made here should be reflected in the GCC+Darwin case below 18747db96d56Sopenharmony_ci if test $Py_LTO_POLICY = default 18757db96d56Sopenharmony_ci then 18767db96d56Sopenharmony_ci LTOFLAGS="-flto -Wl,-export_dynamic" 18777db96d56Sopenharmony_ci LTOCFLAGS="-flto" 18787db96d56Sopenharmony_ci else 18797db96d56Sopenharmony_ci LTOFLAGS="-flto=${Py_LTO_POLICY} -Wl,-export_dynamic" 18807db96d56Sopenharmony_ci LTOCFLAGS="-flto=${Py_LTO_POLICY}" 18817db96d56Sopenharmony_ci fi 18827db96d56Sopenharmony_ci ;; 18837db96d56Sopenharmony_ci *) 18847db96d56Sopenharmony_ci if test $Py_LTO_POLICY = default 18857db96d56Sopenharmony_ci then 18867db96d56Sopenharmony_ci LTOFLAGS="-flto" 18877db96d56Sopenharmony_ci else 18887db96d56Sopenharmony_ci LTOFLAGS="-flto=${Py_LTO_POLICY}" 18897db96d56Sopenharmony_ci fi 18907db96d56Sopenharmony_ci ;; 18917db96d56Sopenharmony_ci esac 18927db96d56Sopenharmony_ci ;; 18937db96d56Sopenharmony_ci *emcc*) 18947db96d56Sopenharmony_ci if test "$Py_LTO_POLICY" != "default"; then 18957db96d56Sopenharmony_ci AC_MSG_ERROR([emcc supports only default lto.]) 18967db96d56Sopenharmony_ci fi 18977db96d56Sopenharmony_ci LTOFLAGS="-flto" 18987db96d56Sopenharmony_ci LTOCFLAGS="-flto" 18997db96d56Sopenharmony_ci ;; 19007db96d56Sopenharmony_ci *gcc*) 19017db96d56Sopenharmony_ci if test $Py_LTO_POLICY = thin 19027db96d56Sopenharmony_ci then 19037db96d56Sopenharmony_ci AC_MSG_ERROR([thin lto is not supported under gcc compiler.]) 19047db96d56Sopenharmony_ci fi 19057db96d56Sopenharmony_ci dnl flag to disable lto during linking 19067db96d56Sopenharmony_ci LDFLAGS_NOLTO="-fno-lto" 19077db96d56Sopenharmony_ci case $ac_sys_system in 19087db96d56Sopenharmony_ci Darwin*) 19097db96d56Sopenharmony_ci LTOFLAGS="-flto -Wl,-export_dynamic" 19107db96d56Sopenharmony_ci LTOCFLAGS="-flto" 19117db96d56Sopenharmony_ci ;; 19127db96d56Sopenharmony_ci *) 19137db96d56Sopenharmony_ci LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none" 19147db96d56Sopenharmony_ci ;; 19157db96d56Sopenharmony_ci esac 19167db96d56Sopenharmony_ci ;; 19177db96d56Sopenharmony_ci esac 19187db96d56Sopenharmony_ci 19197db96d56Sopenharmony_ci if test "$ac_cv_prog_cc_g" = "yes" 19207db96d56Sopenharmony_ci then 19217db96d56Sopenharmony_ci # bpo-30345: Add -g to LDFLAGS when compiling with LTO 19227db96d56Sopenharmony_ci # to get debug symbols. 19237db96d56Sopenharmony_ci LTOFLAGS="$LTOFLAGS -g" 19247db96d56Sopenharmony_ci fi 19257db96d56Sopenharmony_ci 19267db96d56Sopenharmony_ci CFLAGS_NODIST="$CFLAGS_NODIST ${LTOCFLAGS-$LTOFLAGS}" 19277db96d56Sopenharmony_ci LDFLAGS_NODIST="$LDFLAGS_NODIST $LTOFLAGS" 19287db96d56Sopenharmony_cifi 19297db96d56Sopenharmony_ci 19307db96d56Sopenharmony_ci# Enable PGO flags. 19317db96d56Sopenharmony_ciAC_SUBST(PGO_PROF_GEN_FLAG) 19327db96d56Sopenharmony_ciAC_SUBST(PGO_PROF_USE_FLAG) 19337db96d56Sopenharmony_ciAC_SUBST(LLVM_PROF_MERGER) 19347db96d56Sopenharmony_ciAC_SUBST(LLVM_PROF_FILE) 19357db96d56Sopenharmony_ciAC_SUBST(LLVM_PROF_ERR) 19367db96d56Sopenharmony_ciAC_SUBST(LLVM_PROFDATA) 19377db96d56Sopenharmony_ciAC_PATH_TOOL(LLVM_PROFDATA, llvm-profdata, '', ${llvm_path}) 19387db96d56Sopenharmony_ciAC_SUBST(LLVM_PROF_FOUND) 19397db96d56Sopenharmony_ciif test -n "${LLVM_PROFDATA}" -a -x "${LLVM_PROFDATA}" 19407db96d56Sopenharmony_cithen 19417db96d56Sopenharmony_ci LLVM_PROF_FOUND="found" 19427db96d56Sopenharmony_cielse 19437db96d56Sopenharmony_ci LLVM_PROF_FOUND="not-found" 19447db96d56Sopenharmony_cifi 19457db96d56Sopenharmony_ciif test "$ac_sys_system" = "Darwin" -a "${LLVM_PROF_FOUND}" = "not-found" 19467db96d56Sopenharmony_cithen 19477db96d56Sopenharmony_ci found_llvm_profdata=`/usr/bin/xcrun -find llvm-profdata 2>/dev/null` 19487db96d56Sopenharmony_ci if test -n "${found_llvm_profdata}" 19497db96d56Sopenharmony_ci then 19507db96d56Sopenharmony_ci # llvm-profdata isn't directly in $PATH in some cases. 19517db96d56Sopenharmony_ci # https://apple.stackexchange.com/questions/197053/ 19527db96d56Sopenharmony_ci LLVM_PROFDATA='/usr/bin/xcrun llvm-profdata' 19537db96d56Sopenharmony_ci LLVM_PROF_FOUND=found 19547db96d56Sopenharmony_ci AC_MSG_NOTICE([llvm-profdata found via xcrun: ${LLVM_PROFDATA}]) 19557db96d56Sopenharmony_ci fi 19567db96d56Sopenharmony_cifi 19577db96d56Sopenharmony_ciLLVM_PROF_ERR=no 19587db96d56Sopenharmony_cicase $CC in 19597db96d56Sopenharmony_ci *clang*) 19607db96d56Sopenharmony_ci # Any changes made here should be reflected in the GCC+Darwin case below 19617db96d56Sopenharmony_ci PGO_PROF_GEN_FLAG="-fprofile-instr-generate" 19627db96d56Sopenharmony_ci PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd" 19637db96d56Sopenharmony_ci LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr" 19647db96d56Sopenharmony_ci LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\"" 19657db96d56Sopenharmony_ci if test $LLVM_PROF_FOUND = not-found 19667db96d56Sopenharmony_ci then 19677db96d56Sopenharmony_ci LLVM_PROF_ERR=yes 19687db96d56Sopenharmony_ci if test "${REQUIRE_PGO}" = "yes" 19697db96d56Sopenharmony_ci then 19707db96d56Sopenharmony_ci AC_MSG_ERROR([llvm-profdata is required for a --enable-optimizations build but could not be found.]) 19717db96d56Sopenharmony_ci fi 19727db96d56Sopenharmony_ci fi 19737db96d56Sopenharmony_ci ;; 19747db96d56Sopenharmony_ci *gcc*) 19757db96d56Sopenharmony_ci case $ac_sys_system in 19767db96d56Sopenharmony_ci Darwin*) 19777db96d56Sopenharmony_ci PGO_PROF_GEN_FLAG="-fprofile-instr-generate" 19787db96d56Sopenharmony_ci PGO_PROF_USE_FLAG="-fprofile-instr-use=code.profclangd" 19797db96d56Sopenharmony_ci LLVM_PROF_MERGER="${LLVM_PROFDATA} merge -output=code.profclangd *.profclangr" 19807db96d56Sopenharmony_ci LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"code-%p.profclangr\"" 19817db96d56Sopenharmony_ci if test "${LLVM_PROF_FOUND}" = "not-found" 19827db96d56Sopenharmony_ci then 19837db96d56Sopenharmony_ci LLVM_PROF_ERR=yes 19847db96d56Sopenharmony_ci if test "${REQUIRE_PGO}" = "yes" 19857db96d56Sopenharmony_ci then 19867db96d56Sopenharmony_ci AC_MSG_ERROR([llvm-profdata is required for a --enable-optimizations build but could not be found.]) 19877db96d56Sopenharmony_ci fi 19887db96d56Sopenharmony_ci fi 19897db96d56Sopenharmony_ci ;; 19907db96d56Sopenharmony_ci *) 19917db96d56Sopenharmony_ci PGO_PROF_GEN_FLAG="-fprofile-generate" 19927db96d56Sopenharmony_ci PGO_PROF_USE_FLAG="-fprofile-use -fprofile-correction" 19937db96d56Sopenharmony_ci LLVM_PROF_MERGER="true" 19947db96d56Sopenharmony_ci LLVM_PROF_FILE="" 19957db96d56Sopenharmony_ci ;; 19967db96d56Sopenharmony_ci esac 19977db96d56Sopenharmony_ci ;; 19987db96d56Sopenharmony_ci *icc*) 19997db96d56Sopenharmony_ci PGO_PROF_GEN_FLAG="-prof-gen" 20007db96d56Sopenharmony_ci PGO_PROF_USE_FLAG="-prof-use" 20017db96d56Sopenharmony_ci LLVM_PROF_MERGER="true" 20027db96d56Sopenharmony_ci LLVM_PROF_FILE="" 20037db96d56Sopenharmony_ci ;; 20047db96d56Sopenharmony_ciesac 20057db96d56Sopenharmony_ci 20067db96d56Sopenharmony_ci# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be 20077db96d56Sopenharmony_ci# merged with this chunk of code? 20087db96d56Sopenharmony_ci 20097db96d56Sopenharmony_ci# Optimizer/debugger flags 20107db96d56Sopenharmony_ci# ------------------------ 20117db96d56Sopenharmony_ci# (The following bit of code is complicated enough - please keep things 20127db96d56Sopenharmony_ci# indented properly. Just pretend you're editing Python code. ;-) 20137db96d56Sopenharmony_ci 20147db96d56Sopenharmony_ci# There are two parallel sets of case statements below, one that checks to 20157db96d56Sopenharmony_ci# see if OPT was set and one that does BASECFLAGS setting based upon 20167db96d56Sopenharmony_ci# compiler and platform. BASECFLAGS tweaks need to be made even if the 20177db96d56Sopenharmony_ci# user set OPT. 20187db96d56Sopenharmony_ci 20197db96d56Sopenharmony_cicase $CC in 20207db96d56Sopenharmony_ci *clang*) 20217db96d56Sopenharmony_ci cc_is_clang=1 20227db96d56Sopenharmony_ci ;; 20237db96d56Sopenharmony_ci *) 20247db96d56Sopenharmony_ci if $CC --version 2>&1 | grep -q clang 20257db96d56Sopenharmony_ci then 20267db96d56Sopenharmony_ci cc_is_clang=1 20277db96d56Sopenharmony_ci else 20287db96d56Sopenharmony_ci cc_is_clang= 20297db96d56Sopenharmony_ci fi 20307db96d56Sopenharmony_ciesac 20317db96d56Sopenharmony_ci 20327db96d56Sopenharmony_ci# Check if CC supports -Og optimization level 20337db96d56Sopenharmony_ci_SAVE_VAR([CFLAGS]) 20347db96d56Sopenharmony_ciCFLAGS="-Og" 20357db96d56Sopenharmony_ciAC_CACHE_CHECK([if $CC supports -Og optimization level], 20367db96d56Sopenharmony_ci [ac_cv_cc_supports_og], 20377db96d56Sopenharmony_ci AC_COMPILE_IFELSE( 20387db96d56Sopenharmony_ci [ 20397db96d56Sopenharmony_ci AC_LANG_PROGRAM([[]], [[]]) 20407db96d56Sopenharmony_ci ],[ 20417db96d56Sopenharmony_ci ac_cv_cc_supports_og=yes 20427db96d56Sopenharmony_ci ],[ 20437db96d56Sopenharmony_ci ac_cv_cc_supports_og=no 20447db96d56Sopenharmony_ci ]) 20457db96d56Sopenharmony_ci) 20467db96d56Sopenharmony_ci_RESTORE_VAR([CFLAGS]) 20477db96d56Sopenharmony_ci 20487db96d56Sopenharmony_ci# Optimization messes up debuggers, so turn it off for 20497db96d56Sopenharmony_ci# debug builds. 20507db96d56Sopenharmony_ciPYDEBUG_CFLAGS="-O0" 20517db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_cc_supports_og], [yes], 20527db96d56Sopenharmony_ci [PYDEBUG_CFLAGS="-Og"]) 20537db96d56Sopenharmony_ci 20547db96d56Sopenharmony_ci# tweak OPT based on compiler and platform, only if the user didn't set 20557db96d56Sopenharmony_ci# it on the command line 20567db96d56Sopenharmony_ciAC_SUBST(OPT) 20577db96d56Sopenharmony_ciAC_SUBST(CFLAGS_ALIASING) 20587db96d56Sopenharmony_ciif test "${OPT-unset}" = "unset" 20597db96d56Sopenharmony_cithen 20607db96d56Sopenharmony_ci case $GCC in 20617db96d56Sopenharmony_ci yes) 20627db96d56Sopenharmony_ci # For gcc 4.x we need to use -fwrapv so lets check if its supported 20637db96d56Sopenharmony_ci if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then 20647db96d56Sopenharmony_ci WRAP="-fwrapv" 20657db96d56Sopenharmony_ci fi 20667db96d56Sopenharmony_ci 20677db96d56Sopenharmony_ci if test -n "${cc_is_clang}" 20687db96d56Sopenharmony_ci then 20697db96d56Sopenharmony_ci # Clang also needs -fwrapv 20707db96d56Sopenharmony_ci WRAP="-fwrapv" 20717db96d56Sopenharmony_ci # bpo-30104: disable strict aliasing to compile correctly dtoa.c, 20727db96d56Sopenharmony_ci # see Makefile.pre.in for more information 20737db96d56Sopenharmony_ci CFLAGS_ALIASING="-fno-strict-aliasing" 20747db96d56Sopenharmony_ci fi 20757db96d56Sopenharmony_ci 20767db96d56Sopenharmony_ci case $ac_cv_prog_cc_g in 20777db96d56Sopenharmony_ci yes) 20787db96d56Sopenharmony_ci if test "$Py_DEBUG" = 'true' ; then 20797db96d56Sopenharmony_ci OPT="-g $PYDEBUG_CFLAGS -Wall" 20807db96d56Sopenharmony_ci else 20817db96d56Sopenharmony_ci OPT="-g $WRAP -O3 -Wall" 20827db96d56Sopenharmony_ci fi 20837db96d56Sopenharmony_ci ;; 20847db96d56Sopenharmony_ci *) 20857db96d56Sopenharmony_ci OPT="-O3 -Wall" 20867db96d56Sopenharmony_ci ;; 20877db96d56Sopenharmony_ci esac 20887db96d56Sopenharmony_ci 20897db96d56Sopenharmony_ci case $ac_sys_system in 20907db96d56Sopenharmony_ci SCO_SV*) OPT="$OPT -m486 -DSCO5" 20917db96d56Sopenharmony_ci ;; 20927db96d56Sopenharmony_ci esac 20937db96d56Sopenharmony_ci ;; 20947db96d56Sopenharmony_ci 20957db96d56Sopenharmony_ci *) 20967db96d56Sopenharmony_ci OPT="-O" 20977db96d56Sopenharmony_ci ;; 20987db96d56Sopenharmony_ci esac 20997db96d56Sopenharmony_cifi 21007db96d56Sopenharmony_ci 21017db96d56Sopenharmony_ci# WASM flags 21027db96d56Sopenharmony_ciAS_CASE([$ac_sys_system], 21037db96d56Sopenharmony_ci [Emscripten], [ 21047db96d56Sopenharmony_ci dnl build with WASM debug info if either Py_DEBUG is set or the target is 21057db96d56Sopenharmony_ci dnl node-debug or browser-debug. 21067db96d56Sopenharmony_ci AS_VAR_IF([Py_DEBUG], [yes], [wasm_debug=yes], [wasm_debug=no]) 21077db96d56Sopenharmony_ci 21087db96d56Sopenharmony_ci dnl Start with 20 MB and allow to grow 21097db96d56Sopenharmony_ci AS_VAR_APPEND([LDFLAGS_NODIST], [" -sALLOW_MEMORY_GROWTH -sTOTAL_MEMORY=20971520"]) 21107db96d56Sopenharmony_ci 21117db96d56Sopenharmony_ci dnl map int64_t and uint64_t to JS bigint 21127db96d56Sopenharmony_ci AS_VAR_APPEND([LDFLAGS_NODIST], [" -sWASM_BIGINT"]) 21137db96d56Sopenharmony_ci 21147db96d56Sopenharmony_ci dnl Include file system support 21157db96d56Sopenharmony_ci AS_VAR_APPEND([LDFLAGS_NODIST], [" -sFORCE_FILESYSTEM -lidbfs.js -lnodefs.js -lproxyfs.js -lworkerfs.js"]) 21167db96d56Sopenharmony_ci 21177db96d56Sopenharmony_ci AS_VAR_IF([enable_wasm_dynamic_linking], [yes], [ 21187db96d56Sopenharmony_ci AS_VAR_APPEND([LINKFORSHARED], [" -sMAIN_MODULE"]) 21197db96d56Sopenharmony_ci ]) 21207db96d56Sopenharmony_ci 21217db96d56Sopenharmony_ci AS_VAR_IF([enable_wasm_pthreads], [yes], [ 21227db96d56Sopenharmony_ci AS_VAR_APPEND([CFLAGS_NODIST], [" -pthread"]) 21237db96d56Sopenharmony_ci AS_VAR_APPEND([LDFLAGS_NODIST], [" -sUSE_PTHREADS"]) 21247db96d56Sopenharmony_ci AS_VAR_APPEND([LINKFORSHARED], [" -sPROXY_TO_PTHREAD"]) 21257db96d56Sopenharmony_ci ]) 21267db96d56Sopenharmony_ci 21277db96d56Sopenharmony_ci AS_CASE([$ac_sys_emscripten_target], 21287db96d56Sopenharmony_ci [browser*], [ 21297db96d56Sopenharmony_ci AS_VAR_IF([ac_sys_emscripten_target], [browser-debug], [wasm_debug=yes]) 21307db96d56Sopenharmony_ci AS_VAR_APPEND([LINKFORSHARED], [" --preload-file=\$(WASM_ASSETS_DIR)"]) 21317db96d56Sopenharmony_ci WASM_ASSETS_DIR=".\$(prefix)" 21327db96d56Sopenharmony_ci WASM_STDLIB="\$(WASM_ASSETS_DIR)/local/lib/python\$(VERSION)/os.py" 21337db96d56Sopenharmony_ci dnl separate-dwarf does not seem to work in Chrome DevTools Support. 21347db96d56Sopenharmony_ci WASM_LINKFORSHARED_DEBUG="-gsource-map --emit-symbol-map" 21357db96d56Sopenharmony_ci ], 21367db96d56Sopenharmony_ci [node*], [ 21377db96d56Sopenharmony_ci AS_VAR_IF([ac_sys_emscripten_target], [node-debug], [wasm_debug=yes]) 21387db96d56Sopenharmony_ci AS_VAR_APPEND([LDFLAGS_NODIST], [" -sALLOW_MEMORY_GROWTH -sNODERAWFS"]) 21397db96d56Sopenharmony_ci AS_VAR_APPEND([LINKFORSHARED], [" -sEXIT_RUNTIME"]) 21407db96d56Sopenharmony_ci WASM_LINKFORSHARED_DEBUG="-gseparate-dwarf --emit-symbol-map" 21417db96d56Sopenharmony_ci ] 21427db96d56Sopenharmony_ci ) 21437db96d56Sopenharmony_ci 21447db96d56Sopenharmony_ci AS_VAR_IF([wasm_debug], [yes], [ 21457db96d56Sopenharmony_ci AS_VAR_APPEND([LDFLAGS_NODIST], [" -sASSERTIONS"]) 21467db96d56Sopenharmony_ci AS_VAR_APPEND([LINKFORSHARED], [" $WASM_LINKFORSHARED_DEBUG"]) 21477db96d56Sopenharmony_ci ], [ 21487db96d56Sopenharmony_ci AS_VAR_APPEND([LINKFORSHARED], [" -O2 -g0"]) 21497db96d56Sopenharmony_ci ]) 21507db96d56Sopenharmony_ci ], 21517db96d56Sopenharmony_ci [WASI], [ 21527db96d56Sopenharmony_ci AC_DEFINE([_WASI_EMULATED_SIGNAL], [1], [Define to 1 if you want to emulate signals on WASI]) 21537db96d56Sopenharmony_ci AC_DEFINE([_WASI_EMULATED_GETPID], [1], [Define to 1 if you want to emulate getpid() on WASI]) 21547db96d56Sopenharmony_ci AC_DEFINE([_WASI_EMULATED_PROCESS_CLOCKS], [1], [Define to 1 if you want to emulate process clocks on WASI]) 21557db96d56Sopenharmony_ci LIBS="$LIBS -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks" 21567db96d56Sopenharmony_ci echo "#define _WASI_EMULATED_SIGNAL 1" >> confdefs.h 21577db96d56Sopenharmony_ci 21587db96d56Sopenharmony_ci dnl increase initial memory and stack size, move stack first 21597db96d56Sopenharmony_ci dnl https://github.com/WebAssembly/wasi-libc/issues/233 21607db96d56Sopenharmony_ci AS_VAR_APPEND([LDFLAGS_NODIST], [" -z stack-size=524288 -Wl,--stack-first -Wl,--initial-memory=10485760"]) 21617db96d56Sopenharmony_ci ] 21627db96d56Sopenharmony_ci) 21637db96d56Sopenharmony_ci 21647db96d56Sopenharmony_ciAS_CASE([$enable_wasm_dynamic_linking], 21657db96d56Sopenharmony_ci [yes], [ac_cv_func_dlopen=yes], 21667db96d56Sopenharmony_ci [no], [ac_cv_func_dlopen=no], 21677db96d56Sopenharmony_ci [missing], [] 21687db96d56Sopenharmony_ci) 21697db96d56Sopenharmony_ci 21707db96d56Sopenharmony_ciAC_SUBST(BASECFLAGS) 21717db96d56Sopenharmony_ciAC_SUBST(CFLAGS_NODIST) 21727db96d56Sopenharmony_ciAC_SUBST(LDFLAGS_NODIST) 21737db96d56Sopenharmony_ciAC_SUBST(LDFLAGS_NOLTO) 21747db96d56Sopenharmony_ciAC_SUBST([WASM_ASSETS_DIR]) 21757db96d56Sopenharmony_ciAC_SUBST([WASM_STDLIB]) 21767db96d56Sopenharmony_ci 21777db96d56Sopenharmony_ci# The -arch flags for universal builds on macOS 21787db96d56Sopenharmony_ciUNIVERSAL_ARCH_FLAGS= 21797db96d56Sopenharmony_ciAC_SUBST(UNIVERSAL_ARCH_FLAGS) 21807db96d56Sopenharmony_ci 21817db96d56Sopenharmony_cidnl PY_CHECK_CC_WARNING(ENABLE, WARNING, [MSG]) 21827db96d56Sopenharmony_ciAC_DEFUN([PY_CHECK_CC_WARNING], [ 21837db96d56Sopenharmony_ci AS_VAR_PUSHDEF([py_var], [ac_cv_$1_]m4_normalize($2)[_warning]) 21847db96d56Sopenharmony_ci AC_CACHE_CHECK(m4_ifblank([$3], [if we can $1 $CC $2 warning], [$3]), [py_var], [ 21857db96d56Sopenharmony_ci AS_VAR_COPY([py_cflags], [CFLAGS]) 21867db96d56Sopenharmony_ci AS_VAR_APPEND([CFLAGS], ["-W$2 -Werror"]) 21877db96d56Sopenharmony_ci AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], 21887db96d56Sopenharmony_ci [AS_VAR_SET([py_var], [yes])], 21897db96d56Sopenharmony_ci [AS_VAR_SET([py_var], [no])]) 21907db96d56Sopenharmony_ci AS_VAR_COPY([CFLAGS], [py_cflags]) 21917db96d56Sopenharmony_ci ]) 21927db96d56Sopenharmony_ci AS_VAR_POPDEF([py_var]) 21937db96d56Sopenharmony_ci]) 21947db96d56Sopenharmony_ci 21957db96d56Sopenharmony_ci# tweak BASECFLAGS based on compiler and platform 21967db96d56Sopenharmony_cicase $GCC in 21977db96d56Sopenharmony_ciyes) 21987db96d56Sopenharmony_ci CFLAGS_NODIST="$CFLAGS_NODIST -std=c11" 21997db96d56Sopenharmony_ci 22007db96d56Sopenharmony_ci PY_CHECK_CC_WARNING([enable], [extra], [if we can add -Wextra]) 22017db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_enable_extra_warning], [yes], 22027db96d56Sopenharmony_ci [CFLAGS_NODIST="$CFLAGS_NODIST -Wextra"]) 22037db96d56Sopenharmony_ci 22047db96d56Sopenharmony_ci # Python doesn't violate C99 aliasing rules, but older versions of 22057db96d56Sopenharmony_ci # GCC produce warnings for legal Python code. Enable 22067db96d56Sopenharmony_ci # -fno-strict-aliasing on versions of GCC that support but produce 22077db96d56Sopenharmony_ci # warnings. See Issue3326 22087db96d56Sopenharmony_ci ac_save_cc="$CC" 22097db96d56Sopenharmony_ci CC="$CC -fno-strict-aliasing" 22107db96d56Sopenharmony_ci save_CFLAGS="$CFLAGS" 22117db96d56Sopenharmony_ci AC_CACHE_CHECK([whether $CC accepts and needs -fno-strict-aliasing], 22127db96d56Sopenharmony_ci [ac_cv_no_strict_aliasing], 22137db96d56Sopenharmony_ci AC_COMPILE_IFELSE( 22147db96d56Sopenharmony_ci [ 22157db96d56Sopenharmony_ci AC_LANG_PROGRAM([[]], [[]]) 22167db96d56Sopenharmony_ci ],[ 22177db96d56Sopenharmony_ci CC="$ac_save_cc -fstrict-aliasing" 22187db96d56Sopenharmony_ci CFLAGS="$CFLAGS -Werror -Wstrict-aliasing" 22197db96d56Sopenharmony_ci AC_COMPILE_IFELSE( 22207db96d56Sopenharmony_ci [ 22217db96d56Sopenharmony_ci AC_LANG_PROGRAM([[void f(int **x) {}]], 22227db96d56Sopenharmony_ci [[double *x; f((int **) &x);]]) 22237db96d56Sopenharmony_ci ],[ 22247db96d56Sopenharmony_ci ac_cv_no_strict_aliasing=no 22257db96d56Sopenharmony_ci ],[ 22267db96d56Sopenharmony_ci ac_cv_no_strict_aliasing=yes 22277db96d56Sopenharmony_ci ]) 22287db96d56Sopenharmony_ci ],[ 22297db96d56Sopenharmony_ci ac_cv_no_strict_aliasing=no 22307db96d56Sopenharmony_ci ])) 22317db96d56Sopenharmony_ci CFLAGS="$save_CFLAGS" 22327db96d56Sopenharmony_ci CC="$ac_save_cc" 22337db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_no_strict_aliasing], [yes], 22347db96d56Sopenharmony_ci [BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"]) 22357db96d56Sopenharmony_ci 22367db96d56Sopenharmony_ci # ICC doesn't recognize the option, but only emits a warning 22377db96d56Sopenharmony_ci ## XXX does it emit an unused result warning and can it be disabled? 22387db96d56Sopenharmony_ci AS_CASE([$CC], 22397db96d56Sopenharmony_ci [*icc*], [ac_cv_disable_unused_result_warning=no] 22407db96d56Sopenharmony_ci [PY_CHECK_CC_WARNING([disable], [unused-result])]) 22417db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_disable_unused_result_warning], [yes], 22427db96d56Sopenharmony_ci [BASECFLAGS="$BASECFLAGS -Wno-unused-result" 22437db96d56Sopenharmony_ci CFLAGS_NODIST="$CFLAGS_NODIST -Wno-unused-result"]) 22447db96d56Sopenharmony_ci 22457db96d56Sopenharmony_ci PY_CHECK_CC_WARNING([disable], [unused-parameter]) 22467db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_disable_unused_parameter_warning], [yes], 22477db96d56Sopenharmony_ci [CFLAGS_NODIST="$CFLAGS_NODIST -Wno-unused-parameter"]) 22487db96d56Sopenharmony_ci 22497db96d56Sopenharmony_ci PY_CHECK_CC_WARNING([disable], [missing-field-initializers]) 22507db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_disable_missing_field_initializers_warning], [yes], 22517db96d56Sopenharmony_ci [CFLAGS_NODIST="$CFLAGS_NODIST -Wno-missing-field-initializers"]) 22527db96d56Sopenharmony_ci 22537db96d56Sopenharmony_ci PY_CHECK_CC_WARNING([enable], [sign-compare]) 22547db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_enable_sign_compare_warning], [yes], 22557db96d56Sopenharmony_ci [BASECFLAGS="$BASECFLAGS -Wsign-compare"]) 22567db96d56Sopenharmony_ci 22577db96d56Sopenharmony_ci PY_CHECK_CC_WARNING([enable], [unreachable-code]) 22587db96d56Sopenharmony_ci # Don't enable unreachable code warning in debug mode, since it usually 22597db96d56Sopenharmony_ci # results in non-standard code paths. 22607db96d56Sopenharmony_ci # Issue #24324: Unfortunately, the unreachable code warning does not work 22617db96d56Sopenharmony_ci # correctly on gcc and has been silently removed from the compiler. 22627db96d56Sopenharmony_ci # It is supported on clang but on OS X systems gcc may be an alias 22637db96d56Sopenharmony_ci # for clang. Try to determine if the compiler is not really gcc and, 22647db96d56Sopenharmony_ci # if so, only then enable the warning. 22657db96d56Sopenharmony_ci if test $ac_cv_enable_unreachable_code_warning = yes && \ 22667db96d56Sopenharmony_ci test "$Py_DEBUG" != "true" && \ 22677db96d56Sopenharmony_ci test -z "`$CC --version 2>/dev/null | grep 'Free Software Foundation'`" 22687db96d56Sopenharmony_ci then 22697db96d56Sopenharmony_ci BASECFLAGS="$BASECFLAGS -Wunreachable-code" 22707db96d56Sopenharmony_ci else 22717db96d56Sopenharmony_ci ac_cv_enable_unreachable_code_warning=no 22727db96d56Sopenharmony_ci fi 22737db96d56Sopenharmony_ci 22747db96d56Sopenharmony_ci PY_CHECK_CC_WARNING([enable], [strict-prototypes]) 22757db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_enable_strict_prototypes_warning], [yes], 22767db96d56Sopenharmony_ci [CFLAGS_NODIST="$CFLAGS_NODIST -Wstrict-prototypes"]) 22777db96d56Sopenharmony_ci 22787db96d56Sopenharmony_ci ac_save_cc="$CC" 22797db96d56Sopenharmony_ci CC="$CC -Werror=implicit-function-declaration" 22807db96d56Sopenharmony_ci AC_CACHE_CHECK([if we can make implicit function declaration an error in $CC], 22817db96d56Sopenharmony_ci [ac_cv_enable_implicit_function_declaration_error], 22827db96d56Sopenharmony_ci AC_COMPILE_IFELSE( 22837db96d56Sopenharmony_ci [ 22847db96d56Sopenharmony_ci AC_LANG_PROGRAM([[]], [[]]) 22857db96d56Sopenharmony_ci ],[ 22867db96d56Sopenharmony_ci ac_cv_enable_implicit_function_declaration_error=yes 22877db96d56Sopenharmony_ci ],[ 22887db96d56Sopenharmony_ci ac_cv_enable_implicit_function_declaration_error=no 22897db96d56Sopenharmony_ci ])) 22907db96d56Sopenharmony_ci CC="$ac_save_cc" 22917db96d56Sopenharmony_ci 22927db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_enable_implicit_function_declaration_error], [yes], 22937db96d56Sopenharmony_ci [CFLAGS_NODIST="$CFLAGS_NODIST -Werror=implicit-function-declaration"]) 22947db96d56Sopenharmony_ci 22957db96d56Sopenharmony_ci ac_save_cc="$CC" 22967db96d56Sopenharmony_ci CC="$CC -fvisibility=hidden" 22977db96d56Sopenharmony_ci AC_CACHE_CHECK([if we can use visibility in $CC], [ac_cv_enable_visibility], 22987db96d56Sopenharmony_ci AC_COMPILE_IFELSE( 22997db96d56Sopenharmony_ci [ 23007db96d56Sopenharmony_ci AC_LANG_PROGRAM([[]], [[]]) 23017db96d56Sopenharmony_ci ],[ 23027db96d56Sopenharmony_ci ac_cv_enable_visibility=yes 23037db96d56Sopenharmony_ci ],[ 23047db96d56Sopenharmony_ci ac_cv_enable_visibility=no 23057db96d56Sopenharmony_ci ])) 23067db96d56Sopenharmony_ci CC="$ac_save_cc" 23077db96d56Sopenharmony_ci 23087db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_enable_visibility], [yes], 23097db96d56Sopenharmony_ci [CFLAGS_NODIST="$CFLAGS_NODIST -fvisibility=hidden"]) 23107db96d56Sopenharmony_ci 23117db96d56Sopenharmony_ci # if using gcc on alpha, use -mieee to get (near) full IEEE 754 23127db96d56Sopenharmony_ci # support. Without this, treatment of subnormals doesn't follow 23137db96d56Sopenharmony_ci # the standard. 23147db96d56Sopenharmony_ci case $host in 23157db96d56Sopenharmony_ci alpha*) 23167db96d56Sopenharmony_ci BASECFLAGS="$BASECFLAGS -mieee" 23177db96d56Sopenharmony_ci ;; 23187db96d56Sopenharmony_ci esac 23197db96d56Sopenharmony_ci 23207db96d56Sopenharmony_ci case $ac_sys_system in 23217db96d56Sopenharmony_ci SCO_SV*) 23227db96d56Sopenharmony_ci BASECFLAGS="$BASECFLAGS -m486 -DSCO5" 23237db96d56Sopenharmony_ci ;; 23247db96d56Sopenharmony_ci 23257db96d56Sopenharmony_ci Darwin*) 23267db96d56Sopenharmony_ci # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd 23277db96d56Sopenharmony_ci # used to be here, but non-Apple gcc doesn't accept them. 23287db96d56Sopenharmony_ci if test "${CC}" = gcc 23297db96d56Sopenharmony_ci then 23307db96d56Sopenharmony_ci AC_MSG_CHECKING(which compiler should be used) 23317db96d56Sopenharmony_ci case "${UNIVERSALSDK}" in 23327db96d56Sopenharmony_ci */MacOSX10.4u.sdk) 23337db96d56Sopenharmony_ci # Build using 10.4 SDK, force usage of gcc when the 23347db96d56Sopenharmony_ci # compiler is gcc, otherwise the user will get very 23357db96d56Sopenharmony_ci # confusing error messages when building on OSX 10.6 23367db96d56Sopenharmony_ci CC=gcc-4.0 23377db96d56Sopenharmony_ci CPP=cpp-4.0 23387db96d56Sopenharmony_ci ;; 23397db96d56Sopenharmony_ci esac 23407db96d56Sopenharmony_ci AC_MSG_RESULT($CC) 23417db96d56Sopenharmony_ci fi 23427db96d56Sopenharmony_ci 23437db96d56Sopenharmony_ci LIPO_INTEL64_FLAGS="" 23447db96d56Sopenharmony_ci if test "${enable_universalsdk}" 23457db96d56Sopenharmony_ci then 23467db96d56Sopenharmony_ci case "$UNIVERSAL_ARCHS" in 23477db96d56Sopenharmony_ci 32-bit) 23487db96d56Sopenharmony_ci UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386" 23497db96d56Sopenharmony_ci LIPO_32BIT_FLAGS="" 23507db96d56Sopenharmony_ci ARCH_RUN_32BIT="" 23517db96d56Sopenharmony_ci ;; 23527db96d56Sopenharmony_ci 64-bit) 23537db96d56Sopenharmony_ci UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64" 23547db96d56Sopenharmony_ci LIPO_32BIT_FLAGS="" 23557db96d56Sopenharmony_ci ARCH_RUN_32BIT="true" 23567db96d56Sopenharmony_ci ;; 23577db96d56Sopenharmony_ci all) 23587db96d56Sopenharmony_ci UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64" 23597db96d56Sopenharmony_ci LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" 23607db96d56Sopenharmony_ci ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" 23617db96d56Sopenharmony_ci ;; 23627db96d56Sopenharmony_ci universal2) 23637db96d56Sopenharmony_ci UNIVERSAL_ARCH_FLAGS="-arch arm64 -arch x86_64" 23647db96d56Sopenharmony_ci LIPO_32BIT_FLAGS="" 23657db96d56Sopenharmony_ci LIPO_INTEL64_FLAGS="-extract x86_64" 23667db96d56Sopenharmony_ci ARCH_RUN_32BIT="true" 23677db96d56Sopenharmony_ci ;; 23687db96d56Sopenharmony_ci intel) 23697db96d56Sopenharmony_ci UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64" 23707db96d56Sopenharmony_ci LIPO_32BIT_FLAGS="-extract i386" 23717db96d56Sopenharmony_ci ARCH_RUN_32BIT="/usr/bin/arch -i386" 23727db96d56Sopenharmony_ci ;; 23737db96d56Sopenharmony_ci intel-32) 23747db96d56Sopenharmony_ci UNIVERSAL_ARCH_FLAGS="-arch i386" 23757db96d56Sopenharmony_ci LIPO_32BIT_FLAGS="" 23767db96d56Sopenharmony_ci ARCH_RUN_32BIT="" 23777db96d56Sopenharmony_ci ;; 23787db96d56Sopenharmony_ci intel-64) 23797db96d56Sopenharmony_ci UNIVERSAL_ARCH_FLAGS="-arch x86_64" 23807db96d56Sopenharmony_ci LIPO_32BIT_FLAGS="" 23817db96d56Sopenharmony_ci ARCH_RUN_32BIT="true" 23827db96d56Sopenharmony_ci ;; 23837db96d56Sopenharmony_ci 3-way) 23847db96d56Sopenharmony_ci UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64" 23857db96d56Sopenharmony_ci LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" 23867db96d56Sopenharmony_ci ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" 23877db96d56Sopenharmony_ci ;; 23887db96d56Sopenharmony_ci *) 23897db96d56Sopenharmony_ci AC_MSG_ERROR([proper usage is --with-universal-arch=universal2|32-bit|64-bit|all|intel|3-way]) 23907db96d56Sopenharmony_ci ;; 23917db96d56Sopenharmony_ci esac 23927db96d56Sopenharmony_ci 23937db96d56Sopenharmony_ci if test "${UNIVERSALSDK}" != "/" 23947db96d56Sopenharmony_ci then 23957db96d56Sopenharmony_ci CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}" 23967db96d56Sopenharmony_ci LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}" 23977db96d56Sopenharmony_ci CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}" 23987db96d56Sopenharmony_ci else 23997db96d56Sopenharmony_ci CFLAGS="${UNIVERSAL_ARCH_FLAGS} ${CFLAGS}" 24007db96d56Sopenharmony_ci LDFLAGS="${UNIVERSAL_ARCH_FLAGS} ${LDFLAGS}" 24017db96d56Sopenharmony_ci fi 24027db96d56Sopenharmony_ci fi 24037db96d56Sopenharmony_ci 24047db96d56Sopenharmony_ci # Calculate an appropriate deployment target for this build: 24057db96d56Sopenharmony_ci # The deployment target value is used explicitly to enable certain 24067db96d56Sopenharmony_ci # features are enabled (such as builtin libedit support for readline) 24077db96d56Sopenharmony_ci # through the use of Apple's Availability Macros and is used as a 24087db96d56Sopenharmony_ci # component of the string returned by distutils.get_platform(). 24097db96d56Sopenharmony_ci # 24107db96d56Sopenharmony_ci # Use the value from: 24117db96d56Sopenharmony_ci # 1. the MACOSX_DEPLOYMENT_TARGET environment variable if specified 24127db96d56Sopenharmony_ci # 2. the operating system version of the build machine if >= 10.6 24137db96d56Sopenharmony_ci # 3. If running on OS X 10.3 through 10.5, use the legacy tests 24147db96d56Sopenharmony_ci # below to pick either 10.3, 10.4, or 10.5 as the target. 24157db96d56Sopenharmony_ci # 4. If we are running on OS X 10.2 or earlier, good luck! 24167db96d56Sopenharmony_ci 24177db96d56Sopenharmony_ci AC_MSG_CHECKING(which MACOSX_DEPLOYMENT_TARGET to use) 24187db96d56Sopenharmony_ci cur_target_major=`sw_vers -productVersion | \ 24197db96d56Sopenharmony_ci sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'` 24207db96d56Sopenharmony_ci cur_target_minor=`sw_vers -productVersion | \ 24217db96d56Sopenharmony_ci sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'` 24227db96d56Sopenharmony_ci cur_target="${cur_target_major}.${cur_target_minor}" 24237db96d56Sopenharmony_ci if test ${cur_target_major} -eq 10 && \ 24247db96d56Sopenharmony_ci test ${cur_target_minor} -ge 3 && \ 24257db96d56Sopenharmony_ci test ${cur_target_minor} -le 5 24267db96d56Sopenharmony_ci then 24277db96d56Sopenharmony_ci # OS X 10.3 through 10.5 24287db96d56Sopenharmony_ci cur_target=10.3 24297db96d56Sopenharmony_ci if test ${enable_universalsdk} 24307db96d56Sopenharmony_ci then 24317db96d56Sopenharmony_ci case "$UNIVERSAL_ARCHS" in 24327db96d56Sopenharmony_ci all|3-way|intel|64-bit) 24337db96d56Sopenharmony_ci # These configurations were first supported in 10.5 24347db96d56Sopenharmony_ci cur_target='10.5' 24357db96d56Sopenharmony_ci ;; 24367db96d56Sopenharmony_ci esac 24377db96d56Sopenharmony_ci else 24387db96d56Sopenharmony_ci if test `/usr/bin/arch` = "i386" 24397db96d56Sopenharmony_ci then 24407db96d56Sopenharmony_ci # 10.4 was the first release to support Intel archs 24417db96d56Sopenharmony_ci cur_target="10.4" 24427db96d56Sopenharmony_ci fi 24437db96d56Sopenharmony_ci fi 24447db96d56Sopenharmony_ci fi 24457db96d56Sopenharmony_ci CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} 24467db96d56Sopenharmony_ci 24477db96d56Sopenharmony_ci # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the 24487db96d56Sopenharmony_ci # environment with a value that is the same as what we'll use 24497db96d56Sopenharmony_ci # in the Makefile to ensure that we'll get the same compiler 24507db96d56Sopenharmony_ci # environment during configure and build time. 24517db96d56Sopenharmony_ci MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" 24527db96d56Sopenharmony_ci export MACOSX_DEPLOYMENT_TARGET 24537db96d56Sopenharmony_ci EXPORT_MACOSX_DEPLOYMENT_TARGET='' 24547db96d56Sopenharmony_ci AC_MSG_RESULT($MACOSX_DEPLOYMENT_TARGET) 24557db96d56Sopenharmony_ci 24567db96d56Sopenharmony_ci AC_MSG_CHECKING(if specified universal architectures work) 24577db96d56Sopenharmony_ci AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[printf("%d", 42);]])], 24587db96d56Sopenharmony_ci [AC_MSG_RESULT(yes)], 24597db96d56Sopenharmony_ci [AC_MSG_RESULT(no) 24607db96d56Sopenharmony_ci AC_MSG_ERROR(check config.log and use the '--with-universal-archs' option) 24617db96d56Sopenharmony_ci ]) 24627db96d56Sopenharmony_ci 24637db96d56Sopenharmony_ci # end of Darwin* tests 24647db96d56Sopenharmony_ci ;; 24657db96d56Sopenharmony_ci esac 24667db96d56Sopenharmony_ci ;; 24677db96d56Sopenharmony_ci 24687db96d56Sopenharmony_ci*) 24697db96d56Sopenharmony_ci case $ac_sys_system in 24707db96d56Sopenharmony_ci OpenUNIX*|UnixWare*) 24717db96d56Sopenharmony_ci BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca " 24727db96d56Sopenharmony_ci ;; 24737db96d56Sopenharmony_ci SCO_SV*) 24747db96d56Sopenharmony_ci BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5" 24757db96d56Sopenharmony_ci ;; 24767db96d56Sopenharmony_ci esac 24777db96d56Sopenharmony_ci ;; 24787db96d56Sopenharmony_ciesac 24797db96d56Sopenharmony_ci 24807db96d56Sopenharmony_cicase "$CC" in 24817db96d56Sopenharmony_ci*icc*) 24827db96d56Sopenharmony_ci # ICC needs -fp-model strict or floats behave badly 24837db96d56Sopenharmony_ci CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict" 24847db96d56Sopenharmony_ci ;; 24857db96d56Sopenharmony_ci*xlc*) 24867db96d56Sopenharmony_ci CFLAGS_NODIST="$CFLAGS_NODIST -qalias=noansi -qmaxmem=-1" 24877db96d56Sopenharmony_ci ;; 24887db96d56Sopenharmony_ciesac 24897db96d56Sopenharmony_ci 24907db96d56Sopenharmony_ciif test "$assertions" = 'true'; then 24917db96d56Sopenharmony_ci : 24927db96d56Sopenharmony_cielse 24937db96d56Sopenharmony_ci OPT="-DNDEBUG $OPT" 24947db96d56Sopenharmony_cifi 24957db96d56Sopenharmony_ci 24967db96d56Sopenharmony_ciif test "$ac_arch_flags" 24977db96d56Sopenharmony_cithen 24987db96d56Sopenharmony_ci BASECFLAGS="$BASECFLAGS $ac_arch_flags" 24997db96d56Sopenharmony_cifi 25007db96d56Sopenharmony_ci 25017db96d56Sopenharmony_ci# On some compilers, pthreads are available without further options 25027db96d56Sopenharmony_ci# (e.g. MacOS X). On some of these systems, the compiler will not 25037db96d56Sopenharmony_ci# complain if unaccepted options are passed (e.g. gcc on Mac OS X). 25047db96d56Sopenharmony_ci# So we have to see first whether pthreads are available without 25057db96d56Sopenharmony_ci# options before we can check whether -Kpthread improves anything. 25067db96d56Sopenharmony_ciAC_CACHE_CHECK([whether pthreads are available without options], 25077db96d56Sopenharmony_ci [ac_cv_pthread_is_default], 25087db96d56Sopenharmony_ci[AC_RUN_IFELSE([AC_LANG_SOURCE([[ 25097db96d56Sopenharmony_ci#include <stdio.h> 25107db96d56Sopenharmony_ci#include <pthread.h> 25117db96d56Sopenharmony_ci 25127db96d56Sopenharmony_civoid* routine(void* p){return NULL;} 25137db96d56Sopenharmony_ci 25147db96d56Sopenharmony_ciint main(void){ 25157db96d56Sopenharmony_ci pthread_t p; 25167db96d56Sopenharmony_ci if(pthread_create(&p,NULL,routine,NULL)!=0) 25177db96d56Sopenharmony_ci return 1; 25187db96d56Sopenharmony_ci (void)pthread_detach(p); 25197db96d56Sopenharmony_ci return 0; 25207db96d56Sopenharmony_ci} 25217db96d56Sopenharmony_ci]])],[ 25227db96d56Sopenharmony_ci ac_cv_pthread_is_default=yes 25237db96d56Sopenharmony_ci ac_cv_kthread=no 25247db96d56Sopenharmony_ci ac_cv_pthread=no 25257db96d56Sopenharmony_ci],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no]) 25267db96d56Sopenharmony_ci]) 25277db96d56Sopenharmony_ci 25287db96d56Sopenharmony_ci 25297db96d56Sopenharmony_ciif test $ac_cv_pthread_is_default = yes 25307db96d56Sopenharmony_cithen 25317db96d56Sopenharmony_ci ac_cv_kpthread=no 25327db96d56Sopenharmony_cielse 25337db96d56Sopenharmony_ci# -Kpthread, if available, provides the right #defines 25347db96d56Sopenharmony_ci# and linker options to make pthread_create available 25357db96d56Sopenharmony_ci# Some compilers won't report that they do not support -Kpthread, 25367db96d56Sopenharmony_ci# so we need to run a program to see whether it really made the 25377db96d56Sopenharmony_ci# function available. 25387db96d56Sopenharmony_ciAC_CACHE_CHECK([whether $CC accepts -Kpthread], [ac_cv_kpthread], 25397db96d56Sopenharmony_ci[ac_save_cc="$CC" 25407db96d56Sopenharmony_ciCC="$CC -Kpthread" 25417db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 25427db96d56Sopenharmony_ci#include <stdio.h> 25437db96d56Sopenharmony_ci#include <pthread.h> 25447db96d56Sopenharmony_ci 25457db96d56Sopenharmony_civoid* routine(void* p){return NULL;} 25467db96d56Sopenharmony_ci 25477db96d56Sopenharmony_ciint main(void){ 25487db96d56Sopenharmony_ci pthread_t p; 25497db96d56Sopenharmony_ci if(pthread_create(&p,NULL,routine,NULL)!=0) 25507db96d56Sopenharmony_ci return 1; 25517db96d56Sopenharmony_ci (void)pthread_detach(p); 25527db96d56Sopenharmony_ci return 0; 25537db96d56Sopenharmony_ci} 25547db96d56Sopenharmony_ci]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no]) 25557db96d56Sopenharmony_ciCC="$ac_save_cc"]) 25567db96d56Sopenharmony_cifi 25577db96d56Sopenharmony_ci 25587db96d56Sopenharmony_ciif test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no 25597db96d56Sopenharmony_cithen 25607db96d56Sopenharmony_ci# -Kthread, if available, provides the right #defines 25617db96d56Sopenharmony_ci# and linker options to make pthread_create available 25627db96d56Sopenharmony_ci# Some compilers won't report that they do not support -Kthread, 25637db96d56Sopenharmony_ci# so we need to run a program to see whether it really made the 25647db96d56Sopenharmony_ci# function available. 25657db96d56Sopenharmony_ciAC_CACHE_CHECK([whether $CC accepts -Kthread], [ac_cv_kthread], 25667db96d56Sopenharmony_ci[ac_save_cc="$CC" 25677db96d56Sopenharmony_ciCC="$CC -Kthread" 25687db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 25697db96d56Sopenharmony_ci#include <stdio.h> 25707db96d56Sopenharmony_ci#include <pthread.h> 25717db96d56Sopenharmony_ci 25727db96d56Sopenharmony_civoid* routine(void* p){return NULL;} 25737db96d56Sopenharmony_ci 25747db96d56Sopenharmony_ciint main(void){ 25757db96d56Sopenharmony_ci pthread_t p; 25767db96d56Sopenharmony_ci if(pthread_create(&p,NULL,routine,NULL)!=0) 25777db96d56Sopenharmony_ci return 1; 25787db96d56Sopenharmony_ci (void)pthread_detach(p); 25797db96d56Sopenharmony_ci return 0; 25807db96d56Sopenharmony_ci} 25817db96d56Sopenharmony_ci]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no]) 25827db96d56Sopenharmony_ciCC="$ac_save_cc"]) 25837db96d56Sopenharmony_cifi 25847db96d56Sopenharmony_ci 25857db96d56Sopenharmony_ciif test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no 25867db96d56Sopenharmony_cithen 25877db96d56Sopenharmony_ci# -pthread, if available, provides the right #defines 25887db96d56Sopenharmony_ci# and linker options to make pthread_create available 25897db96d56Sopenharmony_ci# Some compilers won't report that they do not support -pthread, 25907db96d56Sopenharmony_ci# so we need to run a program to see whether it really made the 25917db96d56Sopenharmony_ci# function available. 25927db96d56Sopenharmony_ciAC_CACHE_CHECK([whether $CC accepts -pthread], [ac_cv_pthread], 25937db96d56Sopenharmony_ci[ac_save_cc="$CC" 25947db96d56Sopenharmony_ciCC="$CC -pthread" 25957db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 25967db96d56Sopenharmony_ci#include <stdio.h> 25977db96d56Sopenharmony_ci#include <pthread.h> 25987db96d56Sopenharmony_ci 25997db96d56Sopenharmony_civoid* routine(void* p){return NULL;} 26007db96d56Sopenharmony_ci 26017db96d56Sopenharmony_ciint main(void){ 26027db96d56Sopenharmony_ci pthread_t p; 26037db96d56Sopenharmony_ci if(pthread_create(&p,NULL,routine,NULL)!=0) 26047db96d56Sopenharmony_ci return 1; 26057db96d56Sopenharmony_ci (void)pthread_detach(p); 26067db96d56Sopenharmony_ci return 0; 26077db96d56Sopenharmony_ci} 26087db96d56Sopenharmony_ci]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no]) 26097db96d56Sopenharmony_ciCC="$ac_save_cc"]) 26107db96d56Sopenharmony_cifi 26117db96d56Sopenharmony_ci 26127db96d56Sopenharmony_ci# If we have set a CC compiler flag for thread support then 26137db96d56Sopenharmony_ci# check if it works for CXX, too. 26147db96d56Sopenharmony_ciac_cv_cxx_thread=no 26157db96d56Sopenharmony_ciif test ! -z "$CXX" 26167db96d56Sopenharmony_cithen 26177db96d56Sopenharmony_ciAC_MSG_CHECKING(whether $CXX also accepts flags for thread support) 26187db96d56Sopenharmony_ciac_save_cxx="$CXX" 26197db96d56Sopenharmony_ci 26207db96d56Sopenharmony_ciif test "$ac_cv_kpthread" = "yes" 26217db96d56Sopenharmony_cithen 26227db96d56Sopenharmony_ci CXX="$CXX -Kpthread" 26237db96d56Sopenharmony_ci ac_cv_cxx_thread=yes 26247db96d56Sopenharmony_cielif test "$ac_cv_kthread" = "yes" 26257db96d56Sopenharmony_cithen 26267db96d56Sopenharmony_ci CXX="$CXX -Kthread" 26277db96d56Sopenharmony_ci ac_cv_cxx_thread=yes 26287db96d56Sopenharmony_cielif test "$ac_cv_pthread" = "yes" 26297db96d56Sopenharmony_cithen 26307db96d56Sopenharmony_ci CXX="$CXX -pthread" 26317db96d56Sopenharmony_ci ac_cv_cxx_thread=yes 26327db96d56Sopenharmony_cifi 26337db96d56Sopenharmony_ci 26347db96d56Sopenharmony_ciif test $ac_cv_cxx_thread = yes 26357db96d56Sopenharmony_cithen 26367db96d56Sopenharmony_ci echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext 26377db96d56Sopenharmony_ci $CXX -c conftest.$ac_ext 2>&5 26387db96d56Sopenharmony_ci if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \ 26397db96d56Sopenharmony_ci && test -s conftest$ac_exeext && ./conftest$ac_exeext 26407db96d56Sopenharmony_ci then 26417db96d56Sopenharmony_ci ac_cv_cxx_thread=yes 26427db96d56Sopenharmony_ci else 26437db96d56Sopenharmony_ci ac_cv_cxx_thread=no 26447db96d56Sopenharmony_ci fi 26457db96d56Sopenharmony_ci rm -fr conftest* 26467db96d56Sopenharmony_cifi 26477db96d56Sopenharmony_ciAC_MSG_RESULT($ac_cv_cxx_thread) 26487db96d56Sopenharmony_cifi 26497db96d56Sopenharmony_ciCXX="$ac_save_cxx" 26507db96d56Sopenharmony_ci 26517db96d56Sopenharmony_cidnl # check for ANSI or K&R ("traditional") preprocessor 26527db96d56Sopenharmony_cidnl AC_MSG_CHECKING(for C preprocessor type) 26537db96d56Sopenharmony_cidnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 26547db96d56Sopenharmony_cidnl #define spam(name, doc) {#name, &name, #name "() -- " doc} 26557db96d56Sopenharmony_cidnl int foo; 26567db96d56Sopenharmony_cidnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something"); 26577db96d56Sopenharmony_cidnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional]) 26587db96d56Sopenharmony_cidnl AC_MSG_RESULT($cpp_type) 26597db96d56Sopenharmony_ci 26607db96d56Sopenharmony_cidnl autoconf 2.71 deprecates STDC_HEADERS, keep for backwards compatibility 26617db96d56Sopenharmony_cidnl assume C99 compilers provide ANSI C headers 26627db96d56Sopenharmony_ciAC_DEFINE(STDC_HEADERS, 1, [Define to 1 if you have the ANSI C header files.]) 26637db96d56Sopenharmony_ci 26647db96d56Sopenharmony_ci# checks for header files 26657db96d56Sopenharmony_ciAC_CHECK_HEADERS([ \ 26667db96d56Sopenharmony_ci alloca.h asm/types.h bluetooth.h conio.h crypt.h direct.h dlfcn.h endian.h errno.h fcntl.h grp.h \ 26677db96d56Sopenharmony_ci ieeefp.h io.h langinfo.h libintl.h libutil.h linux/auxvec.h sys/auxv.h linux/memfd.h \ 26687db96d56Sopenharmony_ci linux/random.h linux/soundcard.h \ 26697db96d56Sopenharmony_ci linux/tipc.h linux/wait.h netdb.h netinet/in.h netpacket/packet.h poll.h process.h pthread.h pty.h \ 26707db96d56Sopenharmony_ci sched.h setjmp.h shadow.h signal.h spawn.h stropts.h sys/audioio.h sys/bsdtty.h sys/devpoll.h \ 26717db96d56Sopenharmony_ci sys/endian.h sys/epoll.h sys/event.h sys/eventfd.h sys/file.h sys/ioctl.h sys/kern_control.h \ 26727db96d56Sopenharmony_ci sys/loadavg.h sys/lock.h sys/memfd.h sys/mkdev.h sys/mman.h sys/modem.h sys/param.h sys/poll.h \ 26737db96d56Sopenharmony_ci sys/random.h sys/resource.h sys/select.h sys/sendfile.h sys/socket.h sys/soundcard.h sys/stat.h \ 26747db96d56Sopenharmony_ci sys/statvfs.h sys/sys_domain.h sys/syscall.h sys/sysmacros.h sys/termio.h sys/time.h sys/times.h \ 26757db96d56Sopenharmony_ci sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/wait.h sys/xattr.h sysexits.h syslog.h \ 26767db96d56Sopenharmony_ci termios.h util.h utime.h utmp.h \ 26777db96d56Sopenharmony_ci]) 26787db96d56Sopenharmony_ciAC_HEADER_DIRENT 26797db96d56Sopenharmony_ciAC_HEADER_MAJOR 26807db96d56Sopenharmony_ci 26817db96d56Sopenharmony_ci# bluetooth/bluetooth.h has been known to not compile with -std=c99. 26827db96d56Sopenharmony_ci# http://permalink.gmane.org/gmane.linux.bluez.kernel/22294 26837db96d56Sopenharmony_ciSAVE_CFLAGS=$CFLAGS 26847db96d56Sopenharmony_ciCFLAGS="-std=c99 $CFLAGS" 26857db96d56Sopenharmony_ciAC_CHECK_HEADERS(bluetooth/bluetooth.h) 26867db96d56Sopenharmony_ciCFLAGS=$SAVE_CFLAGS 26877db96d56Sopenharmony_ci 26887db96d56Sopenharmony_ci# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first. 26897db96d56Sopenharmony_ciAC_CHECK_HEADERS([net/if.h], [], [], 26907db96d56Sopenharmony_ci[#include <stdio.h> 26917db96d56Sopenharmony_ci#include <stdlib.h> 26927db96d56Sopenharmony_ci#include <stddef.h> 26937db96d56Sopenharmony_ci#ifdef HAVE_SYS_SOCKET_H 26947db96d56Sopenharmony_ci# include <sys/socket.h> 26957db96d56Sopenharmony_ci#endif 26967db96d56Sopenharmony_ci]) 26977db96d56Sopenharmony_ci 26987db96d56Sopenharmony_ci# On Linux, netlink.h requires asm/types.h 26997db96d56Sopenharmony_ciAC_CHECK_HEADERS(linux/netlink.h,,,[ 27007db96d56Sopenharmony_ci#ifdef HAVE_ASM_TYPES_H 27017db96d56Sopenharmony_ci#include <asm/types.h> 27027db96d56Sopenharmony_ci#endif 27037db96d56Sopenharmony_ci#ifdef HAVE_SYS_SOCKET_H 27047db96d56Sopenharmony_ci#include <sys/socket.h> 27057db96d56Sopenharmony_ci#endif 27067db96d56Sopenharmony_ci]) 27077db96d56Sopenharmony_ci 27087db96d56Sopenharmony_ci# On Linux, qrtr.h requires asm/types.h 27097db96d56Sopenharmony_ciAC_CHECK_HEADERS(linux/qrtr.h,,,[ 27107db96d56Sopenharmony_ci#ifdef HAVE_ASM_TYPES_H 27117db96d56Sopenharmony_ci#include <asm/types.h> 27127db96d56Sopenharmony_ci#endif 27137db96d56Sopenharmony_ci#ifdef HAVE_SYS_SOCKET_H 27147db96d56Sopenharmony_ci#include <sys/socket.h> 27157db96d56Sopenharmony_ci#endif 27167db96d56Sopenharmony_ci]) 27177db96d56Sopenharmony_ci 27187db96d56Sopenharmony_ciAC_CHECK_HEADERS(linux/vm_sockets.h,,,[ 27197db96d56Sopenharmony_ci#ifdef HAVE_SYS_SOCKET_H 27207db96d56Sopenharmony_ci#include <sys/socket.h> 27217db96d56Sopenharmony_ci#endif 27227db96d56Sopenharmony_ci]) 27237db96d56Sopenharmony_ci 27247db96d56Sopenharmony_ci# On Linux, can.h, can/bcm.h, can/j1939.h, can/raw.h require sys/socket.h 27257db96d56Sopenharmony_ci# On NetBSD, netcan/can.h requires sys/socket.h 27267db96d56Sopenharmony_ciAC_CHECK_HEADERS(linux/can.h linux/can/bcm.h linux/can/j1939.h linux/can/raw.h netcan/can.h,,,[ 27277db96d56Sopenharmony_ci#ifdef HAVE_SYS_SOCKET_H 27287db96d56Sopenharmony_ci#include <sys/socket.h> 27297db96d56Sopenharmony_ci#endif 27307db96d56Sopenharmony_ci]) 27317db96d56Sopenharmony_ci 27327db96d56Sopenharmony_ci# checks for typedefs 27337db96d56Sopenharmony_ciAC_CACHE_CHECK([for clock_t in time.h], [ac_cv_clock_t_time_h], [ 27347db96d56Sopenharmony_ci AC_EGREP_HEADER([clock_t], [time.h], [ac_cv_clock_t_time_h=yes], [ac_cv_clock_t_time_h=no]) 27357db96d56Sopenharmony_ci]) 27367db96d56Sopenharmony_cidnl checks for "no" 27377db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_clock_t_time_h], [no], [ 27387db96d56Sopenharmony_ci AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.]) 27397db96d56Sopenharmony_ci]) 27407db96d56Sopenharmony_ci 27417db96d56Sopenharmony_ciAC_CACHE_CHECK([for makedev], [ac_cv_func_makedev], [ 27427db96d56Sopenharmony_ciAC_LINK_IFELSE([AC_LANG_PROGRAM([[ 27437db96d56Sopenharmony_ci#if defined(MAJOR_IN_MKDEV) 27447db96d56Sopenharmony_ci#include <sys/mkdev.h> 27457db96d56Sopenharmony_ci#elif defined(MAJOR_IN_SYSMACROS) 27467db96d56Sopenharmony_ci#include <sys/sysmacros.h> 27477db96d56Sopenharmony_ci#else 27487db96d56Sopenharmony_ci#include <sys/types.h> 27497db96d56Sopenharmony_ci#endif 27507db96d56Sopenharmony_ci]], [[ 27517db96d56Sopenharmony_ci makedev(0, 0) ]]) 27527db96d56Sopenharmony_ci],[ac_cv_func_makedev=yes],[ac_cv_func_makedev=no]) 27537db96d56Sopenharmony_ci]) 27547db96d56Sopenharmony_ci 27557db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_func_makedev], [yes], [ 27567db96d56Sopenharmony_ci AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.]) 27577db96d56Sopenharmony_ci]) 27587db96d56Sopenharmony_ci 27597db96d56Sopenharmony_ci# byte swapping 27607db96d56Sopenharmony_ciAC_CACHE_CHECK([for le64toh], [ac_cv_func_le64toh], [ 27617db96d56Sopenharmony_ciAC_LINK_IFELSE([AC_LANG_PROGRAM([[ 27627db96d56Sopenharmony_ci#ifdef HAVE_ENDIAN_H 27637db96d56Sopenharmony_ci#include <endian.h> 27647db96d56Sopenharmony_ci#elif defined(HAVE_SYS_ENDIAN_H) 27657db96d56Sopenharmony_ci#include <sys/endian.h> 27667db96d56Sopenharmony_ci#endif 27677db96d56Sopenharmony_ci]], [[ 27687db96d56Sopenharmony_ci le64toh(1) ]]) 27697db96d56Sopenharmony_ci],[ac_cv_func_le64toh=yes],[ac_cv_func_le64toh=no]) 27707db96d56Sopenharmony_ci]) 27717db96d56Sopenharmony_ci 27727db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_func_le64toh], [yes], [ 27737db96d56Sopenharmony_ci AC_DEFINE(HAVE_HTOLE64, 1, [Define this if you have le64toh()]) 27747db96d56Sopenharmony_ci]) 27757db96d56Sopenharmony_ci 27767db96d56Sopenharmony_ciuse_lfs=yes 27777db96d56Sopenharmony_ci# Don't use largefile support for GNU/Hurd 27787db96d56Sopenharmony_cicase $ac_sys_system in GNU*) 27797db96d56Sopenharmony_ci use_lfs=no 27807db96d56Sopenharmony_ciesac 27817db96d56Sopenharmony_ci 27827db96d56Sopenharmony_ciif test "$use_lfs" = "yes"; then 27837db96d56Sopenharmony_ci# Two defines needed to enable largefile support on various platforms 27847db96d56Sopenharmony_ci# These may affect some typedefs 27857db96d56Sopenharmony_cicase $ac_sys_system/$ac_sys_release in 27867db96d56Sopenharmony_ciAIX*) 27877db96d56Sopenharmony_ci AC_DEFINE(_LARGE_FILES, 1, 27887db96d56Sopenharmony_ci [This must be defined on AIX systems to enable large file support.]) 27897db96d56Sopenharmony_ci ;; 27907db96d56Sopenharmony_ciesac 27917db96d56Sopenharmony_ciAC_DEFINE(_LARGEFILE_SOURCE, 1, 27927db96d56Sopenharmony_ci[This must be defined on some systems to enable large file support.]) 27937db96d56Sopenharmony_ciAC_DEFINE(_FILE_OFFSET_BITS, 64, 27947db96d56Sopenharmony_ci[This must be set to 64 on some systems to enable large file support.]) 27957db96d56Sopenharmony_cifi 27967db96d56Sopenharmony_ci 27977db96d56Sopenharmony_ci# Add some code to confdefs.h so that the test for off_t works on SCO 27987db96d56Sopenharmony_cicat >> confdefs.h <<\EOF 27997db96d56Sopenharmony_ci#if defined(SCO_DS) 28007db96d56Sopenharmony_ci#undef _OFF_T 28017db96d56Sopenharmony_ci#endif 28027db96d56Sopenharmony_ciEOF 28037db96d56Sopenharmony_ci 28047db96d56Sopenharmony_ci# Type availability checks 28057db96d56Sopenharmony_ciAC_TYPE_MODE_T 28067db96d56Sopenharmony_ciAC_TYPE_OFF_T 28077db96d56Sopenharmony_ciAC_TYPE_PID_T 28087db96d56Sopenharmony_ciAC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void]) 28097db96d56Sopenharmony_ciAC_TYPE_SIZE_T 28107db96d56Sopenharmony_ciAC_TYPE_UID_T 28117db96d56Sopenharmony_ci 28127db96d56Sopenharmony_ciAC_CHECK_TYPE(ssize_t, 28137db96d56Sopenharmony_ci AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,) 28147db96d56Sopenharmony_ciAC_CHECK_TYPE(__uint128_t, 28157db96d56Sopenharmony_ci AC_DEFINE(HAVE_GCC_UINT128_T, 1, [Define if your compiler provides __uint128_t]),,) 28167db96d56Sopenharmony_ci 28177db96d56Sopenharmony_ci# Sizes and alignments of various common basic types 28187db96d56Sopenharmony_ci# ANSI C requires sizeof(char) == 1, so no need to check it 28197db96d56Sopenharmony_ciAC_CHECK_SIZEOF(int, 4) 28207db96d56Sopenharmony_ciAC_CHECK_SIZEOF(long, 4) 28217db96d56Sopenharmony_ciAC_CHECK_ALIGNOF(long) 28227db96d56Sopenharmony_ciAC_CHECK_SIZEOF(long long, 8) 28237db96d56Sopenharmony_ciAC_CHECK_SIZEOF(void *, 4) 28247db96d56Sopenharmony_ciAC_CHECK_SIZEOF(short, 2) 28257db96d56Sopenharmony_ciAC_CHECK_SIZEOF(float, 4) 28267db96d56Sopenharmony_ciAC_CHECK_SIZEOF(double, 8) 28277db96d56Sopenharmony_ciAC_CHECK_SIZEOF(fpos_t, 4) 28287db96d56Sopenharmony_ciAC_CHECK_SIZEOF(size_t, 4) 28297db96d56Sopenharmony_ciAC_CHECK_ALIGNOF(size_t) 28307db96d56Sopenharmony_ciAC_CHECK_SIZEOF(pid_t, 4) 28317db96d56Sopenharmony_ciAC_CHECK_SIZEOF(uintptr_t) 28327db96d56Sopenharmony_ci 28337db96d56Sopenharmony_ciAC_TYPE_LONG_DOUBLE 28347db96d56Sopenharmony_ciAC_CHECK_SIZEOF(long double, 16) 28357db96d56Sopenharmony_ci 28367db96d56Sopenharmony_ciAC_CHECK_SIZEOF(_Bool, 1) 28377db96d56Sopenharmony_ci 28387db96d56Sopenharmony_ciAC_CHECK_SIZEOF(off_t, [], [ 28397db96d56Sopenharmony_ci#ifdef HAVE_SYS_TYPES_H 28407db96d56Sopenharmony_ci#include <sys/types.h> 28417db96d56Sopenharmony_ci#endif 28427db96d56Sopenharmony_ci]) 28437db96d56Sopenharmony_ci 28447db96d56Sopenharmony_ciAC_MSG_CHECKING(whether to enable large file support) 28457db96d56Sopenharmony_ciif test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \ 28467db96d56Sopenharmony_ci "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then 28477db96d56Sopenharmony_ci have_largefile_support="yes" 28487db96d56Sopenharmony_cielse 28497db96d56Sopenharmony_ci have_largefile_support="no" 28507db96d56Sopenharmony_cifi 28517db96d56Sopenharmony_cidnl LFS does not work with Emscripten 3.1 28527db96d56Sopenharmony_ciAS_CASE([$ac_sys_system], 28537db96d56Sopenharmony_ci [Emscripten], [have_largefile_support="no"] 28547db96d56Sopenharmony_ci) 28557db96d56Sopenharmony_ciAS_VAR_IF([have_largefile_support], [yes], [ 28567db96d56Sopenharmony_ci AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1, 28577db96d56Sopenharmony_ci [Defined to enable large file support when an off_t is bigger than a long 28587db96d56Sopenharmony_ci and long long is at least as big as an off_t. You may need 28597db96d56Sopenharmony_ci to add some flags for configuration and compilation to enable this mode. 28607db96d56Sopenharmony_ci (For Solaris and Linux, the necessary defines are already defined.)]) 28617db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 28627db96d56Sopenharmony_ci], [ 28637db96d56Sopenharmony_ci AC_MSG_RESULT(no) 28647db96d56Sopenharmony_ci]) 28657db96d56Sopenharmony_ci 28667db96d56Sopenharmony_ciAC_CHECK_SIZEOF(time_t, [], [ 28677db96d56Sopenharmony_ci#ifdef HAVE_SYS_TYPES_H 28687db96d56Sopenharmony_ci#include <sys/types.h> 28697db96d56Sopenharmony_ci#endif 28707db96d56Sopenharmony_ci#ifdef HAVE_TIME_H 28717db96d56Sopenharmony_ci#include <time.h> 28727db96d56Sopenharmony_ci#endif 28737db96d56Sopenharmony_ci]) 28747db96d56Sopenharmony_ci 28757db96d56Sopenharmony_ci# if have pthread_t then define SIZEOF_PTHREAD_T 28767db96d56Sopenharmony_ciac_save_cc="$CC" 28777db96d56Sopenharmony_ciif test "$ac_cv_kpthread" = "yes" 28787db96d56Sopenharmony_cithen CC="$CC -Kpthread" 28797db96d56Sopenharmony_cielif test "$ac_cv_kthread" = "yes" 28807db96d56Sopenharmony_cithen CC="$CC -Kthread" 28817db96d56Sopenharmony_cielif test "$ac_cv_pthread" = "yes" 28827db96d56Sopenharmony_cithen CC="$CC -pthread" 28837db96d56Sopenharmony_cifi 28847db96d56Sopenharmony_ci 28857db96d56Sopenharmony_ciAC_CACHE_CHECK([for pthread_t], [ac_cv_have_pthread_t], [ 28867db96d56Sopenharmony_ciAC_COMPILE_IFELSE([ 28877db96d56Sopenharmony_ci AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]]) 28887db96d56Sopenharmony_ci], [ac_cv_have_pthread_t=yes], [ac_cv_have_pthread_t=no]) 28897db96d56Sopenharmony_ci]) 28907db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_have_pthread_t], [yes], [ 28917db96d56Sopenharmony_ci AC_CHECK_SIZEOF(pthread_t, [], [ 28927db96d56Sopenharmony_ci#ifdef HAVE_PTHREAD_H 28937db96d56Sopenharmony_ci#include <pthread.h> 28947db96d56Sopenharmony_ci#endif 28957db96d56Sopenharmony_ci ]) 28967db96d56Sopenharmony_ci]) 28977db96d56Sopenharmony_ci 28987db96d56Sopenharmony_ci# Issue #25658: POSIX hasn't defined that pthread_key_t is compatible with int. 28997db96d56Sopenharmony_ci# This checking will be unnecessary after removing deprecated TLS API. 29007db96d56Sopenharmony_ciAC_CHECK_SIZEOF(pthread_key_t, [], [[#include <pthread.h>]]) 29017db96d56Sopenharmony_ciAC_CACHE_CHECK([whether pthread_key_t is compatible with int], [ac_cv_pthread_key_t_is_arithmetic_type], [ 29027db96d56Sopenharmony_ciif test "$ac_cv_sizeof_pthread_key_t" -eq "$ac_cv_sizeof_int" ; then 29037db96d56Sopenharmony_ci AC_COMPILE_IFELSE( 29047db96d56Sopenharmony_ci [AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_key_t k; k * 1;]])], 29057db96d56Sopenharmony_ci [ac_cv_pthread_key_t_is_arithmetic_type=yes], 29067db96d56Sopenharmony_ci [ac_cv_pthread_key_t_is_arithmetic_type=no] 29077db96d56Sopenharmony_ci ) 29087db96d56Sopenharmony_cielse 29097db96d56Sopenharmony_ci ac_cv_pthread_key_t_is_arithmetic_type=no 29107db96d56Sopenharmony_cifi 29117db96d56Sopenharmony_ci]) 29127db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_pthread_key_t_is_arithmetic_type], [yes], [ 29137db96d56Sopenharmony_ci AC_DEFINE(PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT, 1, 29147db96d56Sopenharmony_ci [Define if pthread_key_t is compatible with int.]) 29157db96d56Sopenharmony_ci]) 29167db96d56Sopenharmony_ci 29177db96d56Sopenharmony_ciCC="$ac_save_cc" 29187db96d56Sopenharmony_ci 29197db96d56Sopenharmony_ciAC_SUBST(OTHER_LIBTOOL_OPT) 29207db96d56Sopenharmony_cicase $ac_sys_system/$ac_sys_release in 29217db96d56Sopenharmony_ci Darwin/@<:@01567@:>@\..*) 29227db96d56Sopenharmony_ci OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000" 29237db96d56Sopenharmony_ci ;; 29247db96d56Sopenharmony_ci Darwin/*) 29257db96d56Sopenharmony_ci OTHER_LIBTOOL_OPT="" 29267db96d56Sopenharmony_ci ;; 29277db96d56Sopenharmony_ciesac 29287db96d56Sopenharmony_ci 29297db96d56Sopenharmony_ci 29307db96d56Sopenharmony_ciAC_SUBST(LIBTOOL_CRUFT) 29317db96d56Sopenharmony_cicase $ac_sys_system/$ac_sys_release in 29327db96d56Sopenharmony_ci Darwin/@<:@01567@:>@\..*) 29337db96d56Sopenharmony_ci LIBTOOL_CRUFT="-framework System -lcc_dynamic" 29347db96d56Sopenharmony_ci if test "${enable_universalsdk}"; then 29357db96d56Sopenharmony_ci : 29367db96d56Sopenharmony_ci else 29377db96d56Sopenharmony_ci LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`" 29387db96d56Sopenharmony_ci fi 29397db96d56Sopenharmony_ci LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' 29407db96d56Sopenharmony_ci LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; 29417db96d56Sopenharmony_ci Darwin/*) 29427db96d56Sopenharmony_ci gcc_version=`gcc -dumpversion` 29437db96d56Sopenharmony_ci if test ${gcc_version} '<' 4.0 29447db96d56Sopenharmony_ci then 29457db96d56Sopenharmony_ci LIBTOOL_CRUFT="-lcc_dynamic" 29467db96d56Sopenharmony_ci else 29477db96d56Sopenharmony_ci LIBTOOL_CRUFT="" 29487db96d56Sopenharmony_ci fi 29497db96d56Sopenharmony_ci AC_RUN_IFELSE([AC_LANG_SOURCE([[ 29507db96d56Sopenharmony_ci #include <unistd.h> 29517db96d56Sopenharmony_ci int main(int argc, char*argv[]) 29527db96d56Sopenharmony_ci { 29537db96d56Sopenharmony_ci if (sizeof(long) == 4) { 29547db96d56Sopenharmony_ci return 0; 29557db96d56Sopenharmony_ci } else { 29567db96d56Sopenharmony_ci return 1; 29577db96d56Sopenharmony_ci } 29587db96d56Sopenharmony_ci } 29597db96d56Sopenharmony_ci ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes]) 29607db96d56Sopenharmony_ci 29617db96d56Sopenharmony_ci if test "${ac_osx_32bit}" = "yes"; then 29627db96d56Sopenharmony_ci case `/usr/bin/arch` in 29637db96d56Sopenharmony_ci i386) 29647db96d56Sopenharmony_ci MACOSX_DEFAULT_ARCH="i386" 29657db96d56Sopenharmony_ci ;; 29667db96d56Sopenharmony_ci ppc) 29677db96d56Sopenharmony_ci MACOSX_DEFAULT_ARCH="ppc" 29687db96d56Sopenharmony_ci ;; 29697db96d56Sopenharmony_ci *) 29707db96d56Sopenharmony_ci AC_MSG_ERROR([Unexpected output of 'arch' on macOS]) 29717db96d56Sopenharmony_ci ;; 29727db96d56Sopenharmony_ci esac 29737db96d56Sopenharmony_ci else 29747db96d56Sopenharmony_ci case `/usr/bin/arch` in 29757db96d56Sopenharmony_ci i386) 29767db96d56Sopenharmony_ci MACOSX_DEFAULT_ARCH="x86_64" 29777db96d56Sopenharmony_ci ;; 29787db96d56Sopenharmony_ci ppc) 29797db96d56Sopenharmony_ci MACOSX_DEFAULT_ARCH="ppc64" 29807db96d56Sopenharmony_ci ;; 29817db96d56Sopenharmony_ci arm64) 29827db96d56Sopenharmony_ci MACOSX_DEFAULT_ARCH="arm64" 29837db96d56Sopenharmony_ci ;; 29847db96d56Sopenharmony_ci *) 29857db96d56Sopenharmony_ci AC_MSG_ERROR([Unexpected output of 'arch' on macOS]) 29867db96d56Sopenharmony_ci ;; 29877db96d56Sopenharmony_ci esac 29887db96d56Sopenharmony_ci 29897db96d56Sopenharmony_ci fi 29907db96d56Sopenharmony_ci 29917db96d56Sopenharmony_ci LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}" 29927db96d56Sopenharmony_ci LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' 29937db96d56Sopenharmony_ci LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; 29947db96d56Sopenharmony_ciesac 29957db96d56Sopenharmony_ciAC_MSG_CHECKING(for --enable-framework) 29967db96d56Sopenharmony_ciif test "$enable_framework" 29977db96d56Sopenharmony_cithen 29987db96d56Sopenharmony_ci BASECFLAGS="$BASECFLAGS -fno-common -dynamic" 29997db96d56Sopenharmony_ci # -F. is needed to allow linking to the framework while 30007db96d56Sopenharmony_ci # in the build location. 30017db96d56Sopenharmony_ci AC_DEFINE(WITH_NEXT_FRAMEWORK, 1, 30027db96d56Sopenharmony_ci [Define if you want to produce an OpenStep/Rhapsody framework 30037db96d56Sopenharmony_ci (shared library plus accessory files).]) 30047db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 30057db96d56Sopenharmony_ci if test $enable_shared = "yes" 30067db96d56Sopenharmony_ci then 30077db96d56Sopenharmony_ci AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead]) 30087db96d56Sopenharmony_ci fi 30097db96d56Sopenharmony_cielse 30107db96d56Sopenharmony_ci AC_MSG_RESULT(no) 30117db96d56Sopenharmony_cifi 30127db96d56Sopenharmony_ci 30137db96d56Sopenharmony_ciAC_MSG_CHECKING(for dyld) 30147db96d56Sopenharmony_cicase $ac_sys_system/$ac_sys_release in 30157db96d56Sopenharmony_ci Darwin/*) 30167db96d56Sopenharmony_ci AC_DEFINE(WITH_DYLD, 1, 30177db96d56Sopenharmony_ci [Define if you want to use the new-style (Openstep, Rhapsody, MacOS) 30187db96d56Sopenharmony_ci dynamic linker (dyld) instead of the old-style (NextStep) dynamic 30197db96d56Sopenharmony_ci linker (rld). Dyld is necessary to support frameworks.]) 30207db96d56Sopenharmony_ci AC_MSG_RESULT(always on for Darwin) 30217db96d56Sopenharmony_ci ;; 30227db96d56Sopenharmony_ci *) 30237db96d56Sopenharmony_ci AC_MSG_RESULT(no) 30247db96d56Sopenharmony_ci ;; 30257db96d56Sopenharmony_ciesac 30267db96d56Sopenharmony_ci 30277db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-address-sanitizer) 30287db96d56Sopenharmony_ciAC_ARG_WITH(address_sanitizer, 30297db96d56Sopenharmony_ci AS_HELP_STRING([--with-address-sanitizer], 30307db96d56Sopenharmony_ci [enable AddressSanitizer memory error detector, 'asan' (default is no)]), 30317db96d56Sopenharmony_ci[ 30327db96d56Sopenharmony_ciAC_MSG_RESULT($withval) 30337db96d56Sopenharmony_ciBASECFLAGS="-fsanitize=address -fno-omit-frame-pointer $BASECFLAGS" 30347db96d56Sopenharmony_ciLDFLAGS="-fsanitize=address $LDFLAGS" 30357db96d56Sopenharmony_ci# ASan works by controlling memory allocation, our own malloc interferes. 30367db96d56Sopenharmony_ciwith_pymalloc="no" 30377db96d56Sopenharmony_ci], 30387db96d56Sopenharmony_ci[AC_MSG_RESULT(no)]) 30397db96d56Sopenharmony_ci 30407db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-memory-sanitizer) 30417db96d56Sopenharmony_ciAC_ARG_WITH(memory_sanitizer, 30427db96d56Sopenharmony_ci AS_HELP_STRING([--with-memory-sanitizer], 30437db96d56Sopenharmony_ci [enable MemorySanitizer allocation error detector, 'msan' (default is no)]), 30447db96d56Sopenharmony_ci[ 30457db96d56Sopenharmony_ciAC_MSG_RESULT($withval) 30467db96d56Sopenharmony_ciAX_CHECK_COMPILE_FLAG([-fsanitize=memory],[ 30477db96d56Sopenharmony_ciBASECFLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer $BASECFLAGS" 30487db96d56Sopenharmony_ciLDFLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 $LDFLAGS" 30497db96d56Sopenharmony_ci],[AC_MSG_ERROR([The selected compiler doesn't support memory sanitizer])]) 30507db96d56Sopenharmony_ci# MSan works by controlling memory allocation, our own malloc interferes. 30517db96d56Sopenharmony_ciwith_pymalloc="no" 30527db96d56Sopenharmony_ci], 30537db96d56Sopenharmony_ci[AC_MSG_RESULT(no)]) 30547db96d56Sopenharmony_ci 30557db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-undefined-behavior-sanitizer) 30567db96d56Sopenharmony_ciAC_ARG_WITH(undefined_behavior_sanitizer, 30577db96d56Sopenharmony_ci AS_HELP_STRING([--with-undefined-behavior-sanitizer], 30587db96d56Sopenharmony_ci [enable UndefinedBehaviorSanitizer undefined behaviour detector, 'ubsan' (default is no)]), 30597db96d56Sopenharmony_ci[ 30607db96d56Sopenharmony_ciAC_MSG_RESULT($withval) 30617db96d56Sopenharmony_ciBASECFLAGS="-fsanitize=undefined $BASECFLAGS" 30627db96d56Sopenharmony_ciLDFLAGS="-fsanitize=undefined $LDFLAGS" 30637db96d56Sopenharmony_ciwith_ubsan="yes" 30647db96d56Sopenharmony_ci], 30657db96d56Sopenharmony_ci[ 30667db96d56Sopenharmony_ciAC_MSG_RESULT(no) 30677db96d56Sopenharmony_ciwith_ubsan="no" 30687db96d56Sopenharmony_ci]) 30697db96d56Sopenharmony_ci 30707db96d56Sopenharmony_ci# Set info about shared libraries. 30717db96d56Sopenharmony_ciAC_SUBST(SHLIB_SUFFIX) 30727db96d56Sopenharmony_ciAC_SUBST(LDSHARED) 30737db96d56Sopenharmony_ciAC_SUBST(LDCXXSHARED) 30747db96d56Sopenharmony_ciAC_SUBST(BLDSHARED) 30757db96d56Sopenharmony_ciAC_SUBST(CCSHARED) 30767db96d56Sopenharmony_ciAC_SUBST(LINKFORSHARED) 30777db96d56Sopenharmony_ci 30787db96d56Sopenharmony_ci# SHLIB_SUFFIX is the extension of shared libraries `(including the dot!) 30797db96d56Sopenharmony_ci# -- usually .so, .sl on HP-UX, .dll on Cygwin 30807db96d56Sopenharmony_ciAC_MSG_CHECKING(the extension of shared libraries) 30817db96d56Sopenharmony_ciif test -z "$SHLIB_SUFFIX"; then 30827db96d56Sopenharmony_ci case $ac_sys_system in 30837db96d56Sopenharmony_ci hp*|HP*) 30847db96d56Sopenharmony_ci case `uname -m` in 30857db96d56Sopenharmony_ci ia64) SHLIB_SUFFIX=.so;; 30867db96d56Sopenharmony_ci *) SHLIB_SUFFIX=.sl;; 30877db96d56Sopenharmony_ci esac 30887db96d56Sopenharmony_ci ;; 30897db96d56Sopenharmony_ci CYGWIN*) SHLIB_SUFFIX=.dll;; 30907db96d56Sopenharmony_ci *) SHLIB_SUFFIX=.so;; 30917db96d56Sopenharmony_ci esac 30927db96d56Sopenharmony_cifi 30937db96d56Sopenharmony_ciAC_MSG_RESULT($SHLIB_SUFFIX) 30947db96d56Sopenharmony_ci 30957db96d56Sopenharmony_ci# LDSHARED is the ld *command* used to create shared library 30967db96d56Sopenharmony_ci# -- "cc -G" on SunOS 5.x. 30977db96d56Sopenharmony_ci# (Shared libraries in this instance are shared modules to be loaded into 30987db96d56Sopenharmony_ci# Python, as opposed to building Python itself as a shared library.) 30997db96d56Sopenharmony_ciAC_MSG_CHECKING(LDSHARED) 31007db96d56Sopenharmony_ciif test -z "$LDSHARED" 31017db96d56Sopenharmony_cithen 31027db96d56Sopenharmony_ci case $ac_sys_system/$ac_sys_release in 31037db96d56Sopenharmony_ci AIX*) 31047db96d56Sopenharmony_ci BLDSHARED="Modules/ld_so_aix \$(CC) -bI:Modules/python.exp" 31057db96d56Sopenharmony_ci LDSHARED="\$(LIBPL)/ld_so_aix \$(CC) -bI:\$(LIBPL)/python.exp" 31067db96d56Sopenharmony_ci ;; 31077db96d56Sopenharmony_ci SunOS/5*) 31087db96d56Sopenharmony_ci if test "$GCC" = "yes" ; then 31097db96d56Sopenharmony_ci LDSHARED='$(CC) -shared' 31107db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -shared' 31117db96d56Sopenharmony_ci else 31127db96d56Sopenharmony_ci LDSHARED='$(CC) -G' 31137db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -G' 31147db96d56Sopenharmony_ci fi ;; 31157db96d56Sopenharmony_ci hp*|HP*) 31167db96d56Sopenharmony_ci if test "$GCC" = "yes" ; then 31177db96d56Sopenharmony_ci LDSHARED='$(CC) -shared' 31187db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -shared' 31197db96d56Sopenharmony_ci else 31207db96d56Sopenharmony_ci LDSHARED='$(CC) -b' 31217db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -b' 31227db96d56Sopenharmony_ci fi ;; 31237db96d56Sopenharmony_ci Darwin/1.3*) 31247db96d56Sopenharmony_ci LDSHARED='$(CC) -bundle' 31257db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -bundle' 31267db96d56Sopenharmony_ci if test "$enable_framework" ; then 31277db96d56Sopenharmony_ci # Link against the framework. All externals should be defined. 31287db96d56Sopenharmony_ci BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' 31297db96d56Sopenharmony_ci LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' 31307db96d56Sopenharmony_ci LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' 31317db96d56Sopenharmony_ci else 31327db96d56Sopenharmony_ci # No framework. Ignore undefined symbols, assuming they come from Python 31337db96d56Sopenharmony_ci LDSHARED="$LDSHARED -undefined suppress" 31347db96d56Sopenharmony_ci LDCXXSHARED="$LDCXXSHARED -undefined suppress" 31357db96d56Sopenharmony_ci fi ;; 31367db96d56Sopenharmony_ci Darwin/1.4*|Darwin/5.*|Darwin/6.*) 31377db96d56Sopenharmony_ci LDSHARED='$(CC) -bundle' 31387db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -bundle' 31397db96d56Sopenharmony_ci if test "$enable_framework" ; then 31407db96d56Sopenharmony_ci # Link against the framework. All externals should be defined. 31417db96d56Sopenharmony_ci BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' 31427db96d56Sopenharmony_ci LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' 31437db96d56Sopenharmony_ci LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' 31447db96d56Sopenharmony_ci else 31457db96d56Sopenharmony_ci # No framework, use the Python app as bundle-loader 31467db96d56Sopenharmony_ci BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)' 31477db96d56Sopenharmony_ci LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' 31487db96d56Sopenharmony_ci LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' 31497db96d56Sopenharmony_ci fi ;; 31507db96d56Sopenharmony_ci Darwin/*) 31517db96d56Sopenharmony_ci # Use -undefined dynamic_lookup whenever possible (10.3 and later). 31527db96d56Sopenharmony_ci # This allows an extension to be used in any Python 31537db96d56Sopenharmony_ci 31547db96d56Sopenharmony_ci dep_target_major=`echo ${MACOSX_DEPLOYMENT_TARGET} | \ 31557db96d56Sopenharmony_ci sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'` 31567db96d56Sopenharmony_ci dep_target_minor=`echo ${MACOSX_DEPLOYMENT_TARGET} | \ 31577db96d56Sopenharmony_ci sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'` 31587db96d56Sopenharmony_ci if test ${dep_target_major} -eq 10 && \ 31597db96d56Sopenharmony_ci test ${dep_target_minor} -le 2 31607db96d56Sopenharmony_ci then 31617db96d56Sopenharmony_ci # building for OS X 10.0 through 10.2 31627db96d56Sopenharmony_ci AC_MSG_ERROR([MACOSX_DEPLOYMENT_TARGET too old ($MACOSX_DEPLOYMENT_TARGET), only 10.3 or later is supported]) 31637db96d56Sopenharmony_ci else 31647db96d56Sopenharmony_ci # building for OS X 10.3 and later 31657db96d56Sopenharmony_ci LDSHARED='$(CC) -bundle -undefined dynamic_lookup' 31667db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' 31677db96d56Sopenharmony_ci BLDSHARED="$LDSHARED" 31687db96d56Sopenharmony_ci fi 31697db96d56Sopenharmony_ci ;; 31707db96d56Sopenharmony_ci Emscripten|WASI) 31717db96d56Sopenharmony_ci LDSHARED='$(CC) -shared' 31727db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -shared';; 31737db96d56Sopenharmony_ci Linux*|GNU*|QNX*|VxWorks*|Haiku*) 31747db96d56Sopenharmony_ci LDSHARED='$(CC) -shared' 31757db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -shared';; 31767db96d56Sopenharmony_ci FreeBSD*) 31777db96d56Sopenharmony_ci if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]] 31787db96d56Sopenharmony_ci then 31797db96d56Sopenharmony_ci LDSHARED='$(CC) -shared' 31807db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -shared' 31817db96d56Sopenharmony_ci else 31827db96d56Sopenharmony_ci LDSHARED="ld -Bshareable" 31837db96d56Sopenharmony_ci fi;; 31847db96d56Sopenharmony_ci OpenBSD*) 31857db96d56Sopenharmony_ci if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]] 31867db96d56Sopenharmony_ci then 31877db96d56Sopenharmony_ci LDSHARED='$(CC) -shared $(CCSHARED)' 31887db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -shared $(CCSHARED)' 31897db96d56Sopenharmony_ci else 31907db96d56Sopenharmony_ci case `uname -r` in 31917db96d56Sopenharmony_ci [[01]].* | 2.[[0-7]] | 2.[[0-7]].*) 31927db96d56Sopenharmony_ci LDSHARED="ld -Bshareable ${LDFLAGS}" 31937db96d56Sopenharmony_ci ;; 31947db96d56Sopenharmony_ci *) 31957db96d56Sopenharmony_ci LDSHARED='$(CC) -shared $(CCSHARED)' 31967db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -shared $(CCSHARED)' 31977db96d56Sopenharmony_ci ;; 31987db96d56Sopenharmony_ci esac 31997db96d56Sopenharmony_ci fi;; 32007db96d56Sopenharmony_ci NetBSD*|DragonFly*) 32017db96d56Sopenharmony_ci LDSHARED='$(CC) -shared' 32027db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -shared';; 32037db96d56Sopenharmony_ci OpenUNIX*|UnixWare*) 32047db96d56Sopenharmony_ci if test "$GCC" = "yes" ; then 32057db96d56Sopenharmony_ci LDSHARED='$(CC) -shared' 32067db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -shared' 32077db96d56Sopenharmony_ci else 32087db96d56Sopenharmony_ci LDSHARED='$(CC) -G' 32097db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -G' 32107db96d56Sopenharmony_ci fi;; 32117db96d56Sopenharmony_ci SCO_SV*) 32127db96d56Sopenharmony_ci LDSHARED='$(CC) -Wl,-G,-Bexport' 32137db96d56Sopenharmony_ci LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';; 32147db96d56Sopenharmony_ci WASI*) 32157db96d56Sopenharmony_ci AS_VAR_IF([enable_wasm_dynamic_linking], [yes], [ 32167db96d56Sopenharmony_ci dnl not iplemented yet 32177db96d56Sopenharmony_ci ]);; 32187db96d56Sopenharmony_ci CYGWIN*) 32197db96d56Sopenharmony_ci LDSHARED="gcc -shared -Wl,--enable-auto-image-base" 32207db96d56Sopenharmony_ci LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";; 32217db96d56Sopenharmony_ci *) LDSHARED="ld";; 32227db96d56Sopenharmony_ci esac 32237db96d56Sopenharmony_cifi 32247db96d56Sopenharmony_ci 32257db96d56Sopenharmony_cidnl Emscripten's emconfigure sets LDSHARED. Set BLDSHARED outside the 32267db96d56Sopenharmony_cidnl test -z $LDSHARED block to configure BLDSHARED for side module support. 32277db96d56Sopenharmony_ciif test "$enable_wasm_dynamic_linking" = "yes" -a "$ac_sys_system" = "Emscripten"; then 32287db96d56Sopenharmony_ci BLDSHARED='$(CC) -shared -sSIDE_MODULE=1' 32297db96d56Sopenharmony_cifi 32307db96d56Sopenharmony_ci 32317db96d56Sopenharmony_ciAC_MSG_RESULT($LDSHARED) 32327db96d56Sopenharmony_ciLDCXXSHARED=${LDCXXSHARED-$LDSHARED} 32337db96d56Sopenharmony_ci 32347db96d56Sopenharmony_ciAC_MSG_CHECKING([BLDSHARED flags]) 32357db96d56Sopenharmony_ciBLDSHARED=${BLDSHARED-$LDSHARED} 32367db96d56Sopenharmony_ciAC_MSG_RESULT([$BLDSHARED]) 32377db96d56Sopenharmony_ci 32387db96d56Sopenharmony_ci# CCSHARED are the C *flags* used to create objects to go into a shared 32397db96d56Sopenharmony_ci# library (module) -- this is only needed for a few systems 32407db96d56Sopenharmony_ciAC_MSG_CHECKING(CCSHARED) 32417db96d56Sopenharmony_ciif test -z "$CCSHARED" 32427db96d56Sopenharmony_cithen 32437db96d56Sopenharmony_ci case $ac_sys_system/$ac_sys_release in 32447db96d56Sopenharmony_ci SunOS*) if test "$GCC" = yes; 32457db96d56Sopenharmony_ci then CCSHARED="-fPIC"; 32467db96d56Sopenharmony_ci elif test `uname -p` = sparc; 32477db96d56Sopenharmony_ci then CCSHARED="-xcode=pic32"; 32487db96d56Sopenharmony_ci else CCSHARED="-Kpic"; 32497db96d56Sopenharmony_ci fi;; 32507db96d56Sopenharmony_ci hp*|HP*) if test "$GCC" = yes; 32517db96d56Sopenharmony_ci then CCSHARED="-fPIC"; 32527db96d56Sopenharmony_ci else CCSHARED="+z"; 32537db96d56Sopenharmony_ci fi;; 32547db96d56Sopenharmony_ci Linux-android*) ;; 32557db96d56Sopenharmony_ci Linux*|GNU*) CCSHARED="-fPIC";; 32567db96d56Sopenharmony_ci Emscripten*|WASI*) 32577db96d56Sopenharmony_ci AS_VAR_IF([enable_wasm_dynamic_linking], [yes], [ 32587db96d56Sopenharmony_ci CCSHARED="-fPIC" 32597db96d56Sopenharmony_ci ]);; 32607db96d56Sopenharmony_ci FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";; 32617db96d56Sopenharmony_ci Haiku*) CCSHARED="-fPIC";; 32627db96d56Sopenharmony_ci OpenUNIX*|UnixWare*) 32637db96d56Sopenharmony_ci if test "$GCC" = "yes" 32647db96d56Sopenharmony_ci then CCSHARED="-fPIC" 32657db96d56Sopenharmony_ci else CCSHARED="-KPIC" 32667db96d56Sopenharmony_ci fi;; 32677db96d56Sopenharmony_ci SCO_SV*) 32687db96d56Sopenharmony_ci if test "$GCC" = "yes" 32697db96d56Sopenharmony_ci then CCSHARED="-fPIC" 32707db96d56Sopenharmony_ci else CCSHARED="-Kpic -belf" 32717db96d56Sopenharmony_ci fi;; 32727db96d56Sopenharmony_ci VxWorks*) 32737db96d56Sopenharmony_ci CCSHARED="-fpic -D__SO_PICABILINUX__ -ftls-model=global-dynamic" 32747db96d56Sopenharmony_ci esac 32757db96d56Sopenharmony_cifi 32767db96d56Sopenharmony_ciAC_MSG_RESULT($CCSHARED) 32777db96d56Sopenharmony_ci# LINKFORSHARED are the flags passed to the $(CC) command that links 32787db96d56Sopenharmony_ci# the python executable -- this is only needed for a few systems 32797db96d56Sopenharmony_ciAC_MSG_CHECKING(LINKFORSHARED) 32807db96d56Sopenharmony_ciif test -z "$LINKFORSHARED" 32817db96d56Sopenharmony_cithen 32827db96d56Sopenharmony_ci case $ac_sys_system/$ac_sys_release in 32837db96d56Sopenharmony_ci AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';; 32847db96d56Sopenharmony_ci hp*|HP*) 32857db96d56Sopenharmony_ci LINKFORSHARED="-Wl,-E -Wl,+s";; 32867db96d56Sopenharmony_ci# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; 32877db96d56Sopenharmony_ci Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; 32887db96d56Sopenharmony_ci Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; 32897db96d56Sopenharmony_ci # -u libsys_s pulls in all symbols in libsys 32907db96d56Sopenharmony_ci Darwin/*) 32917db96d56Sopenharmony_ci LINKFORSHARED="$extra_undefs -framework CoreFoundation" 32927db96d56Sopenharmony_ci 32937db96d56Sopenharmony_ci # Issue #18075: the default maximum stack size (8MBytes) is too 32947db96d56Sopenharmony_ci # small for the default recursion limit. Increase the stack size 32957db96d56Sopenharmony_ci # to ensure that tests don't crash 32967db96d56Sopenharmony_ci stack_size="1000000" # 16 MB 32977db96d56Sopenharmony_ci if test "$with_ubsan" = "yes" 32987db96d56Sopenharmony_ci then 32997db96d56Sopenharmony_ci # Undefined behavior sanitizer requires an even deeper stack 33007db96d56Sopenharmony_ci stack_size="4000000" # 64 MB 33017db96d56Sopenharmony_ci fi 33027db96d56Sopenharmony_ci 33037db96d56Sopenharmony_ci LINKFORSHARED="-Wl,-stack_size,$stack_size $LINKFORSHARED" 33047db96d56Sopenharmony_ci 33057db96d56Sopenharmony_ci AC_DEFINE_UNQUOTED(THREAD_STACK_SIZE, 33067db96d56Sopenharmony_ci 0x$stack_size, 33077db96d56Sopenharmony_ci [Custom thread stack size depending on chosen sanitizer runtimes.]) 33087db96d56Sopenharmony_ci 33097db96d56Sopenharmony_ci if test "$enable_framework" 33107db96d56Sopenharmony_ci then 33117db96d56Sopenharmony_ci LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' 33127db96d56Sopenharmony_ci fi 33137db96d56Sopenharmony_ci LINKFORSHARED="$LINKFORSHARED";; 33147db96d56Sopenharmony_ci OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";; 33157db96d56Sopenharmony_ci SCO_SV*) LINKFORSHARED="-Wl,-Bexport";; 33167db96d56Sopenharmony_ci ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";; 33177db96d56Sopenharmony_ci FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) 33187db96d56Sopenharmony_ci if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]] 33197db96d56Sopenharmony_ci then 33207db96d56Sopenharmony_ci LINKFORSHARED="-Wl,--export-dynamic" 33217db96d56Sopenharmony_ci fi;; 33227db96d56Sopenharmony_ci SunOS/5*) case $CC in 33237db96d56Sopenharmony_ci *gcc*) 33247db96d56Sopenharmony_ci if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null 33257db96d56Sopenharmony_ci then 33267db96d56Sopenharmony_ci LINKFORSHARED="-Xlinker --export-dynamic" 33277db96d56Sopenharmony_ci fi;; 33287db96d56Sopenharmony_ci esac;; 33297db96d56Sopenharmony_ci CYGWIN*) 33307db96d56Sopenharmony_ci if test $enable_shared = "no" 33317db96d56Sopenharmony_ci then 33327db96d56Sopenharmony_ci LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)' 33337db96d56Sopenharmony_ci fi;; 33347db96d56Sopenharmony_ci QNX*) 33357db96d56Sopenharmony_ci # -Wl,-E causes the symbols to be added to the dynamic 33367db96d56Sopenharmony_ci # symbol table so that they can be found when a module 33377db96d56Sopenharmony_ci # is loaded. -N 2048K causes the stack size to be set 33387db96d56Sopenharmony_ci # to 2048 kilobytes so that the stack doesn't overflow 33397db96d56Sopenharmony_ci # when running test_compile.py. 33407db96d56Sopenharmony_ci LINKFORSHARED='-Wl,-E -N 2048K';; 33417db96d56Sopenharmony_ci VxWorks*) 33427db96d56Sopenharmony_ci LINKFORSHARED='-Wl,-export-dynamic';; 33437db96d56Sopenharmony_ci esac 33447db96d56Sopenharmony_cifi 33457db96d56Sopenharmony_ciAC_MSG_RESULT($LINKFORSHARED) 33467db96d56Sopenharmony_ci 33477db96d56Sopenharmony_ci 33487db96d56Sopenharmony_ciAC_SUBST(CFLAGSFORSHARED) 33497db96d56Sopenharmony_ciAC_MSG_CHECKING(CFLAGSFORSHARED) 33507db96d56Sopenharmony_ciif test ! "$LIBRARY" = "$LDLIBRARY" 33517db96d56Sopenharmony_cithen 33527db96d56Sopenharmony_ci case $ac_sys_system in 33537db96d56Sopenharmony_ci CYGWIN*) 33547db96d56Sopenharmony_ci # Cygwin needs CCSHARED when building extension DLLs 33557db96d56Sopenharmony_ci # but not when building the interpreter DLL. 33567db96d56Sopenharmony_ci CFLAGSFORSHARED='';; 33577db96d56Sopenharmony_ci *) 33587db96d56Sopenharmony_ci CFLAGSFORSHARED='$(CCSHARED)' 33597db96d56Sopenharmony_ci esac 33607db96d56Sopenharmony_cifi 33617db96d56Sopenharmony_ci 33627db96d56Sopenharmony_cidnl WASM dynamic linking requires -fPIC. 33637db96d56Sopenharmony_ciAS_VAR_IF([enable_wasm_dynamic_linking], [yes], [ 33647db96d56Sopenharmony_ci CFLAGSFORSHARED='$(CCSHARED)' 33657db96d56Sopenharmony_ci]) 33667db96d56Sopenharmony_ci 33677db96d56Sopenharmony_ciAC_MSG_RESULT($CFLAGSFORSHARED) 33687db96d56Sopenharmony_ci 33697db96d56Sopenharmony_ci# SHLIBS are libraries (except -lc and -lm) to link to the python shared 33707db96d56Sopenharmony_ci# library (with --enable-shared). 33717db96d56Sopenharmony_ci# For platforms on which shared libraries are not allowed to have unresolved 33727db96d56Sopenharmony_ci# symbols, this must be set to $(LIBS) (expanded by make). We do this even 33737db96d56Sopenharmony_ci# if it is not required, since it creates a dependency of the shared library 33747db96d56Sopenharmony_ci# to LIBS. This, in turn, means that applications linking the shared libpython 33757db96d56Sopenharmony_ci# don't need to link LIBS explicitly. The default should be only changed 33767db96d56Sopenharmony_ci# on systems where this approach causes problems. 33777db96d56Sopenharmony_ciAC_SUBST(SHLIBS) 33787db96d56Sopenharmony_ciAC_MSG_CHECKING(SHLIBS) 33797db96d56Sopenharmony_cicase "$ac_sys_system" in 33807db96d56Sopenharmony_ci *) 33817db96d56Sopenharmony_ci SHLIBS='$(LIBS)';; 33827db96d56Sopenharmony_ciesac 33837db96d56Sopenharmony_ciAC_MSG_RESULT($SHLIBS) 33847db96d56Sopenharmony_ci 33857db96d56Sopenharmony_ci 33867db96d56Sopenharmony_ci# checks for libraries 33877db96d56Sopenharmony_ciAC_CHECK_LIB(sendfile, sendfile) 33887db96d56Sopenharmony_ciAC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV 33897db96d56Sopenharmony_ciAC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX 33907db96d56Sopenharmony_ci 33917db96d56Sopenharmony_ci 33927db96d56Sopenharmony_cidnl check for uuid dependencies 33937db96d56Sopenharmony_ciAH_TEMPLATE([HAVE_UUID_H], [Define to 1 if you have the <uuid.h> header file.]) 33947db96d56Sopenharmony_ciAH_TEMPLATE([HAVE_UUID_UUID_H], [Define to 1 if you have the <uuid/uuid.h> header file.]) 33957db96d56Sopenharmony_ciAH_TEMPLATE([HAVE_UUID_GENERATE_TIME_SAFE], [Define if uuid_generate_time_safe() exists.]) 33967db96d56Sopenharmony_cihave_uuid=missing 33977db96d56Sopenharmony_ci 33987db96d56Sopenharmony_cidnl AIX provides support for RFC4122 (uuid) in libc.a starting with AIX 6.1 33997db96d56Sopenharmony_cidnl (anno 2007). FreeBSD and OpenBSD provides support in libc as well. 34007db96d56Sopenharmony_cidnl Little-endian FreeBSD, OpenBSD and NetBSD needs encoding into an octet 34017db96d56Sopenharmony_cidnl stream in big-endian byte-order 34027db96d56Sopenharmony_ciAC_CHECK_HEADERS([uuid.h], [ 34037db96d56Sopenharmony_ci AC_CHECK_FUNCS([uuid_create uuid_enc_be], [ 34047db96d56Sopenharmony_ci have_uuid=yes 34057db96d56Sopenharmony_ci LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""} 34067db96d56Sopenharmony_ci LIBUUID_LIBS=${LIBUUID_LIBS-""} 34077db96d56Sopenharmony_ci ]) 34087db96d56Sopenharmony_ci]) 34097db96d56Sopenharmony_ci 34107db96d56Sopenharmony_ciAS_VAR_IF([have_uuid], [missing], [ 34117db96d56Sopenharmony_ci PKG_CHECK_MODULES( 34127db96d56Sopenharmony_ci [LIBUUID], [uuid >= 2.20], [ 34137db96d56Sopenharmony_ci dnl linux-util's libuuid has uuid_generate_time_safe() since v2.20 (2011) 34147db96d56Sopenharmony_ci dnl and provides <uuid.h>. 34157db96d56Sopenharmony_ci have_uuid=yes 34167db96d56Sopenharmony_ci AC_DEFINE([HAVE_UUID_H], [1]) 34177db96d56Sopenharmony_ci AC_DEFINE([HAVE_UUID_GENERATE_TIME_SAFE], [1]) 34187db96d56Sopenharmony_ci ], [ 34197db96d56Sopenharmony_ci WITH_SAVE_ENV([ 34207db96d56Sopenharmony_ci CPPFLAGS="$CPPFLAGS $LIBUUID_CFLAGS" 34217db96d56Sopenharmony_ci LDFLAGS="$LDFLAGS $LIBUUID_LIBS" 34227db96d56Sopenharmony_ci AC_CHECK_HEADERS([uuid/uuid.h], [ 34237db96d56Sopenharmony_ci PY_CHECK_LIB([uuid], [uuid_generate_time], [have_uuid=yes]) 34247db96d56Sopenharmony_ci PY_CHECK_LIB([uuid], [uuid_generate_time_safe], [ 34257db96d56Sopenharmony_ci have_uuid=yes 34267db96d56Sopenharmony_ci AC_DEFINE([HAVE_UUID_GENERATE_TIME_SAFE], [1]) 34277db96d56Sopenharmony_ci ]) 34287db96d56Sopenharmony_ci ]) 34297db96d56Sopenharmony_ci AS_VAR_IF([have_uuid], [yes], [ 34307db96d56Sopenharmony_ci LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""} 34317db96d56Sopenharmony_ci LIBUUID_LIBS=${LIBUUID_LIBS-"-luuid"} 34327db96d56Sopenharmony_ci ]) 34337db96d56Sopenharmony_ci ]) 34347db96d56Sopenharmony_ci ] 34357db96d56Sopenharmony_ci ) 34367db96d56Sopenharmony_ci]) 34377db96d56Sopenharmony_ci 34387db96d56Sopenharmony_cidnl macOS has uuid/uuid.h but uuid_generate_time is in libc 34397db96d56Sopenharmony_ciAS_VAR_IF([have_uuid], [missing], [ 34407db96d56Sopenharmony_ci AC_CHECK_HEADERS([uuid/uuid.h], [ 34417db96d56Sopenharmony_ci AC_CHECK_FUNC([uuid_generate_time], [ 34427db96d56Sopenharmony_ci have_uuid=yes 34437db96d56Sopenharmony_ci LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""} 34447db96d56Sopenharmony_ci LIBUUID_LIBS=${LIBUUID_LIBS-""} 34457db96d56Sopenharmony_ci ]) 34467db96d56Sopenharmony_ci ]) 34477db96d56Sopenharmony_ci]) 34487db96d56Sopenharmony_ci 34497db96d56Sopenharmony_ciAS_VAR_IF([have_uuid], [missing], [have_uuid=no]) 34507db96d56Sopenharmony_ci 34517db96d56Sopenharmony_ci# 'Real Time' functions on Solaris 34527db96d56Sopenharmony_ci# posix4 on Solaris 2.6 34537db96d56Sopenharmony_ci# pthread (first!) on Linux 34547db96d56Sopenharmony_ciAC_SEARCH_LIBS(sem_init, pthread rt posix4) 34557db96d56Sopenharmony_ci 34567db96d56Sopenharmony_ci# check if we need libintl for locale functions 34577db96d56Sopenharmony_ciAC_CHECK_LIB(intl, textdomain, 34587db96d56Sopenharmony_ci [AC_DEFINE(WITH_LIBINTL, 1, 34597db96d56Sopenharmony_ci [Define to 1 if libintl is needed for locale functions.]) 34607db96d56Sopenharmony_ci LIBS="-lintl $LIBS"]) 34617db96d56Sopenharmony_ci 34627db96d56Sopenharmony_ci# checks for system dependent C++ extensions support 34637db96d56Sopenharmony_cicase "$ac_sys_system" in 34647db96d56Sopenharmony_ci AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support) 34657db96d56Sopenharmony_ci AC_LINK_IFELSE([ 34667db96d56Sopenharmony_ci AC_LANG_PROGRAM([[#include <load.h>]], 34677db96d56Sopenharmony_ci [[loadAndInit("", 0, "")]]) 34687db96d56Sopenharmony_ci ],[ 34697db96d56Sopenharmony_ci AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1, 34707db96d56Sopenharmony_ci [Define for AIX if your compiler is a genuine IBM xlC/xlC_r 34717db96d56Sopenharmony_ci and you want support for AIX C++ shared extension modules.]) 34727db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 34737db96d56Sopenharmony_ci ],[ 34747db96d56Sopenharmony_ci AC_MSG_RESULT(no) 34757db96d56Sopenharmony_ci ]) 34767db96d56Sopenharmony_cidnl The AIX_BUILDDATE is obtained from the kernel fileset - bos.mp64 34777db96d56Sopenharmony_ci# BUILD_GNU_TYPE + AIX_BUILDDATE are used to construct the platform_tag 34787db96d56Sopenharmony_ci# of the AIX system used to build/package Python executable. This tag serves 34797db96d56Sopenharmony_ci# as a baseline for bdist module packages 34807db96d56Sopenharmony_ci AC_MSG_CHECKING(for the system builddate) 34817db96d56Sopenharmony_ci AIX_BUILDDATE=$(lslpp -Lcq bos.mp64 | awk -F: '{ print $NF }') 34827db96d56Sopenharmony_ci AC_DEFINE_UNQUOTED([AIX_BUILDDATE], [$AIX_BUILDDATE], 34837db96d56Sopenharmony_ci [BUILD_GNU_TYPE + AIX_BUILDDATE are used to construct the PEP425 tag of the build system.]) 34847db96d56Sopenharmony_ci AC_MSG_RESULT($AIX_BUILDDATE) 34857db96d56Sopenharmony_ci ;; 34867db96d56Sopenharmony_ci *) ;; 34877db96d56Sopenharmony_ciesac 34887db96d56Sopenharmony_ci 34897db96d56Sopenharmony_ci# check for systems that require aligned memory access 34907db96d56Sopenharmony_ciAC_CACHE_CHECK([aligned memory access is required], [ac_cv_aligned_required], 34917db96d56Sopenharmony_ci[AC_RUN_IFELSE([AC_LANG_SOURCE([[ 34927db96d56Sopenharmony_ciint main(void) 34937db96d56Sopenharmony_ci{ 34947db96d56Sopenharmony_ci char s[16]; 34957db96d56Sopenharmony_ci int i, *p1, *p2; 34967db96d56Sopenharmony_ci for (i=0; i < 16; i++) 34977db96d56Sopenharmony_ci s[i] = i; 34987db96d56Sopenharmony_ci p1 = (int*)(s+1); 34997db96d56Sopenharmony_ci p2 = (int*)(s+2); 35007db96d56Sopenharmony_ci if (*p1 == *p2) 35017db96d56Sopenharmony_ci return 1; 35027db96d56Sopenharmony_ci return 0; 35037db96d56Sopenharmony_ci}]])], 35047db96d56Sopenharmony_ci[ac_cv_aligned_required=no], 35057db96d56Sopenharmony_ci[ac_cv_aligned_required=yes], 35067db96d56Sopenharmony_ci[ac_cv_aligned_required=yes]) 35077db96d56Sopenharmony_ci]) 35087db96d56Sopenharmony_ciif test "$ac_cv_aligned_required" = yes ; then 35097db96d56Sopenharmony_ci AC_DEFINE([HAVE_ALIGNED_REQUIRED], [1], 35107db96d56Sopenharmony_ci [Define if aligned memory access is required]) 35117db96d56Sopenharmony_cifi 35127db96d56Sopenharmony_ci 35137db96d56Sopenharmony_ci# str, bytes and memoryview hash algorithm 35147db96d56Sopenharmony_ciAH_TEMPLATE(Py_HASH_ALGORITHM, 35157db96d56Sopenharmony_ci [Define hash algorithm for str, bytes and memoryview. 35167db96d56Sopenharmony_ci SipHash24: 1, FNV: 2, SipHash13: 3, externally defined: 0]) 35177db96d56Sopenharmony_ci 35187db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-hash-algorithm) 35197db96d56Sopenharmony_cidnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output 35207db96d56Sopenharmony_ciAC_ARG_WITH(hash_algorithm, 35217db96d56Sopenharmony_ci AS_HELP_STRING([--with-hash-algorithm=@<:@fnv|siphash13|siphash24@:>@], 35227db96d56Sopenharmony_ci [select hash algorithm for use in Python/pyhash.c (default is SipHash13)]), 35237db96d56Sopenharmony_ci[ 35247db96d56Sopenharmony_ciAC_MSG_RESULT($withval) 35257db96d56Sopenharmony_cicase "$withval" in 35267db96d56Sopenharmony_ci siphash13) 35277db96d56Sopenharmony_ci AC_DEFINE(Py_HASH_ALGORITHM, 3) 35287db96d56Sopenharmony_ci ;; 35297db96d56Sopenharmony_ci siphash24) 35307db96d56Sopenharmony_ci AC_DEFINE(Py_HASH_ALGORITHM, 1) 35317db96d56Sopenharmony_ci ;; 35327db96d56Sopenharmony_ci fnv) 35337db96d56Sopenharmony_ci AC_DEFINE(Py_HASH_ALGORITHM, 2) 35347db96d56Sopenharmony_ci ;; 35357db96d56Sopenharmony_ci *) 35367db96d56Sopenharmony_ci AC_MSG_ERROR([unknown hash algorithm '$withval']) 35377db96d56Sopenharmony_ci ;; 35387db96d56Sopenharmony_ciesac 35397db96d56Sopenharmony_ci], 35407db96d56Sopenharmony_ci[AC_MSG_RESULT(default)]) 35417db96d56Sopenharmony_ci 35427db96d56Sopenharmony_civalidate_tzpath() { 35437db96d56Sopenharmony_ci # Checks that each element of the path is an absolute path 35447db96d56Sopenharmony_ci if test -z "$1"; then 35457db96d56Sopenharmony_ci # Empty string is allowed: it indicates no system TZPATH 35467db96d56Sopenharmony_ci return 0 35477db96d56Sopenharmony_ci fi 35487db96d56Sopenharmony_ci 35497db96d56Sopenharmony_ci # Bad paths are those that don't start with / 35507db96d56Sopenharmony_ci dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output 35517db96d56Sopenharmony_ci if ( echo $1 | grep '\(^\|:\)\(@<:@^/@:>@\|$\)' > /dev/null); then 35527db96d56Sopenharmony_ci AC_MSG_ERROR([--with-tzpath must contain only absolute paths, not $1]) 35537db96d56Sopenharmony_ci return 1; 35547db96d56Sopenharmony_ci fi 35557db96d56Sopenharmony_ci} 35567db96d56Sopenharmony_ci 35577db96d56Sopenharmony_ciTZPATH="/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" 35587db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-tzpath) 35597db96d56Sopenharmony_ciAC_ARG_WITH(tzpath, 35607db96d56Sopenharmony_ci AS_HELP_STRING([--with-tzpath=<list of absolute paths separated by pathsep>] 35617db96d56Sopenharmony_ci [Select the default time zone search path for zoneinfo.TZPATH]), 35627db96d56Sopenharmony_ci[ 35637db96d56Sopenharmony_cicase "$withval" in 35647db96d56Sopenharmony_ci yes) 35657db96d56Sopenharmony_ci AC_MSG_ERROR([--with-tzpath requires a value]) 35667db96d56Sopenharmony_ci ;; 35677db96d56Sopenharmony_ci *) 35687db96d56Sopenharmony_ci validate_tzpath "$withval" 35697db96d56Sopenharmony_ci TZPATH="$withval" 35707db96d56Sopenharmony_ci AC_MSG_RESULT("$withval") 35717db96d56Sopenharmony_ci ;; 35727db96d56Sopenharmony_ciesac 35737db96d56Sopenharmony_ci], 35747db96d56Sopenharmony_ci[validate_tzpath "$TZPATH" 35757db96d56Sopenharmony_ci AC_MSG_RESULT("$TZPATH")]) 35767db96d56Sopenharmony_ciAC_SUBST(TZPATH) 35777db96d56Sopenharmony_ci 35787db96d56Sopenharmony_ci# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl. 35797db96d56Sopenharmony_ciAC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4 35807db96d56Sopenharmony_ciAC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets 35817db96d56Sopenharmony_ci 35827db96d56Sopenharmony_cicase $ac_sys_system/$ac_sys_release in 35837db96d56Sopenharmony_ci Haiku*) 35847db96d56Sopenharmony_ci AC_CHECK_LIB(network, socket, [LIBS="-lnetwork $LIBS"], [], $LIBS) 35857db96d56Sopenharmony_ci ;; 35867db96d56Sopenharmony_ciesac 35877db96d56Sopenharmony_ci 35887db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-libs) 35897db96d56Sopenharmony_ciAC_ARG_WITH(libs, 35907db96d56Sopenharmony_ci AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs (default is no)]), 35917db96d56Sopenharmony_ci[ 35927db96d56Sopenharmony_ciAC_MSG_RESULT($withval) 35937db96d56Sopenharmony_ciLIBS="$withval $LIBS" 35947db96d56Sopenharmony_ci], 35957db96d56Sopenharmony_ci[AC_MSG_RESULT(no)]) 35967db96d56Sopenharmony_ci 35977db96d56Sopenharmony_ci# Check for use of the system expat library 35987db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-system-expat) 35997db96d56Sopenharmony_ciAC_ARG_WITH(system_expat, 36007db96d56Sopenharmony_ci AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library, see Doc/library/pyexpat.rst (default is no)]), 36017db96d56Sopenharmony_ci [], 36027db96d56Sopenharmony_ci [with_system_expat="no"]) 36037db96d56Sopenharmony_ci 36047db96d56Sopenharmony_ciAC_MSG_RESULT($with_system_expat) 36057db96d56Sopenharmony_ci 36067db96d56Sopenharmony_ciAS_VAR_IF([with_system_expat], [yes], [ 36077db96d56Sopenharmony_ci LIBEXPAT_CFLAGS=${LIBEXPAT_CFLAGS-""} 36087db96d56Sopenharmony_ci LIBEXPAT_LDFLAGS=${LIBEXPAT_LDFLAGS-"-lexpat"} 36097db96d56Sopenharmony_ci LIBEXPAT_INTERNAL= 36107db96d56Sopenharmony_ci], [ 36117db96d56Sopenharmony_ci LIBEXPAT_CFLAGS="-I\$(srcdir)/Modules/expat" 36127db96d56Sopenharmony_ci LIBEXPAT_LDFLAGS="-lm \$(LIBEXPAT_A)" 36137db96d56Sopenharmony_ci LIBEXPAT_INTERNAL="\$(LIBEXPAT_HEADERS) \$(LIBEXPAT_A)" 36147db96d56Sopenharmony_ci]) 36157db96d56Sopenharmony_ci 36167db96d56Sopenharmony_ciAC_SUBST([LIBEXPAT_CFLAGS]) 36177db96d56Sopenharmony_ciAC_SUBST([LIBEXPAT_LDFLAGS]) 36187db96d56Sopenharmony_ciAC_SUBST([LIBEXPAT_INTERNAL]) 36197db96d56Sopenharmony_ci 36207db96d56Sopenharmony_ci# Check for use of the system libffi library 36217db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-system-ffi) 36227db96d56Sopenharmony_ciAC_ARG_WITH(system_ffi, 36237db96d56Sopenharmony_ci AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library, see Doc/library/ctypes.rst (default is system-dependent)]),,,) 36247db96d56Sopenharmony_ci 36257db96d56Sopenharmony_ciif test "$ac_sys_system" = "Darwin" 36267db96d56Sopenharmony_cithen 36277db96d56Sopenharmony_ci case "$with_system_ffi" in 36287db96d56Sopenharmony_ci "") 36297db96d56Sopenharmony_ci with_system_ffi="no" 36307db96d56Sopenharmony_ci ;; 36317db96d56Sopenharmony_ci yes|no) 36327db96d56Sopenharmony_ci ;; 36337db96d56Sopenharmony_ci *) 36347db96d56Sopenharmony_ci AC_MSG_ERROR([--with-system-ffi accepts no arguments]) 36357db96d56Sopenharmony_ci ;; 36367db96d56Sopenharmony_ci esac 36377db96d56Sopenharmony_ci AC_MSG_RESULT($with_system_ffi) 36387db96d56Sopenharmony_cielse 36397db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 36407db96d56Sopenharmony_ci if test "$with_system_ffi" != "" 36417db96d56Sopenharmony_ci then 36427db96d56Sopenharmony_ci AC_MSG_WARN([--with(out)-system-ffi is ignored on this platform]) 36437db96d56Sopenharmony_ci fi 36447db96d56Sopenharmony_ci with_system_ffi="yes" 36457db96d56Sopenharmony_cifi 36467db96d56Sopenharmony_ci 36477db96d56Sopenharmony_ciif test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then 36487db96d56Sopenharmony_ci LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" 36497db96d56Sopenharmony_cielse 36507db96d56Sopenharmony_ci LIBFFI_INCLUDEDIR="" 36517db96d56Sopenharmony_cifi 36527db96d56Sopenharmony_ciAC_SUBST(LIBFFI_INCLUDEDIR) 36537db96d56Sopenharmony_ci 36547db96d56Sopenharmony_ci# Check for use of the system libmpdec library 36557db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-system-libmpdec) 36567db96d56Sopenharmony_ciAC_ARG_WITH(system_libmpdec, 36577db96d56Sopenharmony_ci AS_HELP_STRING([--with-system-libmpdec], [build _decimal module using an installed libmpdec library, see Doc/library/decimal.rst (default is no)]), 36587db96d56Sopenharmony_ci [], 36597db96d56Sopenharmony_ci [with_system_libmpdec="no"]) 36607db96d56Sopenharmony_ciAC_MSG_RESULT($with_system_libmpdec) 36617db96d56Sopenharmony_ci 36627db96d56Sopenharmony_ciAS_VAR_IF([with_system_libmpdec], [yes], [ 36637db96d56Sopenharmony_ci LIBMPDEC_CFLAGS=${LIBMPDEC_CFLAGS-""} 36647db96d56Sopenharmony_ci LIBMPDEC_LDFLAGS=${LIBMPDEC_LDFLAGS-"-lmpdec"} 36657db96d56Sopenharmony_ci LIBMPDEC_INTERNAL= 36667db96d56Sopenharmony_ci], [ 36677db96d56Sopenharmony_ci LIBMPDEC_CFLAGS="-I\$(srcdir)/Modules/_decimal/libmpdec" 36687db96d56Sopenharmony_ci LIBMPDEC_LDFLAGS="-lm \$(LIBMPDEC_A)" 36697db96d56Sopenharmony_ci LIBMPDEC_INTERNAL="\$(LIBMPDEC_HEADERS) \$(LIBMPDEC_A)" 36707db96d56Sopenharmony_ci 36717db96d56Sopenharmony_ci dnl Disable forced inlining in debug builds, see GH-94847 36727db96d56Sopenharmony_ci AS_VAR_IF([with_pydebug], [yes], [ 36737db96d56Sopenharmony_ci AS_VAR_APPEND([LIBMPDEC_CFLAGS], [" -DTEST_COVERAGE"]) 36747db96d56Sopenharmony_ci ]) 36757db96d56Sopenharmony_ci]) 36767db96d56Sopenharmony_ci 36777db96d56Sopenharmony_ciAC_SUBST([LIBMPDEC_CFLAGS]) 36787db96d56Sopenharmony_ciAC_SUBST([LIBMPDEC_LDFLAGS]) 36797db96d56Sopenharmony_ciAC_SUBST([LIBMPDEC_INTERNAL]) 36807db96d56Sopenharmony_ci 36817db96d56Sopenharmony_ci# Check whether _decimal should use a coroutine-local or thread-local context 36827db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-decimal-contextvar) 36837db96d56Sopenharmony_ciAC_ARG_WITH(decimal_contextvar, 36847db96d56Sopenharmony_ci AS_HELP_STRING([--with-decimal-contextvar], [build _decimal module using a coroutine-local rather than a thread-local context (default is yes)]), 36857db96d56Sopenharmony_ci [], 36867db96d56Sopenharmony_ci [with_decimal_contextvar="yes"]) 36877db96d56Sopenharmony_ci 36887db96d56Sopenharmony_ciif test "$with_decimal_contextvar" != "no" 36897db96d56Sopenharmony_cithen 36907db96d56Sopenharmony_ci AC_DEFINE(WITH_DECIMAL_CONTEXTVAR, 1, 36917db96d56Sopenharmony_ci [Define if you want build the _decimal module using a coroutine-local rather than a thread-local context]) 36927db96d56Sopenharmony_cifi 36937db96d56Sopenharmony_ci 36947db96d56Sopenharmony_ciAC_MSG_RESULT($with_decimal_contextvar) 36957db96d56Sopenharmony_ci 36967db96d56Sopenharmony_ci# Check for libmpdec machine flavor 36977db96d56Sopenharmony_ciAC_MSG_CHECKING(for decimal libmpdec machine) 36987db96d56Sopenharmony_ciAS_CASE([$ac_sys_system], 36997db96d56Sopenharmony_ci [Darwin*], [libmpdec_system=Darwin], 37007db96d56Sopenharmony_ci [SunOS*], [libmpdec_system=sunos], 37017db96d56Sopenharmony_ci [libmpdec_system=other] 37027db96d56Sopenharmony_ci) 37037db96d56Sopenharmony_ci 37047db96d56Sopenharmony_cilibmpdec_machine=unknown 37057db96d56Sopenharmony_ciif test "$libmpdec_system" = Darwin; then 37067db96d56Sopenharmony_ci # universal here means: build libmpdec with the same arch options 37077db96d56Sopenharmony_ci # the python interpreter was built with 37087db96d56Sopenharmony_ci libmpdec_machine=universal 37097db96d56Sopenharmony_cielif test $ac_cv_sizeof_size_t -eq 8; then 37107db96d56Sopenharmony_ci if test "$ac_cv_gcc_asm_for_x64" = yes; then 37117db96d56Sopenharmony_ci libmpdec_machine=x64 37127db96d56Sopenharmony_ci elif test "$ac_cv_type___uint128_t" = yes; then 37137db96d56Sopenharmony_ci libmpdec_machine=uint128 37147db96d56Sopenharmony_ci else 37157db96d56Sopenharmony_ci libmpdec_machine=ansi64 37167db96d56Sopenharmony_ci fi 37177db96d56Sopenharmony_cielif test $ac_cv_sizeof_size_t -eq 4; then 37187db96d56Sopenharmony_ci if test "$ac_cv_gcc_asm_for_x87" = yes -a "$libmpdec_system" != sunos; then 37197db96d56Sopenharmony_ci AS_CASE([$CC], 37207db96d56Sopenharmony_ci [*gcc*], [libmpdec_machine=ppro], 37217db96d56Sopenharmony_ci [*clang*], [libmpdec_machine=ppro], 37227db96d56Sopenharmony_ci [libmpdec_machine=ansi32] 37237db96d56Sopenharmony_ci ) 37247db96d56Sopenharmony_ci else 37257db96d56Sopenharmony_ci libmpdec_machine=ansi32 37267db96d56Sopenharmony_ci fi 37277db96d56Sopenharmony_cifi 37287db96d56Sopenharmony_ciAC_MSG_RESULT([$libmpdec_machine]) 37297db96d56Sopenharmony_ci 37307db96d56Sopenharmony_ciAS_CASE([$libmpdec_machine], 37317db96d56Sopenharmony_ci [x64], [AS_VAR_APPEND([LIBMPDEC_CFLAGS], [" -DCONFIG_64=1 -DASM=1"])], 37327db96d56Sopenharmony_ci [uint128], [AS_VAR_APPEND([LIBMPDEC_CFLAGS], [" -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1"])], 37337db96d56Sopenharmony_ci [ansi64], [AS_VAR_APPEND([LIBMPDEC_CFLAGS], [" -DCONFIG_64=1 -DANSI=1"])], 37347db96d56Sopenharmony_ci [ppro], [AS_VAR_APPEND([LIBMPDEC_CFLAGS], [" -DCONFIG_32=1 -DANSI=1 -DASM=1 -Wno-unknown-pragmas"])], 37357db96d56Sopenharmony_ci [ansi32], [AS_VAR_APPEND([LIBMPDEC_CFLAGS], [" -DCONFIG_32=1 -DANSI=1"])], 37367db96d56Sopenharmony_ci [ansi-legacy], [AS_VAR_APPEND([LIBMPDEC_CFLAGS], [" -DCONFIG_32=1 -DANSI=1 -DLEGACY_COMPILER=1"])], 37377db96d56Sopenharmony_ci [universal], [AS_VAR_APPEND([LIBMPDEC_CFLAGS], [" -DUNIVERSAL=1"])], 37387db96d56Sopenharmony_ci [AC_MSG_ERROR([_decimal: unsupported architecture])] 37397db96d56Sopenharmony_ci) 37407db96d56Sopenharmony_ci 37417db96d56Sopenharmony_ciif test "$have_ipa_pure_const_bug" = yes; then 37427db96d56Sopenharmony_ci # Some versions of gcc miscompile inline asm: 37437db96d56Sopenharmony_ci # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 37447db96d56Sopenharmony_ci # https://gcc.gnu.org/ml/gcc/2010-11/msg00366.html 37457db96d56Sopenharmony_ci AS_VAR_APPEND([LIBMPDEC_CFLAGS], [" -fno-ipa-pure-const"]) 37467db96d56Sopenharmony_cifi 37477db96d56Sopenharmony_ci 37487db96d56Sopenharmony_ciif test "$have_glibc_memmove_bug" = yes; then 37497db96d56Sopenharmony_ci # _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect: 37507db96d56Sopenharmony_ci # https://sourceware.org/ml/libc-alpha/2010-12/msg00009.html 37517db96d56Sopenharmony_ci AS_VAR_APPEND([LIBMPDEC_CFLAGS], [" -U_FORTIFY_SOURCE"]) 37527db96d56Sopenharmony_cifi 37537db96d56Sopenharmony_ci 37547db96d56Sopenharmony_ci 37557db96d56Sopenharmony_cidnl check for NIS / libnsl dependencies 37567db96d56Sopenharmony_cidnl libnsl dependencies include tirpc includes and lib 37577db96d56Sopenharmony_ciPKG_CHECK_MODULES([LIBNSL], [libnsl], [have_nis=yes], [ 37587db96d56Sopenharmony_ci LIBNSL_CFLAGS=${LIBNSL_CFLAGS-""} 37597db96d56Sopenharmony_ci WITH_SAVE_ENV([ 37607db96d56Sopenharmony_ci AC_SEARCH_LIBS([yp_match], [nsl], [have_nis=yes], [have_nis=no]) 37617db96d56Sopenharmony_ci ]) 37627db96d56Sopenharmony_ci AS_CASE([$ac_cv_search_yp_match], 37637db96d56Sopenharmony_ci [no], [libnsl=""], 37647db96d56Sopenharmony_ci ["none required"], [libnsl=""], 37657db96d56Sopenharmony_ci [libnsl="$ac_cv_search_yp_match"] 37667db96d56Sopenharmony_ci ) 37677db96d56Sopenharmony_ci LIBNSL_LIBS=${LIBNSL_LIBS-$libnsl} 37687db96d56Sopenharmony_ci]) 37697db96d56Sopenharmony_ci 37707db96d56Sopenharmony_ciAS_VAR_IF([have_nis], [yes], [ 37717db96d56Sopenharmony_ci WITH_SAVE_ENV([ 37727db96d56Sopenharmony_ci CPPFLAGS="$CPPFLAGS $LIBNSL_CFLAGS" 37737db96d56Sopenharmony_ci AC_CHECK_HEADERS([rpc/rpc.h]) 37747db96d56Sopenharmony_ci ]) 37757db96d56Sopenharmony_ci]) 37767db96d56Sopenharmony_ci 37777db96d56Sopenharmony_cidnl On NetBSD, when using OSS audio, you need to link against libossaudio 37787db96d56Sopenharmony_ciAS_CASE([$ac_sys_system], 37797db96d56Sopenharmony_ci [NetBSD*], [OSSAUDIODEV_LIBS="-lossaudio"], 37807db96d56Sopenharmony_ci [OSSAUDIODEV_LIBS=""] 37817db96d56Sopenharmony_ci) 37827db96d56Sopenharmony_ci 37837db96d56Sopenharmony_cidnl detect sqlite3 from Emscripten emport 37847db96d56Sopenharmony_ciPY_CHECK_EMSCRIPTEN_PORT([LIBSQLITE3], [-sUSE_SQLITE3]) 37857db96d56Sopenharmony_ci 37867db96d56Sopenharmony_cidnl Check for SQLite library. Use pkg-config if available. 37877db96d56Sopenharmony_ciPKG_CHECK_MODULES( 37887db96d56Sopenharmony_ci [LIBSQLITE3], [sqlite3 >= 3.7.15], [], [ 37897db96d56Sopenharmony_ci LIBSQLITE3_CFLAGS=${LIBSQLITE3_CFLAGS-""} 37907db96d56Sopenharmony_ci LIBSQLITE3_LIBS=${LIBSQLITE3_LIBS-"-lsqlite3"} 37917db96d56Sopenharmony_ci ] 37927db96d56Sopenharmony_ci) 37937db96d56Sopenharmony_ciAS_VAR_APPEND([LIBSQLITE3_CFLAGS], [' -I$(srcdir)/Modules/_sqlite']) 37947db96d56Sopenharmony_ci 37957db96d56Sopenharmony_cidnl PY_CHECK_SQLITE_FUNC(FUNCTION, IF-FOUND, IF-NOT-FOUND) 37967db96d56Sopenharmony_ciAC_DEFUN([PY_CHECK_SQLITE_FUNC], [ 37977db96d56Sopenharmony_ci AC_CHECK_LIB([sqlite3], [$1], [$2], [ 37987db96d56Sopenharmony_ci m4_ifblank([$3], [have_supported_sqlite3=no], [$3]) 37997db96d56Sopenharmony_ci ]) 38007db96d56Sopenharmony_ci]) 38017db96d56Sopenharmony_ci 38027db96d56Sopenharmony_ciWITH_SAVE_ENV([ 38037db96d56Sopenharmony_cidnl bpo-45774/GH-29507: The CPP check in AC_CHECK_HEADER can fail on FreeBSD, 38047db96d56Sopenharmony_cidnl hence CPPFLAGS instead of CFLAGS. 38057db96d56Sopenharmony_ci CPPFLAGS="$CPPFLAGS $LIBSQLITE3_CFLAGS" 38067db96d56Sopenharmony_ci LDFLAGS="$LIBSQLITE3_LIBS $LDFLAGS" 38077db96d56Sopenharmony_ci 38087db96d56Sopenharmony_ci AC_CHECK_HEADER([sqlite3.h], [ 38097db96d56Sopenharmony_ci have_sqlite3=yes 38107db96d56Sopenharmony_ci 38117db96d56Sopenharmony_ci AC_COMPILE_IFELSE([ 38127db96d56Sopenharmony_ci AC_LANG_PROGRAM([ 38137db96d56Sopenharmony_ci #include <sqlite3.h> 38147db96d56Sopenharmony_ci #if SQLITE_VERSION_NUMBER < 3007015 38157db96d56Sopenharmony_ci # error "SQLite 3.7.15 or higher required" 38167db96d56Sopenharmony_ci #endif 38177db96d56Sopenharmony_ci ], []) 38187db96d56Sopenharmony_ci ], [ 38197db96d56Sopenharmony_ci have_supported_sqlite3=yes 38207db96d56Sopenharmony_ci dnl Check that required functions are in place. A lot of stuff may be 38217db96d56Sopenharmony_ci dnl omitted with SQLITE_OMIT_* compile time defines. 38227db96d56Sopenharmony_ci PY_CHECK_SQLITE_FUNC([sqlite3_bind_double]) 38237db96d56Sopenharmony_ci PY_CHECK_SQLITE_FUNC([sqlite3_column_decltype]) 38247db96d56Sopenharmony_ci PY_CHECK_SQLITE_FUNC([sqlite3_column_double]) 38257db96d56Sopenharmony_ci PY_CHECK_SQLITE_FUNC([sqlite3_complete]) 38267db96d56Sopenharmony_ci PY_CHECK_SQLITE_FUNC([sqlite3_enable_shared_cache]) 38277db96d56Sopenharmony_ci PY_CHECK_SQLITE_FUNC([sqlite3_progress_handler]) 38287db96d56Sopenharmony_ci PY_CHECK_SQLITE_FUNC([sqlite3_result_double]) 38297db96d56Sopenharmony_ci PY_CHECK_SQLITE_FUNC([sqlite3_set_authorizer]) 38307db96d56Sopenharmony_ci PY_CHECK_SQLITE_FUNC([sqlite3_trace_v2], [], [ 38317db96d56Sopenharmony_ci PY_CHECK_SQLITE_FUNC([sqlite3_trace]) 38327db96d56Sopenharmony_ci ]) 38337db96d56Sopenharmony_ci PY_CHECK_SQLITE_FUNC([sqlite3_value_double]) 38347db96d56Sopenharmony_ci AC_CHECK_LIB([sqlite3], [sqlite3_load_extension], 38357db96d56Sopenharmony_ci [have_sqlite3_load_extension=yes], 38367db96d56Sopenharmony_ci [have_sqlite3_load_extension=no] 38377db96d56Sopenharmony_ci ) 38387db96d56Sopenharmony_ci AC_CHECK_LIB([sqlite3], [sqlite3_serialize], [ 38397db96d56Sopenharmony_ci AC_DEFINE( 38407db96d56Sopenharmony_ci [PY_SQLITE_HAVE_SERIALIZE], [1], 38417db96d56Sopenharmony_ci [Define if SQLite was compiled with the serialize API] 38427db96d56Sopenharmony_ci ) 38437db96d56Sopenharmony_ci ]) 38447db96d56Sopenharmony_ci ], [ 38457db96d56Sopenharmony_ci have_supported_sqlite3=no 38467db96d56Sopenharmony_ci ]) 38477db96d56Sopenharmony_ci ]) 38487db96d56Sopenharmony_ci]) 38497db96d56Sopenharmony_ci 38507db96d56Sopenharmony_cidnl Check for support for loadable sqlite extensions 38517db96d56Sopenharmony_ciAC_MSG_CHECKING([for --enable-loadable-sqlite-extensions]) 38527db96d56Sopenharmony_ciAC_ARG_ENABLE([loadable-sqlite-extensions], 38537db96d56Sopenharmony_ci AS_HELP_STRING( 38547db96d56Sopenharmony_ci [--enable-loadable-sqlite-extensions], [ 38557db96d56Sopenharmony_ci support loadable extensions in the sqlite3 module, see 38567db96d56Sopenharmony_ci Doc/library/sqlite3.rst (default is no) 38577db96d56Sopenharmony_ci ] 38587db96d56Sopenharmony_ci ), [ 38597db96d56Sopenharmony_ci AS_VAR_IF([have_sqlite3_load_extension], [no], [ 38607db96d56Sopenharmony_ci AC_MSG_RESULT([n/a]) 38617db96d56Sopenharmony_ci AC_MSG_WARN([Your version of SQLite does not support loadable extensions]) 38627db96d56Sopenharmony_ci ], [ 38637db96d56Sopenharmony_ci AC_MSG_RESULT([yes]) 38647db96d56Sopenharmony_ci AC_DEFINE( 38657db96d56Sopenharmony_ci [PY_SQLITE_ENABLE_LOAD_EXTENSION], [1], 38667db96d56Sopenharmony_ci [Define to 1 to build the sqlite module with loadable extensions support.] 38677db96d56Sopenharmony_ci ) 38687db96d56Sopenharmony_ci ]) 38697db96d56Sopenharmony_ci ], [ 38707db96d56Sopenharmony_ci AC_MSG_RESULT([no]) 38717db96d56Sopenharmony_ci ] 38727db96d56Sopenharmony_ci) 38737db96d56Sopenharmony_ci 38747db96d56Sopenharmony_cidnl 38757db96d56Sopenharmony_cidnl Detect Tcl/Tk. Use pkg-config if available. 38767db96d56Sopenharmony_cidnl 38777db96d56Sopenharmony_cifound_tcltk=no 38787db96d56Sopenharmony_cifor _QUERY in \ 38797db96d56Sopenharmony_ci "tcl >= 8.5.12 tk >= 8.5.12" \ 38807db96d56Sopenharmony_ci "tcl8.6 tk8.6" \ 38817db96d56Sopenharmony_ci "tcl86 tk86" \ 38827db96d56Sopenharmony_ci "tcl8.5 >= 8.5.12 tk8.5 >= 8.5.12" \ 38837db96d56Sopenharmony_ci "tcl85 >= 8.5.12 tk85 >= 8.5.12" \ 38847db96d56Sopenharmony_ci; do 38857db96d56Sopenharmony_ci PKG_CHECK_EXISTS([$_QUERY], [ 38867db96d56Sopenharmony_ci PKG_CHECK_MODULES([TCLTK], [$_QUERY], [found_tcltk=yes], [found_tcltk=no]) 38877db96d56Sopenharmony_ci ]) 38887db96d56Sopenharmony_ci AS_VAR_IF([found_tcltk], [yes], [break]) 38897db96d56Sopenharmony_cidone 38907db96d56Sopenharmony_ci 38917db96d56Sopenharmony_ciAS_VAR_IF([found_tcltk], [no], [ 38927db96d56Sopenharmony_ci TCLTK_CFLAGS=${TCLTK_CFLAGS-""} 38937db96d56Sopenharmony_ci TCLTK_LIBS=${TCLTK_LIBS-""} 38947db96d56Sopenharmony_ci]) 38957db96d56Sopenharmony_ci 38967db96d56Sopenharmony_cidnl FreeBSD has an X11 dependency which is not implicitly resolved. 38977db96d56Sopenharmony_ciAS_CASE([$ac_sys_system], 38987db96d56Sopenharmony_ci [FreeBSD*], [ 38997db96d56Sopenharmony_ci PKG_CHECK_EXISTS([x11], [ 39007db96d56Sopenharmony_ci PKG_CHECK_MODULES([X11], [x11], [ 39017db96d56Sopenharmony_ci TCLTK_CFLAGS="$TCLTK_CFLAGS $X11_CFLAGS" 39027db96d56Sopenharmony_ci TCLTK_LIBS="$TCLTK_LIBS $X11_LIBS" 39037db96d56Sopenharmony_ci ]) 39047db96d56Sopenharmony_ci ]) 39057db96d56Sopenharmony_ci ] 39067db96d56Sopenharmony_ci) 39077db96d56Sopenharmony_ci 39087db96d56Sopenharmony_ciWITH_SAVE_ENV([ 39097db96d56Sopenharmony_ci CPPFLAGS="$CPPFLAGS $TCLTK_CFLAGS" 39107db96d56Sopenharmony_ci LIBS="$TCLTK_LIBS $LDFLAGS" 39117db96d56Sopenharmony_ci 39127db96d56Sopenharmony_ci AC_LINK_IFELSE([ 39137db96d56Sopenharmony_ci AC_LANG_PROGRAM([ 39147db96d56Sopenharmony_ci #include <tcl.h> 39157db96d56Sopenharmony_ci #include <tk.h> 39167db96d56Sopenharmony_ci #if defined(TK_HEX_VERSION) 39177db96d56Sopenharmony_ci # if TK_HEX_VERSION < 0x0805020c 39187db96d56Sopenharmony_ci # error "Tk older than 8.5.12 not supported" 39197db96d56Sopenharmony_ci # endif 39207db96d56Sopenharmony_ci #endif 39217db96d56Sopenharmony_ci #if (TCL_MAJOR_VERSION < 8) || \ 39227db96d56Sopenharmony_ci ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION < 5)) || \ 39237db96d56Sopenharmony_ci ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION == 5) && (TCL_RELEASE_SERIAL < 12)) 39247db96d56Sopenharmony_ci # error "Tcl older than 8.5.12 not supported" 39257db96d56Sopenharmony_ci #endif 39267db96d56Sopenharmony_ci #if (TK_MAJOR_VERSION < 8) || \ 39277db96d56Sopenharmony_ci ((TK_MAJOR_VERSION == 8) && (TK_MINOR_VERSION < 5)) || \ 39287db96d56Sopenharmony_ci ((TK_MAJOR_VERSION == 8) && (TK_MINOR_VERSION == 5) && (TK_RELEASE_SERIAL < 12)) 39297db96d56Sopenharmony_ci # error "Tk older than 8.5.12 not supported" 39307db96d56Sopenharmony_ci #endif 39317db96d56Sopenharmony_ci ], [ 39327db96d56Sopenharmony_ci void *x1 = Tcl_Init; 39337db96d56Sopenharmony_ci void *x2 = Tk_Init; 39347db96d56Sopenharmony_ci ]) 39357db96d56Sopenharmony_ci ], [ 39367db96d56Sopenharmony_ci have_tcltk=yes 39377db96d56Sopenharmony_ci dnl The X11/xlib.h file bundled in the Tk sources can cause function 39387db96d56Sopenharmony_ci dnl prototype warnings from the compiler. Since we cannot easily fix 39397db96d56Sopenharmony_ci dnl that, suppress the warnings here instead. 39407db96d56Sopenharmony_ci AS_VAR_APPEND([TCLTK_CFLAGS], [" -Wno-strict-prototypes -DWITH_APPINIT=1"]) 39417db96d56Sopenharmony_ci ], [ 39427db96d56Sopenharmony_ci have_tcltk=no 39437db96d56Sopenharmony_ci ]) 39447db96d56Sopenharmony_ci]) 39457db96d56Sopenharmony_ci 39467db96d56Sopenharmony_cidnl check for _gdbmmodule dependencies 39477db96d56Sopenharmony_cidnl NOTE: gdbm does not provide a pkgconf file. 39487db96d56Sopenharmony_ciAC_ARG_VAR([GDBM_CFLAGS], [C compiler flags for gdbm]) 39497db96d56Sopenharmony_ciAC_ARG_VAR([GDBM_LIBS], [additional linker flags for gdbm]) 39507db96d56Sopenharmony_ciWITH_SAVE_ENV([ 39517db96d56Sopenharmony_ci CPPFLAGS="$CPPFLAGS $GDBM_CFLAGS" 39527db96d56Sopenharmony_ci LDFLAGS="$GDBM_LIBS $LDFLAGS" 39537db96d56Sopenharmony_ci AC_CHECK_HEADERS([gdbm.h], [ 39547db96d56Sopenharmony_ci AC_CHECK_LIB([gdbm], [gdbm_open], [ 39557db96d56Sopenharmony_ci have_gdbm=yes 39567db96d56Sopenharmony_ci GDBM_LIBS=${GDBM_LIBS-"-lgdbm"} 39577db96d56Sopenharmony_ci ], [have_gdbm=no]) 39587db96d56Sopenharmony_ci ], [have_gdbm=no]) 39597db96d56Sopenharmony_ci]) 39607db96d56Sopenharmony_ci 39617db96d56Sopenharmony_ci# check for _dbmmodule.c dependencies 39627db96d56Sopenharmony_ciAC_CHECK_HEADERS([ndbm.h], [ 39637db96d56Sopenharmony_ci LIBS_SAVE="$LIBS" 39647db96d56Sopenharmony_ci AC_CHECK_LIB([ndbm], [dbm_open]) 39657db96d56Sopenharmony_ci LIBS="$LIBS_SAVE" 39667db96d56Sopenharmony_ci AC_CHECK_LIB([gdbm_compat], [dbm_open]) 39677db96d56Sopenharmony_ci LIBS="$LIBS_SAVE" 39687db96d56Sopenharmony_ci]) 39697db96d56Sopenharmony_ci 39707db96d56Sopenharmony_ci# "gdbm-ndbm.h" and "gdbm/ndbm.h" are both normalized to "gdbm_ndbm_h" 39717db96d56Sopenharmony_ci# unset ac_cv_header_gdbm_ndbm_h to prevent false positive cache hits. 39727db96d56Sopenharmony_ciAS_UNSET([ac_cv_header_gdbm_ndbm_h]) 39737db96d56Sopenharmony_ciAC_CACHE_VAL([ac_cv_header_gdbm_slash_ndbm_h], [ 39747db96d56Sopenharmony_ci AC_CHECK_HEADER( 39757db96d56Sopenharmony_ci [gdbm/ndbm.h], 39767db96d56Sopenharmony_ci [ac_cv_header_gdbm_slash_ndbm_h=yes], [ac_cv_header_gdbm_slash_ndbm_h=no] 39777db96d56Sopenharmony_ci ) 39787db96d56Sopenharmony_ci]) 39797db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_header_gdbm_slash_ndbm_h], [yes], [ 39807db96d56Sopenharmony_ci AC_DEFINE([HAVE_GDBM_NDBM_H], [1], [Define to 1 if you have the <gdbm/ndbm.h> header file.]) 39817db96d56Sopenharmony_ci]) 39827db96d56Sopenharmony_ci 39837db96d56Sopenharmony_ciAS_UNSET([ac_cv_header_gdbm_ndbm_h]) 39847db96d56Sopenharmony_ciAC_CACHE_VAL([ac_cv_header_gdbm_dash_ndbm_h], [ 39857db96d56Sopenharmony_ci AC_CHECK_HEADER( 39867db96d56Sopenharmony_ci [gdbm-ndbm.h], 39877db96d56Sopenharmony_ci [ac_cv_header_gdbm_dash_ndbm_h=yes], [ac_cv_header_gdbm_dash_ndbm_h=no] 39887db96d56Sopenharmony_ci ) 39897db96d56Sopenharmony_ci]) 39907db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_header_gdbm_dash_ndbm_h], [yes], [ 39917db96d56Sopenharmony_ci AC_DEFINE([HAVE_GDBM_DASH_NDBM_H], [1], [Define to 1 if you have the <gdbm-ndbm.h> header file.]) 39927db96d56Sopenharmony_ci]) 39937db96d56Sopenharmony_ciAS_UNSET([ac_cv_header_gdbm_ndbm_h]) 39947db96d56Sopenharmony_ci 39957db96d56Sopenharmony_ciif test "$ac_cv_header_gdbm_slash_ndbm_h" = yes -o "$ac_cv_header_gdbm_dash_ndbm_h" = yes; then 39967db96d56Sopenharmony_ci LIBS_SAVE="$LIBS" 39977db96d56Sopenharmony_ci AC_CHECK_LIB([gdbm_compat], [dbm_open]) 39987db96d56Sopenharmony_ci LIBS="$LIBS_SAVE" 39997db96d56Sopenharmony_cifi 40007db96d56Sopenharmony_ci 40017db96d56Sopenharmony_ci# Check for libdb >= 5 with dbm_open() 40027db96d56Sopenharmony_ci# db.h re-defines the name of the function 40037db96d56Sopenharmony_ciAC_CHECK_HEADERS([db.h], [ 40047db96d56Sopenharmony_ci AC_CACHE_CHECK([for libdb], [ac_cv_have_libdb], [ 40057db96d56Sopenharmony_ci LIBS_SAVE="$LIBS" 40067db96d56Sopenharmony_ci LIBS="$LIBS -ldb" 40077db96d56Sopenharmony_ci AC_LINK_IFELSE([AC_LANG_PROGRAM([ 40087db96d56Sopenharmony_ci #define DB_DBM_HSEARCH 1 40097db96d56Sopenharmony_ci #include <db.h> 40107db96d56Sopenharmony_ci #if DB_VERSION_MAJOR < 5 40117db96d56Sopenharmony_ci #error "dh.h: DB_VERSION_MAJOR < 5 is not supported." 40127db96d56Sopenharmony_ci #endif 40137db96d56Sopenharmony_ci ], [DBM *dbm = dbm_open(NULL, 0, 0)]) 40147db96d56Sopenharmony_ci ], [ac_cv_have_libdb=yes], [ac_cv_have_libdb=no]) 40157db96d56Sopenharmony_ci LIBS="$LIBS_SAVE" 40167db96d56Sopenharmony_ci ]) 40177db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_have_libdb], [yes], [ 40187db96d56Sopenharmony_ci AC_DEFINE([HAVE_LIBDB], [1], [Define to 1 if you have the `db' library (-ldb).]) 40197db96d56Sopenharmony_ci ]) 40207db96d56Sopenharmony_ci]) 40217db96d56Sopenharmony_ci 40227db96d56Sopenharmony_ci# Check for --with-dbmliborder 40237db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-dbmliborder) 40247db96d56Sopenharmony_ciAC_ARG_WITH(dbmliborder, 40257db96d56Sopenharmony_ci AS_HELP_STRING([--with-dbmliborder=db1:db2:...], [override order to check db backends for dbm; a valid value is a colon separated string with the backend names `ndbm', `gdbm' and `bdb'.]), 40267db96d56Sopenharmony_ci[], [with_dbmliborder=gdbm:ndbm:bdb]) 40277db96d56Sopenharmony_ci 40287db96d56Sopenharmony_cihave_gdbm_dbmliborder=no 40297db96d56Sopenharmony_cias_save_IFS=$IFS 40307db96d56Sopenharmony_ciIFS=: 40317db96d56Sopenharmony_cifor db in $with_dbmliborder; do 40327db96d56Sopenharmony_ci AS_CASE([$db], 40337db96d56Sopenharmony_ci [ndbm], [], 40347db96d56Sopenharmony_ci [gdbm], [have_gdbm_dbmliborder=yes], 40357db96d56Sopenharmony_ci [bdb], [], 40367db96d56Sopenharmony_ci [with_dbmliborder=error] 40377db96d56Sopenharmony_ci ) 40387db96d56Sopenharmony_cidone 40397db96d56Sopenharmony_ciIFS=$as_save_IFS 40407db96d56Sopenharmony_ciAS_VAR_IF([with_dbmliborder], [error], [ 40417db96d56Sopenharmony_ci AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:... (gdbm:ndbm:bdb)]) 40427db96d56Sopenharmony_ci]) 40437db96d56Sopenharmony_ciAC_MSG_RESULT($with_dbmliborder) 40447db96d56Sopenharmony_ci 40457db96d56Sopenharmony_ci# Templates for things AC_DEFINEd more than once. 40467db96d56Sopenharmony_ci# For a single AC_DEFINE, no template is needed. 40477db96d56Sopenharmony_ciAH_TEMPLATE(_REENTRANT, 40487db96d56Sopenharmony_ci [Define to force use of thread-safe errno, h_errno, and other functions]) 40497db96d56Sopenharmony_ci 40507db96d56Sopenharmony_ciif test "$ac_cv_pthread_is_default" = yes 40517db96d56Sopenharmony_cithen 40527db96d56Sopenharmony_ci # Defining _REENTRANT on system with POSIX threads should not hurt. 40537db96d56Sopenharmony_ci AC_DEFINE(_REENTRANT) 40547db96d56Sopenharmony_ci posix_threads=yes 40557db96d56Sopenharmony_ci if test "$ac_sys_system" = "SunOS"; then 40567db96d56Sopenharmony_ci CFLAGS="$CFLAGS -D_REENTRANT" 40577db96d56Sopenharmony_ci fi 40587db96d56Sopenharmony_cielif test "$ac_cv_kpthread" = "yes" 40597db96d56Sopenharmony_cithen 40607db96d56Sopenharmony_ci CC="$CC -Kpthread" 40617db96d56Sopenharmony_ci if test "$ac_cv_cxx_thread" = "yes"; then 40627db96d56Sopenharmony_ci CXX="$CXX -Kpthread" 40637db96d56Sopenharmony_ci fi 40647db96d56Sopenharmony_ci posix_threads=yes 40657db96d56Sopenharmony_cielif test "$ac_cv_kthread" = "yes" 40667db96d56Sopenharmony_cithen 40677db96d56Sopenharmony_ci CC="$CC -Kthread" 40687db96d56Sopenharmony_ci if test "$ac_cv_cxx_thread" = "yes"; then 40697db96d56Sopenharmony_ci CXX="$CXX -Kthread" 40707db96d56Sopenharmony_ci fi 40717db96d56Sopenharmony_ci posix_threads=yes 40727db96d56Sopenharmony_cielif test "$ac_cv_pthread" = "yes" 40737db96d56Sopenharmony_cithen 40747db96d56Sopenharmony_ci CC="$CC -pthread" 40757db96d56Sopenharmony_ci if test "$ac_cv_cxx_thread" = "yes"; then 40767db96d56Sopenharmony_ci CXX="$CXX -pthread" 40777db96d56Sopenharmony_ci fi 40787db96d56Sopenharmony_ci posix_threads=yes 40797db96d56Sopenharmony_cielse 40807db96d56Sopenharmony_ci if test ! -z "$withval" -a -d "$withval" 40817db96d56Sopenharmony_ci then LDFLAGS="$LDFLAGS -L$withval" 40827db96d56Sopenharmony_ci fi 40837db96d56Sopenharmony_ci 40847db96d56Sopenharmony_ci # According to the POSIX spec, a pthreads implementation must 40857db96d56Sopenharmony_ci # define _POSIX_THREADS in unistd.h. Some apparently don't 40867db96d56Sopenharmony_ci # (e.g. gnu pth with pthread emulation) 40877db96d56Sopenharmony_ci AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h) 40887db96d56Sopenharmony_ci AC_EGREP_CPP(yes, 40897db96d56Sopenharmony_ci [ 40907db96d56Sopenharmony_ci#include <unistd.h> 40917db96d56Sopenharmony_ci#ifdef _POSIX_THREADS 40927db96d56Sopenharmony_ciyes 40937db96d56Sopenharmony_ci#endif 40947db96d56Sopenharmony_ci ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no) 40957db96d56Sopenharmony_ci AC_MSG_RESULT($unistd_defines_pthreads) 40967db96d56Sopenharmony_ci 40977db96d56Sopenharmony_ci AC_DEFINE(_REENTRANT) 40987db96d56Sopenharmony_ci # Just looking for pthread_create in libpthread is not enough: 40997db96d56Sopenharmony_ci # on HP/UX, pthread.h renames pthread_create to a different symbol name. 41007db96d56Sopenharmony_ci # So we really have to include pthread.h, and then link. 41017db96d56Sopenharmony_ci _libs=$LIBS 41027db96d56Sopenharmony_ci LIBS="$LIBS -lpthread" 41037db96d56Sopenharmony_ci AC_MSG_CHECKING([for pthread_create in -lpthread]) 41047db96d56Sopenharmony_ci AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 41057db96d56Sopenharmony_ci#include <stdio.h> 41067db96d56Sopenharmony_ci#include <stdlib.h> 41077db96d56Sopenharmony_ci#include <pthread.h> 41087db96d56Sopenharmony_ci 41097db96d56Sopenharmony_civoid * start_routine (void *arg) { exit (0); }]], [[ 41107db96d56Sopenharmony_cipthread_create (NULL, NULL, start_routine, NULL)]])],[ 41117db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 41127db96d56Sopenharmony_ci posix_threads=yes 41137db96d56Sopenharmony_ci ],[ 41147db96d56Sopenharmony_ci LIBS=$_libs 41157db96d56Sopenharmony_ci AC_CHECK_FUNC(pthread_detach, [ 41167db96d56Sopenharmony_ci posix_threads=yes 41177db96d56Sopenharmony_ci ],[ 41187db96d56Sopenharmony_ci AC_CHECK_LIB(pthreads, pthread_create, [ 41197db96d56Sopenharmony_ci posix_threads=yes 41207db96d56Sopenharmony_ci LIBS="$LIBS -lpthreads" 41217db96d56Sopenharmony_ci ], [ 41227db96d56Sopenharmony_ci AC_CHECK_LIB(c_r, pthread_create, [ 41237db96d56Sopenharmony_ci posix_threads=yes 41247db96d56Sopenharmony_ci LIBS="$LIBS -lc_r" 41257db96d56Sopenharmony_ci ], [ 41267db96d56Sopenharmony_ci AC_CHECK_LIB(pthread, __pthread_create_system, [ 41277db96d56Sopenharmony_ci posix_threads=yes 41287db96d56Sopenharmony_ci LIBS="$LIBS -lpthread" 41297db96d56Sopenharmony_ci ], [ 41307db96d56Sopenharmony_ci AC_CHECK_LIB(cma, pthread_create, [ 41317db96d56Sopenharmony_ci posix_threads=yes 41327db96d56Sopenharmony_ci LIBS="$LIBS -lcma" 41337db96d56Sopenharmony_ci ],[ 41347db96d56Sopenharmony_ci AS_CASE([$ac_sys_system], 41357db96d56Sopenharmony_ci [WASI], [posix_threads=stub], 41367db96d56Sopenharmony_ci [AC_MSG_ERROR([could not find pthreads on your system])] 41377db96d56Sopenharmony_ci ) 41387db96d56Sopenharmony_ci ])])])])])]) 41397db96d56Sopenharmony_ci 41407db96d56Sopenharmony_ci AC_CHECK_LIB(mpc, usconfig, [ 41417db96d56Sopenharmony_ci LIBS="$LIBS -lmpc" 41427db96d56Sopenharmony_ci ]) 41437db96d56Sopenharmony_ci 41447db96d56Sopenharmony_cifi 41457db96d56Sopenharmony_ci 41467db96d56Sopenharmony_ciif test "$posix_threads" = "yes"; then 41477db96d56Sopenharmony_ci if test "$unistd_defines_pthreads" = "no"; then 41487db96d56Sopenharmony_ci AC_DEFINE(_POSIX_THREADS, 1, 41497db96d56Sopenharmony_ci [Define if you have POSIX threads, 41507db96d56Sopenharmony_ci and your system does not define that.]) 41517db96d56Sopenharmony_ci fi 41527db96d56Sopenharmony_ci 41537db96d56Sopenharmony_ci # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8. 41547db96d56Sopenharmony_ci case $ac_sys_system/$ac_sys_release in 41557db96d56Sopenharmony_ci SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1, 41567db96d56Sopenharmony_ci [Defined for Solaris 2.6 bug in pthread header.]) 41577db96d56Sopenharmony_ci ;; 41587db96d56Sopenharmony_ci SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1, 41597db96d56Sopenharmony_ci [Define if the Posix semaphores do not work on your system]) 41607db96d56Sopenharmony_ci ;; 41617db96d56Sopenharmony_ci AIX/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1, 41627db96d56Sopenharmony_ci [Define if the Posix semaphores do not work on your system]) 41637db96d56Sopenharmony_ci ;; 41647db96d56Sopenharmony_ci NetBSD/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1, 41657db96d56Sopenharmony_ci [Define if the Posix semaphores do not work on your system]) 41667db96d56Sopenharmony_ci ;; 41677db96d56Sopenharmony_ci esac 41687db96d56Sopenharmony_ci 41697db96d56Sopenharmony_ci AC_CACHE_CHECK([if PTHREAD_SCOPE_SYSTEM is supported], [ac_cv_pthread_system_supported], 41707db96d56Sopenharmony_ci [AC_RUN_IFELSE([AC_LANG_SOURCE([[ 41717db96d56Sopenharmony_ci #include <stdio.h> 41727db96d56Sopenharmony_ci #include <pthread.h> 41737db96d56Sopenharmony_ci void *foo(void *parm) { 41747db96d56Sopenharmony_ci return NULL; 41757db96d56Sopenharmony_ci } 41767db96d56Sopenharmony_ci int main(void) { 41777db96d56Sopenharmony_ci pthread_attr_t attr; 41787db96d56Sopenharmony_ci pthread_t id; 41797db96d56Sopenharmony_ci if (pthread_attr_init(&attr)) return (-1); 41807db96d56Sopenharmony_ci if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) return (-1); 41817db96d56Sopenharmony_ci if (pthread_create(&id, &attr, foo, NULL)) return (-1); 41827db96d56Sopenharmony_ci return (0); 41837db96d56Sopenharmony_ci }]])], 41847db96d56Sopenharmony_ci [ac_cv_pthread_system_supported=yes], 41857db96d56Sopenharmony_ci [ac_cv_pthread_system_supported=no], 41867db96d56Sopenharmony_ci [ac_cv_pthread_system_supported=no]) 41877db96d56Sopenharmony_ci ]) 41887db96d56Sopenharmony_ci if test "$ac_cv_pthread_system_supported" = "yes"; then 41897db96d56Sopenharmony_ci AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.]) 41907db96d56Sopenharmony_ci fi 41917db96d56Sopenharmony_ci AC_CHECK_FUNCS(pthread_sigmask, 41927db96d56Sopenharmony_ci [case $ac_sys_system in 41937db96d56Sopenharmony_ci CYGWIN*) 41947db96d56Sopenharmony_ci AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1, 41957db96d56Sopenharmony_ci [Define if pthread_sigmask() does not work on your system.]) 41967db96d56Sopenharmony_ci ;; 41977db96d56Sopenharmony_ci esac]) 41987db96d56Sopenharmony_ci AC_CHECK_FUNCS(pthread_getcpuclockid) 41997db96d56Sopenharmony_cifi 42007db96d56Sopenharmony_ci 42017db96d56Sopenharmony_ciAS_VAR_IF([posix_threads], [stub], [ 42027db96d56Sopenharmony_ci AC_DEFINE([HAVE_PTHREAD_STUBS], [1], [Define if platform requires stubbed pthreads support]) 42037db96d56Sopenharmony_ci]) 42047db96d56Sopenharmony_ci 42057db96d56Sopenharmony_ci# Check for enable-ipv6 42067db96d56Sopenharmony_ciAH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified]) 42077db96d56Sopenharmony_ciAC_MSG_CHECKING([if --enable-ipv6 is specified]) 42087db96d56Sopenharmony_ciAC_ARG_ENABLE(ipv6, 42097db96d56Sopenharmony_ci AS_HELP_STRING([--enable-ipv6], 42107db96d56Sopenharmony_ci [enable ipv6 (with ipv4) support, see Doc/library/socket.rst (default is yes if supported)]), 42117db96d56Sopenharmony_ci[ case "$enableval" in 42127db96d56Sopenharmony_ci no) 42137db96d56Sopenharmony_ci AC_MSG_RESULT(no) 42147db96d56Sopenharmony_ci ipv6=no 42157db96d56Sopenharmony_ci ;; 42167db96d56Sopenharmony_ci *) AC_MSG_RESULT(yes) 42177db96d56Sopenharmony_ci AC_DEFINE(ENABLE_IPV6) 42187db96d56Sopenharmony_ci ipv6=yes 42197db96d56Sopenharmony_ci ;; 42207db96d56Sopenharmony_ci esac ], 42217db96d56Sopenharmony_ci 42227db96d56Sopenharmony_ci[ 42237db96d56Sopenharmony_cidnl the check does not work on cross compilation case... 42247db96d56Sopenharmony_ci AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* AF_INET6 available check */ 42257db96d56Sopenharmony_ci#include <sys/types.h> 42267db96d56Sopenharmony_ci#include <sys/socket.h>]], 42277db96d56Sopenharmony_ci[[int domain = AF_INET6;]])],[ 42287db96d56Sopenharmony_ci ipv6=yes 42297db96d56Sopenharmony_ci],[ 42307db96d56Sopenharmony_ci ipv6=no 42317db96d56Sopenharmony_ci]) 42327db96d56Sopenharmony_ci 42337db96d56Sopenharmony_ciAS_CASE([$ac_sys_system], 42347db96d56Sopenharmony_ci [WASI], [ipv6=no] 42357db96d56Sopenharmony_ci) 42367db96d56Sopenharmony_ci 42377db96d56Sopenharmony_ciAC_MSG_RESULT([$ipv6]) 42387db96d56Sopenharmony_ci 42397db96d56Sopenharmony_ciif test "$ipv6" = "yes"; then 42407db96d56Sopenharmony_ci AC_MSG_CHECKING(if RFC2553 API is available) 42417db96d56Sopenharmony_ci AC_COMPILE_IFELSE([ 42427db96d56Sopenharmony_ci AC_LANG_PROGRAM([[#include <sys/types.h> 42437db96d56Sopenharmony_ci#include <netinet/in.h>]], 42447db96d56Sopenharmony_ci [[struct sockaddr_in6 x; 42457db96d56Sopenharmony_ci x.sin6_scope_id;]]) 42467db96d56Sopenharmony_ci ],[ 42477db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 42487db96d56Sopenharmony_ci ipv6=yes 42497db96d56Sopenharmony_ci ],[ 42507db96d56Sopenharmony_ci AC_MSG_RESULT(no, IPv6 disabled) 42517db96d56Sopenharmony_ci ipv6=no 42527db96d56Sopenharmony_ci ]) 42537db96d56Sopenharmony_cifi 42547db96d56Sopenharmony_ci 42557db96d56Sopenharmony_ciif test "$ipv6" = "yes"; then 42567db96d56Sopenharmony_ci AC_DEFINE(ENABLE_IPV6) 42577db96d56Sopenharmony_cifi 42587db96d56Sopenharmony_ci]) 42597db96d56Sopenharmony_ci 42607db96d56Sopenharmony_ciipv6type=unknown 42617db96d56Sopenharmony_ciipv6lib=none 42627db96d56Sopenharmony_ciipv6trylibc=no 42637db96d56Sopenharmony_ci 42647db96d56Sopenharmony_ciif test "$ipv6" = "yes"; then 42657db96d56Sopenharmony_ci AC_MSG_CHECKING([ipv6 stack type]) 42667db96d56Sopenharmony_ci for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta; 42677db96d56Sopenharmony_ci do 42687db96d56Sopenharmony_ci case $i in 42697db96d56Sopenharmony_ci inria) 42707db96d56Sopenharmony_ci dnl http://www.kame.net/ 42717db96d56Sopenharmony_ci AC_EGREP_CPP(yes, [ 42727db96d56Sopenharmony_ci#include <netinet/in.h> 42737db96d56Sopenharmony_ci#ifdef IPV6_INRIA_VERSION 42747db96d56Sopenharmony_ciyes 42757db96d56Sopenharmony_ci#endif], 42767db96d56Sopenharmony_ci [ipv6type=$i]) 42777db96d56Sopenharmony_ci ;; 42787db96d56Sopenharmony_ci kame) 42797db96d56Sopenharmony_ci dnl http://www.kame.net/ 42807db96d56Sopenharmony_ci AC_EGREP_CPP(yes, [ 42817db96d56Sopenharmony_ci#include <netinet/in.h> 42827db96d56Sopenharmony_ci#ifdef __KAME__ 42837db96d56Sopenharmony_ciyes 42847db96d56Sopenharmony_ci#endif], 42857db96d56Sopenharmony_ci [ipv6type=$i; 42867db96d56Sopenharmony_ci ipv6lib=inet6 42877db96d56Sopenharmony_ci ipv6libdir=/usr/local/v6/lib 42887db96d56Sopenharmony_ci ipv6trylibc=yes]) 42897db96d56Sopenharmony_ci ;; 42907db96d56Sopenharmony_ci linux-glibc) 42917db96d56Sopenharmony_ci dnl http://www.v6.linux.or.jp/ 42927db96d56Sopenharmony_ci AC_EGREP_CPP(yes, [ 42937db96d56Sopenharmony_ci#include <features.h> 42947db96d56Sopenharmony_ci#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)) 42957db96d56Sopenharmony_ciyes 42967db96d56Sopenharmony_ci#endif], 42977db96d56Sopenharmony_ci [ipv6type=$i; 42987db96d56Sopenharmony_ci ipv6trylibc=yes]) 42997db96d56Sopenharmony_ci ;; 43007db96d56Sopenharmony_ci linux-inet6) 43017db96d56Sopenharmony_ci dnl http://www.v6.linux.or.jp/ 43027db96d56Sopenharmony_ci if test -d /usr/inet6; then 43037db96d56Sopenharmony_ci ipv6type=$i 43047db96d56Sopenharmony_ci ipv6lib=inet6 43057db96d56Sopenharmony_ci ipv6libdir=/usr/inet6/lib 43067db96d56Sopenharmony_ci BASECFLAGS="-I/usr/inet6/include $BASECFLAGS" 43077db96d56Sopenharmony_ci fi 43087db96d56Sopenharmony_ci ;; 43097db96d56Sopenharmony_ci solaris) 43107db96d56Sopenharmony_ci if test -f /etc/netconfig; then 43117db96d56Sopenharmony_ci if $GREP -q tcp6 /etc/netconfig; then 43127db96d56Sopenharmony_ci ipv6type=$i 43137db96d56Sopenharmony_ci ipv6trylibc=yes 43147db96d56Sopenharmony_ci fi 43157db96d56Sopenharmony_ci fi 43167db96d56Sopenharmony_ci ;; 43177db96d56Sopenharmony_ci toshiba) 43187db96d56Sopenharmony_ci AC_EGREP_CPP(yes, [ 43197db96d56Sopenharmony_ci#include <sys/param.h> 43207db96d56Sopenharmony_ci#ifdef _TOSHIBA_INET6 43217db96d56Sopenharmony_ciyes 43227db96d56Sopenharmony_ci#endif], 43237db96d56Sopenharmony_ci [ipv6type=$i; 43247db96d56Sopenharmony_ci ipv6lib=inet6; 43257db96d56Sopenharmony_ci ipv6libdir=/usr/local/v6/lib]) 43267db96d56Sopenharmony_ci ;; 43277db96d56Sopenharmony_ci v6d) 43287db96d56Sopenharmony_ci AC_EGREP_CPP(yes, [ 43297db96d56Sopenharmony_ci#include </usr/local/v6/include/sys/v6config.h> 43307db96d56Sopenharmony_ci#ifdef __V6D__ 43317db96d56Sopenharmony_ciyes 43327db96d56Sopenharmony_ci#endif], 43337db96d56Sopenharmony_ci [ipv6type=$i; 43347db96d56Sopenharmony_ci ipv6lib=v6; 43357db96d56Sopenharmony_ci ipv6libdir=/usr/local/v6/lib; 43367db96d56Sopenharmony_ci BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"]) 43377db96d56Sopenharmony_ci ;; 43387db96d56Sopenharmony_ci zeta) 43397db96d56Sopenharmony_ci AC_EGREP_CPP(yes, [ 43407db96d56Sopenharmony_ci#include <sys/param.h> 43417db96d56Sopenharmony_ci#ifdef _ZETA_MINAMI_INET6 43427db96d56Sopenharmony_ciyes 43437db96d56Sopenharmony_ci#endif], 43447db96d56Sopenharmony_ci [ipv6type=$i; 43457db96d56Sopenharmony_ci ipv6lib=inet6; 43467db96d56Sopenharmony_ci ipv6libdir=/usr/local/v6/lib]) 43477db96d56Sopenharmony_ci ;; 43487db96d56Sopenharmony_ci esac 43497db96d56Sopenharmony_ci if test "$ipv6type" != "unknown"; then 43507db96d56Sopenharmony_ci break 43517db96d56Sopenharmony_ci fi 43527db96d56Sopenharmony_ci done 43537db96d56Sopenharmony_ci AC_MSG_RESULT($ipv6type) 43547db96d56Sopenharmony_cifi 43557db96d56Sopenharmony_ci 43567db96d56Sopenharmony_ciif test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then 43577db96d56Sopenharmony_ci if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then 43587db96d56Sopenharmony_ci LIBS="-L$ipv6libdir -l$ipv6lib $LIBS" 43597db96d56Sopenharmony_ci AC_MSG_NOTICE([using lib$ipv6lib]) 43607db96d56Sopenharmony_ci else 43617db96d56Sopenharmony_ci AS_VAR_IF([ipv6trylibc], [yes], [ 43627db96d56Sopenharmony_ci AC_MSG_NOTICE([using libc]) 43637db96d56Sopenharmony_ci ], [ 43647db96d56Sopenharmony_ci AC_MSG_ERROR([m4_normalize([ 43657db96d56Sopenharmony_ci No $ipv6lib library found; cannot continue. 43667db96d56Sopenharmony_ci You need to fetch lib$ipv6lib.a from appropriate 43677db96d56Sopenharmony_ci ipv6 kit and compile beforehand. 43687db96d56Sopenharmony_ci ])]) 43697db96d56Sopenharmony_ci ]) 43707db96d56Sopenharmony_ci fi 43717db96d56Sopenharmony_cifi 43727db96d56Sopenharmony_ci 43737db96d56Sopenharmony_ci 43747db96d56Sopenharmony_ciAC_CACHE_CHECK([CAN_RAW_FD_FRAMES], [ac_cv_can_raw_fd_frames], [ 43757db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* CAN_RAW_FD_FRAMES available check */ 43767db96d56Sopenharmony_ci#include <linux/can/raw.h>]], 43777db96d56Sopenharmony_ci[[int can_raw_fd_frames = CAN_RAW_FD_FRAMES;]])], 43787db96d56Sopenharmony_ci[ac_cv_can_raw_fd_frames=yes], 43797db96d56Sopenharmony_ci[ac_cv_can_raw_fd_frames=no]) 43807db96d56Sopenharmony_ci]) 43817db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_can_raw_fd_frames], [yes], [ 43827db96d56Sopenharmony_ci AC_DEFINE(HAVE_LINUX_CAN_RAW_FD_FRAMES, 1, [Define if compiling using Linux 3.6 or later.]) 43837db96d56Sopenharmony_ci]) 43847db96d56Sopenharmony_ci 43857db96d56Sopenharmony_ciAC_CACHE_CHECK([for CAN_RAW_JOIN_FILTERS], [ac_cv_can_raw_join_filters], [ 43867db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 43877db96d56Sopenharmony_ci#include <linux/can/raw.h>]], 43887db96d56Sopenharmony_ci[[int can_raw_join_filters = CAN_RAW_JOIN_FILTERS;]])], 43897db96d56Sopenharmony_ci[ac_cv_can_raw_join_filters=yes], 43907db96d56Sopenharmony_ci[ac_cv_can_raw_join_filters=no]) 43917db96d56Sopenharmony_ci]) 43927db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_can_raw_join_filters], [yes], [ 43937db96d56Sopenharmony_ci AC_DEFINE(HAVE_LINUX_CAN_RAW_JOIN_FILTERS, 1, [Define if compiling using Linux 4.1 or later.]) 43947db96d56Sopenharmony_ci]) 43957db96d56Sopenharmony_ci 43967db96d56Sopenharmony_ci# Check for --with-doc-strings 43977db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-doc-strings) 43987db96d56Sopenharmony_ciAC_ARG_WITH(doc-strings, 43997db96d56Sopenharmony_ci AS_HELP_STRING([--with-doc-strings], [enable documentation strings (default is yes)])) 44007db96d56Sopenharmony_ci 44017db96d56Sopenharmony_ciif test -z "$with_doc_strings" 44027db96d56Sopenharmony_cithen with_doc_strings="yes" 44037db96d56Sopenharmony_cifi 44047db96d56Sopenharmony_ciif test "$with_doc_strings" != "no" 44057db96d56Sopenharmony_cithen 44067db96d56Sopenharmony_ci AC_DEFINE(WITH_DOC_STRINGS, 1, 44077db96d56Sopenharmony_ci [Define if you want documentation strings in extension modules]) 44087db96d56Sopenharmony_cifi 44097db96d56Sopenharmony_ciAC_MSG_RESULT($with_doc_strings) 44107db96d56Sopenharmony_ci 44117db96d56Sopenharmony_ci# Check for Python-specific malloc support 44127db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-pymalloc) 44137db96d56Sopenharmony_ciAC_ARG_WITH(pymalloc, 44147db96d56Sopenharmony_ci AS_HELP_STRING([--with-pymalloc], [enable specialized mallocs (default is yes)])) 44157db96d56Sopenharmony_ci 44167db96d56Sopenharmony_ciif test -z "$with_pymalloc" 44177db96d56Sopenharmony_cithen 44187db96d56Sopenharmony_ci dnl default to yes except for wasm32-emscripten and wasm32-wasi. 44197db96d56Sopenharmony_ci AS_CASE([$ac_sys_system], 44207db96d56Sopenharmony_ci [Emscripten], [with_pymalloc="no"], 44217db96d56Sopenharmony_ci [WASI], [with_pymalloc="no"], 44227db96d56Sopenharmony_ci [with_pymalloc="yes"] 44237db96d56Sopenharmony_ci ) 44247db96d56Sopenharmony_cifi 44257db96d56Sopenharmony_ciif test "$with_pymalloc" != "no" 44267db96d56Sopenharmony_cithen 44277db96d56Sopenharmony_ci AC_DEFINE(WITH_PYMALLOC, 1, 44287db96d56Sopenharmony_ci [Define if you want to compile in Python-specific mallocs]) 44297db96d56Sopenharmony_cifi 44307db96d56Sopenharmony_ciAC_MSG_RESULT($with_pymalloc) 44317db96d56Sopenharmony_ci 44327db96d56Sopenharmony_ci# Check whether objects such as float, tuple and dict are using 44337db96d56Sopenharmony_ci# freelists to optimization memory allocation. 44347db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-freelists) 44357db96d56Sopenharmony_ciAC_ARG_WITH(freelists, 44367db96d56Sopenharmony_ci AS_HELP_STRING([--with-freelists], [enable object freelists (default is yes)])) 44377db96d56Sopenharmony_ci 44387db96d56Sopenharmony_ciif test -z "$with_freelists" 44397db96d56Sopenharmony_cithen 44407db96d56Sopenharmony_ci with_freelists="yes" 44417db96d56Sopenharmony_cifi 44427db96d56Sopenharmony_ciif test "$with_freelists" != "no" 44437db96d56Sopenharmony_cithen 44447db96d56Sopenharmony_ci AC_DEFINE(WITH_FREELISTS, 1, 44457db96d56Sopenharmony_ci [Define if you want to compile in object freelists optimization]) 44467db96d56Sopenharmony_cifi 44477db96d56Sopenharmony_ciAC_MSG_RESULT($with_freelists) 44487db96d56Sopenharmony_ci 44497db96d56Sopenharmony_ci# Check for --with-c-locale-coercion 44507db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-c-locale-coercion) 44517db96d56Sopenharmony_ciAC_ARG_WITH(c-locale-coercion, 44527db96d56Sopenharmony_ci AS_HELP_STRING([--with-c-locale-coercion], 44537db96d56Sopenharmony_ci [enable C locale coercion to a UTF-8 based locale (default is yes)])) 44547db96d56Sopenharmony_ci 44557db96d56Sopenharmony_ciif test -z "$with_c_locale_coercion" 44567db96d56Sopenharmony_cithen 44577db96d56Sopenharmony_ci with_c_locale_coercion="yes" 44587db96d56Sopenharmony_cifi 44597db96d56Sopenharmony_ciif test "$with_c_locale_coercion" != "no" 44607db96d56Sopenharmony_cithen 44617db96d56Sopenharmony_ci AC_DEFINE(PY_COERCE_C_LOCALE, 1, 44627db96d56Sopenharmony_ci [Define if you want to coerce the C locale to a UTF-8 based locale]) 44637db96d56Sopenharmony_cifi 44647db96d56Sopenharmony_ciAC_MSG_RESULT($with_c_locale_coercion) 44657db96d56Sopenharmony_ci 44667db96d56Sopenharmony_ci# Check for Valgrind support 44677db96d56Sopenharmony_ciAC_MSG_CHECKING([for --with-valgrind]) 44687db96d56Sopenharmony_ciAC_ARG_WITH([valgrind], 44697db96d56Sopenharmony_ci AS_HELP_STRING([--with-valgrind], [enable Valgrind support (default is no)]),, 44707db96d56Sopenharmony_ci with_valgrind=no) 44717db96d56Sopenharmony_ciAC_MSG_RESULT([$with_valgrind]) 44727db96d56Sopenharmony_ciif test "$with_valgrind" != no; then 44737db96d56Sopenharmony_ci AC_CHECK_HEADER([valgrind/valgrind.h], 44747db96d56Sopenharmony_ci [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])], 44757db96d56Sopenharmony_ci [AC_MSG_ERROR([Valgrind support requested but headers not available])] 44767db96d56Sopenharmony_ci ) 44777db96d56Sopenharmony_ci OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT" 44787db96d56Sopenharmony_cifi 44797db96d56Sopenharmony_ci 44807db96d56Sopenharmony_ci# Check for DTrace support 44817db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-dtrace) 44827db96d56Sopenharmony_ciAC_ARG_WITH(dtrace, 44837db96d56Sopenharmony_ci AS_HELP_STRING([--with-dtrace],[enable DTrace support (default is no)]),, 44847db96d56Sopenharmony_ci with_dtrace=no) 44857db96d56Sopenharmony_ciAC_MSG_RESULT($with_dtrace) 44867db96d56Sopenharmony_ci 44877db96d56Sopenharmony_ciAC_SUBST(DTRACE) 44887db96d56Sopenharmony_ciAC_SUBST(DFLAGS) 44897db96d56Sopenharmony_ciAC_SUBST(DTRACE_HEADERS) 44907db96d56Sopenharmony_ciAC_SUBST(DTRACE_OBJS) 44917db96d56Sopenharmony_ciDTRACE= 44927db96d56Sopenharmony_ciDTRACE_HEADERS= 44937db96d56Sopenharmony_ciDTRACE_OBJS= 44947db96d56Sopenharmony_ci 44957db96d56Sopenharmony_ciif test "$with_dtrace" = "yes" 44967db96d56Sopenharmony_cithen 44977db96d56Sopenharmony_ci AC_PATH_PROG(DTRACE, [dtrace], [not found]) 44987db96d56Sopenharmony_ci if test "$DTRACE" = "not found"; then 44997db96d56Sopenharmony_ci AC_MSG_ERROR([dtrace command not found on \$PATH]) 45007db96d56Sopenharmony_ci fi 45017db96d56Sopenharmony_ci AC_DEFINE(WITH_DTRACE, 1, [Define if you want to compile in DTrace support]) 45027db96d56Sopenharmony_ci DTRACE_HEADERS="Include/pydtrace_probes.h" 45037db96d56Sopenharmony_ci 45047db96d56Sopenharmony_ci # On OS X, DTrace providers do not need to be explicitly compiled and 45057db96d56Sopenharmony_ci # linked into the binary. Correspondingly, dtrace(1) is missing the ELF 45067db96d56Sopenharmony_ci # generation flag '-G'. We check for presence of this flag, rather than 45077db96d56Sopenharmony_ci # hardcoding support by OS, in the interest of robustness. 45087db96d56Sopenharmony_ci AC_CACHE_CHECK([whether DTrace probes require linking], 45097db96d56Sopenharmony_ci [ac_cv_dtrace_link], [dnl 45107db96d56Sopenharmony_ci ac_cv_dtrace_link=no 45117db96d56Sopenharmony_ci echo 'BEGIN{}' > conftest.d 45127db96d56Sopenharmony_ci "$DTRACE" $DFLAGS -G -s conftest.d -o conftest.o > /dev/null 2>&1 && \ 45137db96d56Sopenharmony_ci ac_cv_dtrace_link=yes 45147db96d56Sopenharmony_ci ]) 45157db96d56Sopenharmony_ci if test "$ac_cv_dtrace_link" = "yes"; then 45167db96d56Sopenharmony_ci DTRACE_OBJS="Python/pydtrace.o" 45177db96d56Sopenharmony_ci fi 45187db96d56Sopenharmony_cifi 45197db96d56Sopenharmony_ci 45207db96d56Sopenharmony_cidnl Platform-specific C and header files. 45217db96d56Sopenharmony_ciPLATFORM_HEADERS= 45227db96d56Sopenharmony_ciPLATFORM_OBJS= 45237db96d56Sopenharmony_ci 45247db96d56Sopenharmony_ciAS_CASE([$ac_sys_system], 45257db96d56Sopenharmony_ci [Emscripten], [ 45267db96d56Sopenharmony_ci AS_VAR_APPEND([PLATFORM_OBJS], [' Python/emscripten_signal.o']) 45277db96d56Sopenharmony_ci AS_VAR_APPEND([PLATFORM_HEADERS], [' $(srcdir)/Include/internal/pycore_emscripten_signal.h']) 45287db96d56Sopenharmony_ci ], 45297db96d56Sopenharmony_ci) 45307db96d56Sopenharmony_ciAC_SUBST([PLATFORM_HEADERS]) 45317db96d56Sopenharmony_ciAC_SUBST([PLATFORM_OBJS]) 45327db96d56Sopenharmony_ci 45337db96d56Sopenharmony_ci# -I${DLINCLDIR} is added to the compile rule for importdl.o 45347db96d56Sopenharmony_ciAC_SUBST(DLINCLDIR) 45357db96d56Sopenharmony_ciDLINCLDIR=. 45367db96d56Sopenharmony_ci 45377db96d56Sopenharmony_ci# the dlopen() function means we might want to use dynload_shlib.o. some 45387db96d56Sopenharmony_ci# platforms have dlopen(), but don't want to use it. 45397db96d56Sopenharmony_ciAC_CHECK_FUNCS(dlopen) 45407db96d56Sopenharmony_ci 45417db96d56Sopenharmony_ci# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic 45427db96d56Sopenharmony_ci# loading of modules. 45437db96d56Sopenharmony_ciAC_SUBST(DYNLOADFILE) 45447db96d56Sopenharmony_ciAC_MSG_CHECKING(DYNLOADFILE) 45457db96d56Sopenharmony_ciif test -z "$DYNLOADFILE" 45467db96d56Sopenharmony_cithen 45477db96d56Sopenharmony_ci case $ac_sys_system/$ac_sys_release in 45487db96d56Sopenharmony_ci hp*|HP*) DYNLOADFILE="dynload_hpux.o";; 45497db96d56Sopenharmony_ci *) 45507db96d56Sopenharmony_ci # use dynload_shlib.c and dlopen() if we have it; otherwise stub 45517db96d56Sopenharmony_ci # out any dynamic loading 45527db96d56Sopenharmony_ci if test "$ac_cv_func_dlopen" = yes 45537db96d56Sopenharmony_ci then DYNLOADFILE="dynload_shlib.o" 45547db96d56Sopenharmony_ci else DYNLOADFILE="dynload_stub.o" 45557db96d56Sopenharmony_ci fi 45567db96d56Sopenharmony_ci ;; 45577db96d56Sopenharmony_ci esac 45587db96d56Sopenharmony_cifi 45597db96d56Sopenharmony_ciAC_MSG_RESULT($DYNLOADFILE) 45607db96d56Sopenharmony_ciif test "$DYNLOADFILE" != "dynload_stub.o" 45617db96d56Sopenharmony_cithen 45627db96d56Sopenharmony_ci AC_DEFINE(HAVE_DYNAMIC_LOADING, 1, 45637db96d56Sopenharmony_ci [Defined when any dynamic module loading is enabled.]) 45647db96d56Sopenharmony_cifi 45657db96d56Sopenharmony_ci 45667db96d56Sopenharmony_ci# MACHDEP_OBJS can be set to platform-specific object files needed by Python 45677db96d56Sopenharmony_ci 45687db96d56Sopenharmony_ciAC_SUBST(MACHDEP_OBJS) 45697db96d56Sopenharmony_ciAC_MSG_CHECKING(MACHDEP_OBJS) 45707db96d56Sopenharmony_ciif test -z "$MACHDEP_OBJS" 45717db96d56Sopenharmony_cithen 45727db96d56Sopenharmony_ci MACHDEP_OBJS=$extra_machdep_objs 45737db96d56Sopenharmony_cielse 45747db96d56Sopenharmony_ci MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs" 45757db96d56Sopenharmony_cifi 45767db96d56Sopenharmony_ciif test -z "$MACHDEP_OBJS"; then 45777db96d56Sopenharmony_ci AC_MSG_RESULT([none]) 45787db96d56Sopenharmony_cielse 45797db96d56Sopenharmony_ci AC_MSG_RESULT([$MACHDEP_OBJS]) 45807db96d56Sopenharmony_cifi 45817db96d56Sopenharmony_ci 45827db96d56Sopenharmony_ci# checks for library functions 45837db96d56Sopenharmony_ciAC_CHECK_FUNCS([ \ 45847db96d56Sopenharmony_ci accept4 alarm bind_textdomain_codeset chmod chown clock close_range confstr \ 45857db96d56Sopenharmony_ci copy_file_range ctermid dup dup3 execv explicit_bzero explicit_memset \ 45867db96d56Sopenharmony_ci faccessat fchmod fchmodat fchown fchownat fdopendir fdwalk fexecve \ 45877db96d56Sopenharmony_ci fork fork1 fpathconf fstatat ftime ftruncate futimens futimes futimesat \ 45887db96d56Sopenharmony_ci gai_strerror getegid getentropy geteuid getgid getgrgid getgrgid_r \ 45897db96d56Sopenharmony_ci getgrnam_r getgrouplist getgroups gethostname getitimer getloadavg getlogin \ 45907db96d56Sopenharmony_ci getpeername getpgid getpid getppid getpriority _getpty \ 45917db96d56Sopenharmony_ci getpwent getpwnam_r getpwuid getpwuid_r getresgid getresuid getrusage getsid getspent \ 45927db96d56Sopenharmony_ci getspnam getuid getwd if_nameindex initgroups kill killpg lchown linkat \ 45937db96d56Sopenharmony_ci lockf lstat lutimes madvise mbrtowc memrchr mkdirat mkfifo mkfifoat \ 45947db96d56Sopenharmony_ci mknod mknodat mktime mmap mremap nice openat opendir pathconf pause pipe \ 45957db96d56Sopenharmony_ci pipe2 plock poll posix_fadvise posix_fallocate posix_spawn posix_spawnp \ 45967db96d56Sopenharmony_ci pread preadv preadv2 pthread_condattr_setclock pthread_init pthread_kill \ 45977db96d56Sopenharmony_ci pwrite pwritev pwritev2 readlink readlinkat readv realpath renameat \ 45987db96d56Sopenharmony_ci rtpSpawn sched_get_priority_max sched_rr_get_interval sched_setaffinity \ 45997db96d56Sopenharmony_ci sched_setparam sched_setscheduler sem_clockwait sem_getvalue sem_open \ 46007db96d56Sopenharmony_ci sem_timedwait sem_unlink sendfile setegid seteuid setgid sethostname \ 46017db96d56Sopenharmony_ci setitimer setlocale setpgid setpgrp setpriority setregid setresgid \ 46027db96d56Sopenharmony_ci setresuid setreuid setsid setuid setvbuf shutdown sigaction sigaltstack \ 46037db96d56Sopenharmony_ci sigfillset siginterrupt sigpending sigrelse sigtimedwait sigwait \ 46047db96d56Sopenharmony_ci sigwaitinfo snprintf splice strftime strlcpy strsignal symlinkat sync \ 46057db96d56Sopenharmony_ci sysconf system tcgetpgrp tcsetpgrp tempnam timegm times tmpfile \ 46067db96d56Sopenharmony_ci tmpnam tmpnam_r truncate ttyname umask uname unlinkat utimensat utimes vfork \ 46077db96d56Sopenharmony_ci wait wait3 wait4 waitid waitpid wcscoll wcsftime wcsxfrm wmemcmp writev \ 46087db96d56Sopenharmony_ci]) 46097db96d56Sopenharmony_ci 46107db96d56Sopenharmony_ci# Force lchmod off for Linux. Linux disallows changing the mode of symbolic 46117db96d56Sopenharmony_ci# links. Some libc implementations have a stub lchmod implementation that always 46127db96d56Sopenharmony_ci# returns an error. 46137db96d56Sopenharmony_ciif test "$MACHDEP" != linux; then 46147db96d56Sopenharmony_ci AC_CHECK_FUNCS(lchmod) 46157db96d56Sopenharmony_cifi 46167db96d56Sopenharmony_ci 46177db96d56Sopenharmony_ciAC_CHECK_DECL(dirfd, 46187db96d56Sopenharmony_ci AC_DEFINE(HAVE_DIRFD, 1, 46197db96d56Sopenharmony_ci Define if you have the 'dirfd' function or macro.), , 46207db96d56Sopenharmony_ci [#include <sys/types.h> 46217db96d56Sopenharmony_ci #include <dirent.h>]) 46227db96d56Sopenharmony_ci 46237db96d56Sopenharmony_cidnl PY_CHECK_FUNC(FUNCTION, [INCLUDES], [AC_DEFINE-VAR]) 46247db96d56Sopenharmony_ciAC_DEFUN([PY_CHECK_FUNC], 46257db96d56Sopenharmony_ci[ AS_VAR_PUSHDEF([py_var], [ac_cv_func_$1]) 46267db96d56Sopenharmony_ci AS_VAR_PUSHDEF([py_define], m4_ifblank([$3], [[HAVE_]m4_toupper($1)], [$3])) 46277db96d56Sopenharmony_ci AC_CACHE_CHECK( 46287db96d56Sopenharmony_ci [for $1], 46297db96d56Sopenharmony_ci [py_var], 46307db96d56Sopenharmony_ci [AC_COMPILE_IFELSE( 46317db96d56Sopenharmony_ci [AC_LANG_PROGRAM([$2], [void *x=$1])], 46327db96d56Sopenharmony_ci [AS_VAR_SET([py_var], [yes])], 46337db96d56Sopenharmony_ci [AS_VAR_SET([py_var], [no])])] 46347db96d56Sopenharmony_ci ) 46357db96d56Sopenharmony_ci AS_VAR_IF( 46367db96d56Sopenharmony_ci [py_var], 46377db96d56Sopenharmony_ci [yes], 46387db96d56Sopenharmony_ci [AC_DEFINE([py_define], [1], [Define if you have the '$1' function.])]) 46397db96d56Sopenharmony_ci AS_VAR_POPDEF([py_var]) 46407db96d56Sopenharmony_ci AS_VAR_POPDEF([py_define]) 46417db96d56Sopenharmony_ci]) 46427db96d56Sopenharmony_ci 46437db96d56Sopenharmony_ci# For some functions, having a definition is not sufficient, since 46447db96d56Sopenharmony_ci# we want to take their address. 46457db96d56Sopenharmony_ciPY_CHECK_FUNC([chroot], [#include <unistd.h>]) 46467db96d56Sopenharmony_ciPY_CHECK_FUNC([link], [#include <unistd.h>]) 46477db96d56Sopenharmony_ciPY_CHECK_FUNC([symlink], [#include <unistd.h>]) 46487db96d56Sopenharmony_ciPY_CHECK_FUNC([fchdir], [#include <unistd.h>]) 46497db96d56Sopenharmony_ciPY_CHECK_FUNC([fsync], [#include <unistd.h>]) 46507db96d56Sopenharmony_ciPY_CHECK_FUNC([fdatasync], [#include <unistd.h>]) 46517db96d56Sopenharmony_ciPY_CHECK_FUNC([epoll_create], [#include <sys/epoll.h>], [HAVE_EPOLL]) 46527db96d56Sopenharmony_ciPY_CHECK_FUNC([epoll_create1], [#include <sys/epoll.h>]) 46537db96d56Sopenharmony_ciPY_CHECK_FUNC([kqueue],[ 46547db96d56Sopenharmony_ci#include <sys/types.h> 46557db96d56Sopenharmony_ci#include <sys/event.h> 46567db96d56Sopenharmony_ci]) 46577db96d56Sopenharmony_ciPY_CHECK_FUNC([prlimit], [ 46587db96d56Sopenharmony_ci#include <sys/time.h> 46597db96d56Sopenharmony_ci#include <sys/resource.h> 46607db96d56Sopenharmony_ci]) 46617db96d56Sopenharmony_ci 46627db96d56Sopenharmony_ciPY_CHECK_FUNC([_dyld_shared_cache_contains_path], [#include <mach-o/dyld.h>], [HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH]) 46637db96d56Sopenharmony_ci 46647db96d56Sopenharmony_ciPY_CHECK_FUNC([memfd_create], [ 46657db96d56Sopenharmony_ci#ifdef HAVE_SYS_MMAN_H 46667db96d56Sopenharmony_ci#include <sys/mman.h> 46677db96d56Sopenharmony_ci#endif 46687db96d56Sopenharmony_ci#ifdef HAVE_SYS_MEMFD_H 46697db96d56Sopenharmony_ci#include <sys/memfd.h> 46707db96d56Sopenharmony_ci#endif 46717db96d56Sopenharmony_ci]) 46727db96d56Sopenharmony_ci 46737db96d56Sopenharmony_ciPY_CHECK_FUNC([eventfd], [ 46747db96d56Sopenharmony_ci#ifdef HAVE_SYS_EVENTFD_H 46757db96d56Sopenharmony_ci#include <sys/eventfd.h> 46767db96d56Sopenharmony_ci#endif 46777db96d56Sopenharmony_ci]) 46787db96d56Sopenharmony_ci 46797db96d56Sopenharmony_ci# On some systems (eg. FreeBSD 5), we would find a definition of the 46807db96d56Sopenharmony_ci# functions ctermid_r, setgroups in the library, but no prototype 46817db96d56Sopenharmony_ci# (e.g. because we use _XOPEN_SOURCE). See whether we can take their 46827db96d56Sopenharmony_ci# address to avoid compiler warnings and potential miscompilations 46837db96d56Sopenharmony_ci# because of the missing prototypes. 46847db96d56Sopenharmony_ci 46857db96d56Sopenharmony_ciPY_CHECK_FUNC([ctermid_r], [#include <stdio.h>]) 46867db96d56Sopenharmony_ci 46877db96d56Sopenharmony_ciAC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl], 46887db96d56Sopenharmony_ci [AC_COMPILE_IFELSE( 46897db96d56Sopenharmony_ci [AC_LANG_PROGRAM( 46907db96d56Sopenharmony_ci [#include <sys/file.h>], 46917db96d56Sopenharmony_ci [void* p = flock] 46927db96d56Sopenharmony_ci )], 46937db96d56Sopenharmony_ci [ac_cv_flock_decl=yes], 46947db96d56Sopenharmony_ci [ac_cv_flock_decl=no] 46957db96d56Sopenharmony_ci ) 46967db96d56Sopenharmony_ci]) 46977db96d56Sopenharmony_cidnl Linking with libbsd may be necessary on AIX for flock function. 46987db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_flock_decl], [yes], 46997db96d56Sopenharmony_ci [AC_CHECK_FUNCS([flock], [], 47007db96d56Sopenharmony_ci [AC_CHECK_LIB([bsd], [flock], [FCNTL_LIBS="-lbsd"])])]) 47017db96d56Sopenharmony_ci 47027db96d56Sopenharmony_ciPY_CHECK_FUNC([getpagesize], [#include <unistd.h>]) 47037db96d56Sopenharmony_ci 47047db96d56Sopenharmony_ciAC_CACHE_CHECK([for broken unsetenv], [ac_cv_broken_unsetenv], 47057db96d56Sopenharmony_ci [AC_COMPILE_IFELSE( 47067db96d56Sopenharmony_ci [AC_LANG_PROGRAM( 47077db96d56Sopenharmony_ci [#include <stdlib.h>], 47087db96d56Sopenharmony_ci [int res = unsetenv("DUMMY")])], 47097db96d56Sopenharmony_ci [ac_cv_broken_unsetenv=no], 47107db96d56Sopenharmony_ci [ac_cv_broken_unsetenv=yes] 47117db96d56Sopenharmony_ci ) 47127db96d56Sopenharmony_ci]) 47137db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_broken_unsetenv], [yes], [ 47147db96d56Sopenharmony_ci AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, [Define if 'unsetenv' does not return an int.]) 47157db96d56Sopenharmony_ci]) 47167db96d56Sopenharmony_ci 47177db96d56Sopenharmony_cidnl check for true 47187db96d56Sopenharmony_ciAC_CHECK_PROGS(TRUE, true, /bin/true) 47197db96d56Sopenharmony_ci 47207db96d56Sopenharmony_cidnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv 47217db96d56Sopenharmony_cidnl On others, they are in the C library, so we to take no action 47227db96d56Sopenharmony_ciAC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE], 47237db96d56Sopenharmony_ci AC_CHECK_LIB(resolv, inet_aton) 47247db96d56Sopenharmony_ci) 47257db96d56Sopenharmony_ci 47267db96d56Sopenharmony_ci# On Tru64, chflags seems to be present, but calling it will 47277db96d56Sopenharmony_ci# exit Python 47287db96d56Sopenharmony_ciAC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl 47297db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 47307db96d56Sopenharmony_ci#include <sys/stat.h> 47317db96d56Sopenharmony_ci#include <unistd.h> 47327db96d56Sopenharmony_ciint main(int argc, char *argv[]) 47337db96d56Sopenharmony_ci{ 47347db96d56Sopenharmony_ci if(chflags(argv[0], 0) != 0) 47357db96d56Sopenharmony_ci return 1; 47367db96d56Sopenharmony_ci return 0; 47377db96d56Sopenharmony_ci} 47387db96d56Sopenharmony_ci]])], 47397db96d56Sopenharmony_ci[ac_cv_have_chflags=yes], 47407db96d56Sopenharmony_ci[ac_cv_have_chflags=no], 47417db96d56Sopenharmony_ci[ac_cv_have_chflags=cross]) 47427db96d56Sopenharmony_ci]) 47437db96d56Sopenharmony_ciif test "$ac_cv_have_chflags" = cross ; then 47447db96d56Sopenharmony_ci AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"]) 47457db96d56Sopenharmony_cifi 47467db96d56Sopenharmony_ciif test "$ac_cv_have_chflags" = yes ; then 47477db96d56Sopenharmony_ci AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.]) 47487db96d56Sopenharmony_cifi 47497db96d56Sopenharmony_ci 47507db96d56Sopenharmony_ciAC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl 47517db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 47527db96d56Sopenharmony_ci#include <sys/stat.h> 47537db96d56Sopenharmony_ci#include <unistd.h> 47547db96d56Sopenharmony_ciint main(int argc, char *argv[]) 47557db96d56Sopenharmony_ci{ 47567db96d56Sopenharmony_ci if(lchflags(argv[0], 0) != 0) 47577db96d56Sopenharmony_ci return 1; 47587db96d56Sopenharmony_ci return 0; 47597db96d56Sopenharmony_ci} 47607db96d56Sopenharmony_ci]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross]) 47617db96d56Sopenharmony_ci]) 47627db96d56Sopenharmony_ciif test "$ac_cv_have_lchflags" = cross ; then 47637db96d56Sopenharmony_ci AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"]) 47647db96d56Sopenharmony_cifi 47657db96d56Sopenharmony_ciif test "$ac_cv_have_lchflags" = yes ; then 47667db96d56Sopenharmony_ci AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.]) 47677db96d56Sopenharmony_cifi 47687db96d56Sopenharmony_ci 47697db96d56Sopenharmony_cidnl Check for compression libraries 47707db96d56Sopenharmony_ciAH_TEMPLATE([HAVE_ZLIB_COPY], [Define if the zlib library has inflateCopy]) 47717db96d56Sopenharmony_ci 47727db96d56Sopenharmony_cidnl detect zlib from Emscripten emport 47737db96d56Sopenharmony_ciPY_CHECK_EMSCRIPTEN_PORT([ZLIB], [-sUSE_ZLIB]) 47747db96d56Sopenharmony_ci 47757db96d56Sopenharmony_ciPKG_CHECK_MODULES([ZLIB], [zlib >= 1.2.0], [ 47767db96d56Sopenharmony_ci have_zlib=yes 47777db96d56Sopenharmony_ci dnl zlib 1.2.0 (2003) added inflateCopy 47787db96d56Sopenharmony_ci AC_DEFINE([HAVE_ZLIB_COPY], [1]) 47797db96d56Sopenharmony_ci], [ 47807db96d56Sopenharmony_ci WITH_SAVE_ENV([ 47817db96d56Sopenharmony_ci CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS" 47827db96d56Sopenharmony_ci LDFLAGS="$LDFLAGS $ZLIB_LIBS" 47837db96d56Sopenharmony_ci AC_CHECK_HEADERS([zlib.h], [ 47847db96d56Sopenharmony_ci PY_CHECK_LIB([z], [gzread], [have_zlib=yes], [have_zlib=no]) 47857db96d56Sopenharmony_ci ], [have_zlib=no]) 47867db96d56Sopenharmony_ci AS_VAR_IF([have_zlib], [yes], [ 47877db96d56Sopenharmony_ci ZLIB_CFLAGS=${ZLIB_CFLAGS-""} 47887db96d56Sopenharmony_ci ZLIB_LIBS=${ZLIB_LIBS-"-lz"} 47897db96d56Sopenharmony_ci PY_CHECK_LIB([z], [inflateCopy], [AC_DEFINE([HAVE_ZLIB_COPY], [1])]) 47907db96d56Sopenharmony_ci ]) 47917db96d56Sopenharmony_ci ]) 47927db96d56Sopenharmony_ci]) 47937db96d56Sopenharmony_ci 47947db96d56Sopenharmony_cidnl binascii can use zlib for optimized crc32. 47957db96d56Sopenharmony_ciAS_VAR_IF([have_zlib], [yes], [ 47967db96d56Sopenharmony_ci BINASCII_CFLAGS="-DUSE_ZLIB_CRC32 $ZLIB_CFLAGS" 47977db96d56Sopenharmony_ci BINASCII_LIBS="$ZLIB_LIBS" 47987db96d56Sopenharmony_ci]) 47997db96d56Sopenharmony_ci 48007db96d56Sopenharmony_cidnl detect bzip2 from Emscripten emport 48017db96d56Sopenharmony_ciPY_CHECK_EMSCRIPTEN_PORT([BZIP2], [-sUSE_BZIP2]) 48027db96d56Sopenharmony_ci 48037db96d56Sopenharmony_ciPKG_CHECK_MODULES([BZIP2], [bzip2], [have_bzip2=yes], [ 48047db96d56Sopenharmony_ci WITH_SAVE_ENV([ 48057db96d56Sopenharmony_ci CPPFLAGS="$CPPFLAGS $BZIP2_CFLAGS" 48067db96d56Sopenharmony_ci LDFLAGS="$LDFLAGS $BZIP2_LIBS" 48077db96d56Sopenharmony_ci AC_CHECK_HEADERS([bzlib.h], [ 48087db96d56Sopenharmony_ci AC_CHECK_LIB([bz2], [BZ2_bzCompress], [have_bzip2=yes], [have_bzip2=no]) 48097db96d56Sopenharmony_ci ], [have_bzip2=no]) 48107db96d56Sopenharmony_ci AS_VAR_IF([have_bzip2], [yes], [ 48117db96d56Sopenharmony_ci BZIP2_CFLAGS=${BZIP2_CFLAGS-""} 48127db96d56Sopenharmony_ci BZIP2_LIBS=${BZIP2_LIBS-"-lbz2"} 48137db96d56Sopenharmony_ci ]) 48147db96d56Sopenharmony_ci ]) 48157db96d56Sopenharmony_ci]) 48167db96d56Sopenharmony_ci 48177db96d56Sopenharmony_ciPKG_CHECK_MODULES([LIBLZMA], [liblzma], [have_liblzma=yes], [ 48187db96d56Sopenharmony_ci WITH_SAVE_ENV([ 48197db96d56Sopenharmony_ci CPPFLAGS="$CPPFLAGS $LIBLZMA_CFLAGS" 48207db96d56Sopenharmony_ci LDFLAGS="$LDFLAGS $LIBLZMA_LIBS" 48217db96d56Sopenharmony_ci AC_CHECK_HEADERS([lzma.h], [ 48227db96d56Sopenharmony_ci AC_CHECK_LIB([lzma], [lzma_easy_encoder], [have_liblzma=yes], [have_liblzma=no]) 48237db96d56Sopenharmony_ci ], [have_liblzma=no]) 48247db96d56Sopenharmony_ci AS_VAR_IF([have_liblzma], [yes], [ 48257db96d56Sopenharmony_ci LIBLZMA_CFLAGS=${LIBLZMA_CFLAGS-""} 48267db96d56Sopenharmony_ci LIBLZMA_LIBS=${LIBLZMA_LIBS-"-llzma"} 48277db96d56Sopenharmony_ci ]) 48287db96d56Sopenharmony_ci ]) 48297db96d56Sopenharmony_ci]) 48307db96d56Sopenharmony_ci 48317db96d56Sopenharmony_cidnl PY_CHECK_NETDB_FUNC(FUNCTION) 48327db96d56Sopenharmony_ciAC_DEFUN([PY_CHECK_NETDB_FUNC], [PY_CHECK_FUNC([$1], [#include <netdb.h>])]) 48337db96d56Sopenharmony_ci 48347db96d56Sopenharmony_ciPY_CHECK_NETDB_FUNC([hstrerror]) 48357db96d56Sopenharmony_cidnl not available in WASI yet 48367db96d56Sopenharmony_ciPY_CHECK_NETDB_FUNC([getservbyname]) 48377db96d56Sopenharmony_ciPY_CHECK_NETDB_FUNC([getservbyport]) 48387db96d56Sopenharmony_ciPY_CHECK_NETDB_FUNC([gethostbyname]) 48397db96d56Sopenharmony_ciPY_CHECK_NETDB_FUNC([gethostbyaddr]) 48407db96d56Sopenharmony_ciPY_CHECK_NETDB_FUNC([getprotobyname]) 48417db96d56Sopenharmony_ci 48427db96d56Sopenharmony_cidnl PY_CHECK_SOCKET_FUNC(FUNCTION) 48437db96d56Sopenharmony_ciAC_DEFUN([PY_CHECK_SOCKET_FUNC], [PY_CHECK_FUNC([$1], [ 48447db96d56Sopenharmony_ci#include <sys/types.h> 48457db96d56Sopenharmony_ci#include <sys/socket.h> 48467db96d56Sopenharmony_ci#include <netinet/in.h> 48477db96d56Sopenharmony_ci#include <arpa/inet.h> 48487db96d56Sopenharmony_ci])]) 48497db96d56Sopenharmony_ci 48507db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([inet_aton]) 48517db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([inet_ntoa]) 48527db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([inet_pton]) 48537db96d56Sopenharmony_cidnl not available in WASI yet 48547db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([getpeername]) 48557db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([getsockname]) 48567db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([accept]) 48577db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([bind]) 48587db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([connect]) 48597db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([listen]) 48607db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([recvfrom]) 48617db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([sendto]) 48627db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([setsockopt]) 48637db96d56Sopenharmony_ciPY_CHECK_SOCKET_FUNC([socket]) 48647db96d56Sopenharmony_ci 48657db96d56Sopenharmony_ci# On some systems, setgroups is in unistd.h, on others, in grp.h 48667db96d56Sopenharmony_ciPY_CHECK_FUNC([setgroups], [ 48677db96d56Sopenharmony_ci#include <unistd.h> 48687db96d56Sopenharmony_ci#ifdef HAVE_GRP_H 48697db96d56Sopenharmony_ci#include <grp.h> 48707db96d56Sopenharmony_ci#endif 48717db96d56Sopenharmony_ci]) 48727db96d56Sopenharmony_ci 48737db96d56Sopenharmony_ci# check for openpty, login_tty, and forkpty 48747db96d56Sopenharmony_ci 48757db96d56Sopenharmony_ciAC_CHECK_FUNCS(openpty,, 48767db96d56Sopenharmony_ci AC_CHECK_LIB(util,openpty, 48777db96d56Sopenharmony_ci [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"], 48787db96d56Sopenharmony_ci AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"]) 48797db96d56Sopenharmony_ci ) 48807db96d56Sopenharmony_ci) 48817db96d56Sopenharmony_ciAC_SEARCH_LIBS([login_tty], [util], 48827db96d56Sopenharmony_ci [AC_DEFINE([HAVE_LOGIN_TTY], [1], [Define to 1 if you have the `login_tty' function.])] 48837db96d56Sopenharmony_ci) 48847db96d56Sopenharmony_ciAC_CHECK_FUNCS(forkpty,, 48857db96d56Sopenharmony_ci AC_CHECK_LIB(util,forkpty, 48867db96d56Sopenharmony_ci [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"], 48877db96d56Sopenharmony_ci AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"]) 48887db96d56Sopenharmony_ci ) 48897db96d56Sopenharmony_ci) 48907db96d56Sopenharmony_ci 48917db96d56Sopenharmony_ci# check for long file support functions 48927db96d56Sopenharmony_ciAC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs) 48937db96d56Sopenharmony_ci 48947db96d56Sopenharmony_ciAC_REPLACE_FUNCS(dup2) 48957db96d56Sopenharmony_ciAC_CHECK_FUNCS(getpgrp, 48967db96d56Sopenharmony_ci AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])], 48977db96d56Sopenharmony_ci [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])], 48987db96d56Sopenharmony_ci []) 48997db96d56Sopenharmony_ci) 49007db96d56Sopenharmony_ciAC_CHECK_FUNCS(setpgrp, 49017db96d56Sopenharmony_ci AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])], 49027db96d56Sopenharmony_ci [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])], 49037db96d56Sopenharmony_ci []) 49047db96d56Sopenharmony_ci) 49057db96d56Sopenharmony_ci 49067db96d56Sopenharmony_cidnl We search for both crypt and crypt_r as one or the other may be defined 49077db96d56Sopenharmony_cidnl libxcrypt provides <crypt.h> and libcrypt with crypt_r() since 49087db96d56Sopenharmony_cidnl at least 3.1.1 from 2015. 49097db96d56Sopenharmony_cidnl FreeBSD defines crypt_r() in <unistd.h> 49107db96d56Sopenharmony_ciAH_TEMPLATE([HAVE_CRYPT_R], [Define if you have the crypt_r() function.]) 49117db96d56Sopenharmony_ci 49127db96d56Sopenharmony_ciPKG_CHECK_MODULES([LIBCRYPT], [libxcrypt >= 3.1.1], [ 49137db96d56Sopenharmony_ci AC_DEFINE([HAVE_CRYPT_R], [1]) 49147db96d56Sopenharmony_ci], [ 49157db96d56Sopenharmony_ci WITH_SAVE_ENV([ 49167db96d56Sopenharmony_ci AC_SEARCH_LIBS([crypt_r], [crypt], [ 49177db96d56Sopenharmony_ci AC_DEFINE([HAVE_CRYPT_R], [1]) 49187db96d56Sopenharmony_ci if test "$ac_cv_search_crypt_r" = "none required"; then 49197db96d56Sopenharmony_ci libcrypt= 49207db96d56Sopenharmony_ci else 49217db96d56Sopenharmony_ci libcrypt="$ac_cv_search_crypt_r" 49227db96d56Sopenharmony_ci fi 49237db96d56Sopenharmony_ci LIBCRYPT_LIBS=${LIBCRYPT_LIBS-$libcrypt} 49247db96d56Sopenharmony_ci ]) 49257db96d56Sopenharmony_ci ]) 49267db96d56Sopenharmony_ci]) 49277db96d56Sopenharmony_ci 49287db96d56Sopenharmony_ciWITH_SAVE_ENV([ 49297db96d56Sopenharmony_ci CPPFLAGS="$CPPFLAGS $LIBCRYPT_CFLAGS" 49307db96d56Sopenharmony_ci LIBS="$LIBCRYPT_LIBS $LIBS" 49317db96d56Sopenharmony_ci AC_CACHE_CHECK([for crypt or crypt_r], [ac_cv_crypt_crypt], [ 49327db96d56Sopenharmony_ci AC_LINK_IFELSE([AC_LANG_PROGRAM([ 49337db96d56Sopenharmony_ci #ifdef HAVE_CRYPT_H 49347db96d56Sopenharmony_ci #include <crypt.h> 49357db96d56Sopenharmony_ci #endif 49367db96d56Sopenharmony_ci #include <unistd.h> 49377db96d56Sopenharmony_ci ], [ 49387db96d56Sopenharmony_ci #ifdef HAVE_CRYPT_R 49397db96d56Sopenharmony_ci void *x = crypt_r; 49407db96d56Sopenharmony_ci #else 49417db96d56Sopenharmony_ci void *x = crypt; 49427db96d56Sopenharmony_ci #endif 49437db96d56Sopenharmony_ci ]) 49447db96d56Sopenharmony_ci ], [ac_cv_crypt_crypt=yes], [ac_cv_crypt_crypt=no]) 49457db96d56Sopenharmony_ci ]) 49467db96d56Sopenharmony_ci]) 49477db96d56Sopenharmony_ci 49487db96d56Sopenharmony_ciAC_CHECK_FUNCS(clock_gettime, [], [ 49497db96d56Sopenharmony_ci AC_CHECK_LIB(rt, clock_gettime, [ 49507db96d56Sopenharmony_ci LIBS="$LIBS -lrt" 49517db96d56Sopenharmony_ci AC_DEFINE(HAVE_CLOCK_GETTIME, 1) 49527db96d56Sopenharmony_ci AC_DEFINE(TIMEMODULE_LIB, [rt], 49537db96d56Sopenharmony_ci [Library needed by timemodule.c: librt may be needed for clock_gettime()]) 49547db96d56Sopenharmony_ci ]) 49557db96d56Sopenharmony_ci]) 49567db96d56Sopenharmony_ci 49577db96d56Sopenharmony_ciAC_CHECK_FUNCS(clock_getres, [], [ 49587db96d56Sopenharmony_ci AC_CHECK_LIB(rt, clock_getres, [ 49597db96d56Sopenharmony_ci AC_DEFINE(HAVE_CLOCK_GETRES, 1) 49607db96d56Sopenharmony_ci ]) 49617db96d56Sopenharmony_ci]) 49627db96d56Sopenharmony_ci 49637db96d56Sopenharmony_ciAC_CHECK_FUNCS(clock_settime, [], [ 49647db96d56Sopenharmony_ci AC_CHECK_LIB(rt, clock_settime, [ 49657db96d56Sopenharmony_ci AC_DEFINE(HAVE_CLOCK_SETTIME, 1) 49667db96d56Sopenharmony_ci ]) 49677db96d56Sopenharmony_ci]) 49687db96d56Sopenharmony_ci 49697db96d56Sopenharmony_ciAC_CHECK_FUNCS(clock_nanosleep, [], [ 49707db96d56Sopenharmony_ci AC_CHECK_LIB(rt, clock_nanosleep, [ 49717db96d56Sopenharmony_ci AC_DEFINE(HAVE_CLOCK_NANOSLEEP, 1) 49727db96d56Sopenharmony_ci ]) 49737db96d56Sopenharmony_ci]) 49747db96d56Sopenharmony_ci 49757db96d56Sopenharmony_ciAC_CHECK_FUNCS(nanosleep, [], [ 49767db96d56Sopenharmony_ci AC_CHECK_LIB(rt, nanosleep, [ 49777db96d56Sopenharmony_ci AC_DEFINE(HAVE_NANOSLEEP, 1) 49787db96d56Sopenharmony_ci ]) 49797db96d56Sopenharmony_ci]) 49807db96d56Sopenharmony_ci 49817db96d56Sopenharmony_ciAC_CACHE_CHECK([for major, minor, and makedev], [ac_cv_device_macros], [ 49827db96d56Sopenharmony_ciAC_LINK_IFELSE([AC_LANG_PROGRAM([[ 49837db96d56Sopenharmony_ci#if defined(MAJOR_IN_MKDEV) 49847db96d56Sopenharmony_ci#include <sys/mkdev.h> 49857db96d56Sopenharmony_ci#elif defined(MAJOR_IN_SYSMACROS) 49867db96d56Sopenharmony_ci#include <sys/sysmacros.h> 49877db96d56Sopenharmony_ci#else 49887db96d56Sopenharmony_ci#include <sys/types.h> 49897db96d56Sopenharmony_ci#endif 49907db96d56Sopenharmony_ci]], [[ 49917db96d56Sopenharmony_ci makedev(major(0),minor(0)); 49927db96d56Sopenharmony_ci]])],[ac_cv_device_macros=yes], [ac_cv_device_macros=no]) 49937db96d56Sopenharmony_ci]) 49947db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_device_macros], [yes], [ 49957db96d56Sopenharmony_ci AC_DEFINE(HAVE_DEVICE_MACROS, 1, 49967db96d56Sopenharmony_ci [Define to 1 if you have the device macros.]) 49977db96d56Sopenharmony_ci]) 49987db96d56Sopenharmony_ci 49997db96d56Sopenharmony_cidnl no longer used, now always defined for backwards compatibility 50007db96d56Sopenharmony_ciAC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1, 50017db96d56Sopenharmony_ci [Define if you can safely include both <sys/select.h> and <sys/time.h> 50027db96d56Sopenharmony_ci (which you can't on SCO ODT 3.0).]) 50037db96d56Sopenharmony_ci 50047db96d56Sopenharmony_ci# On OSF/1 V5.1, getaddrinfo is available, but a define 50057db96d56Sopenharmony_ci# for [no]getaddrinfo in netdb.h. 50067db96d56Sopenharmony_ciAC_CACHE_CHECK([for getaddrinfo], [ac_cv_func_getaddrinfo], [ 50077db96d56Sopenharmony_ciAC_LINK_IFELSE([AC_LANG_PROGRAM([[ 50087db96d56Sopenharmony_ci#include <sys/types.h> 50097db96d56Sopenharmony_ci#include <sys/socket.h> 50107db96d56Sopenharmony_ci#include <netdb.h> 50117db96d56Sopenharmony_ci#include <stdio.h> 50127db96d56Sopenharmony_ci]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])], 50137db96d56Sopenharmony_ci[ac_cv_func_getaddrinfo=yes], 50147db96d56Sopenharmony_ci[ac_cv_func_getaddrinfo=no]) 50157db96d56Sopenharmony_ci]) 50167db96d56Sopenharmony_ci 50177db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_func_getaddrinfo], [yes], [ 50187db96d56Sopenharmony_ci AC_CACHE_CHECK([getaddrinfo bug], [ac_cv_buggy_getaddrinfo], 50197db96d56Sopenharmony_ci AC_RUN_IFELSE([AC_LANG_SOURCE([[[ 50207db96d56Sopenharmony_ci#include <stdio.h> 50217db96d56Sopenharmony_ci#include <sys/types.h> 50227db96d56Sopenharmony_ci#include <netdb.h> 50237db96d56Sopenharmony_ci#include <string.h> 50247db96d56Sopenharmony_ci#include <sys/socket.h> 50257db96d56Sopenharmony_ci#include <netinet/in.h> 50267db96d56Sopenharmony_ci 50277db96d56Sopenharmony_ciint main(void) 50287db96d56Sopenharmony_ci{ 50297db96d56Sopenharmony_ci int passive, gaierr, inet4 = 0, inet6 = 0; 50307db96d56Sopenharmony_ci struct addrinfo hints, *ai, *aitop; 50317db96d56Sopenharmony_ci char straddr[INET6_ADDRSTRLEN], strport[16]; 50327db96d56Sopenharmony_ci 50337db96d56Sopenharmony_ci for (passive = 0; passive <= 1; passive++) { 50347db96d56Sopenharmony_ci memset(&hints, 0, sizeof(hints)); 50357db96d56Sopenharmony_ci hints.ai_family = AF_UNSPEC; 50367db96d56Sopenharmony_ci hints.ai_flags = passive ? AI_PASSIVE : 0; 50377db96d56Sopenharmony_ci hints.ai_socktype = SOCK_STREAM; 50387db96d56Sopenharmony_ci hints.ai_protocol = IPPROTO_TCP; 50397db96d56Sopenharmony_ci if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) { 50407db96d56Sopenharmony_ci (void)gai_strerror(gaierr); 50417db96d56Sopenharmony_ci goto bad; 50427db96d56Sopenharmony_ci } 50437db96d56Sopenharmony_ci for (ai = aitop; ai; ai = ai->ai_next) { 50447db96d56Sopenharmony_ci if (ai->ai_addr == NULL || 50457db96d56Sopenharmony_ci ai->ai_addrlen == 0 || 50467db96d56Sopenharmony_ci getnameinfo(ai->ai_addr, ai->ai_addrlen, 50477db96d56Sopenharmony_ci straddr, sizeof(straddr), strport, sizeof(strport), 50487db96d56Sopenharmony_ci NI_NUMERICHOST|NI_NUMERICSERV) != 0) { 50497db96d56Sopenharmony_ci goto bad; 50507db96d56Sopenharmony_ci } 50517db96d56Sopenharmony_ci switch (ai->ai_family) { 50527db96d56Sopenharmony_ci case AF_INET: 50537db96d56Sopenharmony_ci if (strcmp(strport, "54321") != 0) { 50547db96d56Sopenharmony_ci goto bad; 50557db96d56Sopenharmony_ci } 50567db96d56Sopenharmony_ci if (passive) { 50577db96d56Sopenharmony_ci if (strcmp(straddr, "0.0.0.0") != 0) { 50587db96d56Sopenharmony_ci goto bad; 50597db96d56Sopenharmony_ci } 50607db96d56Sopenharmony_ci } else { 50617db96d56Sopenharmony_ci if (strcmp(straddr, "127.0.0.1") != 0) { 50627db96d56Sopenharmony_ci goto bad; 50637db96d56Sopenharmony_ci } 50647db96d56Sopenharmony_ci } 50657db96d56Sopenharmony_ci inet4++; 50667db96d56Sopenharmony_ci break; 50677db96d56Sopenharmony_ci case AF_INET6: 50687db96d56Sopenharmony_ci if (strcmp(strport, "54321") != 0) { 50697db96d56Sopenharmony_ci goto bad; 50707db96d56Sopenharmony_ci } 50717db96d56Sopenharmony_ci if (passive) { 50727db96d56Sopenharmony_ci if (strcmp(straddr, "::") != 0) { 50737db96d56Sopenharmony_ci goto bad; 50747db96d56Sopenharmony_ci } 50757db96d56Sopenharmony_ci } else { 50767db96d56Sopenharmony_ci if (strcmp(straddr, "::1") != 0) { 50777db96d56Sopenharmony_ci goto bad; 50787db96d56Sopenharmony_ci } 50797db96d56Sopenharmony_ci } 50807db96d56Sopenharmony_ci inet6++; 50817db96d56Sopenharmony_ci break; 50827db96d56Sopenharmony_ci case AF_UNSPEC: 50837db96d56Sopenharmony_ci goto bad; 50847db96d56Sopenharmony_ci break; 50857db96d56Sopenharmony_ci default: 50867db96d56Sopenharmony_ci /* another family support? */ 50877db96d56Sopenharmony_ci break; 50887db96d56Sopenharmony_ci } 50897db96d56Sopenharmony_ci } 50907db96d56Sopenharmony_ci freeaddrinfo(aitop); 50917db96d56Sopenharmony_ci aitop = NULL; 50927db96d56Sopenharmony_ci } 50937db96d56Sopenharmony_ci 50947db96d56Sopenharmony_ci if (!(inet4 == 0 || inet4 == 2)) 50957db96d56Sopenharmony_ci goto bad; 50967db96d56Sopenharmony_ci if (!(inet6 == 0 || inet6 == 2)) 50977db96d56Sopenharmony_ci goto bad; 50987db96d56Sopenharmony_ci 50997db96d56Sopenharmony_ci if (aitop) 51007db96d56Sopenharmony_ci freeaddrinfo(aitop); 51017db96d56Sopenharmony_ci return 0; 51027db96d56Sopenharmony_ci 51037db96d56Sopenharmony_ci bad: 51047db96d56Sopenharmony_ci if (aitop) 51057db96d56Sopenharmony_ci freeaddrinfo(aitop); 51067db96d56Sopenharmony_ci return 1; 51077db96d56Sopenharmony_ci} 51087db96d56Sopenharmony_ci]]])], 51097db96d56Sopenharmony_ci[ac_cv_buggy_getaddrinfo=no], 51107db96d56Sopenharmony_ci[ac_cv_buggy_getaddrinfo=yes], 51117db96d56Sopenharmony_ci[ 51127db96d56Sopenharmony_ciif test "${enable_ipv6+set}" = set; then 51137db96d56Sopenharmony_ci ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6" 51147db96d56Sopenharmony_cielse 51157db96d56Sopenharmony_ci ac_cv_buggy_getaddrinfo=yes 51167db96d56Sopenharmony_cifi])) 51177db96d56Sopenharmony_ci 51187db96d56Sopenharmony_cidnl if ac_cv_func_getaddrinfo 51197db96d56Sopenharmony_ci]) 51207db96d56Sopenharmony_ci 51217db96d56Sopenharmony_ciif test "$ac_cv_func_getaddrinfo" = no -o "$ac_cv_buggy_getaddrinfo" = yes 51227db96d56Sopenharmony_cithen 51237db96d56Sopenharmony_ci AS_VAR_IF([ipv6], [yes], [ 51247db96d56Sopenharmony_ci AC_MSG_ERROR([m4_normalize([ 51257db96d56Sopenharmony_ci You must get working getaddrinfo() function 51267db96d56Sopenharmony_ci or pass the "--disable-ipv6" option to configure. 51277db96d56Sopenharmony_ci ])]) 51287db96d56Sopenharmony_ci ]) 51297db96d56Sopenharmony_cielse 51307db96d56Sopenharmony_ci AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.]) 51317db96d56Sopenharmony_cifi 51327db96d56Sopenharmony_ci 51337db96d56Sopenharmony_ciAC_CHECK_FUNCS(getnameinfo) 51347db96d56Sopenharmony_ci 51357db96d56Sopenharmony_cidnl autoconf 2.71 deprecates AC_HEADER_TIME, keep for backwards compatibility 51367db96d56Sopenharmony_cidnl TIME_WITH_SYS_TIME works on all supported systems that have sys/time.h 51377db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_header_sys_time_h], [yes], [ 51387db96d56Sopenharmony_ci AC_DEFINE([TIME_WITH_SYS_TIME], 1, [Define to 1 if you can safely include both <sys/time.h> and <time.h>.]) 51397db96d56Sopenharmony_ci]) 51407db96d56Sopenharmony_ci 51417db96d56Sopenharmony_ci# checks for structures 51427db96d56Sopenharmony_ciAC_STRUCT_TM 51437db96d56Sopenharmony_ciAC_STRUCT_TIMEZONE 51447db96d56Sopenharmony_ciAC_CHECK_MEMBERS([struct stat.st_rdev]) 51457db96d56Sopenharmony_ciAC_CHECK_MEMBERS([struct stat.st_blksize]) 51467db96d56Sopenharmony_ciAC_CHECK_MEMBERS([struct stat.st_flags]) 51477db96d56Sopenharmony_ciAC_CHECK_MEMBERS([struct stat.st_gen]) 51487db96d56Sopenharmony_ciAC_CHECK_MEMBERS([struct stat.st_birthtime]) 51497db96d56Sopenharmony_ciAC_CHECK_MEMBERS([struct stat.st_blocks]) 51507db96d56Sopenharmony_ciAC_CHECK_MEMBERS([struct passwd.pw_gecos, struct passwd.pw_passwd], [], [], [[ 51517db96d56Sopenharmony_ci #include <sys/types.h> 51527db96d56Sopenharmony_ci #include <pwd.h> 51537db96d56Sopenharmony_ci]]) 51547db96d56Sopenharmony_ci# Issue #21085: In Cygwin, siginfo_t does not have si_band field. 51557db96d56Sopenharmony_ciAC_CHECK_MEMBERS([siginfo_t.si_band], [], [], [[#include <signal.h>]]) 51567db96d56Sopenharmony_ci 51577db96d56Sopenharmony_ciAC_CACHE_CHECK([for time.h that defines altzone], [ac_cv_header_time_altzone], [ 51587db96d56Sopenharmony_ci AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])], 51597db96d56Sopenharmony_ci [ac_cv_header_time_altzone=yes], 51607db96d56Sopenharmony_ci [ac_cv_header_time_altzone=no]) 51617db96d56Sopenharmony_ci ]) 51627db96d56Sopenharmony_ciif test $ac_cv_header_time_altzone = yes; then 51637db96d56Sopenharmony_ci AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.]) 51647db96d56Sopenharmony_cifi 51657db96d56Sopenharmony_ci 51667db96d56Sopenharmony_ciAC_CACHE_CHECK([for addrinfo], [ac_cv_struct_addrinfo], 51677db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])], 51687db96d56Sopenharmony_ci [ac_cv_struct_addrinfo=yes], 51697db96d56Sopenharmony_ci [ac_cv_struct_addrinfo=no])) 51707db96d56Sopenharmony_ciif test $ac_cv_struct_addrinfo = yes; then 51717db96d56Sopenharmony_ci AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)]) 51727db96d56Sopenharmony_cifi 51737db96d56Sopenharmony_ci 51747db96d56Sopenharmony_ciAC_CACHE_CHECK([for sockaddr_storage], [ac_cv_struct_sockaddr_storage], 51757db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 51767db96d56Sopenharmony_ci# include <sys/types.h> 51777db96d56Sopenharmony_ci# include <sys/socket.h>]], [[struct sockaddr_storage s]])], 51787db96d56Sopenharmony_ci [ac_cv_struct_sockaddr_storage=yes], 51797db96d56Sopenharmony_ci [ac_cv_struct_sockaddr_storage=no])) 51807db96d56Sopenharmony_ciif test $ac_cv_struct_sockaddr_storage = yes; then 51817db96d56Sopenharmony_ci AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)]) 51827db96d56Sopenharmony_cifi 51837db96d56Sopenharmony_ci 51847db96d56Sopenharmony_ciAC_CACHE_CHECK([for sockaddr_alg], [ac_cv_struct_sockaddr_alg], 51857db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 51867db96d56Sopenharmony_ci# include <sys/types.h> 51877db96d56Sopenharmony_ci# include <sys/socket.h> 51887db96d56Sopenharmony_ci# include <linux/if_alg.h>]], [[struct sockaddr_alg s]])], 51897db96d56Sopenharmony_ci [ac_cv_struct_sockaddr_alg=yes], 51907db96d56Sopenharmony_ci [ac_cv_struct_sockaddr_alg=no])) 51917db96d56Sopenharmony_ciif test $ac_cv_struct_sockaddr_alg = yes; then 51927db96d56Sopenharmony_ci AC_DEFINE(HAVE_SOCKADDR_ALG, 1, [struct sockaddr_alg (linux/if_alg.h)]) 51937db96d56Sopenharmony_cifi 51947db96d56Sopenharmony_ci 51957db96d56Sopenharmony_ci# checks for compiler characteristics 51967db96d56Sopenharmony_ci 51977db96d56Sopenharmony_ciAC_C_CONST 51987db96d56Sopenharmony_ci 51997db96d56Sopenharmony_ciAC_CACHE_CHECK([for working signed char], [ac_cv_working_signed_char_c], [ 52007db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])], 52017db96d56Sopenharmony_ci [ac_cv_working_signed_char_c=yes], [ac_cv_working_signed_char_c=no]) 52027db96d56Sopenharmony_ci]) 52037db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_working_signed_char_c], [no], [ 52047db96d56Sopenharmony_ci AC_DEFINE(signed, , [Define to empty if the keyword does not work.]) 52057db96d56Sopenharmony_ci]) 52067db96d56Sopenharmony_ci 52077db96d56Sopenharmony_ciAC_CACHE_CHECK([for prototypes], [ac_cv_function_prototypes], [ 52087db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])], 52097db96d56Sopenharmony_ci [ac_cv_function_prototypes=yes], [ac_cv_function_prototypes=no]) 52107db96d56Sopenharmony_ci]) 52117db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_function_prototypes], [yes], [ 52127db96d56Sopenharmony_ci AC_DEFINE(HAVE_PROTOTYPES, 1, 52137db96d56Sopenharmony_ci [Define if your compiler supports function prototype]) 52147db96d56Sopenharmony_ci]) 52157db96d56Sopenharmony_ci 52167db96d56Sopenharmony_ciworks=no 52177db96d56Sopenharmony_ciAC_CACHE_CHECK([for variable length prototypes and stdarg.h], [ac_cv_stdarg_prototypes], [ 52187db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 52197db96d56Sopenharmony_ci#include <stdarg.h> 52207db96d56Sopenharmony_ciint foo(int x, ...) { 52217db96d56Sopenharmony_ci va_list va; 52227db96d56Sopenharmony_ci va_start(va, x); 52237db96d56Sopenharmony_ci va_arg(va, int); 52247db96d56Sopenharmony_ci va_arg(va, char *); 52257db96d56Sopenharmony_ci va_arg(va, double); 52267db96d56Sopenharmony_ci return 0; 52277db96d56Sopenharmony_ci} 52287db96d56Sopenharmony_ci]], [[return foo(10, "", 3.14);]])], 52297db96d56Sopenharmony_ci [ac_cv_stdarg_prototypes=yes], [ac_cv_stdarg_prototypes=no]) 52307db96d56Sopenharmony_ci]) 52317db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_stdarg_prototypes], [yes], [ 52327db96d56Sopenharmony_ci AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1, 52337db96d56Sopenharmony_ci [Define if your compiler supports variable length function prototypes 52347db96d56Sopenharmony_ci (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>]) 52357db96d56Sopenharmony_ci]) 52367db96d56Sopenharmony_ci 52377db96d56Sopenharmony_ci 52387db96d56Sopenharmony_ci# check for socketpair 52397db96d56Sopenharmony_ciPY_CHECK_FUNC([socketpair], [ 52407db96d56Sopenharmony_ci#include <sys/types.h> 52417db96d56Sopenharmony_ci#include <sys/socket.h> 52427db96d56Sopenharmony_ci]) 52437db96d56Sopenharmony_ci 52447db96d56Sopenharmony_ci# check if sockaddr has sa_len member 52457db96d56Sopenharmony_ciAC_CACHE_CHECK([if sockaddr has sa_len member], [ac_cv_struct_sockaddr_sa_len], [ 52467db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> 52477db96d56Sopenharmony_ci#include <sys/socket.h>]], [[struct sockaddr x; 52487db96d56Sopenharmony_cix.sa_len = 0;]])], 52497db96d56Sopenharmony_ci [ac_cv_struct_sockaddr_sa_len=yes], [ac_cv_struct_sockaddr_sa_len=no]) 52507db96d56Sopenharmony_ci]) 52517db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_struct_sockaddr_sa_len], [yes], [ 52527db96d56Sopenharmony_ci AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]) 52537db96d56Sopenharmony_ci]) 52547db96d56Sopenharmony_ci 52557db96d56Sopenharmony_ci# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-( 52567db96d56Sopenharmony_ciAH_TEMPLATE(HAVE_GETHOSTBYNAME_R, 52577db96d56Sopenharmony_ci [Define this if you have some version of gethostbyname_r()]) 52587db96d56Sopenharmony_ci 52597db96d56Sopenharmony_ciAC_CHECK_FUNC(gethostbyname_r, [ 52607db96d56Sopenharmony_ci AC_DEFINE(HAVE_GETHOSTBYNAME_R) 52617db96d56Sopenharmony_ci AC_MSG_CHECKING([gethostbyname_r with 6 args]) 52627db96d56Sopenharmony_ci OLD_CFLAGS=$CFLAGS 52637db96d56Sopenharmony_ci CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS" 52647db96d56Sopenharmony_ci AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 52657db96d56Sopenharmony_ci# include <netdb.h> 52667db96d56Sopenharmony_ci ]], [[ 52677db96d56Sopenharmony_ci char *name; 52687db96d56Sopenharmony_ci struct hostent *he, *res; 52697db96d56Sopenharmony_ci char buffer[2048]; 52707db96d56Sopenharmony_ci int buflen = 2048; 52717db96d56Sopenharmony_ci int h_errnop; 52727db96d56Sopenharmony_ci 52737db96d56Sopenharmony_ci (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop) 52747db96d56Sopenharmony_ci ]])],[ 52757db96d56Sopenharmony_ci AC_DEFINE(HAVE_GETHOSTBYNAME_R) 52767db96d56Sopenharmony_ci AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1, 52777db96d56Sopenharmony_ci [Define this if you have the 6-arg version of gethostbyname_r().]) 52787db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 52797db96d56Sopenharmony_ci ],[ 52807db96d56Sopenharmony_ci AC_MSG_RESULT(no) 52817db96d56Sopenharmony_ci AC_MSG_CHECKING([gethostbyname_r with 5 args]) 52827db96d56Sopenharmony_ci AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 52837db96d56Sopenharmony_ci# include <netdb.h> 52847db96d56Sopenharmony_ci ]], [[ 52857db96d56Sopenharmony_ci char *name; 52867db96d56Sopenharmony_ci struct hostent *he; 52877db96d56Sopenharmony_ci char buffer[2048]; 52887db96d56Sopenharmony_ci int buflen = 2048; 52897db96d56Sopenharmony_ci int h_errnop; 52907db96d56Sopenharmony_ci 52917db96d56Sopenharmony_ci (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop) 52927db96d56Sopenharmony_ci ]])], 52937db96d56Sopenharmony_ci [ 52947db96d56Sopenharmony_ci AC_DEFINE(HAVE_GETHOSTBYNAME_R) 52957db96d56Sopenharmony_ci AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1, 52967db96d56Sopenharmony_ci [Define this if you have the 5-arg version of gethostbyname_r().]) 52977db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 52987db96d56Sopenharmony_ci ], [ 52997db96d56Sopenharmony_ci AC_MSG_RESULT(no) 53007db96d56Sopenharmony_ci AC_MSG_CHECKING([gethostbyname_r with 3 args]) 53017db96d56Sopenharmony_ci AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 53027db96d56Sopenharmony_ci# include <netdb.h> 53037db96d56Sopenharmony_ci ]], [[ 53047db96d56Sopenharmony_ci char *name; 53057db96d56Sopenharmony_ci struct hostent *he; 53067db96d56Sopenharmony_ci struct hostent_data data; 53077db96d56Sopenharmony_ci 53087db96d56Sopenharmony_ci (void) gethostbyname_r(name, he, &data); 53097db96d56Sopenharmony_ci ]])], 53107db96d56Sopenharmony_ci [ 53117db96d56Sopenharmony_ci AC_DEFINE(HAVE_GETHOSTBYNAME_R) 53127db96d56Sopenharmony_ci AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1, 53137db96d56Sopenharmony_ci [Define this if you have the 3-arg version of gethostbyname_r().]) 53147db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 53157db96d56Sopenharmony_ci ], [ 53167db96d56Sopenharmony_ci AC_MSG_RESULT(no) 53177db96d56Sopenharmony_ci ]) 53187db96d56Sopenharmony_ci ]) 53197db96d56Sopenharmony_ci ]) 53207db96d56Sopenharmony_ci CFLAGS=$OLD_CFLAGS 53217db96d56Sopenharmony_ci], [ 53227db96d56Sopenharmony_ci AC_CHECK_FUNCS(gethostbyname) 53237db96d56Sopenharmony_ci]) 53247db96d56Sopenharmony_ciAC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG) 53257db96d56Sopenharmony_ciAC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG) 53267db96d56Sopenharmony_ciAC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG) 53277db96d56Sopenharmony_ciAC_SUBST(HAVE_GETHOSTBYNAME_R) 53287db96d56Sopenharmony_ciAC_SUBST(HAVE_GETHOSTBYNAME) 53297db96d56Sopenharmony_ci 53307db96d56Sopenharmony_ci# checks for system services 53317db96d56Sopenharmony_ci# (none yet) 53327db96d56Sopenharmony_ci 53337db96d56Sopenharmony_ci# Linux requires this for correct f.p. operations 53347db96d56Sopenharmony_ciAC_CHECK_FUNC(__fpu_control, 53357db96d56Sopenharmony_ci [], 53367db96d56Sopenharmony_ci [AC_CHECK_LIB(ieee, __fpu_control) 53377db96d56Sopenharmony_ci]) 53387db96d56Sopenharmony_ci 53397db96d56Sopenharmony_ci# check for --with-libm=... 53407db96d56Sopenharmony_ciAC_SUBST(LIBM) 53417db96d56Sopenharmony_cicase $ac_sys_system in 53427db96d56Sopenharmony_ciDarwin) ;; 53437db96d56Sopenharmony_ci*) LIBM=-lm 53447db96d56Sopenharmony_ciesac 53457db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-libm=STRING) 53467db96d56Sopenharmony_ciAC_ARG_WITH(libm, 53477db96d56Sopenharmony_ci AS_HELP_STRING([--with-libm=STRING], [override libm math library to STRING (default is system-dependent)]), 53487db96d56Sopenharmony_ci[ 53497db96d56Sopenharmony_ciif test "$withval" = no 53507db96d56Sopenharmony_cithen LIBM= 53517db96d56Sopenharmony_ci AC_MSG_RESULT(force LIBM empty) 53527db96d56Sopenharmony_cielif test "$withval" != yes 53537db96d56Sopenharmony_cithen LIBM=$withval 53547db96d56Sopenharmony_ci AC_MSG_RESULT(set LIBM="$withval") 53557db96d56Sopenharmony_cielse AC_MSG_ERROR([proper usage is --with-libm=STRING]) 53567db96d56Sopenharmony_cifi], 53577db96d56Sopenharmony_ci[AC_MSG_RESULT(default LIBM="$LIBM")]) 53587db96d56Sopenharmony_ci 53597db96d56Sopenharmony_ci# check for --with-libc=... 53607db96d56Sopenharmony_ciAC_SUBST(LIBC) 53617db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-libc=STRING) 53627db96d56Sopenharmony_ciAC_ARG_WITH(libc, 53637db96d56Sopenharmony_ci AS_HELP_STRING([--with-libc=STRING], [override libc C library to STRING (default is system-dependent)]), 53647db96d56Sopenharmony_ci[ 53657db96d56Sopenharmony_ciif test "$withval" = no 53667db96d56Sopenharmony_cithen LIBC= 53677db96d56Sopenharmony_ci AC_MSG_RESULT(force LIBC empty) 53687db96d56Sopenharmony_cielif test "$withval" != yes 53697db96d56Sopenharmony_cithen LIBC=$withval 53707db96d56Sopenharmony_ci AC_MSG_RESULT(set LIBC="$withval") 53717db96d56Sopenharmony_cielse AC_MSG_ERROR([proper usage is --with-libc=STRING]) 53727db96d56Sopenharmony_cifi], 53737db96d56Sopenharmony_ci[AC_MSG_RESULT(default LIBC="$LIBC")]) 53747db96d56Sopenharmony_ci 53757db96d56Sopenharmony_ci# ************************************** 53767db96d56Sopenharmony_ci# * Check for gcc x64 inline assembler * 53777db96d56Sopenharmony_ci# ************************************** 53787db96d56Sopenharmony_ci 53797db96d56Sopenharmony_ci 53807db96d56Sopenharmony_ciAC_CACHE_CHECK([for x64 gcc inline assembler], [ac_cv_gcc_asm_for_x64], [ 53817db96d56Sopenharmony_ciAC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ 53827db96d56Sopenharmony_ci __asm__ __volatile__ ("movq %rcx, %rax"); 53837db96d56Sopenharmony_ci]])],[ac_cv_gcc_asm_for_x64=yes],[ac_cv_gcc_asm_for_x64=no]) 53847db96d56Sopenharmony_ci]) 53857db96d56Sopenharmony_ci 53867db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_gcc_asm_for_x64], [yes], [ 53877db96d56Sopenharmony_ci AC_DEFINE(HAVE_GCC_ASM_FOR_X64, 1, 53887db96d56Sopenharmony_ci [Define if we can use x64 gcc inline assembler]) 53897db96d56Sopenharmony_ci]) 53907db96d56Sopenharmony_ci 53917db96d56Sopenharmony_ci# ************************************************** 53927db96d56Sopenharmony_ci# * Check for various properties of floating point * 53937db96d56Sopenharmony_ci# ************************************************** 53947db96d56Sopenharmony_ci 53957db96d56Sopenharmony_ciAX_C_FLOAT_WORDS_BIGENDIAN 53967db96d56Sopenharmony_ciif test "$ax_cv_c_float_words_bigendian" = "yes" 53977db96d56Sopenharmony_cithen 53987db96d56Sopenharmony_ci AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1, 53997db96d56Sopenharmony_ci [Define if C doubles are 64-bit IEEE 754 binary format, stored 54007db96d56Sopenharmony_ci with the most significant byte first]) 54017db96d56Sopenharmony_cielif test "$ax_cv_c_float_words_bigendian" = "no" 54027db96d56Sopenharmony_cithen 54037db96d56Sopenharmony_ci AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1, 54047db96d56Sopenharmony_ci [Define if C doubles are 64-bit IEEE 754 binary format, stored 54057db96d56Sopenharmony_ci with the least significant byte first]) 54067db96d56Sopenharmony_cielse 54077db96d56Sopenharmony_ci # Some ARM platforms use a mixed-endian representation for doubles. 54087db96d56Sopenharmony_ci # While Python doesn't currently have full support for these platforms 54097db96d56Sopenharmony_ci # (see e.g., issue 1762561), we can at least make sure that float <-> string 54107db96d56Sopenharmony_ci # conversions work. 54117db96d56Sopenharmony_ci # FLOAT_WORDS_BIGENDIAN doesnt actually detect this case, but if it's not big 54127db96d56Sopenharmony_ci # or little, then it must be this? 54137db96d56Sopenharmony_ci AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1, 54147db96d56Sopenharmony_ci [Define if C doubles are 64-bit IEEE 754 binary format, stored 54157db96d56Sopenharmony_ci in ARM mixed-endian order (byte order 45670123)]) 54167db96d56Sopenharmony_cifi 54177db96d56Sopenharmony_ci 54187db96d56Sopenharmony_ci# The short float repr introduced in Python 3.1 requires the 54197db96d56Sopenharmony_ci# correctly-rounded string <-> double conversion functions from 54207db96d56Sopenharmony_ci# Python/dtoa.c, which in turn require that the FPU uses 53-bit 54217db96d56Sopenharmony_ci# rounding; this is a problem on x86, where the x87 FPU has a default 54227db96d56Sopenharmony_ci# rounding precision of 64 bits. For gcc/x86, we can fix this by 54237db96d56Sopenharmony_ci# using inline assembler to get and set the x87 FPU control word. 54247db96d56Sopenharmony_ci 54257db96d56Sopenharmony_ci# This inline assembler syntax may also work for suncc and icc, 54267db96d56Sopenharmony_ci# so we try it on all platforms. 54277db96d56Sopenharmony_ci 54287db96d56Sopenharmony_ciAC_CACHE_CHECK([whether we can use gcc inline assembler to get and set x87 control word], [ac_cv_gcc_asm_for_x87], [ 54297db96d56Sopenharmony_ciAC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[ 54307db96d56Sopenharmony_ci unsigned short cw; 54317db96d56Sopenharmony_ci __asm__ __volatile__ ("fnstcw %0" : "=m" (cw)); 54327db96d56Sopenharmony_ci __asm__ __volatile__ ("fldcw %0" : : "m" (cw)); 54337db96d56Sopenharmony_ci]])],[ac_cv_gcc_asm_for_x87=yes],[ac_cv_gcc_asm_for_x87=no]) 54347db96d56Sopenharmony_ci]) 54357db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_gcc_asm_for_x87], [yes], [ 54367db96d56Sopenharmony_ci AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1, 54377db96d56Sopenharmony_ci [Define if we can use gcc inline assembler to get and set x87 control word]) 54387db96d56Sopenharmony_ci]) 54397db96d56Sopenharmony_ci 54407db96d56Sopenharmony_ciAC_CACHE_CHECK([whether we can use gcc inline assembler to get and set mc68881 fpcr], [ac_cv_gcc_asm_for_mc68881], [ 54417db96d56Sopenharmony_ciAC_LINK_IFELSE( [AC_LANG_PROGRAM([[]], [[ 54427db96d56Sopenharmony_ci unsigned int fpcr; 54437db96d56Sopenharmony_ci __asm__ __volatile__ ("fmove.l %%fpcr,%0" : "=g" (fpcr)); 54447db96d56Sopenharmony_ci __asm__ __volatile__ ("fmove.l %0,%%fpcr" : : "g" (fpcr)); 54457db96d56Sopenharmony_ci]])],[ac_cv_gcc_asm_for_mc68881=yes],[ac_cv_gcc_asm_for_mc68881=no]) 54467db96d56Sopenharmony_ci]) 54477db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_gcc_asm_for_mc68881], [yes], [ 54487db96d56Sopenharmony_ci AC_DEFINE(HAVE_GCC_ASM_FOR_MC68881, 1, 54497db96d56Sopenharmony_ci [Define if we can use gcc inline assembler to get and set mc68881 fpcr]) 54507db96d56Sopenharmony_ci]) 54517db96d56Sopenharmony_ci 54527db96d56Sopenharmony_ci# Detect whether system arithmetic is subject to x87-style double 54537db96d56Sopenharmony_ci# rounding issues. The result of this test has little meaning on non 54547db96d56Sopenharmony_ci# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding 54557db96d56Sopenharmony_ci# mode is round-to-nearest and double rounding issues are present, and 54567db96d56Sopenharmony_ci# 0 otherwise. See https://github.com/python/cpython/issues/47186 for more info. 54577db96d56Sopenharmony_ciAC_CACHE_CHECK([for x87-style double rounding], [ac_cv_x87_double_rounding], [ 54587db96d56Sopenharmony_ci# $BASECFLAGS may affect the result 54597db96d56Sopenharmony_ciac_save_cc="$CC" 54607db96d56Sopenharmony_ciCC="$CC $BASECFLAGS" 54617db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 54627db96d56Sopenharmony_ci#include <stdlib.h> 54637db96d56Sopenharmony_ci#include <math.h> 54647db96d56Sopenharmony_ciint main(void) { 54657db96d56Sopenharmony_ci volatile double x, y, z; 54667db96d56Sopenharmony_ci /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */ 54677db96d56Sopenharmony_ci x = 0.99999999999999989; /* 1-2**-53 */ 54687db96d56Sopenharmony_ci y = 1./x; 54697db96d56Sopenharmony_ci if (y != 1.) 54707db96d56Sopenharmony_ci exit(0); 54717db96d56Sopenharmony_ci /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */ 54727db96d56Sopenharmony_ci x = 1e16; 54737db96d56Sopenharmony_ci y = 2.99999; 54747db96d56Sopenharmony_ci z = x + y; 54757db96d56Sopenharmony_ci if (z != 1e16+4.) 54767db96d56Sopenharmony_ci exit(0); 54777db96d56Sopenharmony_ci /* both tests show evidence of double rounding */ 54787db96d56Sopenharmony_ci exit(1); 54797db96d56Sopenharmony_ci} 54807db96d56Sopenharmony_ci]])], 54817db96d56Sopenharmony_ci[ac_cv_x87_double_rounding=no], 54827db96d56Sopenharmony_ci[ac_cv_x87_double_rounding=yes], 54837db96d56Sopenharmony_ci[ac_cv_x87_double_rounding=no]) 54847db96d56Sopenharmony_ciCC="$ac_save_cc" 54857db96d56Sopenharmony_ci]) 54867db96d56Sopenharmony_ci 54877db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_x87_double_rounding], [yes], [ 54887db96d56Sopenharmony_ci AC_DEFINE(X87_DOUBLE_ROUNDING, 1, 54897db96d56Sopenharmony_ci [Define if arithmetic is subject to x87-style double rounding issue]) 54907db96d56Sopenharmony_ci]) 54917db96d56Sopenharmony_ci 54927db96d56Sopenharmony_ci# ************************************ 54937db96d56Sopenharmony_ci# * Check for mathematical functions * 54947db96d56Sopenharmony_ci# ************************************ 54957db96d56Sopenharmony_ci 54967db96d56Sopenharmony_ciLIBS_SAVE=$LIBS 54977db96d56Sopenharmony_ciLIBS="$LIBS $LIBM" 54987db96d56Sopenharmony_ci 54997db96d56Sopenharmony_ciAC_CHECK_FUNCS( 55007db96d56Sopenharmony_ci [acosh asinh atanh erf erfc expm1 log1p log2], 55017db96d56Sopenharmony_ci [], 55027db96d56Sopenharmony_ci [AC_MSG_ERROR([Python requires C99 compatible libm])] 55037db96d56Sopenharmony_ci) 55047db96d56Sopenharmony_ciLIBS=$LIBS_SAVE 55057db96d56Sopenharmony_ci 55067db96d56Sopenharmony_cidnl For multiprocessing module, check that sem_open 55077db96d56Sopenharmony_cidnl actually works. For FreeBSD versions <= 7.2, 55087db96d56Sopenharmony_cidnl the kernel module that provides POSIX semaphores 55097db96d56Sopenharmony_cidnl isn't loaded by default, so an attempt to call 55107db96d56Sopenharmony_cidnl sem_open results in a 'Signal 12' error. 55117db96d56Sopenharmony_ciAC_CACHE_CHECK([whether POSIX semaphores are enabled], [ac_cv_posix_semaphores_enabled], 55127db96d56Sopenharmony_ci AC_RUN_IFELSE([ 55137db96d56Sopenharmony_ci AC_LANG_SOURCE([ 55147db96d56Sopenharmony_ci #include <unistd.h> 55157db96d56Sopenharmony_ci #include <fcntl.h> 55167db96d56Sopenharmony_ci #include <stdio.h> 55177db96d56Sopenharmony_ci #include <semaphore.h> 55187db96d56Sopenharmony_ci #include <sys/stat.h> 55197db96d56Sopenharmony_ci 55207db96d56Sopenharmony_ci int main(void) { 55217db96d56Sopenharmony_ci sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0); 55227db96d56Sopenharmony_ci if (a == SEM_FAILED) { 55237db96d56Sopenharmony_ci perror("sem_open"); 55247db96d56Sopenharmony_ci return 1; 55257db96d56Sopenharmony_ci } 55267db96d56Sopenharmony_ci sem_close(a); 55277db96d56Sopenharmony_ci sem_unlink("/autoconf"); 55287db96d56Sopenharmony_ci return 0; 55297db96d56Sopenharmony_ci } 55307db96d56Sopenharmony_ci ]) 55317db96d56Sopenharmony_ci ], 55327db96d56Sopenharmony_ci [ac_cv_posix_semaphores_enabled=yes], 55337db96d56Sopenharmony_ci [ac_cv_posix_semaphores_enabled=no], 55347db96d56Sopenharmony_ci [ac_cv_posix_semaphores_enabled=yes]) 55357db96d56Sopenharmony_ci) 55367db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_posix_semaphores_enabled], [no], [ 55377db96d56Sopenharmony_ci AC_DEFINE( 55387db96d56Sopenharmony_ci [POSIX_SEMAPHORES_NOT_ENABLED], [1], 55397db96d56Sopenharmony_ci [Define if POSIX semaphores aren't enabled on your system] 55407db96d56Sopenharmony_ci ) 55417db96d56Sopenharmony_ci]) 55427db96d56Sopenharmony_ci 55437db96d56Sopenharmony_cidnl Multiprocessing check for broken sem_getvalue 55447db96d56Sopenharmony_ciAC_CACHE_CHECK([for broken sem_getvalue], [ac_cv_broken_sem_getvalue], 55457db96d56Sopenharmony_ci AC_RUN_IFELSE([ 55467db96d56Sopenharmony_ci AC_LANG_SOURCE([ 55477db96d56Sopenharmony_ci #include <unistd.h> 55487db96d56Sopenharmony_ci #include <fcntl.h> 55497db96d56Sopenharmony_ci #include <stdio.h> 55507db96d56Sopenharmony_ci #include <semaphore.h> 55517db96d56Sopenharmony_ci #include <sys/stat.h> 55527db96d56Sopenharmony_ci 55537db96d56Sopenharmony_ci int main(void){ 55547db96d56Sopenharmony_ci sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0); 55557db96d56Sopenharmony_ci int count; 55567db96d56Sopenharmony_ci int res; 55577db96d56Sopenharmony_ci if(a==SEM_FAILED){ 55587db96d56Sopenharmony_ci perror("sem_open"); 55597db96d56Sopenharmony_ci return 1; 55607db96d56Sopenharmony_ci 55617db96d56Sopenharmony_ci } 55627db96d56Sopenharmony_ci res = sem_getvalue(a, &count); 55637db96d56Sopenharmony_ci sem_close(a); 55647db96d56Sopenharmony_ci sem_unlink("/autocftw"); 55657db96d56Sopenharmony_ci return res==-1 ? 1 : 0; 55667db96d56Sopenharmony_ci } 55677db96d56Sopenharmony_ci ]) 55687db96d56Sopenharmony_ci ], 55697db96d56Sopenharmony_ci [ac_cv_broken_sem_getvalue=no], 55707db96d56Sopenharmony_ci [ac_cv_broken_sem_getvalue=yes], 55717db96d56Sopenharmony_ci [ac_cv_broken_sem_getvalue=yes]) 55727db96d56Sopenharmony_ci) 55737db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_broken_sem_getvalue], [yes], [ 55747db96d56Sopenharmony_ci AC_DEFINE( 55757db96d56Sopenharmony_ci [HAVE_BROKEN_SEM_GETVALUE], [1], 55767db96d56Sopenharmony_ci [define to 1 if your sem_getvalue is broken.] 55777db96d56Sopenharmony_ci ) 55787db96d56Sopenharmony_ci]) 55797db96d56Sopenharmony_ci 55807db96d56Sopenharmony_ciAC_CHECK_DECLS([RTLD_LAZY, RTLD_NOW, RTLD_GLOBAL, RTLD_LOCAL, RTLD_NODELETE, RTLD_NOLOAD, RTLD_DEEPBIND, RTLD_MEMBER], [], [], [[#include <dlfcn.h>]]) 55817db96d56Sopenharmony_ci 55827db96d56Sopenharmony_ci# determine what size digit to use for Python's longs 55837db96d56Sopenharmony_ciAC_MSG_CHECKING([digit size for Python's longs]) 55847db96d56Sopenharmony_ciAC_ARG_ENABLE(big-digits, 55857db96d56Sopenharmony_ciAS_HELP_STRING([--enable-big-digits@<:@=15|30@:>@],[use big digits (30 or 15 bits) for Python longs (default is 30)]]), 55867db96d56Sopenharmony_ci[case $enable_big_digits in 55877db96d56Sopenharmony_ciyes) 55887db96d56Sopenharmony_ci enable_big_digits=30 ;; 55897db96d56Sopenharmony_cino) 55907db96d56Sopenharmony_ci enable_big_digits=15 ;; 55917db96d56Sopenharmony_ci[15|30]) 55927db96d56Sopenharmony_ci ;; 55937db96d56Sopenharmony_ci*) 55947db96d56Sopenharmony_ci AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;; 55957db96d56Sopenharmony_ciesac 55967db96d56Sopenharmony_ciAC_MSG_RESULT($enable_big_digits) 55977db96d56Sopenharmony_ciAC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits]) 55987db96d56Sopenharmony_ci], 55997db96d56Sopenharmony_ci[AC_MSG_RESULT(no value specified)]) 56007db96d56Sopenharmony_ci 56017db96d56Sopenharmony_ci# check for wchar.h 56027db96d56Sopenharmony_ciAC_CHECK_HEADER(wchar.h, [ 56037db96d56Sopenharmony_ci AC_DEFINE(HAVE_WCHAR_H, 1, 56047db96d56Sopenharmony_ci [Define if the compiler provides a wchar.h header file.]) 56057db96d56Sopenharmony_ci wchar_h="yes" 56067db96d56Sopenharmony_ci], 56077db96d56Sopenharmony_ciwchar_h="no" 56087db96d56Sopenharmony_ci) 56097db96d56Sopenharmony_ci 56107db96d56Sopenharmony_ci# determine wchar_t size 56117db96d56Sopenharmony_ciif test "$wchar_h" = yes 56127db96d56Sopenharmony_cithen 56137db96d56Sopenharmony_ci AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>]) 56147db96d56Sopenharmony_cifi 56157db96d56Sopenharmony_ci 56167db96d56Sopenharmony_ci# check whether wchar_t is signed or not 56177db96d56Sopenharmony_ciif test "$wchar_h" = yes 56187db96d56Sopenharmony_cithen 56197db96d56Sopenharmony_ci # check whether wchar_t is signed or not 56207db96d56Sopenharmony_ci AC_CACHE_CHECK([whether wchar_t is signed], [ac_cv_wchar_t_signed], [ 56217db96d56Sopenharmony_ci AC_RUN_IFELSE([AC_LANG_SOURCE([[ 56227db96d56Sopenharmony_ci #include <wchar.h> 56237db96d56Sopenharmony_ci int main() 56247db96d56Sopenharmony_ci { 56257db96d56Sopenharmony_ci /* Success: exit code 0 */ 56267db96d56Sopenharmony_ci return ((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); 56277db96d56Sopenharmony_ci } 56287db96d56Sopenharmony_ci ]])], 56297db96d56Sopenharmony_ci [ac_cv_wchar_t_signed=yes], 56307db96d56Sopenharmony_ci [ac_cv_wchar_t_signed=no], 56317db96d56Sopenharmony_ci [ac_cv_wchar_t_signed=yes])]) 56327db96d56Sopenharmony_cifi 56337db96d56Sopenharmony_ci 56347db96d56Sopenharmony_ciAC_MSG_CHECKING(whether wchar_t is usable) 56357db96d56Sopenharmony_ci# wchar_t is only usable if it maps to an unsigned type 56367db96d56Sopenharmony_ciif test "$ac_cv_sizeof_wchar_t" -ge 2 \ 56377db96d56Sopenharmony_ci -a "$ac_cv_wchar_t_signed" = "no" 56387db96d56Sopenharmony_cithen 56397db96d56Sopenharmony_ci AC_DEFINE(HAVE_USABLE_WCHAR_T, 1, 56407db96d56Sopenharmony_ci [Define if you have a useable wchar_t type defined in wchar.h; useable 56417db96d56Sopenharmony_ci means wchar_t must be an unsigned type with at least 16 bits. (see 56427db96d56Sopenharmony_ci Include/unicodeobject.h).]) 56437db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 56447db96d56Sopenharmony_cielse 56457db96d56Sopenharmony_ci AC_MSG_RESULT(no) 56467db96d56Sopenharmony_cifi 56477db96d56Sopenharmony_ci 56487db96d56Sopenharmony_cicase $ac_sys_system/$ac_sys_release in 56497db96d56Sopenharmony_ciSunOS/*) 56507db96d56Sopenharmony_ci if test -f /etc/os-release; then 56517db96d56Sopenharmony_ci OS_NAME=$(awk -F= '/^NAME=/ {print substr($2,2,length($2)-2)}' /etc/os-release) 56527db96d56Sopenharmony_ci if test "x$OS_NAME" = "xOracle Solaris"; then 56537db96d56Sopenharmony_ci # bpo-43667: In Oracle Solaris, the internal form of wchar_t in 56547db96d56Sopenharmony_ci # non-Unicode locales is not Unicode and hence cannot be used directly. 56557db96d56Sopenharmony_ci # https://docs.oracle.com/cd/E37838_01/html/E61053/gmwke.html 56567db96d56Sopenharmony_ci AC_DEFINE(HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION, 1, 56577db96d56Sopenharmony_ci [Define if the internal form of wchar_t in non-Unicode locales 56587db96d56Sopenharmony_ci is not Unicode.]) 56597db96d56Sopenharmony_ci fi 56607db96d56Sopenharmony_ci fi 56617db96d56Sopenharmony_ci ;; 56627db96d56Sopenharmony_ciesac 56637db96d56Sopenharmony_ci 56647db96d56Sopenharmony_ci# check for endianness 56657db96d56Sopenharmony_ciAC_C_BIGENDIAN 56667db96d56Sopenharmony_ci 56677db96d56Sopenharmony_ci# ABI version string for Python extension modules. This appears between the 56687db96d56Sopenharmony_ci# periods in shared library file names, e.g. foo.<SOABI>.so. It is calculated 56697db96d56Sopenharmony_ci# from the following attributes which affect the ABI of this Python build (in 56707db96d56Sopenharmony_ci# this order): 56717db96d56Sopenharmony_ci# 56727db96d56Sopenharmony_ci# * The Python implementation (always 'cpython-' for us) 56737db96d56Sopenharmony_ci# * The major and minor version numbers 56747db96d56Sopenharmony_ci# * --with-pydebug (adds a 'd') 56757db96d56Sopenharmony_ci# 56767db96d56Sopenharmony_ci# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc, 56777db96d56Sopenharmony_ci# would get a shared library ABI version tag of 'cpython-32dmu' and shared 56787db96d56Sopenharmony_ci# libraries would be named 'foo.cpython-32dmu.so'. 56797db96d56Sopenharmony_ci# 56807db96d56Sopenharmony_ci# In Python 3.2 and older, --with-wide-unicode added a 'u' flag. 56817db96d56Sopenharmony_ci# In Python 3.7 and older, --with-pymalloc added a 'm' flag. 56827db96d56Sopenharmony_ciAC_SUBST(SOABI) 56837db96d56Sopenharmony_ciAC_MSG_CHECKING(ABIFLAGS) 56847db96d56Sopenharmony_ciAC_MSG_RESULT($ABIFLAGS) 56857db96d56Sopenharmony_ciAC_MSG_CHECKING(SOABI) 56867db96d56Sopenharmony_ciSOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET} 56877db96d56Sopenharmony_ciAC_MSG_RESULT($SOABI) 56887db96d56Sopenharmony_ci 56897db96d56Sopenharmony_ci# Release and debug (Py_DEBUG) ABI are compatible, but not Py_TRACE_REFS ABI 56907db96d56Sopenharmony_ciif test "$Py_DEBUG" = 'true' -a "$with_trace_refs" != "yes"; then 56917db96d56Sopenharmony_ci # Similar to SOABI but remove "d" flag from ABIFLAGS 56927db96d56Sopenharmony_ci AC_SUBST(ALT_SOABI) 56937db96d56Sopenharmony_ci ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET} 56947db96d56Sopenharmony_ci AC_DEFINE_UNQUOTED(ALT_SOABI, "${ALT_SOABI}", 56957db96d56Sopenharmony_ci [Alternative SOABI used in debug build to load C extensions built in release mode]) 56967db96d56Sopenharmony_cifi 56977db96d56Sopenharmony_ci 56987db96d56Sopenharmony_ciAC_SUBST(EXT_SUFFIX) 56997db96d56Sopenharmony_ciEXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} 57007db96d56Sopenharmony_ci 57017db96d56Sopenharmony_ciAC_MSG_CHECKING(LDVERSION) 57027db96d56Sopenharmony_ciLDVERSION='$(VERSION)$(ABIFLAGS)' 57037db96d56Sopenharmony_ciAC_MSG_RESULT($LDVERSION) 57047db96d56Sopenharmony_ci 57057db96d56Sopenharmony_ci# On Android and Cygwin the shared libraries must be linked with libpython. 57067db96d56Sopenharmony_ciAC_SUBST(LIBPYTHON) 57077db96d56Sopenharmony_ciif test -n "$ANDROID_API_LEVEL" -o "$MACHDEP" = "cygwin"; then 57087db96d56Sopenharmony_ci LIBPYTHON="-lpython${VERSION}${ABIFLAGS}" 57097db96d56Sopenharmony_cielse 57107db96d56Sopenharmony_ci LIBPYTHON='' 57117db96d56Sopenharmony_cifi 57127db96d56Sopenharmony_ci 57137db96d56Sopenharmony_ci 57147db96d56Sopenharmony_ciAC_SUBST(BINLIBDEST) 57157db96d56Sopenharmony_ciBINLIBDEST='$(LIBDIR)/python$(VERSION)' 57167db96d56Sopenharmony_ci 57177db96d56Sopenharmony_ci 57187db96d56Sopenharmony_ci# Check for --with-platlibdir 57197db96d56Sopenharmony_ci# /usr/$LIDIRNAME/python$VERSION 57207db96d56Sopenharmony_ciAC_SUBST(PLATLIBDIR) 57217db96d56Sopenharmony_ciPLATLIBDIR="lib" 57227db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-platlibdir) 57237db96d56Sopenharmony_ciAC_ARG_WITH(platlibdir, 57247db96d56Sopenharmony_ci AS_HELP_STRING([--with-platlibdir=DIRNAME], 57257db96d56Sopenharmony_ci [Python library directory name (default is "lib")]), 57267db96d56Sopenharmony_ci[ 57277db96d56Sopenharmony_ci# ignore 3 options: 57287db96d56Sopenharmony_ci# --with-platlibdir 57297db96d56Sopenharmony_ci# --with-platlibdir= 57307db96d56Sopenharmony_ci# --without-platlibdir 57317db96d56Sopenharmony_ciif test -n "$withval" -a "$withval" != yes -a "$withval" != no 57327db96d56Sopenharmony_cithen 57337db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 57347db96d56Sopenharmony_ci PLATLIBDIR="$withval" 57357db96d56Sopenharmony_ci BINLIBDEST='${exec_prefix}/${PLATLIBDIR}/python$(VERSION)' 57367db96d56Sopenharmony_cielse 57377db96d56Sopenharmony_ci AC_MSG_RESULT(no) 57387db96d56Sopenharmony_cifi], 57397db96d56Sopenharmony_ci[AC_MSG_RESULT(no)]) 57407db96d56Sopenharmony_ci 57417db96d56Sopenharmony_ci 57427db96d56Sopenharmony_cidnl define LIBPL after ABIFLAGS and LDVERSION is defined. 57437db96d56Sopenharmony_ciAC_SUBST(PY_ENABLE_SHARED) 57447db96d56Sopenharmony_ciif test x$PLATFORM_TRIPLET = x; then 57457db96d56Sopenharmony_ci LIBPL='$(prefix)'"/${PLATLIBDIR}/python${VERSION}/config-${LDVERSION}" 57467db96d56Sopenharmony_cielse 57477db96d56Sopenharmony_ci LIBPL='$(prefix)'"/${PLATLIBDIR}/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}" 57487db96d56Sopenharmony_cifi 57497db96d56Sopenharmony_ciAC_SUBST(LIBPL) 57507db96d56Sopenharmony_ci 57517db96d56Sopenharmony_ci# Check for --with-wheel-pkg-dir=PATH 57527db96d56Sopenharmony_ciAC_SUBST(WHEEL_PKG_DIR) 57537db96d56Sopenharmony_ciWHEEL_PKG_DIR="" 57547db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-wheel-pkg-dir) 57557db96d56Sopenharmony_ciAC_ARG_WITH(wheel-pkg-dir, 57567db96d56Sopenharmony_ci AS_HELP_STRING([--with-wheel-pkg-dir=PATH], 57577db96d56Sopenharmony_ci [Directory of wheel packages used by ensurepip (default: none)]), 57587db96d56Sopenharmony_ci[ 57597db96d56Sopenharmony_ciif test -n "$withval"; then 57607db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 57617db96d56Sopenharmony_ci WHEEL_PKG_DIR="$withval" 57627db96d56Sopenharmony_cielse 57637db96d56Sopenharmony_ci AC_MSG_RESULT(no) 57647db96d56Sopenharmony_cifi], 57657db96d56Sopenharmony_ci[AC_MSG_RESULT(no)]) 57667db96d56Sopenharmony_ci 57677db96d56Sopenharmony_ci# Check whether right shifting a negative integer extends the sign bit 57687db96d56Sopenharmony_ci# or fills with zeros (like the Cray J90, according to Tim Peters). 57697db96d56Sopenharmony_ciAC_CACHE_CHECK([whether right shift extends the sign bit], [ac_cv_rshift_extends_sign], [ 57707db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 57717db96d56Sopenharmony_ciint main(void) 57727db96d56Sopenharmony_ci{ 57737db96d56Sopenharmony_ci return (((-1)>>3 == -1) ? 0 : 1); 57747db96d56Sopenharmony_ci} 57757db96d56Sopenharmony_ci]])], 57767db96d56Sopenharmony_ci[ac_cv_rshift_extends_sign=yes], 57777db96d56Sopenharmony_ci[ac_cv_rshift_extends_sign=no], 57787db96d56Sopenharmony_ci[ac_cv_rshift_extends_sign=yes])]) 57797db96d56Sopenharmony_ciif test "$ac_cv_rshift_extends_sign" = no 57807db96d56Sopenharmony_cithen 57817db96d56Sopenharmony_ci AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1, 57827db96d56Sopenharmony_ci [Define if i>>j for signed int i does not extend the sign bit 57837db96d56Sopenharmony_ci when i < 0]) 57847db96d56Sopenharmony_cifi 57857db96d56Sopenharmony_ci 57867db96d56Sopenharmony_ci# check for getc_unlocked and related locking functions 57877db96d56Sopenharmony_ciAC_CACHE_CHECK([for getc_unlocked() and friends], [ac_cv_have_getc_unlocked], [ 57887db96d56Sopenharmony_ciAC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[ 57897db96d56Sopenharmony_ci FILE *f = fopen("/dev/null", "r"); 57907db96d56Sopenharmony_ci flockfile(f); 57917db96d56Sopenharmony_ci getc_unlocked(f); 57927db96d56Sopenharmony_ci funlockfile(f); 57937db96d56Sopenharmony_ci]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])]) 57947db96d56Sopenharmony_ciif test "$ac_cv_have_getc_unlocked" = yes 57957db96d56Sopenharmony_cithen 57967db96d56Sopenharmony_ci AC_DEFINE(HAVE_GETC_UNLOCKED, 1, 57977db96d56Sopenharmony_ci [Define this if you have flockfile(), getc_unlocked(), and funlockfile()]) 57987db96d56Sopenharmony_cifi 57997db96d56Sopenharmony_ci 58007db96d56Sopenharmony_ciAC_ARG_WITH([readline], 58017db96d56Sopenharmony_ci [AS_HELP_STRING([--with(out)-readline@<:@=editline@:>@], 58027db96d56Sopenharmony_ci [use Editline for backend or disable readline module])], 58037db96d56Sopenharmony_ci [], 58047db96d56Sopenharmony_ci [with_readline=yes]) 58057db96d56Sopenharmony_ci 58067db96d56Sopenharmony_ci# check where readline lives 58077db96d56Sopenharmony_cipy_cv_lib_readline=no 58087db96d56Sopenharmony_ci# save the value of LIBS so we don't actually link Python with readline 58097db96d56Sopenharmony_ciLIBS_no_readline=$LIBS 58107db96d56Sopenharmony_ci 58117db96d56Sopenharmony_ciif test "$with_readline" != no; then 58127db96d56Sopenharmony_ci case "$with_readline" in 58137db96d56Sopenharmony_ci editline|edit) 58147db96d56Sopenharmony_ci LIBREADLINE=edit 58157db96d56Sopenharmony_ci AC_DEFINE(WITH_EDITLINE, 1, 58167db96d56Sopenharmony_ci [Define to build the readline module against Editline.]) 58177db96d56Sopenharmony_ci ;; 58187db96d56Sopenharmony_ci yes|readline) 58197db96d56Sopenharmony_ci LIBREADLINE=readline 58207db96d56Sopenharmony_ci ;; 58217db96d56Sopenharmony_ci *) 58227db96d56Sopenharmony_ci AC_MSG_ERROR([proper usage is --with(out)-readline@<:@=editline@:>@]) 58237db96d56Sopenharmony_ci ;; 58247db96d56Sopenharmony_ci esac 58257db96d56Sopenharmony_ci 58267db96d56Sopenharmony_ci # On some systems we need to link readline to a termcap compatible 58277db96d56Sopenharmony_ci # library. NOTE: Keep the precedence of listed libraries synchronised 58287db96d56Sopenharmony_ci # with setup.py. 58297db96d56Sopenharmony_ci AC_MSG_CHECKING([how to link readline libs]) 58307db96d56Sopenharmony_ci for py_libtermcap in "" tinfo ncursesw ncurses curses termcap; do 58317db96d56Sopenharmony_ci if test -z "$py_libtermcap"; then 58327db96d56Sopenharmony_ci READLINE_LIBS="-l$LIBREADLINE" 58337db96d56Sopenharmony_ci else 58347db96d56Sopenharmony_ci READLINE_LIBS="-l$LIBREADLINE -l$py_libtermcap" 58357db96d56Sopenharmony_ci fi 58367db96d56Sopenharmony_ci LIBS="$READLINE_LIBS $LIBS_no_readline" 58377db96d56Sopenharmony_ci AC_LINK_IFELSE( 58387db96d56Sopenharmony_ci [AC_LANG_CALL([],[readline])], 58397db96d56Sopenharmony_ci [py_cv_lib_readline=yes]) 58407db96d56Sopenharmony_ci if test $py_cv_lib_readline = yes; then 58417db96d56Sopenharmony_ci break 58427db96d56Sopenharmony_ci fi 58437db96d56Sopenharmony_ci done 58447db96d56Sopenharmony_ci 58457db96d56Sopenharmony_ci # Uncomment this line if you want to use READLINE_LIBS in Makefile or scripts 58467db96d56Sopenharmony_ci #AC_SUBST([READLINE_LIBS]) 58477db96d56Sopenharmony_ci if test $py_cv_lib_readline = no; then 58487db96d56Sopenharmony_ci AC_MSG_RESULT([none]) 58497db96d56Sopenharmony_ci else 58507db96d56Sopenharmony_ci AC_MSG_RESULT([$READLINE_LIBS]) 58517db96d56Sopenharmony_ci AC_DEFINE(HAVE_LIBREADLINE, 1, 58527db96d56Sopenharmony_ci [Define to build the readline module.]) 58537db96d56Sopenharmony_ci fi 58547db96d56Sopenharmony_cifi 58557db96d56Sopenharmony_ci 58567db96d56Sopenharmony_ciif test "$py_cv_lib_readline" = yes; then 58577db96d56Sopenharmony_ci # check for readline 2.2 58587db96d56Sopenharmony_ci AC_CHECK_DECL(rl_completion_append_character, 58597db96d56Sopenharmony_ci AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1, 58607db96d56Sopenharmony_ci [Define if you have readline 2.2]),, 58617db96d56Sopenharmony_ci [ 58627db96d56Sopenharmony_ci#include <stdio.h> /* Must be first for Gnu Readline */ 58637db96d56Sopenharmony_ci#ifdef WITH_EDITLINE 58647db96d56Sopenharmony_ci# include <editline/readline.h> 58657db96d56Sopenharmony_ci#else 58667db96d56Sopenharmony_ci# include <readline/readline.h> 58677db96d56Sopenharmony_ci#endif 58687db96d56Sopenharmony_ci ]) 58697db96d56Sopenharmony_ci AC_CHECK_DECL(rl_completion_suppress_append, 58707db96d56Sopenharmony_ci AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1, 58717db96d56Sopenharmony_ci [Define if you have rl_completion_suppress_append]),, 58727db96d56Sopenharmony_ci [ 58737db96d56Sopenharmony_ci#include <stdio.h> /* Must be first for Gnu Readline */ 58747db96d56Sopenharmony_ci#ifdef WITH_EDITLINE 58757db96d56Sopenharmony_ci# include <editline/readline.h> 58767db96d56Sopenharmony_ci#else 58777db96d56Sopenharmony_ci# include <readline/readline.h> 58787db96d56Sopenharmony_ci#endif 58797db96d56Sopenharmony_ci ]) 58807db96d56Sopenharmony_ci 58817db96d56Sopenharmony_ci # check for readline 4.0 58827db96d56Sopenharmony_ci AC_CHECK_LIB($LIBREADLINE, rl_pre_input_hook, 58837db96d56Sopenharmony_ci AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1, 58847db96d56Sopenharmony_ci [Define if you have readline 4.0]),,$READLINE_LIBS) 58857db96d56Sopenharmony_ci 58867db96d56Sopenharmony_ci # also in 4.0 58877db96d56Sopenharmony_ci AC_CHECK_LIB($LIBREADLINE, rl_completion_display_matches_hook, 58887db96d56Sopenharmony_ci AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1, 58897db96d56Sopenharmony_ci [Define if you have readline 4.0]),,$READLINE_LIBS) 58907db96d56Sopenharmony_ci 58917db96d56Sopenharmony_ci # also in 4.0, but not in editline 58927db96d56Sopenharmony_ci AC_CHECK_LIB($LIBREADLINE, rl_resize_terminal, 58937db96d56Sopenharmony_ci AC_DEFINE(HAVE_RL_RESIZE_TERMINAL, 1, 58947db96d56Sopenharmony_ci [Define if you have readline 4.0]),,$READLINE_LIBS) 58957db96d56Sopenharmony_ci 58967db96d56Sopenharmony_ci # check for readline 4.2 58977db96d56Sopenharmony_ci AC_CHECK_LIB($LIBREADLINE, rl_completion_matches, 58987db96d56Sopenharmony_ci AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1, 58997db96d56Sopenharmony_ci [Define if you have readline 4.2]),,$READLINE_LIBS) 59007db96d56Sopenharmony_ci 59017db96d56Sopenharmony_ci # also in readline 4.2 59027db96d56Sopenharmony_ci AC_CHECK_DECL(rl_catch_signals, 59037db96d56Sopenharmony_ci AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1, 59047db96d56Sopenharmony_ci [Define if you can turn off readline's signal handling.]),, 59057db96d56Sopenharmony_ci [ 59067db96d56Sopenharmony_ci#include <stdio.h> /* Must be first for Gnu Readline */ 59077db96d56Sopenharmony_ci#ifdef WITH_EDITLINE 59087db96d56Sopenharmony_ci# include <editline/readline.h> 59097db96d56Sopenharmony_ci#else 59107db96d56Sopenharmony_ci# include <readline/readline.h> 59117db96d56Sopenharmony_ci#endif 59127db96d56Sopenharmony_ci ]) 59137db96d56Sopenharmony_ci 59147db96d56Sopenharmony_ci AC_CHECK_LIB($LIBREADLINE, append_history, 59157db96d56Sopenharmony_ci AC_DEFINE(HAVE_RL_APPEND_HISTORY, 1, 59167db96d56Sopenharmony_ci [Define if readline supports append_history]),,$READLINE_LIBS) 59177db96d56Sopenharmony_cifi 59187db96d56Sopenharmony_ci 59197db96d56Sopenharmony_ci# End of readline checks: restore LIBS 59207db96d56Sopenharmony_ciLIBS=$LIBS_no_readline 59217db96d56Sopenharmony_ci 59227db96d56Sopenharmony_ciAC_CACHE_CHECK([for broken nice()], [ac_cv_broken_nice], [ 59237db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 59247db96d56Sopenharmony_ci#include <stdlib.h> 59257db96d56Sopenharmony_ci#include <unistd.h> 59267db96d56Sopenharmony_ciint main(void) 59277db96d56Sopenharmony_ci{ 59287db96d56Sopenharmony_ci int val1 = nice(1); 59297db96d56Sopenharmony_ci if (val1 != -1 && val1 == nice(2)) 59307db96d56Sopenharmony_ci exit(0); 59317db96d56Sopenharmony_ci exit(1); 59327db96d56Sopenharmony_ci} 59337db96d56Sopenharmony_ci]])], 59347db96d56Sopenharmony_ci[ac_cv_broken_nice=yes], 59357db96d56Sopenharmony_ci[ac_cv_broken_nice=no], 59367db96d56Sopenharmony_ci[ac_cv_broken_nice=no])]) 59377db96d56Sopenharmony_ciif test "$ac_cv_broken_nice" = yes 59387db96d56Sopenharmony_cithen 59397db96d56Sopenharmony_ci AC_DEFINE(HAVE_BROKEN_NICE, 1, 59407db96d56Sopenharmony_ci [Define if nice() returns success/failure instead of the new priority.]) 59417db96d56Sopenharmony_cifi 59427db96d56Sopenharmony_ci 59437db96d56Sopenharmony_ciAC_CACHE_CHECK([for broken poll()], [ac_cv_broken_poll], 59447db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 59457db96d56Sopenharmony_ci#include <poll.h> 59467db96d56Sopenharmony_ci#include <unistd.h> 59477db96d56Sopenharmony_ci 59487db96d56Sopenharmony_ciint main(void) 59497db96d56Sopenharmony_ci{ 59507db96d56Sopenharmony_ci struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 }; 59517db96d56Sopenharmony_ci int poll_test; 59527db96d56Sopenharmony_ci 59537db96d56Sopenharmony_ci close (42); 59547db96d56Sopenharmony_ci 59557db96d56Sopenharmony_ci poll_test = poll(&poll_struct, 1, 0); 59567db96d56Sopenharmony_ci if (poll_test < 0) 59577db96d56Sopenharmony_ci return 0; 59587db96d56Sopenharmony_ci else if (poll_test == 0 && poll_struct.revents != POLLNVAL) 59597db96d56Sopenharmony_ci return 0; 59607db96d56Sopenharmony_ci else 59617db96d56Sopenharmony_ci return 1; 59627db96d56Sopenharmony_ci} 59637db96d56Sopenharmony_ci]])], 59647db96d56Sopenharmony_ci[ac_cv_broken_poll=yes], 59657db96d56Sopenharmony_ci[ac_cv_broken_poll=no], 59667db96d56Sopenharmony_ci[ac_cv_broken_poll=no])) 59677db96d56Sopenharmony_ciif test "$ac_cv_broken_poll" = yes 59687db96d56Sopenharmony_cithen 59697db96d56Sopenharmony_ci AC_DEFINE(HAVE_BROKEN_POLL, 1, 59707db96d56Sopenharmony_ci [Define if poll() sets errno on invalid file descriptors.]) 59717db96d56Sopenharmony_cifi 59727db96d56Sopenharmony_ci 59737db96d56Sopenharmony_ci# check tzset(3) exists and works like we expect it to 59747db96d56Sopenharmony_ciAC_CACHE_CHECK([for working tzset()], [ac_cv_working_tzset], [ 59757db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 59767db96d56Sopenharmony_ci#include <stdlib.h> 59777db96d56Sopenharmony_ci#include <time.h> 59787db96d56Sopenharmony_ci#include <string.h> 59797db96d56Sopenharmony_ci 59807db96d56Sopenharmony_ci#if HAVE_TZNAME 59817db96d56Sopenharmony_ciextern char *tzname[]; 59827db96d56Sopenharmony_ci#endif 59837db96d56Sopenharmony_ci 59847db96d56Sopenharmony_ciint main(void) 59857db96d56Sopenharmony_ci{ 59867db96d56Sopenharmony_ci /* Note that we need to ensure that not only does tzset(3) 59877db96d56Sopenharmony_ci do 'something' with localtime, but it works as documented 59887db96d56Sopenharmony_ci in the library reference and as expected by the test suite. 59897db96d56Sopenharmony_ci This includes making sure that tzname is set properly if 59907db96d56Sopenharmony_ci tm->tm_zone does not exist since it is the alternative way 59917db96d56Sopenharmony_ci of getting timezone info. 59927db96d56Sopenharmony_ci 59937db96d56Sopenharmony_ci Red Hat 6.2 doesn't understand the southern hemisphere 59947db96d56Sopenharmony_ci after New Year's Day. 59957db96d56Sopenharmony_ci */ 59967db96d56Sopenharmony_ci 59977db96d56Sopenharmony_ci time_t groundhogday = 1044144000; /* GMT-based */ 59987db96d56Sopenharmony_ci time_t midyear = groundhogday + (365 * 24 * 3600 / 2); 59997db96d56Sopenharmony_ci 60007db96d56Sopenharmony_ci putenv("TZ=UTC+0"); 60017db96d56Sopenharmony_ci tzset(); 60027db96d56Sopenharmony_ci if (localtime(&groundhogday)->tm_hour != 0) 60037db96d56Sopenharmony_ci exit(1); 60047db96d56Sopenharmony_ci#if HAVE_TZNAME 60057db96d56Sopenharmony_ci /* For UTC, tzname[1] is sometimes "", sometimes " " */ 60067db96d56Sopenharmony_ci if (strcmp(tzname[0], "UTC") || 60077db96d56Sopenharmony_ci (tzname[1][0] != 0 && tzname[1][0] != ' ')) 60087db96d56Sopenharmony_ci exit(1); 60097db96d56Sopenharmony_ci#endif 60107db96d56Sopenharmony_ci 60117db96d56Sopenharmony_ci putenv("TZ=EST+5EDT,M4.1.0,M10.5.0"); 60127db96d56Sopenharmony_ci tzset(); 60137db96d56Sopenharmony_ci if (localtime(&groundhogday)->tm_hour != 19) 60147db96d56Sopenharmony_ci exit(1); 60157db96d56Sopenharmony_ci#if HAVE_TZNAME 60167db96d56Sopenharmony_ci if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT")) 60177db96d56Sopenharmony_ci exit(1); 60187db96d56Sopenharmony_ci#endif 60197db96d56Sopenharmony_ci 60207db96d56Sopenharmony_ci putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0"); 60217db96d56Sopenharmony_ci tzset(); 60227db96d56Sopenharmony_ci if (localtime(&groundhogday)->tm_hour != 11) 60237db96d56Sopenharmony_ci exit(1); 60247db96d56Sopenharmony_ci#if HAVE_TZNAME 60257db96d56Sopenharmony_ci if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT")) 60267db96d56Sopenharmony_ci exit(1); 60277db96d56Sopenharmony_ci#endif 60287db96d56Sopenharmony_ci 60297db96d56Sopenharmony_ci#if HAVE_STRUCT_TM_TM_ZONE 60307db96d56Sopenharmony_ci if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT")) 60317db96d56Sopenharmony_ci exit(1); 60327db96d56Sopenharmony_ci if (strcmp(localtime(&midyear)->tm_zone, "AEST")) 60337db96d56Sopenharmony_ci exit(1); 60347db96d56Sopenharmony_ci#endif 60357db96d56Sopenharmony_ci 60367db96d56Sopenharmony_ci exit(0); 60377db96d56Sopenharmony_ci} 60387db96d56Sopenharmony_ci]])], 60397db96d56Sopenharmony_ci[ac_cv_working_tzset=yes], 60407db96d56Sopenharmony_ci[ac_cv_working_tzset=no], 60417db96d56Sopenharmony_ci[ac_cv_working_tzset=no])]) 60427db96d56Sopenharmony_ciif test "$ac_cv_working_tzset" = yes 60437db96d56Sopenharmony_cithen 60447db96d56Sopenharmony_ci AC_DEFINE(HAVE_WORKING_TZSET, 1, 60457db96d56Sopenharmony_ci [Define if tzset() actually switches the local timezone in a meaningful way.]) 60467db96d56Sopenharmony_cifi 60477db96d56Sopenharmony_ci 60487db96d56Sopenharmony_ci# Look for subsecond timestamps in struct stat 60497db96d56Sopenharmony_ciAC_CACHE_CHECK([for tv_nsec in struct stat], [ac_cv_stat_tv_nsec], 60507db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[ 60517db96d56Sopenharmony_cistruct stat st; 60527db96d56Sopenharmony_cist.st_mtim.tv_nsec = 1; 60537db96d56Sopenharmony_ci]])], 60547db96d56Sopenharmony_ci[ac_cv_stat_tv_nsec=yes], 60557db96d56Sopenharmony_ci[ac_cv_stat_tv_nsec=no])) 60567db96d56Sopenharmony_ciif test "$ac_cv_stat_tv_nsec" = yes 60577db96d56Sopenharmony_cithen 60587db96d56Sopenharmony_ci AC_DEFINE(HAVE_STAT_TV_NSEC, 1, 60597db96d56Sopenharmony_ci [Define if you have struct stat.st_mtim.tv_nsec]) 60607db96d56Sopenharmony_cifi 60617db96d56Sopenharmony_ci 60627db96d56Sopenharmony_ci# Look for BSD style subsecond timestamps in struct stat 60637db96d56Sopenharmony_ciAC_CACHE_CHECK([for tv_nsec2 in struct stat], [ac_cv_stat_tv_nsec2], 60647db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[ 60657db96d56Sopenharmony_cistruct stat st; 60667db96d56Sopenharmony_cist.st_mtimespec.tv_nsec = 1; 60677db96d56Sopenharmony_ci]])], 60687db96d56Sopenharmony_ci[ac_cv_stat_tv_nsec2=yes], 60697db96d56Sopenharmony_ci[ac_cv_stat_tv_nsec2=no])) 60707db96d56Sopenharmony_ciif test "$ac_cv_stat_tv_nsec2" = yes 60717db96d56Sopenharmony_cithen 60727db96d56Sopenharmony_ci AC_DEFINE(HAVE_STAT_TV_NSEC2, 1, 60737db96d56Sopenharmony_ci [Define if you have struct stat.st_mtimensec]) 60747db96d56Sopenharmony_cifi 60757db96d56Sopenharmony_ci 60767db96d56Sopenharmony_ci# first curses header check 60777db96d56Sopenharmony_ciac_save_cppflags="$CPPFLAGS" 60787db96d56Sopenharmony_ciif test "$cross_compiling" = no; then 60797db96d56Sopenharmony_ci CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw" 60807db96d56Sopenharmony_cifi 60817db96d56Sopenharmony_ci 60827db96d56Sopenharmony_ciAC_CHECK_HEADERS(curses.h ncurses.h) 60837db96d56Sopenharmony_ci 60847db96d56Sopenharmony_ci# On Solaris, term.h requires curses.h 60857db96d56Sopenharmony_ciAC_CHECK_HEADERS(term.h,,,[ 60867db96d56Sopenharmony_ci#ifdef HAVE_CURSES_H 60877db96d56Sopenharmony_ci#include <curses.h> 60887db96d56Sopenharmony_ci#endif 60897db96d56Sopenharmony_ci]) 60907db96d56Sopenharmony_ci 60917db96d56Sopenharmony_ci# On HP/UX 11.0, mvwdelch is a block with a return statement 60927db96d56Sopenharmony_ciAC_CACHE_CHECK([whether mvwdelch is an expression], [ac_cv_mvwdelch_is_expression], 60937db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[ 60947db96d56Sopenharmony_ci int rtn; 60957db96d56Sopenharmony_ci rtn = mvwdelch(0,0,0); 60967db96d56Sopenharmony_ci]])], 60977db96d56Sopenharmony_ci[ac_cv_mvwdelch_is_expression=yes], 60987db96d56Sopenharmony_ci[ac_cv_mvwdelch_is_expression=no])) 60997db96d56Sopenharmony_ci 61007db96d56Sopenharmony_ciif test "$ac_cv_mvwdelch_is_expression" = yes 61017db96d56Sopenharmony_cithen 61027db96d56Sopenharmony_ci AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1, 61037db96d56Sopenharmony_ci [Define if mvwdelch in curses.h is an expression.]) 61047db96d56Sopenharmony_cifi 61057db96d56Sopenharmony_ci 61067db96d56Sopenharmony_ci# Issue #25720: ncurses has introduced the NCURSES_OPAQUE symbol making opaque 61077db96d56Sopenharmony_ci# structs since version 5.7. If the macro is defined as zero before including 61087db96d56Sopenharmony_ci# [n]curses.h, ncurses will expose fields of the structs regardless of the 61097db96d56Sopenharmony_ci# configuration. 61107db96d56Sopenharmony_ciAC_CACHE_CHECK([whether WINDOW has _flags], [ac_cv_window_has_flags], 61117db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 61127db96d56Sopenharmony_ci #define NCURSES_OPAQUE 0 61137db96d56Sopenharmony_ci #include <curses.h> 61147db96d56Sopenharmony_ci]], [[ 61157db96d56Sopenharmony_ci WINDOW *w; 61167db96d56Sopenharmony_ci w->_flags = 0; 61177db96d56Sopenharmony_ci]])], 61187db96d56Sopenharmony_ci[ac_cv_window_has_flags=yes], 61197db96d56Sopenharmony_ci[ac_cv_window_has_flags=no])) 61207db96d56Sopenharmony_ci 61217db96d56Sopenharmony_ci 61227db96d56Sopenharmony_ciif test "$ac_cv_window_has_flags" = yes 61237db96d56Sopenharmony_cithen 61247db96d56Sopenharmony_ci AC_DEFINE(WINDOW_HAS_FLAGS, 1, 61257db96d56Sopenharmony_ci [Define if WINDOW in curses.h offers a field _flags.]) 61267db96d56Sopenharmony_cifi 61277db96d56Sopenharmony_ci 61287db96d56Sopenharmony_cidnl PY_CHECK_CURSES_FUNC(FUNCTION) 61297db96d56Sopenharmony_ciAC_DEFUN([PY_CHECK_CURSES_FUNC], 61307db96d56Sopenharmony_ci[ AS_VAR_PUSHDEF([py_var], [ac_cv_lib_curses_$1]) 61317db96d56Sopenharmony_ci AS_VAR_PUSHDEF([py_define], [HAVE_CURSES_]m4_toupper($1)) 61327db96d56Sopenharmony_ci AC_CACHE_CHECK( 61337db96d56Sopenharmony_ci [for curses function $1], 61347db96d56Sopenharmony_ci [py_var], 61357db96d56Sopenharmony_ci [AC_COMPILE_IFELSE( 61367db96d56Sopenharmony_ci [AC_LANG_PROGRAM( 61377db96d56Sopenharmony_ci [#include <curses.h>], [ 61387db96d56Sopenharmony_ci #ifndef $1 61397db96d56Sopenharmony_ci void *x=$1 61407db96d56Sopenharmony_ci #endif 61417db96d56Sopenharmony_ci ])], 61427db96d56Sopenharmony_ci [AS_VAR_SET([py_var], [yes])], 61437db96d56Sopenharmony_ci [AS_VAR_SET([py_var], [no])])] 61447db96d56Sopenharmony_ci ) 61457db96d56Sopenharmony_ci AS_VAR_IF( 61467db96d56Sopenharmony_ci [py_var], 61477db96d56Sopenharmony_ci [yes], 61487db96d56Sopenharmony_ci [AC_DEFINE([py_define], [1], [Define if you have the '$1' function.])]) 61497db96d56Sopenharmony_ci AS_VAR_POPDEF([py_var]) 61507db96d56Sopenharmony_ci AS_VAR_POPDEF([py_define]) 61517db96d56Sopenharmony_ci]) 61527db96d56Sopenharmony_ci 61537db96d56Sopenharmony_ciPY_CHECK_CURSES_FUNC([is_pad]) 61547db96d56Sopenharmony_ciPY_CHECK_CURSES_FUNC([is_term_resized]) 61557db96d56Sopenharmony_ciPY_CHECK_CURSES_FUNC([resize_term]) 61567db96d56Sopenharmony_ciPY_CHECK_CURSES_FUNC([resizeterm]) 61577db96d56Sopenharmony_ciPY_CHECK_CURSES_FUNC([immedok]) 61587db96d56Sopenharmony_ciPY_CHECK_CURSES_FUNC([syncok]) 61597db96d56Sopenharmony_ciPY_CHECK_CURSES_FUNC([wchgat]) 61607db96d56Sopenharmony_ciPY_CHECK_CURSES_FUNC([filter]) 61617db96d56Sopenharmony_ciPY_CHECK_CURSES_FUNC([has_key]) 61627db96d56Sopenharmony_ciPY_CHECK_CURSES_FUNC([typeahead]) 61637db96d56Sopenharmony_ciPY_CHECK_CURSES_FUNC([use_env]) 61647db96d56Sopenharmony_ciCPPFLAGS=$ac_save_cppflags 61657db96d56Sopenharmony_ci 61667db96d56Sopenharmony_ciAC_MSG_NOTICE([checking for device files]) 61677db96d56Sopenharmony_ci 61687db96d56Sopenharmony_cidnl NOTE: Inform user how to proceed with files when cross compiling. 61697db96d56Sopenharmony_ciif test "x$cross_compiling" = xyes; then 61707db96d56Sopenharmony_ci if test "${ac_cv_file__dev_ptmx+set}" != set; then 61717db96d56Sopenharmony_ci AC_MSG_CHECKING([for /dev/ptmx]) 61727db96d56Sopenharmony_ci AC_MSG_RESULT([not set]) 61737db96d56Sopenharmony_ci AC_MSG_ERROR([set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling]) 61747db96d56Sopenharmony_ci fi 61757db96d56Sopenharmony_ci if test "${ac_cv_file__dev_ptc+set}" != set; then 61767db96d56Sopenharmony_ci AC_MSG_CHECKING([for /dev/ptc]) 61777db96d56Sopenharmony_ci AC_MSG_RESULT([not set]) 61787db96d56Sopenharmony_ci AC_MSG_ERROR([set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling]) 61797db96d56Sopenharmony_ci fi 61807db96d56Sopenharmony_cifi 61817db96d56Sopenharmony_ci 61827db96d56Sopenharmony_ciAC_CHECK_FILE(/dev/ptmx, [], []) 61837db96d56Sopenharmony_ciif test "x$ac_cv_file__dev_ptmx" = xyes; then 61847db96d56Sopenharmony_ci AC_DEFINE(HAVE_DEV_PTMX, 1, 61857db96d56Sopenharmony_ci [Define to 1 if you have the /dev/ptmx device file.]) 61867db96d56Sopenharmony_cifi 61877db96d56Sopenharmony_ciAC_CHECK_FILE(/dev/ptc, [], []) 61887db96d56Sopenharmony_ciif test "x$ac_cv_file__dev_ptc" = xyes; then 61897db96d56Sopenharmony_ci AC_DEFINE(HAVE_DEV_PTC, 1, 61907db96d56Sopenharmony_ci [Define to 1 if you have the /dev/ptc device file.]) 61917db96d56Sopenharmony_cifi 61927db96d56Sopenharmony_ci 61937db96d56Sopenharmony_ciif test $ac_sys_system = Darwin 61947db96d56Sopenharmony_cithen 61957db96d56Sopenharmony_ci LIBS="$LIBS -framework CoreFoundation" 61967db96d56Sopenharmony_cifi 61977db96d56Sopenharmony_ci 61987db96d56Sopenharmony_ciAC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl 61997db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 62007db96d56Sopenharmony_ci#include <stdio.h> 62017db96d56Sopenharmony_ci#include <stddef.h> 62027db96d56Sopenharmony_ci#include <string.h> 62037db96d56Sopenharmony_ci 62047db96d56Sopenharmony_ci#ifdef HAVE_SYS_TYPES_H 62057db96d56Sopenharmony_ci#include <sys/types.h> 62067db96d56Sopenharmony_ci#endif 62077db96d56Sopenharmony_ci 62087db96d56Sopenharmony_ci#ifdef HAVE_SSIZE_T 62097db96d56Sopenharmony_citypedef ssize_t Py_ssize_t; 62107db96d56Sopenharmony_ci#elif SIZEOF_VOID_P == SIZEOF_LONG 62117db96d56Sopenharmony_citypedef long Py_ssize_t; 62127db96d56Sopenharmony_ci#else 62137db96d56Sopenharmony_citypedef int Py_ssize_t; 62147db96d56Sopenharmony_ci#endif 62157db96d56Sopenharmony_ci 62167db96d56Sopenharmony_ciint main() 62177db96d56Sopenharmony_ci{ 62187db96d56Sopenharmony_ci char buffer[256]; 62197db96d56Sopenharmony_ci 62207db96d56Sopenharmony_ci if(sprintf(buffer, "%zd", (size_t)123) < 0) 62217db96d56Sopenharmony_ci return 1; 62227db96d56Sopenharmony_ci 62237db96d56Sopenharmony_ci if (strcmp(buffer, "123")) 62247db96d56Sopenharmony_ci return 1; 62257db96d56Sopenharmony_ci 62267db96d56Sopenharmony_ci if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0) 62277db96d56Sopenharmony_ci return 1; 62287db96d56Sopenharmony_ci 62297db96d56Sopenharmony_ci if (strcmp(buffer, "-123")) 62307db96d56Sopenharmony_ci return 1; 62317db96d56Sopenharmony_ci 62327db96d56Sopenharmony_ci return 0; 62337db96d56Sopenharmony_ci} 62347db96d56Sopenharmony_ci]])], 62357db96d56Sopenharmony_ci [ac_cv_have_size_t_format=yes], 62367db96d56Sopenharmony_ci [ac_cv_have_size_t_format=no], 62377db96d56Sopenharmony_ci [ac_cv_have_size_t_format="cross -- assuming yes" 62387db96d56Sopenharmony_ci])]) 62397db96d56Sopenharmony_ciif test "$ac_cv_have_size_t_format" != no ; then 62407db96d56Sopenharmony_ci AC_DEFINE(PY_FORMAT_SIZE_T, "z", 62417db96d56Sopenharmony_ci [Define to printf format modifier for Py_ssize_t]) 62427db96d56Sopenharmony_cifi 62437db96d56Sopenharmony_ci 62447db96d56Sopenharmony_ciAC_CHECK_TYPE(socklen_t,, 62457db96d56Sopenharmony_ci AC_DEFINE(socklen_t,int, 62467db96d56Sopenharmony_ci [Define to `int' if <sys/socket.h> does not define.]),[ 62477db96d56Sopenharmony_ci#ifdef HAVE_SYS_TYPES_H 62487db96d56Sopenharmony_ci#include <sys/types.h> 62497db96d56Sopenharmony_ci#endif 62507db96d56Sopenharmony_ci#ifdef HAVE_SYS_SOCKET_H 62517db96d56Sopenharmony_ci#include <sys/socket.h> 62527db96d56Sopenharmony_ci#endif 62537db96d56Sopenharmony_ci]) 62547db96d56Sopenharmony_ci 62557db96d56Sopenharmony_ciAC_CACHE_CHECK([for broken mbstowcs], [ac_cv_broken_mbstowcs], 62567db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 62577db96d56Sopenharmony_ci#include <stddef.h> 62587db96d56Sopenharmony_ci#include <stdio.h> 62597db96d56Sopenharmony_ci#include <stdlib.h> 62607db96d56Sopenharmony_ciint main(void) { 62617db96d56Sopenharmony_ci size_t len = -1; 62627db96d56Sopenharmony_ci const char *str = "text"; 62637db96d56Sopenharmony_ci len = mbstowcs(NULL, str, 0); 62647db96d56Sopenharmony_ci return (len != 4); 62657db96d56Sopenharmony_ci} 62667db96d56Sopenharmony_ci]])], 62677db96d56Sopenharmony_ci[ac_cv_broken_mbstowcs=no], 62687db96d56Sopenharmony_ci[ac_cv_broken_mbstowcs=yes], 62697db96d56Sopenharmony_ci[ac_cv_broken_mbstowcs=no])) 62707db96d56Sopenharmony_ciif test "$ac_cv_broken_mbstowcs" = yes 62717db96d56Sopenharmony_cithen 62727db96d56Sopenharmony_ci AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1, 62737db96d56Sopenharmony_ci [Define if mbstowcs(NULL, "text", 0) does not return the number of 62747db96d56Sopenharmony_ci wide chars that would be converted.]) 62757db96d56Sopenharmony_cifi 62767db96d56Sopenharmony_ci 62777db96d56Sopenharmony_ci# Check for --with-computed-gotos 62787db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-computed-gotos) 62797db96d56Sopenharmony_ciAC_ARG_WITH(computed-gotos, 62807db96d56Sopenharmony_ci AS_HELP_STRING([--with-computed-gotos], 62817db96d56Sopenharmony_ci [enable computed gotos in evaluation loop (enabled by default on supported compilers)]), 62827db96d56Sopenharmony_ci[ 62837db96d56Sopenharmony_ciif test "$withval" = yes 62847db96d56Sopenharmony_cithen 62857db96d56Sopenharmony_ci AC_DEFINE(USE_COMPUTED_GOTOS, 1, 62867db96d56Sopenharmony_ci [Define if you want to use computed gotos in ceval.c.]) 62877db96d56Sopenharmony_ci AC_MSG_RESULT(yes) 62887db96d56Sopenharmony_cifi 62897db96d56Sopenharmony_ciif test "$withval" = no 62907db96d56Sopenharmony_cithen 62917db96d56Sopenharmony_ci AC_DEFINE(USE_COMPUTED_GOTOS, 0, 62927db96d56Sopenharmony_ci [Define if you want to use computed gotos in ceval.c.]) 62937db96d56Sopenharmony_ci AC_MSG_RESULT(no) 62947db96d56Sopenharmony_cifi 62957db96d56Sopenharmony_ci], 62967db96d56Sopenharmony_ci[AC_MSG_RESULT(no value specified)]) 62977db96d56Sopenharmony_ci 62987db96d56Sopenharmony_ciAC_CACHE_CHECK([whether $CC supports computed gotos], [ac_cv_computed_gotos], 62997db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[[ 63007db96d56Sopenharmony_ciint main(int argc, char **argv) 63017db96d56Sopenharmony_ci{ 63027db96d56Sopenharmony_ci static void *targets[1] = { &&LABEL1 }; 63037db96d56Sopenharmony_ci goto LABEL2; 63047db96d56Sopenharmony_ciLABEL1: 63057db96d56Sopenharmony_ci return 0; 63067db96d56Sopenharmony_ciLABEL2: 63077db96d56Sopenharmony_ci goto *targets[0]; 63087db96d56Sopenharmony_ci return 1; 63097db96d56Sopenharmony_ci} 63107db96d56Sopenharmony_ci]]])], 63117db96d56Sopenharmony_ci[ac_cv_computed_gotos=yes], 63127db96d56Sopenharmony_ci[ac_cv_computed_gotos=no], 63137db96d56Sopenharmony_ci[if test "${with_computed_gotos+set}" = set; then 63147db96d56Sopenharmony_ci ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos" 63157db96d56Sopenharmony_ci else 63167db96d56Sopenharmony_ci ac_cv_computed_gotos=no 63177db96d56Sopenharmony_ci fi])) 63187db96d56Sopenharmony_cicase "$ac_cv_computed_gotos" in yes*) 63197db96d56Sopenharmony_ci AC_DEFINE(HAVE_COMPUTED_GOTOS, 1, 63207db96d56Sopenharmony_ci [Define if the C compiler supports computed gotos.]) 63217db96d56Sopenharmony_ciesac 63227db96d56Sopenharmony_ci 63237db96d56Sopenharmony_cicase $ac_sys_system in 63247db96d56Sopenharmony_ciAIX*) 63257db96d56Sopenharmony_ci AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;; 63267db96d56Sopenharmony_ciesac 63277db96d56Sopenharmony_ci 63287db96d56Sopenharmony_ci 63297db96d56Sopenharmony_ciAC_SUBST(THREADHEADERS) 63307db96d56Sopenharmony_ci 63317db96d56Sopenharmony_cifor h in `(cd $srcdir;echo Python/thread_*.h)` 63327db96d56Sopenharmony_cido 63337db96d56Sopenharmony_ci THREADHEADERS="$THREADHEADERS \$(srcdir)/$h" 63347db96d56Sopenharmony_cidone 63357db96d56Sopenharmony_ci 63367db96d56Sopenharmony_ciAC_SUBST(SRCDIRS) 63377db96d56Sopenharmony_ciSRCDIRS="\ 63387db96d56Sopenharmony_ci Modules \ 63397db96d56Sopenharmony_ci Modules/_blake2 \ 63407db96d56Sopenharmony_ci Modules/_ctypes \ 63417db96d56Sopenharmony_ci Modules/_decimal \ 63427db96d56Sopenharmony_ci Modules/_decimal/libmpdec \ 63437db96d56Sopenharmony_ci Modules/_io \ 63447db96d56Sopenharmony_ci Modules/_multiprocessing \ 63457db96d56Sopenharmony_ci Modules/_sha3 \ 63467db96d56Sopenharmony_ci Modules/_sqlite \ 63477db96d56Sopenharmony_ci Modules/_sre \ 63487db96d56Sopenharmony_ci Modules/_xxtestfuzz \ 63497db96d56Sopenharmony_ci Modules/cjkcodecs \ 63507db96d56Sopenharmony_ci Modules/expat \ 63517db96d56Sopenharmony_ci Objects \ 63527db96d56Sopenharmony_ci Parser \ 63537db96d56Sopenharmony_ci Programs \ 63547db96d56Sopenharmony_ci Python \ 63557db96d56Sopenharmony_ci Python/frozen_modules \ 63567db96d56Sopenharmony_ci Python/deepfreeze" 63577db96d56Sopenharmony_ciAC_MSG_CHECKING(for build directories) 63587db96d56Sopenharmony_cifor dir in $SRCDIRS; do 63597db96d56Sopenharmony_ci if test ! -d $dir; then 63607db96d56Sopenharmony_ci mkdir $dir 63617db96d56Sopenharmony_ci fi 63627db96d56Sopenharmony_cidone 63637db96d56Sopenharmony_ciAC_MSG_RESULT(done) 63647db96d56Sopenharmony_ci 63657db96d56Sopenharmony_ci# Availability of -O2: 63667db96d56Sopenharmony_ciAC_CACHE_CHECK([for -O2], [ac_cv_compile_o2], [ 63677db96d56Sopenharmony_cisaved_cflags="$CFLAGS" 63687db96d56Sopenharmony_ciCFLAGS="-O2" 63697db96d56Sopenharmony_ciAC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ac_cv_compile_o2=yes], [ac_cv_compile_o2=no]) 63707db96d56Sopenharmony_ciCFLAGS="$saved_cflags" 63717db96d56Sopenharmony_ci]) 63727db96d56Sopenharmony_ci 63737db96d56Sopenharmony_ci# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect: 63747db96d56Sopenharmony_ci# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html 63757db96d56Sopenharmony_ciAC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug) 63767db96d56Sopenharmony_cisaved_cflags="$CFLAGS" 63777db96d56Sopenharmony_ciCFLAGS="-O2 -D_FORTIFY_SOURCE=2" 63787db96d56Sopenharmony_ciif test "$ac_cv_compile_o2" = no; then 63797db96d56Sopenharmony_ci CFLAGS="" 63807db96d56Sopenharmony_cifi 63817db96d56Sopenharmony_ciAC_RUN_IFELSE([AC_LANG_SOURCE([[ 63827db96d56Sopenharmony_ci#include <stdio.h> 63837db96d56Sopenharmony_ci#include <stdlib.h> 63847db96d56Sopenharmony_ci#include <string.h> 63857db96d56Sopenharmony_civoid foo(void *p, void *q) { memmove(p, q, 19); } 63867db96d56Sopenharmony_ciint main(void) { 63877db96d56Sopenharmony_ci char a[32] = "123456789000000000"; 63887db96d56Sopenharmony_ci foo(&a[9], a); 63897db96d56Sopenharmony_ci if (strcmp(a, "123456789123456789000000000") != 0) 63907db96d56Sopenharmony_ci return 1; 63917db96d56Sopenharmony_ci foo(a, &a[9]); 63927db96d56Sopenharmony_ci if (strcmp(a, "123456789000000000") != 0) 63937db96d56Sopenharmony_ci return 1; 63947db96d56Sopenharmony_ci return 0; 63957db96d56Sopenharmony_ci} 63967db96d56Sopenharmony_ci]])], 63977db96d56Sopenharmony_ci[have_glibc_memmove_bug=no], 63987db96d56Sopenharmony_ci[have_glibc_memmove_bug=yes], 63997db96d56Sopenharmony_ci[have_glibc_memmove_bug=undefined]) 64007db96d56Sopenharmony_ciCFLAGS="$saved_cflags" 64017db96d56Sopenharmony_ciAC_MSG_RESULT($have_glibc_memmove_bug) 64027db96d56Sopenharmony_ciif test "$have_glibc_memmove_bug" = yes; then 64037db96d56Sopenharmony_ci AC_DEFINE(HAVE_GLIBC_MEMMOVE_BUG, 1, 64047db96d56Sopenharmony_ci [Define if glibc has incorrect _FORTIFY_SOURCE wrappers 64057db96d56Sopenharmony_ci for memmove and bcopy.]) 64067db96d56Sopenharmony_cifi 64077db96d56Sopenharmony_ci 64087db96d56Sopenharmony_ciif test "$ac_cv_gcc_asm_for_x87" = yes; then 64097db96d56Sopenharmony_ci # Some versions of gcc miscompile inline asm: 64107db96d56Sopenharmony_ci # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 64117db96d56Sopenharmony_ci # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html 64127db96d56Sopenharmony_ci case $CC in 64137db96d56Sopenharmony_ci *gcc*) 64147db96d56Sopenharmony_ci AC_MSG_CHECKING(for gcc ipa-pure-const bug) 64157db96d56Sopenharmony_ci saved_cflags="$CFLAGS" 64167db96d56Sopenharmony_ci CFLAGS="-O2" 64177db96d56Sopenharmony_ci AC_RUN_IFELSE([AC_LANG_SOURCE([[ 64187db96d56Sopenharmony_ci __attribute__((noinline)) int 64197db96d56Sopenharmony_ci foo(int *p) { 64207db96d56Sopenharmony_ci int r; 64217db96d56Sopenharmony_ci asm ( "movl \$6, (%1)\n\t" 64227db96d56Sopenharmony_ci "xorl %0, %0\n\t" 64237db96d56Sopenharmony_ci : "=r" (r) : "r" (p) : "memory" 64247db96d56Sopenharmony_ci ); 64257db96d56Sopenharmony_ci return r; 64267db96d56Sopenharmony_ci } 64277db96d56Sopenharmony_ci int main(void) { 64287db96d56Sopenharmony_ci int p = 8; 64297db96d56Sopenharmony_ci if ((foo(&p) ? : p) != 6) 64307db96d56Sopenharmony_ci return 1; 64317db96d56Sopenharmony_ci return 0; 64327db96d56Sopenharmony_ci } 64337db96d56Sopenharmony_ci ]])], 64347db96d56Sopenharmony_ci [have_ipa_pure_const_bug=no], 64357db96d56Sopenharmony_ci [have_ipa_pure_const_bug=yes], 64367db96d56Sopenharmony_ci [have_ipa_pure_const_bug=undefined]) 64377db96d56Sopenharmony_ci CFLAGS="$saved_cflags" 64387db96d56Sopenharmony_ci AC_MSG_RESULT($have_ipa_pure_const_bug) 64397db96d56Sopenharmony_ci if test "$have_ipa_pure_const_bug" = yes; then 64407db96d56Sopenharmony_ci AC_DEFINE(HAVE_IPA_PURE_CONST_BUG, 1, 64417db96d56Sopenharmony_ci [Define if gcc has the ipa-pure-const bug.]) 64427db96d56Sopenharmony_ci fi 64437db96d56Sopenharmony_ci ;; 64447db96d56Sopenharmony_ci esac 64457db96d56Sopenharmony_cifi 64467db96d56Sopenharmony_ci 64477db96d56Sopenharmony_ci# Check for stdatomic.h 64487db96d56Sopenharmony_ciAC_CACHE_CHECK([for stdatomic.h], [ac_cv_header_stdatomic_h], [ 64497db96d56Sopenharmony_ciAC_LINK_IFELSE( 64507db96d56Sopenharmony_ci[ 64517db96d56Sopenharmony_ci AC_LANG_SOURCE([[ 64527db96d56Sopenharmony_ci #include <stdatomic.h> 64537db96d56Sopenharmony_ci atomic_int int_var; 64547db96d56Sopenharmony_ci atomic_uintptr_t uintptr_var; 64557db96d56Sopenharmony_ci int main(void) { 64567db96d56Sopenharmony_ci atomic_store_explicit(&int_var, 5, memory_order_relaxed); 64577db96d56Sopenharmony_ci atomic_store_explicit(&uintptr_var, 0, memory_order_relaxed); 64587db96d56Sopenharmony_ci int loaded_value = atomic_load_explicit(&int_var, memory_order_seq_cst); 64597db96d56Sopenharmony_ci return 0; 64607db96d56Sopenharmony_ci } 64617db96d56Sopenharmony_ci ]]) 64627db96d56Sopenharmony_ci],[ac_cv_header_stdatomic_h=yes],[ac_cv_header_stdatomic_h=no]) 64637db96d56Sopenharmony_ci]) 64647db96d56Sopenharmony_ci 64657db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_header_stdatomic_h], [yes], [ 64667db96d56Sopenharmony_ci AC_DEFINE(HAVE_STD_ATOMIC, 1, 64677db96d56Sopenharmony_ci [Has stdatomic.h with atomic_int and atomic_uintptr_t]) 64687db96d56Sopenharmony_ci]) 64697db96d56Sopenharmony_ci 64707db96d56Sopenharmony_ci# Check for GCC >= 4.7 and clang __atomic builtin functions 64717db96d56Sopenharmony_ciAC_CACHE_CHECK([for builtin __atomic_load_n and __atomic_store_n functions], [ac_cv_builtin_atomic], [ 64727db96d56Sopenharmony_ciAC_LINK_IFELSE( 64737db96d56Sopenharmony_ci[ 64747db96d56Sopenharmony_ci AC_LANG_SOURCE([[ 64757db96d56Sopenharmony_ci int val; 64767db96d56Sopenharmony_ci int main(void) { 64777db96d56Sopenharmony_ci __atomic_store_n(&val, 1, __ATOMIC_SEQ_CST); 64787db96d56Sopenharmony_ci (void)__atomic_load_n(&val, __ATOMIC_SEQ_CST); 64797db96d56Sopenharmony_ci return 0; 64807db96d56Sopenharmony_ci } 64817db96d56Sopenharmony_ci ]]) 64827db96d56Sopenharmony_ci],[ac_cv_builtin_atomic=yes],[ac_cv_builtin_atomic=no]) 64837db96d56Sopenharmony_ci]) 64847db96d56Sopenharmony_ci 64857db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_builtin_atomic], [yes], [ 64867db96d56Sopenharmony_ci AC_DEFINE(HAVE_BUILTIN_ATOMIC, 1, [Has builtin __atomic_load_n() and __atomic_store_n() functions]) 64877db96d56Sopenharmony_ci]) 64887db96d56Sopenharmony_ci 64897db96d56Sopenharmony_ci# ensurepip option 64907db96d56Sopenharmony_ciAC_MSG_CHECKING(for ensurepip) 64917db96d56Sopenharmony_ciAC_ARG_WITH(ensurepip, 64927db96d56Sopenharmony_ci [AS_HELP_STRING([--with-ensurepip@<:@=install|upgrade|no@:>@], 64937db96d56Sopenharmony_ci ["install" or "upgrade" using bundled pip (default is upgrade)])], 64947db96d56Sopenharmony_ci [], 64957db96d56Sopenharmony_ci [ 64967db96d56Sopenharmony_ci AS_CASE([$ac_sys_system], 64977db96d56Sopenharmony_ci [Emscripten], [with_ensurepip=no], 64987db96d56Sopenharmony_ci [WASI], [with_ensurepip=no], 64997db96d56Sopenharmony_ci [with_ensurepip=upgrade] 65007db96d56Sopenharmony_ci ) 65017db96d56Sopenharmony_ci ]) 65027db96d56Sopenharmony_ciAS_CASE($with_ensurepip, 65037db96d56Sopenharmony_ci [yes|upgrade],[ENSUREPIP=upgrade], 65047db96d56Sopenharmony_ci [install],[ENSUREPIP=install], 65057db96d56Sopenharmony_ci [no],[ENSUREPIP=no], 65067db96d56Sopenharmony_ci [AC_MSG_ERROR([--with-ensurepip=upgrade|install|no])]) 65077db96d56Sopenharmony_ciAC_MSG_RESULT($ENSUREPIP) 65087db96d56Sopenharmony_ciAC_SUBST(ENSUREPIP) 65097db96d56Sopenharmony_ci 65107db96d56Sopenharmony_ci# check if the dirent structure of a d_type field and DT_UNKNOWN is defined 65117db96d56Sopenharmony_ciAC_CACHE_CHECK([if the dirent structure of a d_type field], [ac_cv_dirent_d_type], [ 65127db96d56Sopenharmony_ciAC_LINK_IFELSE( 65137db96d56Sopenharmony_ci[ 65147db96d56Sopenharmony_ci AC_LANG_SOURCE([[ 65157db96d56Sopenharmony_ci #include <dirent.h> 65167db96d56Sopenharmony_ci 65177db96d56Sopenharmony_ci int main(void) { 65187db96d56Sopenharmony_ci struct dirent entry; 65197db96d56Sopenharmony_ci return entry.d_type == DT_UNKNOWN; 65207db96d56Sopenharmony_ci } 65217db96d56Sopenharmony_ci ]]) 65227db96d56Sopenharmony_ci],[ac_cv_dirent_d_type=yes],[ac_cv_dirent_d_type=no]) 65237db96d56Sopenharmony_ci]) 65247db96d56Sopenharmony_ci 65257db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_dirent_d_type], [yes], [ 65267db96d56Sopenharmony_ci AC_DEFINE(HAVE_DIRENT_D_TYPE, 1, 65277db96d56Sopenharmony_ci [Define to 1 if the dirent structure has a d_type field]) 65287db96d56Sopenharmony_ci]) 65297db96d56Sopenharmony_ci 65307db96d56Sopenharmony_ci# check if the Linux getrandom() syscall is available 65317db96d56Sopenharmony_ciAC_CACHE_CHECK([for the Linux getrandom() syscall], [ac_cv_getrandom_syscall], [ 65327db96d56Sopenharmony_ciAC_LINK_IFELSE( 65337db96d56Sopenharmony_ci[ 65347db96d56Sopenharmony_ci AC_LANG_SOURCE([[ 65357db96d56Sopenharmony_ci #include <stddef.h> 65367db96d56Sopenharmony_ci #include <unistd.h> 65377db96d56Sopenharmony_ci #include <sys/syscall.h> 65387db96d56Sopenharmony_ci #include <linux/random.h> 65397db96d56Sopenharmony_ci 65407db96d56Sopenharmony_ci int main(void) { 65417db96d56Sopenharmony_ci char buffer[1]; 65427db96d56Sopenharmony_ci const size_t buflen = sizeof(buffer); 65437db96d56Sopenharmony_ci const int flags = GRND_NONBLOCK; 65447db96d56Sopenharmony_ci /* ignore the result, Python checks for ENOSYS and EAGAIN at runtime */ 65457db96d56Sopenharmony_ci (void)syscall(SYS_getrandom, buffer, buflen, flags); 65467db96d56Sopenharmony_ci return 0; 65477db96d56Sopenharmony_ci } 65487db96d56Sopenharmony_ci ]]) 65497db96d56Sopenharmony_ci],[ac_cv_getrandom_syscall=yes],[ac_cv_getrandom_syscall=no]) 65507db96d56Sopenharmony_ci]) 65517db96d56Sopenharmony_ci 65527db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_getrandom_syscall], [yes], [ 65537db96d56Sopenharmony_ci AC_DEFINE(HAVE_GETRANDOM_SYSCALL, 1, 65547db96d56Sopenharmony_ci [Define to 1 if the Linux getrandom() syscall is available]) 65557db96d56Sopenharmony_ci]) 65567db96d56Sopenharmony_ci 65577db96d56Sopenharmony_ci# check if the getrandom() function is available 65587db96d56Sopenharmony_ci# the test was written for the Solaris function of <sys/random.h> 65597db96d56Sopenharmony_ciAC_CACHE_CHECK([for the getrandom() function], [ac_cv_func_getrandom], [ 65607db96d56Sopenharmony_ciAC_LINK_IFELSE( 65617db96d56Sopenharmony_ci[ 65627db96d56Sopenharmony_ci AC_LANG_SOURCE([[ 65637db96d56Sopenharmony_ci #include <stddef.h> 65647db96d56Sopenharmony_ci #include <sys/random.h> 65657db96d56Sopenharmony_ci 65667db96d56Sopenharmony_ci int main(void) { 65677db96d56Sopenharmony_ci char buffer[1]; 65687db96d56Sopenharmony_ci const size_t buflen = sizeof(buffer); 65697db96d56Sopenharmony_ci const int flags = 0; 65707db96d56Sopenharmony_ci /* ignore the result, Python checks for ENOSYS at runtime */ 65717db96d56Sopenharmony_ci (void)getrandom(buffer, buflen, flags); 65727db96d56Sopenharmony_ci return 0; 65737db96d56Sopenharmony_ci } 65747db96d56Sopenharmony_ci ]]) 65757db96d56Sopenharmony_ci],[ac_cv_func_getrandom=yes],[ac_cv_func_getrandom=no]) 65767db96d56Sopenharmony_ci]) 65777db96d56Sopenharmony_ci 65787db96d56Sopenharmony_ciAS_VAR_IF([ac_cv_func_getrandom], [yes], [ 65797db96d56Sopenharmony_ci AC_DEFINE(HAVE_GETRANDOM, 1, 65807db96d56Sopenharmony_ci [Define to 1 if the getrandom() function is available]) 65817db96d56Sopenharmony_ci]) 65827db96d56Sopenharmony_ci 65837db96d56Sopenharmony_ci# checks for POSIX shared memory, used by Modules/_multiprocessing/posixshmem.c 65847db96d56Sopenharmony_ci# shm_* may only be available if linking against librt 65857db96d56Sopenharmony_ciPOSIXSHMEM_CFLAGS='-I$(srcdir)/Modules/_multiprocessing' 65867db96d56Sopenharmony_ciWITH_SAVE_ENV([ 65877db96d56Sopenharmony_ci AC_SEARCH_LIBS([shm_open], [rt]) 65887db96d56Sopenharmony_ci AS_VAR_IF([ac_cv_search_shm_open], [-lrt], [POSIXSHMEM_LIBS="-lrt"]) 65897db96d56Sopenharmony_ci 65907db96d56Sopenharmony_ci dnl Temporarily override ac_includes_default for AC_CHECK_FUNCS below. 65917db96d56Sopenharmony_ci _SAVE_VAR([ac_includes_default]) 65927db96d56Sopenharmony_ci ac_includes_default="\ 65937db96d56Sopenharmony_ci ${ac_includes_default} 65947db96d56Sopenharmony_ci #ifndef __cplusplus 65957db96d56Sopenharmony_ci # ifdef HAVE_SYS_MMAN_H 65967db96d56Sopenharmony_ci # include <sys/mman.h> 65977db96d56Sopenharmony_ci # endif 65987db96d56Sopenharmony_ci #endif 65997db96d56Sopenharmony_ci " 66007db96d56Sopenharmony_ci AC_CHECK_FUNCS([shm_open shm_unlink], [have_posix_shmem=yes], [have_posix_shmem=no]) 66017db96d56Sopenharmony_ci _RESTORE_VAR([ac_includes_default]) 66027db96d56Sopenharmony_ci]) 66037db96d56Sopenharmony_ci 66047db96d56Sopenharmony_ci# Check for usable OpenSSL 66057db96d56Sopenharmony_ciAX_CHECK_OPENSSL([have_openssl=yes],[have_openssl=no]) 66067db96d56Sopenharmony_ci 66077db96d56Sopenharmony_ci# rpath to libssl and libcrypto 66087db96d56Sopenharmony_ciAS_VAR_IF([GNULD], [yes], [ 66097db96d56Sopenharmony_ci rpath_arg="-Wl,--enable-new-dtags,-rpath=" 66107db96d56Sopenharmony_ci], [ 66117db96d56Sopenharmony_ci rpath_arg="-Wl,-rpath=" 66127db96d56Sopenharmony_ci]) 66137db96d56Sopenharmony_ci 66147db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-openssl-rpath) 66157db96d56Sopenharmony_ciAC_ARG_WITH(openssl-rpath, 66167db96d56Sopenharmony_ci AS_HELP_STRING([--with-openssl-rpath=@<:@DIR|auto|no@:>@], 66177db96d56Sopenharmony_ci [Set runtime library directory (rpath) for OpenSSL libraries, 66187db96d56Sopenharmony_ci no (default): don't set rpath, 66197db96d56Sopenharmony_ci auto: auto-detect rpath from --with-openssl and pkg-config, 66207db96d56Sopenharmony_ci DIR: set an explicit rpath 66217db96d56Sopenharmony_ci ]), 66227db96d56Sopenharmony_ci [], 66237db96d56Sopenharmony_ci [with_openssl_rpath=no] 66247db96d56Sopenharmony_ci) 66257db96d56Sopenharmony_ciAS_CASE($with_openssl_rpath, 66267db96d56Sopenharmony_ci [auto|yes], [ 66277db96d56Sopenharmony_ci OPENSSL_RPATH=auto 66287db96d56Sopenharmony_ci dnl look for linker directories 66297db96d56Sopenharmony_ci for arg in "$OPENSSL_LDFLAGS"; do 66307db96d56Sopenharmony_ci AS_CASE([$arg], 66317db96d56Sopenharmony_ci [-L*], [OPENSSL_LDFLAGS_RPATH="$OPENSSL_LDFLAGS_RPATH ${rpath_arg}$(echo $arg | cut -c3-)"] 66327db96d56Sopenharmony_ci ) 66337db96d56Sopenharmony_ci done 66347db96d56Sopenharmony_ci ], 66357db96d56Sopenharmony_ci [no], [OPENSSL_RPATH=], 66367db96d56Sopenharmony_ci [AS_IF( 66377db96d56Sopenharmony_ci [test -d "$with_openssl_rpath"], 66387db96d56Sopenharmony_ci [ 66397db96d56Sopenharmony_ci OPENSSL_RPATH="$with_openssl_rpath" 66407db96d56Sopenharmony_ci OPENSSL_LDFLAGS_RPATH="${rpath_arg}$with_openssl_rpath" 66417db96d56Sopenharmony_ci ], 66427db96d56Sopenharmony_ci AC_MSG_ERROR([--with-openssl-rpath "$with_openssl_rpath" is not a directory])) 66437db96d56Sopenharmony_ci ] 66447db96d56Sopenharmony_ci) 66457db96d56Sopenharmony_ciAC_MSG_RESULT($OPENSSL_RPATH) 66467db96d56Sopenharmony_ciAC_SUBST([OPENSSL_RPATH]) 66477db96d56Sopenharmony_ci 66487db96d56Sopenharmony_ci# This static linking is NOT OFFICIALLY SUPPORTED and not advertised. 66497db96d56Sopenharmony_ci# Requires static OpenSSL build with position-independent code. Some features 66507db96d56Sopenharmony_ci# like DSO engines or external OSSL providers don't work. Only tested with GCC 66517db96d56Sopenharmony_ci# and clang on X86_64. 66527db96d56Sopenharmony_ciAS_VAR_IF([PY_UNSUPPORTED_OPENSSL_BUILD], [static], [ 66537db96d56Sopenharmony_ci AC_MSG_CHECKING([for unsupported static openssl build]) 66547db96d56Sopenharmony_ci new_OPENSSL_LIBS= 66557db96d56Sopenharmony_ci for arg in $OPENSSL_LIBS; do 66567db96d56Sopenharmony_ci AS_CASE([$arg], 66577db96d56Sopenharmony_ci [-l*], [ 66587db96d56Sopenharmony_ci libname=$(echo $arg | cut -c3-) 66597db96d56Sopenharmony_ci new_OPENSSL_LIBS="$new_OPENSSL_LIBS -l:lib${libname}.a -Wl,--exclude-libs,lib${libname}.a" 66607db96d56Sopenharmony_ci ], 66617db96d56Sopenharmony_ci [new_OPENSSL_LIBS="$new_OPENSSL_LIBS $arg"] 66627db96d56Sopenharmony_ci ) 66637db96d56Sopenharmony_ci done 66647db96d56Sopenharmony_ci dnl include libz for OpenSSL build flavors with compression support 66657db96d56Sopenharmony_ci OPENSSL_LIBS="$new_OPENSSL_LIBS $ZLIB_LIBS" 66667db96d56Sopenharmony_ci AC_MSG_RESULT([$OPENSSL_LIBS]) 66677db96d56Sopenharmony_ci]) 66687db96d56Sopenharmony_ci 66697db96d56Sopenharmony_cidnl AX_CHECK_OPENSSL does not export libcrypto-only libs 66707db96d56Sopenharmony_ciLIBCRYPTO_LIBS= 66717db96d56Sopenharmony_cifor arg in $OPENSSL_LIBS; do 66727db96d56Sopenharmony_ci AS_CASE([$arg], 66737db96d56Sopenharmony_ci [-l*ssl*|-Wl*ssl*], [], 66747db96d56Sopenharmony_ci [LIBCRYPTO_LIBS="$LIBCRYPTO_LIBS $arg"] 66757db96d56Sopenharmony_ci ) 66767db96d56Sopenharmony_cidone 66777db96d56Sopenharmony_ci 66787db96d56Sopenharmony_ci# check if OpenSSL libraries work as expected 66797db96d56Sopenharmony_ciWITH_SAVE_ENV([ 66807db96d56Sopenharmony_ci LIBS="$LIBS $OPENSSL_LIBS" 66817db96d56Sopenharmony_ci CFLAGS="$CFLAGS $OPENSSL_INCLUDES" 66827db96d56Sopenharmony_ci LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH" 66837db96d56Sopenharmony_ci 66847db96d56Sopenharmony_ci AC_CACHE_CHECK([whether OpenSSL provides required ssl module APIs], [ac_cv_working_openssl_ssl], [ 66857db96d56Sopenharmony_ci AC_LINK_IFELSE([AC_LANG_PROGRAM([ 66867db96d56Sopenharmony_ci #include <openssl/opensslv.h> 66877db96d56Sopenharmony_ci #include <openssl/ssl.h> 66887db96d56Sopenharmony_ci #if OPENSSL_VERSION_NUMBER < 0x10101000L 66897db96d56Sopenharmony_ci #error "OpenSSL >= 1.1.1 is required" 66907db96d56Sopenharmony_ci #endif 66917db96d56Sopenharmony_ci static void keylog_cb(const SSL *ssl, const char *line) {} 66927db96d56Sopenharmony_ci ], [ 66937db96d56Sopenharmony_ci SSL_CTX *ctx = SSL_CTX_new(TLS_client_method()); 66947db96d56Sopenharmony_ci SSL_CTX_set_keylog_callback(ctx, keylog_cb); 66957db96d56Sopenharmony_ci SSL *ssl = SSL_new(ctx); 66967db96d56Sopenharmony_ci X509_VERIFY_PARAM *param = SSL_get0_param(ssl); 66977db96d56Sopenharmony_ci X509_VERIFY_PARAM_set1_host(param, "python.org", 0); 66987db96d56Sopenharmony_ci SSL_free(ssl); 66997db96d56Sopenharmony_ci SSL_CTX_free(ctx); 67007db96d56Sopenharmony_ci ])], [ac_cv_working_openssl_ssl=yes], [ac_cv_working_openssl_ssl=no]) 67017db96d56Sopenharmony_ci ]) 67027db96d56Sopenharmony_ci]) 67037db96d56Sopenharmony_ci 67047db96d56Sopenharmony_ciWITH_SAVE_ENV([ 67057db96d56Sopenharmony_ci LIBS="$LIBS $LIBCRYPTO_LIBS" 67067db96d56Sopenharmony_ci CFLAGS="$CFLAGS $OPENSSL_INCLUDES" 67077db96d56Sopenharmony_ci LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH" 67087db96d56Sopenharmony_ci 67097db96d56Sopenharmony_ci AC_CACHE_CHECK([whether OpenSSL provides required hashlib module APIs], [ac_cv_working_openssl_hashlib], [ 67107db96d56Sopenharmony_ci AC_LINK_IFELSE([AC_LANG_PROGRAM([ 67117db96d56Sopenharmony_ci #include <openssl/opensslv.h> 67127db96d56Sopenharmony_ci #include <openssl/evp.h> 67137db96d56Sopenharmony_ci #if OPENSSL_VERSION_NUMBER < 0x10101000L 67147db96d56Sopenharmony_ci #error "OpenSSL >= 1.1.1 is required" 67157db96d56Sopenharmony_ci #endif 67167db96d56Sopenharmony_ci ], [ 67177db96d56Sopenharmony_ci OBJ_nid2sn(NID_md5); 67187db96d56Sopenharmony_ci OBJ_nid2sn(NID_sha1); 67197db96d56Sopenharmony_ci OBJ_nid2sn(NID_sha3_512); 67207db96d56Sopenharmony_ci OBJ_nid2sn(NID_blake2b512); 67217db96d56Sopenharmony_ci EVP_PBE_scrypt(NULL, 0, NULL, 0, 2, 8, 1, 0, NULL, 0); 67227db96d56Sopenharmony_ci ])], [ac_cv_working_openssl_hashlib=yes], [ac_cv_working_openssl_hashlib=no]) 67237db96d56Sopenharmony_ci ]) 67247db96d56Sopenharmony_ci]) 67257db96d56Sopenharmony_ci 67267db96d56Sopenharmony_ci# ssl module default cipher suite string 67277db96d56Sopenharmony_ciAH_TEMPLATE(PY_SSL_DEFAULT_CIPHERS, 67287db96d56Sopenharmony_ci [Default cipher suites list for ssl module. 67297db96d56Sopenharmony_ci 1: Python's preferred selection, 2: leave OpenSSL defaults untouched, 0: custom string]) 67307db96d56Sopenharmony_ciAH_TEMPLATE(PY_SSL_DEFAULT_CIPHER_STRING, 67317db96d56Sopenharmony_ci [Cipher suite string for PY_SSL_DEFAULT_CIPHERS=0] 67327db96d56Sopenharmony_ci) 67337db96d56Sopenharmony_ci 67347db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-ssl-default-suites) 67357db96d56Sopenharmony_ciAC_ARG_WITH(ssl-default-suites, 67367db96d56Sopenharmony_ci AS_HELP_STRING([--with-ssl-default-suites=@<:@python|openssl|STRING@:>@], 67377db96d56Sopenharmony_ci [override default cipher suites string, 67387db96d56Sopenharmony_ci python: use Python's preferred selection (default), 67397db96d56Sopenharmony_ci openssl: leave OpenSSL's defaults untouched, 67407db96d56Sopenharmony_ci STRING: use a custom string, 67417db96d56Sopenharmony_ci python and STRING also set TLS 1.2 as minimum TLS version]), 67427db96d56Sopenharmony_ci[ 67437db96d56Sopenharmony_ciAC_MSG_RESULT($withval) 67447db96d56Sopenharmony_cicase "$withval" in 67457db96d56Sopenharmony_ci python) 67467db96d56Sopenharmony_ci AC_DEFINE(PY_SSL_DEFAULT_CIPHERS, 1) 67477db96d56Sopenharmony_ci ;; 67487db96d56Sopenharmony_ci openssl) 67497db96d56Sopenharmony_ci AC_DEFINE(PY_SSL_DEFAULT_CIPHERS, 2) 67507db96d56Sopenharmony_ci ;; 67517db96d56Sopenharmony_ci *) 67527db96d56Sopenharmony_ci AC_DEFINE(PY_SSL_DEFAULT_CIPHERS, 0) 67537db96d56Sopenharmony_ci AC_DEFINE_UNQUOTED(PY_SSL_DEFAULT_CIPHER_STRING, "$withval") 67547db96d56Sopenharmony_ci ;; 67557db96d56Sopenharmony_ciesac 67567db96d56Sopenharmony_ci], 67577db96d56Sopenharmony_ci[ 67587db96d56Sopenharmony_ciAC_MSG_RESULT(python) 67597db96d56Sopenharmony_ciAC_DEFINE(PY_SSL_DEFAULT_CIPHERS, 1) 67607db96d56Sopenharmony_ci]) 67617db96d56Sopenharmony_ci 67627db96d56Sopenharmony_ci# builtin hash modules 67637db96d56Sopenharmony_cidefault_hashlib_hashes="md5,sha1,sha256,sha512,sha3,blake2" 67647db96d56Sopenharmony_ciAC_DEFINE([PY_BUILTIN_HASHLIB_HASHES], [], [enabled builtin hash modules] 67657db96d56Sopenharmony_ci) 67667db96d56Sopenharmony_ciAC_MSG_CHECKING(for --with-builtin-hashlib-hashes) 67677db96d56Sopenharmony_ciAC_ARG_WITH(builtin-hashlib-hashes, 67687db96d56Sopenharmony_ci AS_HELP_STRING([--with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2], 67697db96d56Sopenharmony_ci [builtin hash modules, 67707db96d56Sopenharmony_ci md5, sha1, sha256, sha512, sha3 (with shake), blake2]), 67717db96d56Sopenharmony_ci[ 67727db96d56Sopenharmony_ci AS_CASE([$with_builtin_hashlib_hashes], 67737db96d56Sopenharmony_ci [yes], [with_builtin_hashlib_hashes=$default_hashlib_hashes], 67747db96d56Sopenharmony_ci [no], [with_builtin_hashlib_hashes=""] 67757db96d56Sopenharmony_ci ) 67767db96d56Sopenharmony_ci], [with_builtin_hashlib_hashes=$default_hashlib_hashes]) 67777db96d56Sopenharmony_ci 67787db96d56Sopenharmony_ciAC_MSG_RESULT($with_builtin_hashlib_hashes) 67797db96d56Sopenharmony_ciAC_DEFINE_UNQUOTED(PY_BUILTIN_HASHLIB_HASHES, "$with_builtin_hashlib_hashes") 67807db96d56Sopenharmony_ci 67817db96d56Sopenharmony_cias_save_IFS=$IFS 67827db96d56Sopenharmony_ciIFS=, 67837db96d56Sopenharmony_cifor builtin_hash in $with_builtin_hashlib_hashes; do 67847db96d56Sopenharmony_ci AS_CASE($builtin_hash, 67857db96d56Sopenharmony_ci [md5], [with_builtin_md5=yes], 67867db96d56Sopenharmony_ci [sha1], [with_builtin_sha1=yes], 67877db96d56Sopenharmony_ci [sha256], [with_builtin_sha256=yes], 67887db96d56Sopenharmony_ci [sha512], [with_builtin_sha512=yes], 67897db96d56Sopenharmony_ci [sha3], [with_builtin_sha3=yes], 67907db96d56Sopenharmony_ci [blake2], [with_builtin_blake2=yes] 67917db96d56Sopenharmony_ci ) 67927db96d56Sopenharmony_cidone 67937db96d56Sopenharmony_ciIFS=$as_save_IFS 67947db96d56Sopenharmony_ci 67957db96d56Sopenharmony_cidnl libb2 for blake2. _blake2 module falls back to vendored copy. 67967db96d56Sopenharmony_ciAS_VAR_IF([with_builtin_blake2], [yes], [ 67977db96d56Sopenharmony_ci PKG_CHECK_MODULES([LIBB2], [libb2], [ 67987db96d56Sopenharmony_ci have_libb2=yes 67997db96d56Sopenharmony_ci AC_DEFINE([HAVE_LIBB2], [1], 68007db96d56Sopenharmony_ci [Define to 1 if you want to build _blake2 module with libb2]) 68017db96d56Sopenharmony_ci ], [have_libb2=no]) 68027db96d56Sopenharmony_ci]) 68037db96d56Sopenharmony_ci 68047db96d56Sopenharmony_ci# Check whether to disable test modules. Once set, setup.py will not build 68057db96d56Sopenharmony_ci# test extension modules and "make install" will not install test suites. 68067db96d56Sopenharmony_ciAC_MSG_CHECKING([for --disable-test-modules]) 68077db96d56Sopenharmony_ciAC_ARG_ENABLE([test-modules], 68087db96d56Sopenharmony_ci [AS_HELP_STRING([--disable-test-modules], [don't build nor install test modules])], [ 68097db96d56Sopenharmony_ci AS_VAR_IF([enable_test_modules], [yes], [TEST_MODULES=yes], [TEST_MODULES=no]) 68107db96d56Sopenharmony_ci], [ 68117db96d56Sopenharmony_ci AS_CASE([$ac_sys_system/$ac_sys_emscripten_target], 68127db96d56Sopenharmony_ci [Emscripten/browser*], [TEST_MODULES=no], 68137db96d56Sopenharmony_ci [TEST_MODULES=yes] 68147db96d56Sopenharmony_ci ) 68157db96d56Sopenharmony_ci]) 68167db96d56Sopenharmony_ciAC_MSG_RESULT([$TEST_MODULES]) 68177db96d56Sopenharmony_ciAC_SUBST([TEST_MODULES]) 68187db96d56Sopenharmony_ci 68197db96d56Sopenharmony_ciAC_DEFUN([PY_STDLIB_MOD_SET_NA], [ 68207db96d56Sopenharmony_ci m4_foreach([mod], [$@], [ 68217db96d56Sopenharmony_ci AS_VAR_SET([py_cv_module_]mod, [n/a])]) 68227db96d56Sopenharmony_ci]) 68237db96d56Sopenharmony_ci 68247db96d56Sopenharmony_ci# stdlib not available 68257db96d56Sopenharmony_cidnl Modules that are not available on some platforms 68267db96d56Sopenharmony_cidnl AIX has shadow passwords, but access is not via getspent() 68277db96d56Sopenharmony_cidnl VxWorks does not provide crypt() function 68287db96d56Sopenharmony_ciAS_CASE([$ac_sys_system], 68297db96d56Sopenharmony_ci [AIX], [PY_STDLIB_MOD_SET_NA([_scproxy], [spwd])], 68307db96d56Sopenharmony_ci [VxWorks*], [PY_STDLIB_MOD_SET_NA([_scproxy], [_crypt], [termios], [grp])], 68317db96d56Sopenharmony_ci [Darwin], [PY_STDLIB_MOD_SET_NA([ossaudiodev], [spwd])], 68327db96d56Sopenharmony_ci [CYGWIN*], [PY_STDLIB_MOD_SET_NA([_scproxy], [nis])], 68337db96d56Sopenharmony_ci [QNX*], [PY_STDLIB_MOD_SET_NA([_scproxy], [nis])], 68347db96d56Sopenharmony_ci [FreeBSD*], [PY_STDLIB_MOD_SET_NA([_scproxy], [spwd])], 68357db96d56Sopenharmony_ci [Emscripten|WASI], [ 68367db96d56Sopenharmony_ci dnl subprocess and multiprocessing are not supported (no fork syscall). 68377db96d56Sopenharmony_ci dnl curses and tkinter user interface are not available. 68387db96d56Sopenharmony_ci dnl dbm and gdbm aren't available, too. 68397db96d56Sopenharmony_ci dnl Emscripten and WASI provide only stubs for pwd, grp APIs. 68407db96d56Sopenharmony_ci dnl resource functions (get/setrusage) are stubs, too. 68417db96d56Sopenharmony_ci PY_STDLIB_MOD_SET_NA( 68427db96d56Sopenharmony_ci [_curses], 68437db96d56Sopenharmony_ci [_curses_panel], 68447db96d56Sopenharmony_ci [_dbm], 68457db96d56Sopenharmony_ci [_gdbm], 68467db96d56Sopenharmony_ci [_multiprocessing], 68477db96d56Sopenharmony_ci [_posixshmem], 68487db96d56Sopenharmony_ci [_posixsubprocess], 68497db96d56Sopenharmony_ci [_scproxy], 68507db96d56Sopenharmony_ci [_tkinter], 68517db96d56Sopenharmony_ci [_xxsubinterpreters], 68527db96d56Sopenharmony_ci [grp], 68537db96d56Sopenharmony_ci [nis], 68547db96d56Sopenharmony_ci [ossaudiodev], 68557db96d56Sopenharmony_ci [pwd], 68567db96d56Sopenharmony_ci [resource], 68577db96d56Sopenharmony_ci [spwd], 68587db96d56Sopenharmony_ci [syslog], 68597db96d56Sopenharmony_ci ) 68607db96d56Sopenharmony_ci AS_CASE([$ac_sys_system/$ac_sys_emscripten_target], 68617db96d56Sopenharmony_ci [Emscripten/browser*], [ 68627db96d56Sopenharmony_ci dnl These modules are not particularly useful in browsers. 68637db96d56Sopenharmony_ci PY_STDLIB_MOD_SET_NA( 68647db96d56Sopenharmony_ci [fcntl], 68657db96d56Sopenharmony_ci [readline], 68667db96d56Sopenharmony_ci [termios], 68677db96d56Sopenharmony_ci ) 68687db96d56Sopenharmony_ci ], 68697db96d56Sopenharmony_ci [Emscripten/node*], [], 68707db96d56Sopenharmony_ci [WASI/*], [ 68717db96d56Sopenharmony_ci dnl WASI SDK 15.0 does not support file locking, mmap, and more. 68727db96d56Sopenharmony_ci PY_STDLIB_MOD_SET_NA( 68737db96d56Sopenharmony_ci [_ctypes_test], 68747db96d56Sopenharmony_ci [fcntl], 68757db96d56Sopenharmony_ci [mmap], 68767db96d56Sopenharmony_ci [termios], 68777db96d56Sopenharmony_ci ) 68787db96d56Sopenharmony_ci ] 68797db96d56Sopenharmony_ci ) 68807db96d56Sopenharmony_ci ], 68817db96d56Sopenharmony_ci [PY_STDLIB_MOD_SET_NA([_scproxy])] 68827db96d56Sopenharmony_ci) 68837db96d56Sopenharmony_ci 68847db96d56Sopenharmony_cidnl AC_MSG_NOTICE([m4_set_list([_PY_STDLIB_MOD_SET_NA])]) 68857db96d56Sopenharmony_ci 68867db96d56Sopenharmony_cidnl Default value for Modules/Setup.stdlib build type 68877db96d56Sopenharmony_ciAS_CASE([$host_cpu], 68887db96d56Sopenharmony_ci [wasm32|wasm64], [MODULE_BUILDTYPE=static], 68897db96d56Sopenharmony_ci [MODULE_BUILDTYPE=${MODULE_BUILDTYPE:-shared}] 68907db96d56Sopenharmony_ci) 68917db96d56Sopenharmony_ciAC_SUBST([MODULE_BUILDTYPE]) 68927db96d56Sopenharmony_ci 68937db96d56Sopenharmony_cidnl Use Modules/Setup.stdlib as additional provider? 68947db96d56Sopenharmony_ciAC_MSG_CHECKING([for additional Modules/Setup files]) 68957db96d56Sopenharmony_ciAS_CASE([$ac_sys_system], 68967db96d56Sopenharmony_ci [Emscripten], [MODULES_SETUP_STDLIB=Modules/Setup.stdlib], 68977db96d56Sopenharmony_ci [WASI], [MODULES_SETUP_STDLIB=Modules/Setup.stdlib], 68987db96d56Sopenharmony_ci [MODULES_SETUP_STDLIB=] 68997db96d56Sopenharmony_ci) 69007db96d56Sopenharmony_ciAC_MSG_RESULT([$MODULES_SETUP_STDLIB]) 69017db96d56Sopenharmony_ciAC_SUBST([MODULES_SETUP_STDLIB]) 69027db96d56Sopenharmony_ci 69037db96d56Sopenharmony_ci 69047db96d56Sopenharmony_cidnl _MODULE_BLOCK_ADD([VAR], [VALUE]) 69057db96d56Sopenharmony_cidnl internal: adds $1=quote($2) to MODULE_BLOCK 69067db96d56Sopenharmony_ciAC_DEFUN([_MODULE_BLOCK_ADD], [AS_VAR_APPEND([MODULE_BLOCK], ["$1=_AS_QUOTE([$2])$as_nl"])]) 69077db96d56Sopenharmony_ciMODULE_BLOCK= 69087db96d56Sopenharmony_ci 69097db96d56Sopenharmony_cidnl Check for stdlib extension modules 69107db96d56Sopenharmony_cidnl PY_STDLIB_MOD([NAME], [ENABLED-TEST], [SUPPORTED-TEST], [CFLAGS], [LDFLAGS]) 69117db96d56Sopenharmony_cidnl sets MODULE_$NAME_STATE based on PY_STDLIB_MOD_SET_NA(), ENABLED-TEST, 69127db96d56Sopenharmony_cidnl and SUPPORTED_TEST. ENABLED-TEST and SUPPORTED-TEST default to true if 69137db96d56Sopenharmony_cidnl empty. 69147db96d56Sopenharmony_cidnl n/a: marked unavailable on platform by PY_STDLIB_MOD_SET_NA() 69157db96d56Sopenharmony_cidnl yes: enabled and supported 69167db96d56Sopenharmony_cidnl missing: enabled and not supported 69177db96d56Sopenharmony_cidnl disabled: not enabled 69187db96d56Sopenharmony_cidnl sets MODULE_$NAME_CFLAGS and MODULE_$NAME_LDFLAGS 69197db96d56Sopenharmony_ciAC_DEFUN([PY_STDLIB_MOD], [ 69207db96d56Sopenharmony_ci AC_MSG_CHECKING([for stdlib extension module $1]) 69217db96d56Sopenharmony_ci m4_pushdef([modcond], [MODULE_]m4_toupper([$1]))dnl 69227db96d56Sopenharmony_ci m4_pushdef([modstate], [py_cv_module_$1])dnl 69237db96d56Sopenharmony_ci dnl Check if module has been disabled by PY_STDLIB_MOD_SET_NA() 69247db96d56Sopenharmony_ci AS_IF([test "$modstate" != "n/a"], [ 69257db96d56Sopenharmony_ci AS_IF(m4_ifblank([$2], [true], [$2]), 69267db96d56Sopenharmony_ci [AS_IF([m4_ifblank([$3], [true], [$3])], [modstate=yes], [modstate=missing])], 69277db96d56Sopenharmony_ci [modstate=disabled]) 69287db96d56Sopenharmony_ci ]) 69297db96d56Sopenharmony_ci _MODULE_BLOCK_ADD(modcond[_STATE], [$modstate]) 69307db96d56Sopenharmony_ci AS_VAR_IF([modstate], [yes], [ 69317db96d56Sopenharmony_ci m4_ifblank([$4], [], [_MODULE_BLOCK_ADD([MODULE_]m4_toupper([$1])[_CFLAGS], [$4])]) 69327db96d56Sopenharmony_ci m4_ifblank([$5], [], [_MODULE_BLOCK_ADD([MODULE_]m4_toupper([$1])[_LDFLAGS], [$5])]) 69337db96d56Sopenharmony_ci ]) 69347db96d56Sopenharmony_ci AM_CONDITIONAL(modcond, [test "$modstate" = yes]) 69357db96d56Sopenharmony_ci AC_MSG_RESULT([$modstate]) 69367db96d56Sopenharmony_ci m4_popdef([modcond])dnl 69377db96d56Sopenharmony_ci m4_popdef([modstate])dnl 69387db96d56Sopenharmony_ci]) 69397db96d56Sopenharmony_ci 69407db96d56Sopenharmony_cidnl Define simple stdlib extension module 69417db96d56Sopenharmony_cidnl Always enable unless the module is disabled by PY_STDLIB_MOD_SET_NA 69427db96d56Sopenharmony_cidnl PY_STDLIB_MOD_SIMPLE([NAME], [CFLAGS], [LDFLAGS]) 69437db96d56Sopenharmony_cidnl cflags and ldflags are optional 69447db96d56Sopenharmony_ciAC_DEFUN([PY_STDLIB_MOD_SIMPLE], [ 69457db96d56Sopenharmony_ci m4_pushdef([modcond], [MODULE_]m4_toupper([$1]))dnl 69467db96d56Sopenharmony_ci m4_pushdef([modstate], [py_cv_module_$1])dnl 69477db96d56Sopenharmony_ci dnl Check if module has been disabled by PY_STDLIB_MOD_SET_NA() 69487db96d56Sopenharmony_ci AS_IF([test "$modstate" != "n/a"], [modstate=yes]) 69497db96d56Sopenharmony_ci AM_CONDITIONAL(modcond, [test "$modstate" = yes]) 69507db96d56Sopenharmony_ci _MODULE_BLOCK_ADD(modcond[_STATE], [$modstate]) 69517db96d56Sopenharmony_ci AS_VAR_IF([modstate], [yes], [ 69527db96d56Sopenharmony_ci m4_ifblank([$2], [], [_MODULE_BLOCK_ADD([MODULE_]m4_toupper([$1])[_CFLAGS], [$2])]) 69537db96d56Sopenharmony_ci m4_ifblank([$3], [], [_MODULE_BLOCK_ADD([MODULE_]m4_toupper([$1])[_LDFLAGS], [$3])]) 69547db96d56Sopenharmony_ci ]) 69557db96d56Sopenharmony_ci m4_popdef([modcond])dnl 69567db96d56Sopenharmony_ci m4_popdef([modstate])dnl 69577db96d56Sopenharmony_ci]) 69587db96d56Sopenharmony_ci 69597db96d56Sopenharmony_cidnl static modules in Modules/Setup.bootstrap 69607db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_io], [-I\$(srcdir)/Modules/_io], []) 69617db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([time], [], [$TIMEMODULE_LIB]) 69627db96d56Sopenharmony_ci 69637db96d56Sopenharmony_cidnl always enabled extension modules 69647db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([array]) 69657db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_asyncio]) 69667db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_bisect]) 69677db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_contextvars]) 69687db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_csv]) 69697db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_heapq]) 69707db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_json]) 69717db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_lsprof]) 69727db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_opcode]) 69737db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_pickle]) 69747db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_posixsubprocess]) 69757db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_queue]) 69767db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_random]) 69777db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([select]) 69787db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_struct]) 69797db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_typing]) 69807db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_xxsubinterpreters]) 69817db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_zoneinfo]) 69827db96d56Sopenharmony_ci 69837db96d56Sopenharmony_cidnl multiprocessing modules 69847db96d56Sopenharmony_ciPY_STDLIB_MOD([_multiprocessing], 69857db96d56Sopenharmony_ci [], [test "$ac_cv_func_sem_unlink" = "yes"], 69867db96d56Sopenharmony_ci [-I\$(srcdir)/Modules/_multiprocessing]) 69877db96d56Sopenharmony_ciPY_STDLIB_MOD([_posixshmem], 69887db96d56Sopenharmony_ci [], [test "$have_posix_shmem" = "yes"], 69897db96d56Sopenharmony_ci [$POSIXSHMEM_CFLAGS], [$POSIXSHMEM_LIBS]) 69907db96d56Sopenharmony_ci 69917db96d56Sopenharmony_cidnl needs libm 69927db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([audioop], [], [$LIBM]) 69937db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_statistics], [], [$LIBM]) 69947db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([cmath], [], [$LIBM]) 69957db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([math], [], [$LIBM]) 69967db96d56Sopenharmony_ci 69977db96d56Sopenharmony_cidnl needs libm and on some platforms librt 69987db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_datetime], [], [$TIMEMODULE_LIB $LIBM]) 69997db96d56Sopenharmony_ci 70007db96d56Sopenharmony_cidnl modules with some unix dependencies 70017db96d56Sopenharmony_ciPY_STDLIB_MOD([fcntl], 70027db96d56Sopenharmony_ci [], [test "$ac_cv_header_sys_ioctl_h" = "yes" -a "$ac_cv_header_fcntl_h" = "yes"], 70037db96d56Sopenharmony_ci [], [$FCNTL_LIBS]) 70047db96d56Sopenharmony_ciPY_STDLIB_MOD([mmap], 70057db96d56Sopenharmony_ci [], [test "$ac_cv_header_sys_mman_h" = "yes" -a "$ac_cv_header_sys_stat_h" = "yes"]) 70067db96d56Sopenharmony_ciPY_STDLIB_MOD([_socket], 70077db96d56Sopenharmony_ci [], m4_flatten([test "$ac_cv_header_sys_socket_h" = "yes" 70087db96d56Sopenharmony_ci -a "$ac_cv_header_sys_types_h" = "yes" 70097db96d56Sopenharmony_ci -a "$ac_cv_header_netinet_in_h" = "yes"])) 70107db96d56Sopenharmony_ci 70117db96d56Sopenharmony_cidnl platform specific extensions 70127db96d56Sopenharmony_ciPY_STDLIB_MOD([grp], [], [test "$ac_cv_func_getgrgid" = yes -o "$ac_cv_func_getgrgid_r" = yes]) 70137db96d56Sopenharmony_ciPY_STDLIB_MOD([ossaudiodev], 70147db96d56Sopenharmony_ci [], [test "$ac_cv_header_linux_soundcard_h" = yes -o "$ac_cv_header_sys_soundcard_h" = yes], 70157db96d56Sopenharmony_ci [], [$OSSAUDIODEV_LIBS]) 70167db96d56Sopenharmony_ciPY_STDLIB_MOD([pwd], [], [test "$ac_cv_func_getpwuid" = yes -o "$ac_cv_func_getpwuid_r" = yes]) 70177db96d56Sopenharmony_ciPY_STDLIB_MOD([resource], [], [test "$ac_cv_header_sys_resource_h" = yes]) 70187db96d56Sopenharmony_ciPY_STDLIB_MOD([_scproxy], 70197db96d56Sopenharmony_ci [test "$ac_sys_system" = "Darwin"], [], 70207db96d56Sopenharmony_ci [], [-framework SystemConfiguration -framework CoreFoundation]) 70217db96d56Sopenharmony_ciPY_STDLIB_MOD([spwd], [], [test "$ac_cv_func_getspent" = yes -o "$ac_cv_func_getspnam" = yes]) 70227db96d56Sopenharmony_ciPY_STDLIB_MOD([syslog], [], [test "$ac_cv_header_syslog_h" = yes]) 70237db96d56Sopenharmony_ciPY_STDLIB_MOD([termios], [], [test "$ac_cv_header_termios_h" = yes]) 70247db96d56Sopenharmony_ci 70257db96d56Sopenharmony_cidnl _elementtree loads libexpat via CAPI hook in pyexpat 70267db96d56Sopenharmony_ciPY_STDLIB_MOD([pyexpat], [], [], [$LIBEXPAT_CFLAGS], [$LIBEXPAT_LDFLAGS]) 70277db96d56Sopenharmony_ciPY_STDLIB_MOD([_elementtree], [], [], [$LIBEXPAT_CFLAGS], []) 70287db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_codecs_cn]) 70297db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_codecs_hk]) 70307db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_codecs_iso2022]) 70317db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_codecs_jp]) 70327db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_codecs_kr]) 70337db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_codecs_tw]) 70347db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([_multibytecodec]) 70357db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([unicodedata]) 70367db96d56Sopenharmony_ci 70377db96d56Sopenharmony_cidnl By default we always compile these even when OpenSSL is available 70387db96d56Sopenharmony_cidnl (issue #14693). The modules are small. 70397db96d56Sopenharmony_ciPY_STDLIB_MOD([_md5], [test "$with_builtin_md5" = yes]) 70407db96d56Sopenharmony_ciPY_STDLIB_MOD([_sha1], [test "$with_builtin_sha1" = yes]) 70417db96d56Sopenharmony_ciPY_STDLIB_MOD([_sha256], [test "$with_builtin_sha256" = yes]) 70427db96d56Sopenharmony_ciPY_STDLIB_MOD([_sha512], [test "$with_builtin_sha512" = yes]) 70437db96d56Sopenharmony_ciPY_STDLIB_MOD([_sha3], [test "$with_builtin_sha3" = yes]) 70447db96d56Sopenharmony_ciPY_STDLIB_MOD([_blake2], 70457db96d56Sopenharmony_ci [test "$with_builtin_blake2" = yes], [], 70467db96d56Sopenharmony_ci [$LIBB2_CFLAGS], [$LIBB2_LIBS]) 70477db96d56Sopenharmony_ci 70487db96d56Sopenharmony_ciPY_STDLIB_MOD([_crypt], 70497db96d56Sopenharmony_ci [], [test "$ac_cv_crypt_crypt" = yes], 70507db96d56Sopenharmony_ci [$LIBCRYPT_CFLAGS], [$LIBCRYPT_LIBS]) 70517db96d56Sopenharmony_cidnl PY_STDLIB_MOD([_ctypes], [], [], [], []) 70527db96d56Sopenharmony_cidnl PY_STDLIB_MOD([_curses], [], [], [], []) 70537db96d56Sopenharmony_cidnl PY_STDLIB_MOD([_curses_panel], [], [], [], []) 70547db96d56Sopenharmony_ciPY_STDLIB_MOD([_decimal], [], [], [$LIBMPDEC_CFLAGS], [$LIBMPDEC_LDFLAGS]) 70557db96d56Sopenharmony_cidnl PY_STDLIB_MOD([_dbm], [], [], [], []) 70567db96d56Sopenharmony_ciPY_STDLIB_MOD([_gdbm], 70577db96d56Sopenharmony_ci [test "$have_gdbm_dbmliborder" = yes], [test "$have_gdbm" = yes], 70587db96d56Sopenharmony_ci [$GDBM_CFLAGS], [$GDBM_LIBS]) 70597db96d56Sopenharmony_ciPY_STDLIB_MOD([nis], 70607db96d56Sopenharmony_ci [], [test "$have_nis" = yes -a "$ac_cv_header_rpc_rpc_h" = yes], 70617db96d56Sopenharmony_ci [$LIBNSL_CFLAGS], [$LIBNSL_LIBS]) 70627db96d56Sopenharmony_cidnl PY_STDLIB_MOD([readline], [], [], [], []) 70637db96d56Sopenharmony_ciPY_STDLIB_MOD([_sqlite3], 70647db96d56Sopenharmony_ci [test "$have_sqlite3" = "yes"], 70657db96d56Sopenharmony_ci [test "$have_supported_sqlite3" = "yes"], 70667db96d56Sopenharmony_ci [$LIBSQLITE3_CFLAGS], [$LIBSQLITE3_LIBS]) 70677db96d56Sopenharmony_ciPY_STDLIB_MOD([_tkinter], 70687db96d56Sopenharmony_ci [], [test "$have_tcltk" = "yes"], 70697db96d56Sopenharmony_ci [$TCLTK_CFLAGS], [$TCLTK_LIBS]) 70707db96d56Sopenharmony_ciPY_STDLIB_MOD([_uuid], 70717db96d56Sopenharmony_ci [], [test "$have_uuid" = "yes"], 70727db96d56Sopenharmony_ci [$LIBUUID_CFLAGS], [$LIBUUID_LIBS]) 70737db96d56Sopenharmony_ci 70747db96d56Sopenharmony_cidnl compression libs 70757db96d56Sopenharmony_ciPY_STDLIB_MOD([zlib], [], [test "$have_zlib" = yes], 70767db96d56Sopenharmony_ci [$ZLIB_CFLAGS], [$ZLIB_LIBS]) 70777db96d56Sopenharmony_cidnl binascii can use zlib for optimized crc32. 70787db96d56Sopenharmony_ciPY_STDLIB_MOD_SIMPLE([binascii], [$BINASCII_CFLAGS], [$BINASCII_LIBS]) 70797db96d56Sopenharmony_ciPY_STDLIB_MOD([_bz2], [], [test "$have_bzip2" = yes], 70807db96d56Sopenharmony_ci [$BZIP2_CFLAGS], [$BZIP2_LIBS]) 70817db96d56Sopenharmony_ciPY_STDLIB_MOD([_lzma], [], [test "$have_liblzma" = yes], 70827db96d56Sopenharmony_ci [$LIBLZMA_CFLAGS], [$LIBLZMA_LIBS]) 70837db96d56Sopenharmony_ci 70847db96d56Sopenharmony_cidnl OpenSSL bindings 70857db96d56Sopenharmony_ciPY_STDLIB_MOD([_ssl], [], [test "$ac_cv_working_openssl_ssl" = yes], 70867db96d56Sopenharmony_ci [$OPENSSL_INCLUDES], [$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $OPENSSL_LIBS]) 70877db96d56Sopenharmony_ciPY_STDLIB_MOD([_hashlib], [], [test "$ac_cv_working_openssl_hashlib" = yes], 70887db96d56Sopenharmony_ci [$OPENSSL_INCLUDES], [$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $LIBCRYPTO_LIBS]) 70897db96d56Sopenharmony_ci 70907db96d56Sopenharmony_cidnl test modules 70917db96d56Sopenharmony_ciPY_STDLIB_MOD([_testcapi], [test "$TEST_MODULES" = yes]) 70927db96d56Sopenharmony_ciPY_STDLIB_MOD([_testclinic], [test "$TEST_MODULES" = yes]) 70937db96d56Sopenharmony_ciPY_STDLIB_MOD([_testinternalcapi], [test "$TEST_MODULES" = yes]) 70947db96d56Sopenharmony_ciPY_STDLIB_MOD([_testbuffer], [test "$TEST_MODULES" = yes]) 70957db96d56Sopenharmony_ciPY_STDLIB_MOD([_testimportmultiple], [test "$TEST_MODULES" = yes], [test "$ac_cv_func_dlopen" = yes]) 70967db96d56Sopenharmony_ciPY_STDLIB_MOD([_testmultiphase], [test "$TEST_MODULES" = yes], [test "$ac_cv_func_dlopen" = yes]) 70977db96d56Sopenharmony_ciPY_STDLIB_MOD([_xxtestfuzz], [test "$TEST_MODULES" = yes]) 70987db96d56Sopenharmony_ciPY_STDLIB_MOD([_ctypes_test], [test "$TEST_MODULES" = yes], [test "$ac_cv_func_dlopen" = yes], [], [-lm]) 70997db96d56Sopenharmony_ci 71007db96d56Sopenharmony_cidnl Limited API template modules. 71017db96d56Sopenharmony_cidnl The limited C API is not compatible with the Py_TRACE_REFS macro. 71027db96d56Sopenharmony_cidnl Emscripten does not support shared libraries yet. 71037db96d56Sopenharmony_ciPY_STDLIB_MOD([xxlimited], [test "$with_trace_refs" = "no"], [test "$ac_cv_func_dlopen" = yes]) 71047db96d56Sopenharmony_ciPY_STDLIB_MOD([xxlimited_35], [test "$with_trace_refs" = "no"], [test "$ac_cv_func_dlopen" = yes]) 71057db96d56Sopenharmony_ci 71067db96d56Sopenharmony_ci# substitute multiline block, must come after last PY_STDLIB_MOD() 71077db96d56Sopenharmony_ciAC_SUBST([MODULE_BLOCK]) 71087db96d56Sopenharmony_ci 71097db96d56Sopenharmony_ci# generate output files 71107db96d56Sopenharmony_ciAC_CONFIG_FILES(Makefile.pre Misc/python.pc Misc/python-embed.pc Misc/python-config.sh) 71117db96d56Sopenharmony_ciAC_CONFIG_FILES([Modules/Setup.bootstrap Modules/Setup.stdlib]) 71127db96d56Sopenharmony_ciAC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix]) 71137db96d56Sopenharmony_ciAC_OUTPUT 71147db96d56Sopenharmony_ci 71157db96d56Sopenharmony_ciAC_MSG_NOTICE([creating Modules/Setup.local]) 71167db96d56Sopenharmony_ciif test ! -f Modules/Setup.local 71177db96d56Sopenharmony_cithen 71187db96d56Sopenharmony_ci echo "# Edit this file for local setup changes" >Modules/Setup.local 71197db96d56Sopenharmony_cifi 71207db96d56Sopenharmony_ci 71217db96d56Sopenharmony_ciAC_MSG_NOTICE([creating Makefile]) 71227db96d56Sopenharmony_ci$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \ 71237db96d56Sopenharmony_ci -s Modules \ 71247db96d56Sopenharmony_ci Modules/Setup.local $MODULES_SETUP_STDLIB Modules/Setup.bootstrap $srcdir/Modules/Setup 71257db96d56Sopenharmony_cimv config.c Modules 71267db96d56Sopenharmony_ci 71277db96d56Sopenharmony_ciif test -z "$PKG_CONFIG"; then 71287db96d56Sopenharmony_ci AC_MSG_WARN([pkg-config is missing. Some dependencies may not be detected correctly.]) 71297db96d56Sopenharmony_cifi 71307db96d56Sopenharmony_ci 71317db96d56Sopenharmony_ciif test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then 71327db96d56Sopenharmony_ci AC_MSG_NOTICE([ 71337db96d56Sopenharmony_ci 71347db96d56Sopenharmony_ciIf you want a release build with all stable optimizations active (PGO, etc), 71357db96d56Sopenharmony_ciplease run ./configure --enable-optimizations 71367db96d56Sopenharmony_ci]) 71377db96d56Sopenharmony_cifi 71387db96d56Sopenharmony_ci 71397db96d56Sopenharmony_ciAS_VAR_IF([PY_SUPPORT_TIER], [0], [AC_MSG_WARN([ 71407db96d56Sopenharmony_ci 71417db96d56Sopenharmony_ciPlatform "$host" with compiler "$ac_cv_cc_name" is not supported by the 71427db96d56Sopenharmony_ciCPython core team, see https://peps.python.org/pep-0011/ for more information. 71437db96d56Sopenharmony_ci])]) 7144