From 574c75cdc9994dfd45453bb9cce580d66d64d8b3 Mon Sep 17 00:00:00 2001 From: Neil Schemenauer Date: Wed, 11 Mar 2026 17:41:32 -0700 Subject: [PATCH 1/6] Add configure.py, replacing configure.ac. Assisted-by: claude-opus-4-6 --- Tools/configure/CONFIG_USE.md | 233 + Tools/configure/README.md | 42 + Tools/configure/conf_buildopts.py | 572 + Tools/configure/conf_compiler.py | 637 + Tools/configure/conf_extlibs.py | 1025 + Tools/configure/conf_filesystem.py | 115 + Tools/configure/conf_init.py | 251 + Tools/configure/conf_macos.py | 590 + Tools/configure/conf_math.py | 475 + Tools/configure/conf_modules.py | 494 + Tools/configure/conf_net.py | 500 + Tools/configure/conf_optimization.py | 349 + Tools/configure/conf_output.py | 88 + Tools/configure/conf_paths.py | 194 + Tools/configure/conf_platform.py | 1148 + Tools/configure/conf_security.py | 479 + Tools/configure/conf_sharedlib.py | 325 + Tools/configure/conf_syslibs.py | 360 + Tools/configure/conf_targets.py | 381 + Tools/configure/conf_threads.py | 407 + Tools/configure/conf_wasm.py | 180 + Tools/configure/configure.py | 193 + Tools/configure/pyconf.py | 3296 ++ Tools/configure/test_pyconf.py | 1489 + Tools/configure/test_transpile.py | 691 + Tools/configure/transpile.py | 16 + Tools/configure/transpiler/__init__.py | 0 Tools/configure/transpiler/__main__.py | 5 + Tools/configure/transpiler/awk_ast.py | 527 + Tools/configure/transpiler/awk_emit.py | 520 + .../configure/transpiler/lint_transpilable.py | 887 + Tools/configure/transpiler/py_to_pysh.py | 622 + Tools/configure/transpiler/pyconf.awk | 1895 + Tools/configure/transpiler/pysh_ast.py | 490 + Tools/configure/transpiler/pysh_to_awk.py | 3325 ++ Tools/configure/transpiler/transpile.py | 97 + compare-conf.sh | 63 + compare-transpile.sh | 95 + configure | 36176 +--------------- configure-old | 36170 +++++++++++++++ 40 files changed, 59237 insertions(+), 36165 deletions(-) create mode 100644 Tools/configure/CONFIG_USE.md create mode 100644 Tools/configure/README.md create mode 100644 Tools/configure/conf_buildopts.py create mode 100644 Tools/configure/conf_compiler.py create mode 100644 Tools/configure/conf_extlibs.py create mode 100644 Tools/configure/conf_filesystem.py create mode 100644 Tools/configure/conf_init.py create mode 100644 Tools/configure/conf_macos.py create mode 100644 Tools/configure/conf_math.py create mode 100644 Tools/configure/conf_modules.py create mode 100644 Tools/configure/conf_net.py create mode 100644 Tools/configure/conf_optimization.py create mode 100644 Tools/configure/conf_output.py create mode 100644 Tools/configure/conf_paths.py create mode 100644 Tools/configure/conf_platform.py create mode 100644 Tools/configure/conf_security.py create mode 100644 Tools/configure/conf_sharedlib.py create mode 100644 Tools/configure/conf_syslibs.py create mode 100644 Tools/configure/conf_targets.py create mode 100644 Tools/configure/conf_threads.py create mode 100644 Tools/configure/conf_wasm.py create mode 100644 Tools/configure/configure.py create mode 100644 Tools/configure/pyconf.py create mode 100644 Tools/configure/test_pyconf.py create mode 100644 Tools/configure/test_transpile.py create mode 100644 Tools/configure/transpile.py create mode 100644 Tools/configure/transpiler/__init__.py create mode 100644 Tools/configure/transpiler/__main__.py create mode 100644 Tools/configure/transpiler/awk_ast.py create mode 100644 Tools/configure/transpiler/awk_emit.py create mode 100644 Tools/configure/transpiler/lint_transpilable.py create mode 100644 Tools/configure/transpiler/py_to_pysh.py create mode 100644 Tools/configure/transpiler/pyconf.awk create mode 100644 Tools/configure/transpiler/pysh_ast.py create mode 100644 Tools/configure/transpiler/pysh_to_awk.py create mode 100644 Tools/configure/transpiler/transpile.py create mode 100755 compare-conf.sh create mode 100755 compare-transpile.sh create mode 100755 configure-old diff --git a/Tools/configure/CONFIG_USE.md b/Tools/configure/CONFIG_USE.md new file mode 100644 index 00000000000000..02eeee2d41cdd2 --- /dev/null +++ b/Tools/configure/CONFIG_USE.md @@ -0,0 +1,233 @@ +# CPython CI Configure Usage Summary + +This file documents how `./configure` is invoked across CPython's GitHub Actions +CI workflows, to ensure the Python-based `configure.py` supports all required +options. + +## Testing Checklist + +Each item tracks whether `configure.py` correctly handles that flag or scenario. + +### Build variant flags +- [x] `--with-pydebug` — enable debug build (Py_DEBUG) +- [x] `--disable-gil` — free-threading build (no GIL) +- [x] `--enable-shared` — build shared library +- [x] `--without-pymalloc` — disable pymalloc allocator + +### Optimization / safety flags +- [x] `--enable-safety` — enable safety checks +- [x] `--enable-slower-safety` — enable slower safety checks +- [x] `--enable-bolt` — enable BOLT binary optimization +- [x] `--config-cache` — read/write `config.cache` to speed up re-runs + +### JIT / interpreter flags +- [x] `--enable-experimental-jit` — enable the JIT compiler +- [x] `--enable-experimental-jit=interpreter` — JIT interpreter-only mode +- [x] `--with-tail-call-interp` — enable tail-call interpreter + +### Cross-compilation / universal binary flags +- [x] `--prefix=PATH` — installation prefix +- [ ] `--with-build-python=PATH` — build-system Python for cross-compilation (needs two-stage build) +- [x] `--enable-universalsdk` — build macOS universal binary (macOS only) +- [x] `--with-universal-archs=universal2` — macOS arm64+x86_64 universal binary (macOS only) + +### SSL / crypto flags +- [x] `--with-openssl=PATH` — path to OpenSSL installation +- [x] `--with-builtin-hashlib-hashes=blake2` — build blake2 into hashlib +- [x] `--with-ssl-default-suites=openssl` — use OpenSSL default cipher suites + +### Sanitizer flags +- [x] `--with-address-sanitizer` — enable AddressSanitizer +- [x] `--with-thread-sanitizer` — enable ThreadSanitizer +- [x] `--with-undefined-behavior-sanitizer` — enable UBSan + +### Environment variables passed to configure +- [x] `CC=clang-N` — custom compiler (tail-call.yml, jit.yml) +- [x] `CFLAGS="..."` — extra compiler flags (e.g. `-fdiagnostics-format=json`) +- [x] `MACOSX_DEPLOYMENT_TARGET=10.15` — macOS min deployment target (macOS only) +- [x] `GDBM_CFLAGS`, `GDBM_LIBS` — GDBM library paths (macOS only) +- [x] `PROFILE_TASK=...` — PGO task override (reusable-ubuntu.yml) + +### Invocation scenarios +- [x] In-tree build: `./configure [flags]` +- [x] Out-of-tree build: invoke as `../srcdir/configure` from a build directory +- [ ] WASI wrapper passthrough: `python3 Platforms/WASI configure-build-python -- --config-cache --with-pydebug` (needs WASI SDK) + +--- + +## Workflow Files with Configure Invocations + +### build.yml (Tests) + +**Platforms:** ubuntu-24.04, ubuntu-24.04-arm, macos-14, macos-15-intel, android, ios, wasi + +```sh +# check-generated-files +./configure --config-cache --with-pydebug --enable-shared + +# build-ubuntu-ssltests-openssl +./configure CFLAGS="-fdiagnostics-format=json" \ + --config-cache --enable-slower-safety --with-pydebug \ + --with-openssl="$OPENSSL_DIR" + +# build-ubuntu-ssltests-awslc +./configure CFLAGS="-fdiagnostics-format=json" \ + --config-cache --enable-slower-safety --with-pydebug \ + --with-openssl="$OPENSSL_DIR" \ + --with-builtin-hashlib-hashes=blake2 \ + --with-ssl-default-suites=openssl + +# test-hypothesis (out-of-tree build from $BUILD_DIR) +../cpython-ro-srcdir/configure \ + --config-cache --with-pydebug --enable-slower-safety \ + --with-openssl="$OPENSSL_DIR" + +# build-asan +./configure --config-cache --with-address-sanitizer --without-pymalloc + +# cross-build-linux (build host python, then cross-compile) +./configure --prefix="$BUILD_DIR/host-python" +./configure --prefix="$BUILD_DIR/cross-python" \ + --with-build-python="$BUILD_DIR/host-python/bin/python3" +``` + +--- + +### jit.yml (JIT) + +**Platforms:** ubuntu-24.04, ubuntu-24.04-arm, macos-14, macos-15-intel, windows-2022, windows-11-arm + +```sh +# interpreter job +./configure --enable-experimental-jit=interpreter --with-pydebug + +# jit - Linux (--with-pydebug conditional on debug matrix var) +./configure --enable-experimental-jit [--with-pydebug] + +# jit - macOS +./configure --enable-experimental-jit \ + --enable-universalsdk --with-universal-archs=universal2 [--with-pydebug] + +# jit-with-disabled-gil +./configure --enable-experimental-jit --with-pydebug --disable-gil + +# tail-call-jit (with explicit compiler) +CC=clang-$LLVM ./configure --enable-experimental-jit \ + --with-tail-call-interp --with-pydebug +``` + +--- + +### reusable-docs.yml (Docs) + +**Platforms:** ubuntu-24.04 + +```sh +./configure --with-pydebug +``` + +--- + +### reusable-macos.yml + +**Platforms:** macos-14, macos-15-intel + +Environment: `MACOSX_DEPLOYMENT_TARGET=10.15`, `GDBM_CFLAGS`, `GDBM_LIBS` + +```sh +./configure \ + --config-cache \ + --with-pydebug \ + --enable-slower-safety \ + --enable-safety \ + [--disable-gil] \ + --prefix=/opt/python-dev \ + --with-openssl="$(brew --prefix openssl@3.0)" +``` + +--- + +### reusable-san.yml (Sanitizers) + +**Platforms:** ubuntu-24.04 + +```sh +./configure \ + --config-cache \ + --with-pydebug \ + [--with-thread-sanitizer | --with-undefined-behavior-sanitizer] \ + [--disable-gil] +``` + +--- + +### reusable-ubuntu.yml + +**Platforms:** ubuntu-24.04, ubuntu-24.04-arm (out-of-tree build) + +Environment: `PROFILE_TASK='-m test --pgo --ignore test_unpickle_module_race'` + +```sh +../cpython-ro-srcdir/configure \ + --config-cache \ + --with-pydebug \ + --enable-slower-safety \ + --enable-safety \ + --with-openssl="$OPENSSL_DIR" \ + [--disable-gil] \ + [--enable-bolt] +``` + +--- + +### reusable-wasi.yml + +**Platforms:** ubuntu-24.04-arm + +Uses a Python wrapper rather than calling `./configure` directly: + +```sh +python3 Platforms/WASI configure-build-python -- --config-cache --with-pydebug +python3 Platforms/WASI configure-host -- --config-cache +``` + +--- + +### tail-call.yml (Tail-calling interpreter) + +**Platforms:** ubuntu-24.04, ubuntu-24.04-arm, macos-14, macos-15-intel, windows-2022, windows-2025-vs2026, windows-11-arm + +```sh +# Linux +CC=clang-20 ./configure --with-tail-call-interp --with-pydebug + +# Linux free-threading +CC=clang-20 ./configure --with-tail-call-interp --disable-gil + +# macOS +CC=clang-20 ./configure --with-tail-call-interp +``` + +--- + +## Notes for configure.py Implementation + +1. **Out-of-tree builds**: `configure` is invoked from a separate build directory + with the source path as `../cpython-ro-srcdir/configure`. The `srcdir` must + be correctly detected as distinct from the current directory. + +2. **Environment variable passthrough**: `CC`, `CFLAGS`, and library-path variables + (`GDBM_CFLAGS`, `GDBM_LIBS`) must be accepted and propagated into the build. + +3. **`--config-cache`**: Used extensively; must read/write `config.cache` to + speed up repeated configure runs. + +4. **Conditional flags**: `--disable-gil`, `--with-pydebug`, etc. are passed + conditionally based on matrix variables — all must be accepted gracefully. + +5. **WASI**: Uses a wrapper script, not `./configure` directly. The wrapper + passes `--config-cache` and `--with-pydebug` through, so those flags must + work when configure is invoked as a sub-step. + +6. **Windows**: JIT and tail-call workflows include Windows runners, but + configure on Windows uses PCbuild/MSBuild — no `./configure` call is made. diff --git a/Tools/configure/README.md b/Tools/configure/README.md new file mode 100644 index 00000000000000..1b81a723423738 --- /dev/null +++ b/Tools/configure/README.md @@ -0,0 +1,42 @@ +# configure.py, a replacement for configure.ac + +CPython's build configuration is driven by `configure.ac` (8,344 lines, ~271 +KB), which uses autoconf/M4 macros to generate a 946 KB shell script +(`configure`). This system is: +- Opaque and hard to read/maintain (M4 macro language) +- Inefficient (generates a giant shell script, then runs it) +- Difficult to extend or debug + +This replaces it with a Python-based build configuration system where +`Tools/configure/configure.py` is a real Python script that imports a `pyconf` +module. The `pyconf` functions generally match the autoconf behaviour, so that +translation from the configure.ac file is mostly direct and mechanical. + +There is also a transpiler that converts configure.py into POSIX AWK (wrapped +in a small shell stub). The transpiler lives in `Tools/configure/transpiler/` +and the pipeline is: Python AST → pysh_ast → awk_ast → AWK text. The sh and +AWK code needs to be compatible with those tools on various Unix-like operating +systems. + +Note that configure.py needs to be cross platform. Implementation that only +only works on the current OS is *not* okay. This configure script will run on +many different Unix like platforms: Linux, FreeBSD, OpenBSD, NetBSD, MacOS, +AIX. Avoid "baking in" Linux specific behaviour that is going to break on +other platforms. + +We compare output files, produced by the script, in order to ensure we +faithfully re-implement the configure.ac script. When comparing output files, +like Makefile, pyconfig.h, we generally don't care about whitespace changes. +So `diff -u -bw` could be used to compare. + +You can run the new configure.py script by running `./configure`. The autoconf +script has been renamed to `./configure-old`. + +When making code changes, you should use `ruff check Tools/configure/*.py` and +`ruff format Tools/configure/*.py` to ensure code is formatted and lint clean. + +There are unit tests for the pyconf module, test_pyconf.py. You can run these +tests with `uv run `. There are also unit tests for the transpiler, in +test_transpile.py. To compare the output of the transpiled version, run +`compare-transpile.sh`. You can compare outputs of the two configure +implementations by running `./compare-conf.sh`. diff --git a/Tools/configure/conf_buildopts.py b/Tools/configure/conf_buildopts.py new file mode 100644 index 00000000000000..07ac4f2def938d --- /dev/null +++ b/Tools/configure/conf_buildopts.py @@ -0,0 +1,572 @@ +"""conf_buildopts — GIL, debug, assertions, optimizations, profile task. + +Handles --disable-gil (free-threaded build), --with-pydebug (Py_DEBUG), +--with-trace-refs, --enable-pystats, --with-assertions, and +--enable-optimizations (PGO, -fno-semantic-interposition). Also sets +the PROFILE_TASK used for PGO training runs and DEF_MAKE_ALL_RULE. +""" + +import pyconf + +DISABLE_GIL = pyconf.arg_enable( + "gil", + display="--disable-gil", + help="enable support for running without the GIL (default is no)", + var="disable_gil", + false_is="yes", +) +WITH_PYDEBUG = pyconf.arg_with( + "pydebug", + help="build with Py_DEBUG defined (default is no)", + var="Py_DEBUG", + false_is="no", +) +WITH_TRACE_REFS = pyconf.arg_with( + "trace-refs", + help="enable tracing references for debugging purpose (default is no)", + default="no", + var="with_trace_refs", +) +ENABLE_PYSTATS = pyconf.arg_enable( + "pystats", + help="enable internal statistics gathering (default is no)", + default="no", + var="enable_pystats", +) +WITH_ASSERTIONS = pyconf.arg_with( + "assertions", + help="build with C assertions enabled (default is no)", + false_is="no", +) +ENABLE_OPTIMIZATIONS = pyconf.arg_enable( + "optimizations", + help="enable expensive, stable optimizations (PGO, etc.) (default is no)", + var="Py_OPT", + false_is="no", +) +ENABLE_EXPERIMENTAL_JIT = pyconf.arg_enable( + "experimental-jit", + metavar="no|yes|yes-off|interpreter", + default=False, + help="build the experimental just-in-time compiler (default is no)", +) +WITH_ADDRESS_SANITIZER = pyconf.arg_with( + "address-sanitizer", + help="enable AddressSanitizer memory error detector, 'asan' (default is no)", + default="no", + false_is="no", +) +WITH_MEMORY_SANITIZER = pyconf.arg_with( + "memory-sanitizer", + help="enable MemorySanitizer allocation error detector, 'msan' (default is no)", + default="no", + false_is="no", +) +WITH_UNDEFINED_BEHAVIOR_SANITIZER = pyconf.arg_with( + "undefined-behavior-sanitizer", + help="enable UndefinedBehaviorSanitizer undefined behaviour detector, 'ubsan' (default is no)", + default="no", + false_is="no", +) +WITH_THREAD_SANITIZER = pyconf.arg_with( + "thread-sanitizer", + help="enable ThreadSanitizer data race detector, 'tsan' (default is no)", + default="no", + false_is="no", +) +WITH_TAIL_CALL_INTERP = pyconf.arg_with( + "tail-call-interp", + help="enable tail-calling interpreter in evaluation loop and rest of CPython", +) +WITH_REMOTE_DEBUG = pyconf.arg_with( + "remote-debug", + help="enable remote debugging support (default is yes)", +) +WITH_ENSUREPIP = pyconf.arg_with( + "ensurepip", + metavar="install|upgrade|no", + help='"install" or "upgrade" using bundled pip (default is upgrade)', +) +WITH_MIMALLOC = pyconf.arg_with( + "mimalloc", + help="build with mimalloc memory allocator (default yes if stdatomic.h available)", +) +WITH_PYMALLOC = pyconf.arg_with( + "pymalloc", help="enable specialized mallocs (default is yes)" +) +WITH_PYMALLOC_HUGEPAGES = pyconf.arg_with( + "pymalloc-hugepages", + help="enable huge page support for pymalloc arenas (default is no)", + default="no", +) +WITH_VALGRIND = pyconf.arg_with( + "valgrind", help="enable Valgrind support (default is no)", default="no" +) +WITH_DTRACE = pyconf.arg_with( + "dtrace", help="enable DTrace support (default is no)", default="no" +) +WITH_DOC_STRINGS = pyconf.arg_with( + "doc-strings", + help="enable documentation strings (default is yes)", + default="yes", +) + + +def setup_disable_gil(v): + """Handle --disable-gil option.""" + if DISABLE_GIL.process_bool(v): + pyconf.define( + "Py_GIL_DISABLED", 1, "Define if you want to disable the GIL" + ) + v.ABIFLAGS += "t" + v.export("ABI_THREAD", "t") + + +def setup_pydebug(v): + """Handle --with-pydebug option.""" + if WITH_PYDEBUG.process_bool(v): + pyconf.define( + "Py_DEBUG", + 1, + "Define if you want to build an interpreter with many run-time checks.", + ) + v.ABIFLAGS += "d" + + +def setup_trace_refs(v): + """Handle --with-trace-refs option.""" + WITH_TRACE_REFS.process_value(v) + + if WITH_TRACE_REFS.is_yes(): + pyconf.define( + "Py_TRACE_REFS", + 1, + "Define if you want to enable tracing references for debugging purpose", + ) + + if v.disable_gil and WITH_TRACE_REFS.is_yes(): + pyconf.error("--disable-gil cannot be used with --with-trace-refs") + + +def setup_pystats(v): + """Handle --enable-pystats option.""" + ENABLE_PYSTATS.process_value(v) + + if ENABLE_PYSTATS.is_yes(): + pyconf.define( + "Py_STATS", + 1, + "Define if you want to enable internal statistics gathering.", + ) + + +def setup_assertions(v): + """Handle --with-assertions option.""" + assertions_bool = WITH_ASSERTIONS.process_bool() + v.assertions = "true" if assertions_bool else "false" + + if not assertions_bool and v.Py_DEBUG is True: + v.assertions = "true" + pyconf.checking("for --with-assertions") + pyconf.result("implied by --with-pydebug") + + +def setup_optimizations(v): + """Handle --enable-optimizations and DEF_MAKE_ALL_RULE.""" + v.export("DEF_MAKE_ALL_RULE") + v.export("DEF_MAKE_RULE") + + ENABLE_OPTIMIZATIONS.process_bool(v) + + v.REQUIRE_PGO = False + DEF_MAKE_ALL_RULE = "" + DEF_MAKE_RULE = "" + + if v.Py_OPT is True: + if "-O0" in v.CFLAGS: + pyconf.warn( + "CFLAGS contains -O0 which may conflict with --enable-optimizations. " + "Consider removing -O0 from CFLAGS for optimal performance." + ) + DEF_MAKE_ALL_RULE = "profile-opt" + v.REQUIRE_PGO = True + DEF_MAKE_RULE = "build_all" + if v.ac_cv_gcc_compat: + if pyconf.check_compile_flag( + "-fno-semantic-interposition", extra_flags=["-Werror"] + ): + v.CFLAGS_NODIST += " -fno-semantic-interposition" + v.LDFLAGS_NODIST += " -fno-semantic-interposition" + elif v.ac_sys_system == "Emscripten": + DEF_MAKE_ALL_RULE = "build_emscripten" + DEF_MAKE_RULE = "all" + elif v.ac_sys_system == "WASI": + DEF_MAKE_ALL_RULE = "build_wasm" + DEF_MAKE_RULE = "all" + else: + DEF_MAKE_ALL_RULE = "build_all" + DEF_MAKE_RULE = "all" + + v.DEF_MAKE_ALL_RULE = DEF_MAKE_ALL_RULE + v.DEF_MAKE_RULE = DEF_MAKE_RULE + v.export("REQUIRE_PGO") + + +def setup_experimental_jit(v): + """Handle --enable-experimental-jit, compiler-specific flags, NDEBUG, arch flags.""" + pyconf.checking("for --enable-experimental-jit") + jit = ENABLE_EXPERIMENTAL_JIT.value + if jit is None or jit is False or jit == "no": + jit_flags = "" + tier2_flags = "" + elif jit == "yes": + jit_flags = "-D_Py_JIT" + tier2_flags = "-D_Py_TIER2=1" + elif jit == "yes-off": + jit_flags = "-D_Py_JIT" + tier2_flags = "-D_Py_TIER2=3" + elif jit == "interpreter": + jit_flags = "" + tier2_flags = "-D_Py_TIER2=4" + elif jit == "interpreter-off": + jit_flags = "" + tier2_flags = "-D_Py_TIER2=6" + else: + pyconf.error( + f"invalid argument: --enable-experimental-jit={jit}; " + "expected no|yes|yes-off|interpreter" + ) + + if tier2_flags: + v.CFLAGS_NODIST += f" {tier2_flags}" + if jit_flags: + v.CFLAGS_NODIST += f" {jit_flags}" + REGEN_JIT_COMMAND = ( + "$(PYTHON_FOR_REGEN) $(srcdir)/Tools/jit/build.py " + f"{v.ARCH_TRIPLES or v.host} --output-dir . --pyconfig-dir . " + f'--cflags="{v.CFLAGS_JIT}" --llvm-version="{v.LLVM_VERSION}"' + ) + if v.Py_DEBUG is True: + REGEN_JIT_COMMAND += " --debug" + else: + REGEN_JIT_COMMAND = "" + v.export("REGEN_JIT_COMMAND", REGEN_JIT_COMMAND) + pyconf.result(f"{tier2_flags} {jit_flags}") + + if v.disable_gil and jit is not False: + pyconf.warn( + "--enable-experimental-jit does not work correctly with --disable-gil." + ) + + if v.ac_cv_cc_name == "mpicc": + pass + elif v.ac_cv_cc_name == "icc": + v.CFLAGS_NODIST += " -fp-model strict" + elif v.ac_cv_cc_name == "xlc": + v.CFLAGS_NODIST += " -qalias=noansi -qmaxmem=-1" + + if v.assertions != "true": + v.OPT = f"-DNDEBUG {v.OPT}" + + if v.ac_arch_flags: + v.BASECFLAGS += f" {v.ac_arch_flags}" + + +def check_jit_stencils(v): + # --------------------------------------------------------------------------- + # JIT stencils header selection + # --------------------------------------------------------------------------- + + v.JIT_STENCILS_H = "" + if ENABLE_EXPERIMENTAL_JIT.given and not ENABLE_EXPERIMENTAL_JIT.is_no(): + host = v.host + if host.startswith("aarch64-apple-darwin"): + v.JIT_STENCILS_H = "jit_stencils-aarch64-apple-darwin.h" + elif host.startswith("x86_64-apple-darwin"): + v.JIT_STENCILS_H = "jit_stencils-x86_64-apple-darwin.h" + elif host.startswith("aarch64-pc-windows-msvc"): + v.JIT_STENCILS_H = "jit_stencils-aarch64-pc-windows-msvc.h" + elif host.startswith("i686-pc-windows-msvc"): + v.JIT_STENCILS_H = "jit_stencils-i686-pc-windows-msvc.h" + elif host.startswith("x86_64-pc-windows-msvc"): + v.JIT_STENCILS_H = "jit_stencils-x86_64-pc-windows-msvc.h" + elif pyconf.fnmatch(host, "aarch64-*-linux-gnu*"): + v.JIT_STENCILS_H = "jit_stencils-aarch64-unknown-linux-gnu.h" + elif pyconf.fnmatch(host, "x86_64-*-linux-gnu*"): + v.JIT_STENCILS_H = "jit_stencils-x86_64-unknown-linux-gnu.h" + + v.export("JIT_STENCILS_H") + + +def setup_sanitizers(v): + """Handle --with-address/memory/undefined-behavior/thread-sanitizer options.""" + if WITH_ADDRESS_SANITIZER.process_bool(v): + v.BASECFLAGS = ( + f"-fsanitize=address -fno-omit-frame-pointer {v.BASECFLAGS}" + ) + v.LDFLAGS = f"-fsanitize=address {v.LDFLAGS}" + + if WITH_MEMORY_SANITIZER.process_bool(v): + if not pyconf.check_compile_flag("-fsanitize=memory"): + pyconf.error( + "The selected compiler doesn't support memory sanitizer" + ) + v.BASECFLAGS = ( + f"-fsanitize=memory -fsanitize-memory-track-origins=2 " + f"-fno-omit-frame-pointer {v.BASECFLAGS}" + ) + v.LDFLAGS = ( + f"-fsanitize=memory -fsanitize-memory-track-origins=2 {v.LDFLAGS}" + ) + + if WITH_UNDEFINED_BEHAVIOR_SANITIZER.process_bool(v): + v.BASECFLAGS = f"-fsanitize=undefined {v.BASECFLAGS}" + v.LDFLAGS = f"-fsanitize=undefined {v.LDFLAGS}" + v.with_ubsan = True + else: + v.with_ubsan = False + + if WITH_THREAD_SANITIZER.process_bool(v): + v.BASECFLAGS = f"-fsanitize=thread {v.BASECFLAGS}" + v.LDFLAGS = f"-fsanitize=thread {v.LDFLAGS}" + + +def check_tail_call_interp(v): + # --------------------------------------------------------------------------- + # --with-tail-call-interp + # --------------------------------------------------------------------------- + + if WITH_TAIL_CALL_INTERP.is_yes(): + pyconf.define( + "_Py_TAIL_CALL_INTERP", + 1, + "Define if you want to use tail-calling interpreters in CPython.", + ) + elif WITH_TAIL_CALL_INTERP.is_no(): + pyconf.define( + "_Py_TAIL_CALL_INTERP", + 0, + "Define if you want to use tail-calling interpreters in CPython.", + ) + + +def check_remote_debug(v): + # --------------------------------------------------------------------------- + # --with-remote-debug + # --------------------------------------------------------------------------- + + with_rd = WITH_REMOTE_DEBUG.value_or("yes") + if with_rd == "yes": + pyconf.define( + "Py_REMOTE_DEBUG", + 1, + "Define if you want to enable remote debugging support.", + ) + + +def check_ensurepip(v): + # --------------------------------------------------------------------------- + # --with-ensurepip + # --------------------------------------------------------------------------- + + default_ensurepip = ( + False + if v.ac_sys_system in ("Emscripten", "WASI", "iOS") + else "upgrade" + ) + ensurepip_raw = WITH_ENSUREPIP.value + with_ensurepip = ( + ensurepip_raw if ensurepip_raw is not None else default_ensurepip + ) + + if with_ensurepip in ("yes", "upgrade"): + v.ENSUREPIP = "upgrade" + elif with_ensurepip == "install": + v.ENSUREPIP = "install" + elif with_ensurepip is False or with_ensurepip == "no": + v.ENSUREPIP = False + else: + pyconf.error("--with-ensurepip=upgrade|install|no") + + v.export("ENSUREPIP") + + +def setup_mimalloc(v): + """Handle --with-mimalloc option.""" + pyconf.checking("for --with-mimalloc") + with_mimalloc = WITH_MIMALLOC.value + if with_mimalloc is None: + with_mimalloc = "yes" if v.ac_cv_header_stdatomic_h else "no" + + v.with_mimalloc = with_mimalloc + + if with_mimalloc != "no": + if not v.ac_cv_header_stdatomic_h: + pyconf.fatal( + "mimalloc requires stdatomic.h, use --without-mimalloc to disable mimalloc." + ) + with_mimalloc = "yes" + v.with_mimalloc = with_mimalloc + pyconf.define( + "WITH_MIMALLOC", + 1, + "Define if you want to compile in mimalloc memory allocator.", + ) + v.export("MIMALLOC_HEADERS", r"$(MIMALLOC_HEADERS)") + elif v.disable_gil is True: + pyconf.fatal( + "--disable-gil requires mimalloc memory allocator (--with-mimalloc)." + ) + + pyconf.result(with_mimalloc) + v.export("INSTALL_MIMALLOC", with_mimalloc) + v.export("MIMALLOC_HEADERS", "") + + +def setup_pymalloc(v): + """Handle --with-pymalloc and --with-pymalloc-hugepages options.""" + pyconf.checking("for --with-pymalloc") + if not v.is_set("with_pymalloc") or not v.with_pymalloc: + with_pymalloc = WITH_PYMALLOC.value + if with_pymalloc is None: + if v.ac_sys_system in ("Emscripten", "WASI"): + with_pymalloc = "no" + else: + with_pymalloc = "yes" + v.with_pymalloc = with_pymalloc + else: + with_pymalloc = v.with_pymalloc + + if with_pymalloc != "no": + pyconf.define( + "WITH_PYMALLOC", + 1, + "Define if you want to compile in Python-specific mallocs", + ) + pyconf.result(with_pymalloc) + + # --with-pymalloc-hugepages + pyconf.checking("for --with-pymalloc-hugepages") + with_pymalloc_hugepages = WITH_PYMALLOC_HUGEPAGES.value_or("no") + if with_pymalloc_hugepages == "yes": + if pyconf.compile_check( + preamble="#include ", + body="int flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB;\n" + "(void)flags;", + ): + pyconf.define( + "PYMALLOC_USE_HUGEPAGES", + 1, + "Define to use huge pages for pymalloc arenas", + ) + else: + pyconf.warn( + "--with-pymalloc-hugepages requested but MAP_HUGETLB not found" + ) + with_pymalloc_hugepages = "no" + pyconf.result(with_pymalloc_hugepages) + + +def setup_valgrind(v): + """Handle --with-valgrind option.""" + with_valgrind = WITH_VALGRIND.process_value(None) + if with_valgrind != "no": + if pyconf.check_header("valgrind/valgrind.h"): + pyconf.define( + "WITH_VALGRIND", + 1, + "Define if you want pymalloc to be disabled when running under valgrind", + ) + else: + pyconf.fatal( + "Valgrind support requested but headers not available" + ) + v.OPT = "-DDYNAMIC_ANNOTATIONS_ENABLED=1 " + v.OPT + + +def setup_dtrace(v): + """Handle --with-dtrace option.""" + with_dtrace = WITH_DTRACE.process_value(None) + + v.export("DTRACE", "") + v.export("DFLAGS", "") + v.export("DTRACE_HEADERS", "") + v.export("DTRACE_OBJS", "") + + if with_dtrace == "yes": + dtrace = pyconf.find_prog("dtrace") + if not dtrace: + pyconf.fatal("dtrace command not found on $PATH") + v.DTRACE = dtrace + pyconf.define( + "WITH_DTRACE", 1, "Define if you want to compile in DTrace support" + ) + v.DTRACE_HEADERS = "Include/pydtrace_probes.h" + + # Check if DTrace probes require linking (ELF generation via -G flag) + pyconf.checking("whether DTrace probes require linking") + ac_cv_dtrace_link = False + host = v.host + if "netbsd" in host.lower(): + dtrace_test_flags = ["-x", "nolibs", "-h"] + else: + dtrace_test_flags = ["-G"] + tmp = "/tmp/conftest.d" + pyconf.write_file(tmp, "BEGIN{}\n") + dtrace_cmd: list[str] = ( + [str(v.DTRACE)] + + v.DFLAGS.split() + + dtrace_test_flags + + ["-s", tmp, "-o", "/tmp/conftest.o"] + ) + if pyconf.cmd(dtrace_cmd): + ac_cv_dtrace_link = True + pyconf.rm_f(tmp) + pyconf.result(ac_cv_dtrace_link) + + if ac_cv_dtrace_link: + v.DTRACE_OBJS = "Python/pydtrace.o" + + # NetBSD-specific DTrace flags + if "netbsd" in host.lower(): + v.DFLAGS += " -x nolibs" + + +def setup_perf_trampoline(v): + """Check and configure perf trampoline support.""" + pyconf.checking("perf trampoline") + if v.PLATFORM_TRIPLET in ( + "x86_64-linux-gnu", + "aarch64-linux-gnu", + "darwin", + ): + perf_trampoline = True + else: + perf_trampoline = False + pyconf.result(perf_trampoline) + + if perf_trampoline: + pyconf.define( + "PY_HAVE_PERF_TRAMPOLINE", + 1, + "Define to 1 if you have the perf trampoline.", + ) + PERF_TRAMPOLINE_OBJ = "Python/asm_trampoline.o" + if v.Py_DEBUG is True: + v.BASECFLAGS += ( + " -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" + ) + else: + PERF_TRAMPOLINE_OBJ = "" + v.export("PERF_TRAMPOLINE_OBJ", PERF_TRAMPOLINE_OBJ) + + +def setup_doc_strings(): + """Handle --with-doc-strings option.""" + with_doc_strings = WITH_DOC_STRINGS.process_value(None) + if with_doc_strings != "no": + pyconf.define( + "WITH_DOC_STRINGS", + 1, + "Define if you want documentation strings in extension modules", + ) diff --git a/Tools/configure/conf_compiler.py b/Tools/configure/conf_compiler.py new file mode 100644 index 00000000000000..87955f0f51f9e7 --- /dev/null +++ b/Tools/configure/conf_compiler.py @@ -0,0 +1,637 @@ +"""conf_compiler — Compiler detection, platform triplet, stack direction, PEP 11 tier. + +Decides whether to define _XOPEN_SOURCE and related POSIX macros; +runs AC_PROG_CC (find_compiler), discovers GREP/SED/EGREP, +CC_BASENAME; selects C++ compiler; detects PLATFORM_TRIPLET, +MULTIARCH, SOABI_PLATFORM; determines stack growth direction; +classifies PEP 11 support tier; and checks compiler bugs (glibc +memmove, ipa-pure-const). +""" + +import os + +import pyconf +import conf_macos + +WITH_STRICT_OVERFLOW = pyconf.arg_with( + "strict-overflow", + help="if 'yes', add -fstrict-overflow to CFLAGS, else add -fno-strict-overflow (default is no)", +) +ENABLE_SAFETY = pyconf.arg_enable( + "safety", + help="enable usage of the security compiler options with no performance overhead", + false_is="no", +) +ENABLE_SLOWER_SAFETY = pyconf.arg_enable( + "slower-safety", + help="enable usage of the security compiler options with performance overhead", + false_is="no", +) +WITH_COMPUTED_GOTOS = pyconf.arg_with( + "computed-gotos", + help="enable computed gotos in evaluation loop " + "(enabled by default on supported compilers)", +) + + +def setup_compiler_detection(v): + """Run AC_PROG_CC, find GREP/SED/EGREP, system extensions, CC_BASENAME.""" + pyconf.find_compiler(cc=v.CC or None, cpp=v.CPP or None) + v.export("CC", pyconf.CC) + v.export("CPP", pyconf.CPP) + v.export("GCC", pyconf.GCC) + v.ac_cv_cc_name = pyconf.ac_cv_cc_name + v.ac_cv_gcc_compat = pyconf.ac_cv_gcc_compat + v.ac_cv_prog_cc_g = pyconf.ac_cv_prog_cc_g + + v.export("GREP", pyconf.check_prog("grep", default="grep")) + v.export("SED", pyconf.check_prog("sed", default="sed")) + v.export("EGREP", pyconf.check_prog("egrep", default="egrep")) + + pyconf.use_system_extensions() + + v.export("CC_BASENAME", pyconf.basename(v.CC.split()[0]) if v.CC else "") + + if v.CC_BASENAME == "mpicc": + v.ac_cv_cc_name = "mpicc" + + +def setup_cxx(v): + """Select C++ compiler.""" + v.export("CXX") + preset_cxx = v.CXX + if not v.CXX: + cxx_map = { + "gcc": "g++", + "cc": "c++", + "clang": "clang++", + "icc": "icpc", + } + cxx_candidate = cxx_map.get(v.ac_cv_cc_name, "") + if cxx_candidate and pyconf.find_prog(cxx_candidate): + v.CXX = cxx_candidate + if not v.CXX: + for candidate in [ + v.CCC, + "c++", + "g++", + "gcc", + "CC", + "cxx", + "cc++", + "cl", + ]: + if candidate and pyconf.find_prog(candidate): + v.CXX = candidate + break + + if preset_cxx and preset_cxx != v.CXX: + pyconf.notice( + f'\n By default, distutils will build C++ extension modules with "{v.CXX}".\n' + f" If this is not intended, then set CXX on the configure command line.\n" + ) + + +def setup_stack_direction(v): + """Determine stack growth direction.""" + v._Py_STACK_GROWS_DOWN = 0 if v.host.startswith("hppa") else 1 + pyconf.define( + "_Py_STACK_GROWS_DOWN", + v._Py_STACK_GROWS_DOWN, + "Define to 1 if the machine stack grows down (default); 0 if it grows up.", + ) + v.export("_Py_STACK_GROWS_DOWN") + + +def check_compiler_bugs(v): + # --------------------------------------------------------------------------- + # -O2 availability (used by memmove bug and ipa-pure-const checks) + # --------------------------------------------------------------------------- + + have_o2 = pyconf.compile_check(description="for -O2", extra_cflags="-O2") + + # --------------------------------------------------------------------------- + # glibc _FORTIFY_SOURCE / memmove bug + # --------------------------------------------------------------------------- + + memmove_cflags = "-O2 -D_FORTIFY_SOURCE=2" if have_o2 else "" + memmove_result = pyconf.run_check( + "for glibc _FORTIFY_SOURCE/memmove bug", + """ +#include +#include +#include +void foo(void *p, void *q) { memmove(p, q, 19); } +int main(void) { + char a[32] = "123456789000000000"; + foo(&a[9], a); + if (strcmp(a, "123456789123456789000000000") != 0) + return 1; + foo(a, &a[9]); + if (strcmp(a, "123456789000000000") != 0) + return 1; + return 0; +} +""", + extra_cflags=memmove_cflags, + on_success_return=False, + on_failure_return=True, + cross_compiling_result="undefined", + ) + if memmove_result is True: + pyconf.define( + "HAVE_GLIBC_MEMMOVE_BUG", + 1, + "Define if glibc has incorrect _FORTIFY_SOURCE wrappers " + "for memmove and bcopy.", + ) + + # --------------------------------------------------------------------------- + # GCC ipa-pure-const inline asm bug + # --------------------------------------------------------------------------- + + if v.ac_cv_gcc_asm_for_x87 is True: + if v.ac_cv_cc_name == "gcc": + ipa_result = pyconf.run_check( + "for gcc ipa-pure-const bug", + r""" +__attribute__((noinline)) int +foo(int *p) { + int r; + asm ( "movl $6, (%1)\n\t" + "xorl %0, %0\n\t" + : "=r" (r) : "r" (p) : "memory" + ); + return r; +} +int main(void) { + int p = 8; + if ((foo(&p) ? : p) != 6) + return 1; + return 0; +} +""", + extra_cflags="-O2", + on_success_return=False, + on_failure_return=True, + cross_compiling_result="undefined", + ) + if ipa_result is True: + pyconf.define( + "HAVE_IPA_PURE_CONST_BUG", + 1, + "Define if gcc has the ipa-pure-const bug.", + ) + + +def check_sign_extension_and_getc(v): + # --------------------------------------------------------------------------- + # Sign-extension / right-shift + # --------------------------------------------------------------------------- + + pyconf.checking("whether right shift extends the sign bit") + ac_cv_rshift_extends_sign = pyconf.run_check( + "int main(void) { return (((-1)>>3 == -1) ? 0 : 1); }", + cache_var="ac_cv_rshift_extends_sign", + cross_compiling_default=True, + ) + pyconf.result(ac_cv_rshift_extends_sign) + if not ac_cv_rshift_extends_sign: + pyconf.define( + "SIGNED_RIGHT_SHIFT_ZERO_FILLS", + 1, + "Define if i>>j for signed int i does not extend the sign bit when i < 0", + ) + + # --------------------------------------------------------------------------- + # getc_unlocked and friends + # --------------------------------------------------------------------------- + + pyconf.checking("for getc_unlocked() and friends") + ac_cv_have_getc_unlocked = pyconf.link_check( + preamble="#include ", + body=r""" + FILE *f = fopen("/dev/null", "r"); + flockfile(f); + getc_unlocked(f); + funlockfile(f); + """, + cache_var="ac_cv_have_getc_unlocked", + ) + pyconf.result(ac_cv_have_getc_unlocked) + if ac_cv_have_getc_unlocked: + pyconf.define( + "HAVE_GETC_UNLOCKED", + 1, + "Define this if you have flockfile(), getc_unlocked(), and funlockfile()", + ) + + +def setup_strict_overflow(v): + """Handle --with-strict-overflow and -Og support.""" + supports_fstrict_overflow = pyconf.check_compile_flag( + "-fstrict-overflow -fno-strict-overflow" + ) + v.export( + "STRICT_OVERFLOW_CFLAGS", + "-fstrict-overflow" if supports_fstrict_overflow else "", + ) + v.export( + "NO_STRICT_OVERFLOW_CFLAGS", + "-fno-strict-overflow" if supports_fstrict_overflow else "", + ) + + pyconf.checking("for --with-strict-overflow") + v.with_strict_overflow = WITH_STRICT_OVERFLOW.is_yes() + if WITH_STRICT_OVERFLOW.given and not supports_fstrict_overflow: + pyconf.warn( + "--with-strict-overflow=yes requires a compiler that supports -fstrict-overflow" + ) + pyconf.result(WITH_STRICT_OVERFLOW.value_or("no")) + + +def setup_opt_and_debug_cflags(v): + """-Og support, OPT, CFLAGS_ALIASING.""" + supports_og = pyconf.check_compile_flag("-Og") + + v.PYDEBUG_CFLAGS = "-Og" if supports_og else "-O0" + if v.ac_sys_system == "WASI": + v.PYDEBUG_CFLAGS = "-O3" + v.export("PYDEBUG_CFLAGS") + + v.export("OPT") + v.export("CFLAGS_ALIASING") + opt_env = os.environ.get("OPT") + v.OPT = opt_env if opt_env is not None else "" + v.CFLAGS_ALIASING = "" + + if opt_env is None: + if v.GCC: + if v.ac_cv_cc_name != "clang": + v.CFLAGS_ALIASING = "-fno-strict-aliasing" + if v.ac_cv_prog_cc_g: + if v.Py_DEBUG is True: + v.OPT = f"-g {v.PYDEBUG_CFLAGS} -Wall" + else: + v.OPT = "-g -O3 -Wall" + else: + v.OPT = "-O3 -Wall" + if v.ac_sys_system.startswith("SCO_SV"): + v.OPT += " -m486 -DSCO5" + else: + v.OPT = "-O" + + +def setup_basecflags_overflow(v): + """Apply strict-overflow flag to BASECFLAGS.""" + if v.with_strict_overflow: + v.BASECFLAGS += f" {v.STRICT_OVERFLOW_CFLAGS}" + else: + v.BASECFLAGS += f" {v.NO_STRICT_OVERFLOW_CFLAGS}" + + +def setup_safety_options(v): + """Handle --enable-safety and --enable-slower-safety.""" + if ENABLE_SAFETY.process_bool(): + for flag in [ + "-fstack-protector-strong", + "-Wtrampolines", + "-Wimplicit-fallthrough", + "-Werror=format-security", + "-Wbidi-chars=any", + "-Wall", + ]: + if pyconf.check_compile_flag(flag, extra_flags=["-Werror"]): + v.CFLAGS_NODIST += f" {flag}" + else: + pyconf.warn(f"{flag} not supported") + + if ENABLE_SLOWER_SAFETY.process_bool(): + if pyconf.check_compile_flag( + "-D_FORTIFY_SOURCE=3", extra_flags=["-Werror"] + ): + v.CFLAGS_NODIST += " -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3" + else: + pyconf.warn("-D_FORTIFY_SOURCE=3 not supported") + + +def setup_gcc_warnings(v): + """GCC-compatible compiler warnings, aliasing, visibility, and flag tweaks.""" + if not v.ac_cv_gcc_compat: + if v.ac_sys_system.startswith(("OpenUNIX", "UnixWare")): + v.BASECFLAGS += " -K pentium,host,inline,loop_unroll,alloca" + elif v.ac_sys_system.startswith("SCO_SV"): + v.BASECFLAGS += " -belf -Ki486 -DSCO5" + return + + v.CFLAGS_NODIST += " -std=c11" + + if pyconf.check_compile_flag("-Wextra", extra_flags=["-Werror"]): + v.CFLAGS_NODIST += " -Wextra" + + # Check strict-aliasing behaviour + cc_with_fna = f"{v.CC} -fno-strict-aliasing" + cc_with_fsa = f"{v.CC} -fstrict-aliasing" + fna_supported = pyconf.compile_check( + cc=cc_with_fna, program="int main(void){return 0;}" + ) + if fna_supported: + strict_aliasing_fires = not pyconf.compile_check( + cc=cc_with_fsa, + extra_flags=["-Werror", "-Wstrict-aliasing"], + preamble="void f(int **x) {}", + body="double *x; f((int **) &x);", + ) + else: + strict_aliasing_fires = False + if strict_aliasing_fires: + v.BASECFLAGS += " -fno-strict-aliasing" + + if v.ac_cv_cc_name == "icc": + if pyconf.check_compile_flag( + "-Wunused-result", extra_flags=["-Werror"] + ): + v.BASECFLAGS += " -Wno-unused-result" + v.CFLAGS_NODIST += " -Wno-unused-result" + + if pyconf.check_compile_flag( + "-Wno-unused-parameter", extra_flags=["-Werror"] + ): + v.CFLAGS_NODIST += " -Wno-unused-parameter" + + if pyconf.check_compile_flag( + "-Wno-missing-field-initializers", extra_flags=["-Werror"] + ): + v.CFLAGS_NODIST += " -Wno-missing-field-initializers" + + if pyconf.check_compile_flag("-Wsign-compare", extra_flags=["-Werror"]): + v.BASECFLAGS += " -Wsign-compare" + + if pyconf.check_compile_flag( + "-Wunreachable-code", extra_flags=["-Werror"] + ): + cc_ver = pyconf.cmd_output([v.CC, "--version"]) + if v.Py_DEBUG is not True and "Free Software Foundation" not in cc_ver: + v.BASECFLAGS += " -Wunreachable-code" + + if pyconf.check_compile_flag( + "-Wstrict-prototypes", extra_flags=["-Werror"] + ): + v.CFLAGS_NODIST += " -Wstrict-prototypes" + + if pyconf.check_compile_flag("-Werror=implicit-function-declaration"): + v.CFLAGS_NODIST += " -Werror=implicit-function-declaration" + + if pyconf.check_compile_flag("-fvisibility=hidden"): + v.CFLAGS_NODIST += " -fvisibility=hidden" + + if v.host.startswith("alpha"): + v.BASECFLAGS += " -mieee" + + if v.ac_sys_system.startswith("SCO_SV"): + v.BASECFLAGS += " -m486 -DSCO5" + + elif v.ac_sys_system.startswith("Darwin"): + conf_macos._setup_darwin_flags(v) + + +def check_compiler_characteristics(v): + # --------------------------------------------------------------------------- + # Compiler characteristics + # --------------------------------------------------------------------------- + + pyconf.check_c_const() + + pyconf.checking("for working signed char") + ac_cv_working_signed_char_c = pyconf.compile_check( + body="signed char c;", cache_var="ac_cv_working_signed_char_c" + ) + pyconf.result(ac_cv_working_signed_char_c) + if not ac_cv_working_signed_char_c: + pyconf.define( + "signed", "", "Define to empty if the keyword does not work." + ) + + pyconf.checking("for prototypes") + ac_cv_function_prototypes = pyconf.compile_check( + preamble="int foo(int x) { return 0; }", + body="return foo(10);", + cache_var="ac_cv_function_prototypes", + ) + pyconf.result(ac_cv_function_prototypes) + if ac_cv_function_prototypes: + pyconf.define( + "HAVE_PROTOTYPES", + 1, + "Define if your compiler supports function prototype", + ) + + # socketpair + pyconf.check_func("socketpair", includes=["sys/types.h", "sys/socket.h"]) + + # sockaddr.sa_len + pyconf.checking("if sockaddr has sa_len member") + ac_cv_struct_sockaddr_sa_len = pyconf.compile_check( + preamble="#include \n#include ", + body="struct sockaddr x;\nx.sa_len = 0;", + cache_var="ac_cv_struct_sockaddr_sa_len", + ) + pyconf.result(ac_cv_struct_sockaddr_sa_len) + if ac_cv_struct_sockaddr_sa_len: + pyconf.define( + "HAVE_SOCKADDR_SA_LEN", 1, "Define if sockaddr has sa_len member" + ) + + +def check_mbstowcs(v): + # --------------------------------------------------------------------------- + # mbstowcs bug check + # --------------------------------------------------------------------------- + + if pyconf.run_check( + "for broken mbstowcs", + """ +#include +#include +#include +int main(void) { + size_t len = -1; + const char *str = "text"; + len = mbstowcs(NULL, str, 0); + return (len != 4); +} +""", + on_success_return=False, + on_failure_return=True, + cross_compiling_result=False, + ): + pyconf.define( + "HAVE_BROKEN_MBSTOWCS", + 1, + 'Define if mbstowcs(NULL, "text", 0) does not return the number of ' + "wide chars that would be converted.", + ) + + +def check_computed_gotos(v): + # --------------------------------------------------------------------------- + # --with-computed-gotos + # --------------------------------------------------------------------------- + + if WITH_COMPUTED_GOTOS.is_yes(): + pyconf.define( + "USE_COMPUTED_GOTOS", + 1, + "Define if you want to use computed gotos in ceval.c.", + ) + elif WITH_COMPUTED_GOTOS.is_no(): + pyconf.define( + "USE_COMPUTED_GOTOS", + 0, + "Define if you want to use computed gotos in ceval.c.", + ) + + # Runtime probe: does the C compiler support computed gotos? + cg_result = pyconf.run_check( + f"whether {v.CC} supports computed gotos", + """ +int main(int argc, char **argv) { + static void *targets[1] = { &&LABEL1 }; + goto LABEL2; +LABEL1: + return 0; +LABEL2: + goto *targets[0]; + return 1; +} +""", + cross_compiling_result=True if WITH_COMPUTED_GOTOS.is_yes() else False, + ) + if cg_result: + pyconf.define( + "HAVE_COMPUTED_GOTOS", + 1, + "Define if the C compiler supports computed gotos.", + ) + + +def check_stdatomic(v): + """Check for stdatomic.h and builtin atomic functions.""" + pyconf.checking("for stdatomic.h") + ac_cv_header_stdatomic_h = pyconf.link_check( + "#include \n" + "atomic_int int_var;\n" + "atomic_uintptr_t uintptr_var;\n" + "int main() {\n" + " atomic_store_explicit(&int_var, 5, memory_order_relaxed);\n" + " atomic_store_explicit(&uintptr_var, 0, memory_order_relaxed);\n" + " int loaded_value = atomic_load_explicit(&int_var, memory_order_seq_cst);\n" + " return 0;\n" + "}\n" + ) + pyconf.result(ac_cv_header_stdatomic_h) + v.ac_cv_header_stdatomic_h = ac_cv_header_stdatomic_h + if ac_cv_header_stdatomic_h: + pyconf.define( + "HAVE_STD_ATOMIC", + 1, + "Has stdatomic.h with atomic_int and atomic_uintptr_t", + ) + + # __atomic_load_n / __atomic_store_n builtins + pyconf.checking( + "for builtin __atomic_load_n and __atomic_store_n functions" + ) + ac_cv_builtin_atomic = pyconf.link_check( + "int val;\n" + "int main() {\n" + " __atomic_store_n(&val, 1, __ATOMIC_SEQ_CST);\n" + " (void)__atomic_load_n(&val, __ATOMIC_SEQ_CST);\n" + " return 0;\n" + "}\n" + ) + pyconf.result(ac_cv_builtin_atomic) + if ac_cv_builtin_atomic: + pyconf.define( + "HAVE_BUILTIN_ATOMIC", + 1, + "Has builtin __atomic_load_n() and __atomic_store_n() functions", + ) + + +def check_sizes(v): + """Check sizeof/alignof for fundamental types and pthread types.""" + pyconf.check_sizeof("int", default=4) + pyconf.check_sizeof("long", default=4) + pyconf.check_alignof("long") + pyconf.check_sizeof("long long", default=8) + pyconf.check_sizeof("void *", default=4) + pyconf.check_sizeof("short", default=2) + pyconf.check_sizeof("float", default=4) + pyconf.check_sizeof("double", default=8) + pyconf.check_sizeof("fpos_t", default=4) + pyconf.check_sizeof("size_t", default=4) + pyconf.check_alignof("size_t") + pyconf.check_sizeof("pid_t", default=4) + pyconf.check_sizeof("uintptr_t") + pyconf.check_alignof("max_align_t") + # AC_TYPE_LONG_DOUBLE: check that long double exists (sizeof >= sizeof(double)) + # autoconf uses <=, not >: "sizeof(double) <= sizeof(long double)" + if pyconf.compile_check( + preamble="", + body="typedef int test_array[1 - 2 * !(sizeof(double) <= sizeof(long double))];", + cache_var="ac_cv_type_long_double", + ): + pyconf.define( + "HAVE_LONG_DOUBLE", + 1, + "Define to 1 if the C compiler supports long double.", + ) + pyconf.check_sizeof("long double", default=16) + pyconf.check_sizeof("_Bool", default=1) + pyconf.check_sizeof("off_t", headers=["sys/types.h"]) + + pyconf.checking("whether to enable large file support") + if pyconf.sizeof("off_t") > pyconf.sizeof("long") and pyconf.sizeof( + "long long" + ) >= pyconf.sizeof("off_t"): + pyconf.define( + "HAVE_LARGEFILE_SUPPORT", + 1, + "Defined to enable large file support when an off_t is bigger than a long " + "and long long is at least as big as an off_t.", + ) + pyconf.result("yes") + else: + pyconf.result("no") + + pyconf.check_sizeof("time_t", headers=["sys/types.h", "time.h"]) + + save_CC = v.CC + if v.ac_cv_kpthread: + v.CC = f"{v.CC} -Kpthread" + elif v.ac_cv_kthread: + v.CC = f"{v.CC} -Kthread" + elif v.ac_cv_pthread: + v.CC = f"{v.CC} -pthread" + + ac_cv_have_pthread_t = pyconf.compile_check( + preamble="#include ", + body="pthread_t x; x = *(pthread_t*)0;", + ) + if ac_cv_have_pthread_t: + pyconf.check_sizeof("pthread_t", headers=["pthread.h"]) + + pyconf.check_sizeof("pthread_key_t", headers=["pthread.h"]) + if pyconf.sizeof("pthread_key_t") == pyconf.sizeof( + "int" + ) and pyconf.compile_check( + preamble="#include ", + body="pthread_key_t k; k * 1;", + ): + pyconf.define( + "PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT", + 1, + "Define if pthread_key_t is compatible with int.", + ) + v.CC = save_CC diff --git a/Tools/configure/conf_extlibs.py b/Tools/configure/conf_extlibs.py new file mode 100644 index 00000000000000..dbf6d891638434 --- /dev/null +++ b/Tools/configure/conf_extlibs.py @@ -0,0 +1,1025 @@ +"""conf_extlibs — Expat, FFI, sqlite3, Tcl/Tk detection. + +Handles --with-system-expat; detects libffi via pkg-config or manual +probing (including Apple-specific libffi); detects sqlite3 via pkg-config +or manual probing with --enable-loadable-sqlite-extensions; and detects +Tcl/Tk libraries and headers via pkg-config or manual search. +""" + +import pyconf + + +def _split_pkg_flags(parts): + """Split pkg-config output into (cflags, libs) strings.""" + cflags = [] + libs = [] + for p in parts: + if p.startswith("-I") or p.startswith("-D"): + cflags.append(p) + else: + libs.append(p) + return " ".join(cflags), " ".join(libs) + + +WITH_SYSTEM_EXPAT = pyconf.arg_with( + "system-expat", + help="build pyexpat module using an installed expat library (default is no)", + default="no", +) +ENABLE_LOADABLE_SQLITE_EXTENSIONS = pyconf.arg_enable( + "loadable-sqlite-extensions", + help="support loadable extensions in the sqlite3 module (default is no)", +) + + +def setup_expat(v): + """Handle --with-system-expat option.""" + with_system_expat = WITH_SYSTEM_EXPAT.process_value(None) + + if with_system_expat == "yes": + v.LIBEXPAT_CFLAGS = "" + v.LIBEXPAT_LDFLAGS = "-lexpat" + v.LIBEXPAT_INTERNAL = "" + else: + v.LIBEXPAT_CFLAGS = r"-I$(srcdir)/Modules/expat" + v.LIBEXPAT_LDFLAGS = r"-lm $(LIBEXPAT_A)" + v.LIBEXPAT_INTERNAL = r"$(LIBEXPAT_HEADERS) $(LIBEXPAT_A)" + + v.export("LIBEXPAT_CFLAGS") + v.export("LIBEXPAT_LDFLAGS") + v.export("LIBEXPAT_INTERNAL") + + +def detect_libffi(v): + """Detect libffi and check ffi function availability.""" + v.have_libffi = "missing" + v.LIBFFI_CFLAGS = "" + v.LIBFFI_LIBS = "" + v.MODULE__CTYPES_MALLOC_CLOSURE = "" + + if v.ac_sys_system == "Darwin": + sdkroot = v.SDKROOT + ffi_h = ( + f"{sdkroot}/usr/include/ffi/ffi.h" + if sdkroot + else "/usr/include/ffi/ffi.h" + ) + if pyconf.path_is_file(ffi_h): + v.have_libffi = True + v.LIBFFI_CFLAGS = ( + f"-I{sdkroot}/usr/include/ffi -DUSING_APPLE_OS_LIBFFI=1" + ) + v.LIBFFI_LIBS = "-lffi" + + if v.have_libffi == "missing": + # Try pkg-config + pkg = pyconf.find_prog("pkg-config") + if pkg: + status, output = pyconf.cmd_status( + [pkg, "--cflags", "--libs", "libffi"] + ) + if status == 0: + v.have_libffi = True + parts = output.split() + v.LIBFFI_CFLAGS, v.LIBFFI_LIBS = _split_pkg_flags(parts) + if v.have_libffi == "missing": + # Fall back: check header + lib directly + if pyconf.check_header("ffi.h") and pyconf.check_lib( + "ffi", "ffi_call" + ): + v.have_libffi = True + v.LIBFFI_CFLAGS = "" + v.LIBFFI_LIBS = "-lffi" + else: + v.have_libffi = False + + if v.have_libffi is True: + ctypes_malloc_closure = False + if v.ac_sys_system in ("Darwin", "iOS"): + ctypes_malloc_closure = True + elif v.ac_sys_system == "sunos5": + v.LIBFFI_LIBS += " -mimpure-text" + + if ctypes_malloc_closure: + v.MODULE__CTYPES_MALLOC_CLOSURE = "_ctypes/malloc_closure.c" + v.LIBFFI_CFLAGS += " -DUSING_MALLOC_CLOSURE_DOT_C=1" + + # HAVE_LIBDL: for dlopen (gh-76828) + if v.ac_cv_lib_dl_dlopen is True: + v.LIBFFI_LIBS += " -ldl" + + # Check ffi function availability (with FFI flags in CFLAGS/LIBS, + # mirroring autoconf's WITH_SAVE_ENV around these checks) + with pyconf.save_env(): + v.CFLAGS = f"{v.CFLAGS} {v.LIBFFI_CFLAGS}".strip() + v.LIBS = f"{v.LIBS} {v.LIBFFI_LIBS}".strip() + pyconf.check_func("ffi_prep_cif_var", headers=["ffi.h"]) + pyconf.check_func("ffi_prep_closure_loc", headers=["ffi.h"]) + pyconf.check_func("ffi_closure_alloc", headers=["ffi.h"]) + + v.export("MODULE__CTYPES_MALLOC_CLOSURE") + v.export("LIBFFI_CFLAGS") + v.export("LIBFFI_LIBS") + + # Check for libffi complex double support + pyconf.checking("libffi has complex type support") + ac_cv_ffi_complex_double_supported = pyconf.run_check( + """ + #include + #include + int z_is_expected(double complex z) { + const double complex expected = 1.25 - 0.5 * I; + return z == expected; + } + int main(void) { + double complex z = 1.25 - 0.5 * I; + ffi_type *args[1] = {&ffi_type_complex_double}; + void *values[1] = {&z}; + ffi_cif cif; + if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_sint, args) != FFI_OK) + return 2; + ffi_arg rc; + ffi_call(&cif, FFI_FN(z_is_expected), &rc, values); + return !rc; + } + """, + extra_cflags=v.LIBFFI_CFLAGS, + extra_libs=v.LIBFFI_LIBS, + default=False, + ) + pyconf.result(ac_cv_ffi_complex_double_supported) + if ac_cv_ffi_complex_double_supported: + pyconf.define( + "_Py_FFI_SUPPORT_C_COMPLEX", + 1, + "Defined if _Complex C type can be used with libffi.", + ) + + +def detect_sqlite3(v): + """Detect sqlite3 and handle --enable-loadable-sqlite-extensions.""" + v.have_sqlite3 = False + v.have_supported_sqlite3 = False + v.LIBSQLITE3_CFLAGS = "" + v.LIBSQLITE3_LIBS = "-lsqlite3" + + # Emscripten port check (stub — pyconf.check_emscripten_port is a no-op) + pyconf.check_emscripten_port("LIBSQLITE3", "-sUSE_SQLITE3") + + # pkg-config probe + pkg = pyconf.find_prog("pkg-config") + if pkg: + if pyconf.cmd([pkg, "--atleast-version=3.15.2", "sqlite3"]): + status, output = pyconf.cmd_status( + [pkg, "--cflags", "--libs", "sqlite3"] + ) + if status == 0: + parts = output.split() + v.LIBSQLITE3_CFLAGS, v.LIBSQLITE3_LIBS = _split_pkg_flags( + parts + ) + + # Use the real srcdir path for configure-time checks; $(srcdir) is a + # Makefile reference that can't be used in shell commands (the shell + # interprets it as command substitution). + sqlite_inc = f" -I{pyconf.srcdir}/Modules/_sqlite" + check_cflags = v.LIBSQLITE3_CFLAGS + sqlite_inc + v.LIBSQLITE3_CFLAGS += r" -I$(srcdir)/Modules/_sqlite" + + if pyconf.check_header( + "sqlite3.h", extra_cflags=check_cflags, autodefine=False + ): + v.have_sqlite3 = True + if pyconf.compile_check( + preamble="#include \n" + "#if SQLITE_VERSION_NUMBER < 3015002\n" + '# error "SQLite 3.15.2 or higher required"\n' + "#endif", + extra_cflags=check_cflags, + ): + v.have_supported_sqlite3 = True + # Check required sqlite3 functions + required_funcs = [ + "sqlite3_bind_double", + "sqlite3_column_decltype", + "sqlite3_column_double", + "sqlite3_complete", + "sqlite3_progress_handler", + "sqlite3_result_double", + "sqlite3_set_authorizer", + "sqlite3_value_double", + ] + for f in required_funcs: + if not pyconf.check_lib( + "sqlite3", + f, + extra_cflags=check_cflags, + extra_libs=v.LIBSQLITE3_LIBS, + ): + v.have_supported_sqlite3 = False + break + # trace_v2 / trace fallback + if not pyconf.check_lib( + "sqlite3", "sqlite3_trace_v2", extra_libs=v.LIBSQLITE3_LIBS + ): + if not pyconf.check_lib( + "sqlite3", "sqlite3_trace", extra_libs=v.LIBSQLITE3_LIBS + ): + v.have_supported_sqlite3 = False + v.have_sqlite3_load_extension = pyconf.check_lib( + "sqlite3", + "sqlite3_load_extension", + extra_libs=v.LIBSQLITE3_LIBS, + ) + if pyconf.check_lib( + "sqlite3", "sqlite3_serialize", extra_libs=v.LIBSQLITE3_LIBS + ): + pyconf.define( + "PY_SQLITE_HAVE_SERIALIZE", + 1, + "Define if SQLite was compiled with the serialize API", + ) + pyconf.define( + "HAVE_LIBSQLITE3", + 1, + "Define to 1 if you have the `sqlite3' library (-lsqlite3).", + ) + else: + v.have_supported_sqlite3 = False + + # --enable-loadable-sqlite-extensions + enable_loadable_sqlite_extensions = ( + ENABLE_LOADABLE_SQLITE_EXTENSIONS.value_or("no") + ) + pyconf.checking("for --enable-loadable-sqlite-extensions") + if enable_loadable_sqlite_extensions != "no": + if not v.have_sqlite3_load_extension: + pyconf.result("n/a") + pyconf.warn( + "Your version of SQLite does not support loadable extensions" + ) + else: + pyconf.result("yes") + pyconf.define( + "PY_SQLITE_ENABLE_LOAD_EXTENSION", + 1, + "Define to 1 to build the sqlite module with loadable extensions support.", + ) + else: + pyconf.result("no") + + v.export("LIBSQLITE3_CFLAGS") + v.export("LIBSQLITE3_LIBS") + + +def detect_tcltk(v): + """Detect Tcl/Tk via pkg-config.""" + v.have_tcltk = False + v.TCLTK_CFLAGS = "" + v.TCLTK_LIBS = "" + + pkg = pyconf.find_prog("pkg-config") + if pkg: + for q in [ + "tcl >= 8.5.12 tk >= 8.5.12", + "tcl8.6 tk8.6", + "tcl86 tk86", + "tcl8.5 >= 8.5.12 tk8.5 >= 8.5.12", + "tcl85 >= 8.5.12 tk85 >= 8.5.12", + ]: + if pyconf.cmd([pkg, "--exists"] + q.split()): + status, output = pyconf.cmd_status( + [pkg, "--cflags", "--libs"] + q.split() + ) + if status == 0: + parts = output.split() + v.TCLTK_CFLAGS, v.TCLTK_LIBS = _split_pkg_flags(parts) + break + + # FreeBSD: add X11 dependency + if v.ac_sys_system.startswith("FreeBSD") and pkg: + if pyconf.cmd([pkg, "--exists", "x11"]): + status, output = pyconf.cmd_status( + [pkg, "--cflags", "--libs", "x11"] + ) + if status == 0: + parts = output.split() + _x11_cflags, _x11_libs = _split_pkg_flags(parts) + v.TCLTK_CFLAGS += " " + _x11_cflags + v.TCLTK_LIBS += " " + _x11_libs + + # Try to link against Tcl/Tk (enforces minimum version 8.5.12) + if pyconf.link_check( + "#include \n" + "#include \n" + "#if defined(TK_HEX_VERSION)\n" + "# if TK_HEX_VERSION < 0x0805020c\n" + '# error "Tk older than 8.5.12 not supported"\n' + "# endif\n" + "#endif\n" + "#if (TCL_MAJOR_VERSION < 8) || \\\n" + " ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION < 5)) || \\\n" + " ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION == 5) && (TCL_RELEASE_SERIAL < 12))\n" + '# error "Tcl older than 8.5.12 not supported"\n' + "#endif\n" + "#if (TK_MAJOR_VERSION < 8) || \\\n" + " ((TK_MAJOR_VERSION == 8) && (TK_MINOR_VERSION < 5)) || \\\n" + " ((TK_MAJOR_VERSION == 8) && (TK_MINOR_VERSION == 5) && (TK_RELEASE_SERIAL < 12))\n" + '# error "Tk older than 8.5.12 not supported"\n' + "#endif\n" + "void *x1 = Tcl_Init;\nvoid *x2 = Tk_Init;\n", + extra_cflags=v.TCLTK_CFLAGS, + extra_libs=v.TCLTK_LIBS, + ): + v.have_tcltk = True + v.TCLTK_CFLAGS += " -Wno-strict-prototypes -DWITH_APPINIT=1" + + v.export("TCLTK_CFLAGS") + v.export("TCLTK_LIBS") + + +def detect_uuid(v): + """Detect UUID library support.""" + ac_cv_have_uuid_h = False + ac_cv_have_uuid_uuid_h = False + ac_cv_have_uuid_generate_time_safe = False + LIBUUID_CFLAGS = v.LIBUUID_CFLAGS + LIBUUID_LIBS = v.LIBUUID_LIBS + have_uuid = "missing" + + if pyconf.check_headers("uuid.h"): + has_create = pyconf.check_func("uuid_create") + has_enc_be = pyconf.check_func("uuid_enc_be") + if has_create and has_enc_be: + have_uuid = True + ac_cv_have_uuid_h = True + + if have_uuid == "missing": + pkg = pyconf.pkg_check_modules("LIBUUID", "uuid >= 2.20") + if pkg: + have_uuid = True + ac_cv_have_uuid_generate_time_safe = True + ac_cv_have_uuid_h = True + LIBUUID_CFLAGS = pkg.cflags + LIBUUID_LIBS = pkg.libs + else: + save_CPPFLAGS = v.CPPFLAGS + save_LIBS = v.LIBS + v.CPPFLAGS = f"{v.CPPFLAGS} {LIBUUID_CFLAGS}".strip() + v.LIBS = f"{v.LIBS} {LIBUUID_LIBS}".strip() + if pyconf.check_headers("uuid/uuid.h"): + ac_cv_have_uuid_uuid_h = True + if pyconf.check_lib("uuid", "uuid_generate_time"): + have_uuid = True + if pyconf.check_lib("uuid", "uuid_generate_time_safe"): + have_uuid = True + ac_cv_have_uuid_generate_time_safe = True + if have_uuid is True: + LIBUUID_LIBS = LIBUUID_LIBS or "-luuid" + v.CPPFLAGS = save_CPPFLAGS + v.LIBS = save_LIBS + + if have_uuid == "missing": + if pyconf.check_headers("uuid/uuid.h"): + if pyconf.check_func("uuid_generate_time"): + have_uuid = True + ac_cv_have_uuid_uuid_h = True + + if ac_cv_have_uuid_h: + pyconf.define("HAVE_UUID_H", 1) + if ac_cv_have_uuid_uuid_h: + pyconf.define("HAVE_UUID_UUID_H", 1) + if ac_cv_have_uuid_generate_time_safe: + pyconf.define("HAVE_UUID_GENERATE_TIME_SAFE", 1) + + if v.ac_sys_system == "NetBSD": + have_uuid = "missing" + pyconf.define("HAVE_UUID_H", 0) + + if have_uuid == "missing": + have_uuid = False + v.have_uuid = have_uuid + v.export("LIBUUID_CFLAGS", LIBUUID_CFLAGS) + v.export("LIBUUID_LIBS", LIBUUID_LIBS) + + # configure_5.ac checks "$HAVE_UUID_GENERATE_TIME_SAFE" = "1" which is a shell var + # that is never assigned (AC_DEFINE only writes to confdefs.h, not shell vars), + # so this block never executes in the old configure. Match that behaviour. + if False and have_uuid is True and ac_cv_have_uuid_generate_time_safe: + pyconf.checking("if uuid_generate_time_safe() node value is stable") + uuid_node_src = """ + #include + #include + #include + #ifdef HAVE_UUID_H + #include + #else + #include + #endif + int main(void) { + uuid_t uuid; + (void)uuid_generate_time_safe(uuid); + uint64_t node = 0; + for (size_t i = 0; i < 6; i++) node |= (uint64_t)uuid[15-i] << (8*i); + FILE *fp = fopen("conftest.out", "w"); + if (!fp) return 1; + int rc = fprintf(fp, "%" PRIu64 "\\n", node) >= 0; + rc |= fclose(fp); + return rc == 0 ? 0 : 1; + } + """ + node1 = pyconf.run_program_output( + uuid_node_src, + extra_cflags=LIBUUID_CFLAGS, + extra_libs=LIBUUID_LIBS, + ) + node2 = pyconf.run_program_output( + uuid_node_src, + extra_cflags=LIBUUID_CFLAGS, + extra_libs=LIBUUID_LIBS, + ) + if node1 and node1 == node2: + pyconf.define("HAVE_UUID_GENERATE_TIME_SAFE_STABLE_MAC", 1) + pyconf.result("stable") + else: + pyconf.result("unstable") + + +WITH_READLINE = pyconf.arg_with( + "readline", + help="use libedit for backend or disable readline module", +) + + +def check_readline(v): + # --------------------------------------------------------------------------- + # readline / editline + # --------------------------------------------------------------------------- + + pyconf.define_template( + "WITH_EDITLINE", "Define to build the readline module against libedit." + ) + + rl_raw = WITH_READLINE.value_or("readline") + if rl_raw in ("editline", "edit"): + with_readline = "edit" + elif rl_raw in ("yes", "readline"): + with_readline = "readline" + elif rl_raw == "no": + with_readline = False + else: + pyconf.error( + "proper usage is --with(out)-readline[=editline|readline|no]" + ) + + if with_readline == "readline": + pkg = pyconf.pkg_check_modules("LIBREADLINE", "readline") + if pkg: + v.LIBREADLINE = "readline" + v.READLINE_CFLAGS = v.LIBREADLINE_CFLAGS + v.READLINE_LIBS = v.LIBREADLINE_LIBS + else: + rl_found = False + with pyconf.save_env(): + v.CPPFLAGS = f"{v.CPPFLAGS} {v.LIBREADLINE_CFLAGS}".strip() + v.LIBS = f"{v.LIBS} {v.LIBREADLINE_LIBS}".strip() + if pyconf.check_header("readline/readline.h"): + if pyconf.check_lib("readline", "readline"): + rl_found = True + rl_cflags = v.LIBREADLINE_CFLAGS or "" + rl_libs = v.LIBREADLINE_LIBS or "-lreadline" + if rl_found: + v.LIBREADLINE = "readline" + v.READLINE_CFLAGS = rl_cflags + v.READLINE_LIBS = rl_libs + else: + with_readline = False + + if with_readline == "edit": + pkg = pyconf.pkg_check_modules("LIBEDIT", "libedit") + if pkg: + pyconf.define("WITH_EDITLINE", 1) + v.LIBREADLINE = "edit" + v.READLINE_CFLAGS = v.LIBEDIT_CFLAGS + v.READLINE_LIBS = v.LIBEDIT_LIBS + else: + edit_found = False + with pyconf.save_env(): + v.CPPFLAGS = f"{v.CPPFLAGS} {v.LIBEDIT_CFLAGS}".strip() + v.LIBS = f"{v.LIBS} {v.LIBEDIT_LIBS}".strip() + if pyconf.check_header("editline/readline.h"): + if pyconf.check_lib("edit", "readline"): + edit_found = True + edit_cflags = v.LIBEDIT_CFLAGS or "" + edit_libs = v.LIBEDIT_LIBS or "-ledit" + if edit_found: + v.LIBREADLINE = "edit" + pyconf.define("WITH_EDITLINE", 1) + v.READLINE_CFLAGS = edit_cflags + v.READLINE_LIBS = edit_libs + else: + with_readline = False + + # Strip -D_XOPEN_SOURCE=600 from READLINE_CFLAGS (pyconfig.h defines _XOPEN_SOURCE=700) + v.export( + "READLINE_CFLAGS", + v.READLINE_CFLAGS.replace("-D_XOPEN_SOURCE=600", "").strip(), + ) + v.export("READLINE_LIBS") + v.export("LIBREADLINE") + + v.with_readline = with_readline + pyconf.checking("how to link readline") + if with_readline is False: + pyconf.result("no") + else: + pyconf.result( + f"{with_readline} (CFLAGS: {v.READLINE_CFLAGS}, " + f"LIBS: {v.READLINE_LIBS})" + ) + + with pyconf.save_env(): + v.CPPFLAGS = f"{v.CPPFLAGS} {v.READLINE_CFLAGS}".strip() + v.LIBS = f"{v.LIBS} {v.READLINE_LIBS}".strip() + + # Decide which header set to use based on WITH_EDITLINE + use_editline = v.WITH_EDITLINE == "1" + if use_editline: + rl_includes = ["stdio.h", "editline/readline.h"] + else: + rl_includes = [ + "stdio.h", + "readline/readline.h", + "readline/history.h", + ] + + # readline 2.2 + if pyconf.check_decl( + "rl_completion_append_character", extra_includes=rl_includes + ): + pyconf.define( + "HAVE_RL_COMPLETION_APPEND_CHARACTER", + 1, + "Define if you have readline 2.2", + ) + + if pyconf.check_decl( + "rl_completion_suppress_append", extra_includes=rl_includes + ): + pyconf.define( + "HAVE_RL_COMPLETION_SUPPRESS_APPEND", + 1, + "Define if you have rl_completion_suppress_append", + ) + + # readline 4.0 + librl = v.LIBREADLINE or "readline" + pyconf.checking(f"for rl_pre_input_hook in -l{librl}") + ac_cv_rl_pre_input_hook = pyconf.link_check( + includes=rl_includes, + body="void *x = rl_pre_input_hook", + cache_var="ac_cv_readline_rl_pre_input_hook", + ) + pyconf.result(ac_cv_rl_pre_input_hook) + if ac_cv_rl_pre_input_hook: + pyconf.define( + "HAVE_RL_PRE_INPUT_HOOK", + 1, + "Define if you have readline 4.0", + ) + + pyconf.checking( + f"for rl_completion_display_matches_hook in -l{librl}" + ) + ac_cv_rl_completion_display = pyconf.link_check( + includes=rl_includes, + body="void *x = rl_completion_display_matches_hook", + cache_var="ac_cv_readline_rl_completion_display_matches_hook", + ) + pyconf.result(ac_cv_rl_completion_display) + if ac_cv_rl_completion_display: + pyconf.define( + "HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK", + 1, + "Define if you have readline 4.0", + ) + + pyconf.checking(f"for rl_resize_terminal in -l{librl}") + ac_cv_rl_resize_terminal = pyconf.link_check( + includes=rl_includes, + body="void *x = rl_resize_terminal", + cache_var="ac_cv_readline_rl_resize_terminal", + ) + pyconf.result(ac_cv_rl_resize_terminal) + if ac_cv_rl_resize_terminal: + pyconf.define( + "HAVE_RL_RESIZE_TERMINAL", + 1, + "Define if you have readline 4.0", + ) + + # readline 4.2 + pyconf.checking(f"for rl_completion_matches in -l{librl}") + ac_cv_rl_completion_matches = pyconf.link_check( + includes=rl_includes, + body="void *x = rl_completion_matches", + cache_var="ac_cv_readline_rl_completion_matches", + ) + pyconf.result(ac_cv_rl_completion_matches) + if ac_cv_rl_completion_matches: + pyconf.define( + "HAVE_RL_COMPLETION_MATCHES", + 1, + "Define if you have readline 4.2", + ) + + if pyconf.check_decl( + "rl_catch_signals", extra_includes=rl_includes + ): + pyconf.define( + "HAVE_RL_CATCH_SIGNAL", + 1, + "Define if you can turn off readline's signal handling.", + ) + + pyconf.checking(f"for append_history in -l{librl}") + ac_cv_rl_append_history = pyconf.link_check( + includes=rl_includes, + body="void *x = append_history", + cache_var="ac_cv_readline_append_history", + ) + pyconf.result(ac_cv_rl_append_history) + if ac_cv_rl_append_history: + pyconf.define( + "HAVE_RL_APPEND_HISTORY", + 1, + "Define if readline supports append_history", + ) + + # rl_compdisp_func_t type (readline + newer editline, April 2023) + pyconf.check_type("rl_compdisp_func_t", extra_includes=rl_includes) + + # rl_startup_hook argument style + pyconf.checking("if rl_startup_hook takes arguments") + preamble_parts = [] + for h in rl_includes: + preamble_parts.append(f"#include <{h}>") + preamble = "\n".join(preamble_parts) + ac_cv_rl_startup_hook_args = pyconf.compile_check( + preamble=preamble + + "\nextern int test_hook_func(const char *text, int state);", + body="rl_startup_hook=test_hook_func;", + cache_var="ac_cv_readline_rl_startup_hook_takes_args", + ) + pyconf.result(ac_cv_rl_startup_hook_args) + if ac_cv_rl_startup_hook_args: + pyconf.define( + "Py_RL_STARTUP_HOOK_TAKES_ARGS", + 1, + "Define if rl_startup_hook takes arguments", + ) + + +def check_compression_libraries(v): + # --------------------------------------------------------------------------- + # Compression libraries + # --------------------------------------------------------------------------- + pyconf.define_template( + "HAVE_ZLIB_COPY", "Define if the zlib library has inflateCopy" + ) + + # zlib + pyconf.check_emscripten_port("ZLIB", "-sUSE_ZLIB") + pkg = pyconf.pkg_check_modules("ZLIB", "zlib >= 1.2.2.1") + if pkg: + v.have_zlib = True + v.ZLIB_CFLAGS = pkg.cflags + v.ZLIB_LIBS = pkg.libs + pyconf.define("HAVE_ZLIB_COPY", 1) + else: + with pyconf.save_env(): + v.CPPFLAGS = f"{v.CPPFLAGS} {v.ZLIB_CFLAGS}".strip() + v.LIBS = f"{v.LIBS} {v.ZLIB_LIBS}".strip() + if pyconf.check_header("zlib.h"): + if pyconf.check_lib("z", "gzread"): + have_zlib = True + else: + have_zlib = False + else: + have_zlib = False + zlib_cflags = v.ZLIB_CFLAGS or "" + zlib_libs = (v.ZLIB_LIBS or "-lz") if have_zlib else "" + if have_zlib: + if pyconf.check_lib("z", "inflateCopy"): + pyconf.define("HAVE_ZLIB_COPY", 1) + v.have_zlib = have_zlib + if v.have_zlib: + v.ZLIB_CFLAGS = zlib_cflags + v.ZLIB_LIBS = zlib_libs + + v.export("ZLIB_CFLAGS") + v.export("ZLIB_LIBS") + + # binascii can use zlib for optimised crc32 + if v.have_zlib: + v.BINASCII_CFLAGS = f"-DUSE_ZLIB_CRC32 {v.ZLIB_CFLAGS}".strip() + v.BINASCII_LIBS = v.ZLIB_LIBS + v.export("BINASCII_CFLAGS") + v.export("BINASCII_LIBS") + + # bzip2 + pyconf.check_emscripten_port("BZIP2", "-sUSE_BZIP2") + pkg = pyconf.pkg_check_modules("BZIP2", "bzip2") + if pkg: + v.have_bzip2 = True + v.BZIP2_CFLAGS = pkg.cflags + v.BZIP2_LIBS = pkg.libs + else: + with pyconf.save_env(): + v.CPPFLAGS = f"{v.CPPFLAGS} {v.BZIP2_CFLAGS}".strip() + v.LIBS = f"{v.LIBS} {v.BZIP2_LIBS}".strip() + _found_bz2 = pyconf.check_header("bzlib.h") and pyconf.check_lib( + "bz2", "BZ2_bzCompress" + ) + v.have_bzip2 = _found_bz2 + if v.have_bzip2: + v.BZIP2_CFLAGS = v.BZIP2_CFLAGS or "" + v.BZIP2_LIBS = v.BZIP2_LIBS or "-lbz2" + v.export("BZIP2_CFLAGS") + v.export("BZIP2_LIBS") + + # liblzma + pkg = pyconf.pkg_check_modules("LIBLZMA", "liblzma") + if pkg: + v.have_liblzma = True + v.LIBLZMA_CFLAGS = pkg.cflags + v.LIBLZMA_LIBS = pkg.libs + else: + with pyconf.save_env(): + v.CPPFLAGS = f"{v.CPPFLAGS} {v.LIBLZMA_CFLAGS}".strip() + v.LIBS = f"{v.LIBS} {v.LIBLZMA_LIBS}".strip() + _found_lzma = pyconf.check_header("lzma.h") and pyconf.check_lib( + "lzma", "lzma_easy_encoder" + ) + v.have_liblzma = _found_lzma + if v.have_liblzma: + v.LIBLZMA_CFLAGS = v.LIBLZMA_CFLAGS or "" + v.LIBLZMA_LIBS = v.LIBLZMA_LIBS or "-llzma" + v.export("LIBLZMA_CFLAGS") + v.export("LIBLZMA_LIBS") + + # zstd >= 1.4.5 (stabilised ZDICT_finalizeDictionary) + pkg = pyconf.pkg_check_modules("LIBZSTD", "libzstd >= 1.4.5") + if pkg: + v.have_libzstd = True + v.LIBZSTD_CFLAGS = pkg.cflags + v.LIBZSTD_LIBS = pkg.libs + else: + with pyconf.save_env(): + v.CPPFLAGS = f"{v.CPPFLAGS} {v.LIBZSTD_CFLAGS}".strip() + v.CFLAGS = f"{v.CFLAGS} {v.LIBZSTD_CFLAGS}".strip() + v.LIBS = f"{v.LIBS} {v.LIBZSTD_LIBS}".strip() + _found_zstd = False + if pyconf.search_libs( + "ZDICT_finalizeDictionary", ["zstd"], required=False + ): + # Version gate: ZSTD_VERSION_NUMBER >= 10405 + pyconf.checking("ZSTD_VERSION_NUMBER >= 1.4.5") + ok = pyconf.compile_check( + includes=["zstd.h"], + body=""" + #if ZSTD_VERSION_NUMBER < 10405 + # error "zstd version is too old" + #endif + """, + ) + if ok: + pyconf.result("yes") + if pyconf.check_headers(["zstd.h", "zdict.h"]): + _found_zstd = True + else: + pyconf.result("no") + v.have_libzstd = _found_zstd + if v.have_libzstd: + v.LIBZSTD_CFLAGS = v.LIBZSTD_CFLAGS or "" + v.LIBZSTD_LIBS = v.LIBZSTD_LIBS or "-lzstd" + v.export("LIBZSTD_CFLAGS") + v.export("LIBZSTD_LIBS") + + # _remote_debugging module: optional zstd compression support + if v.have_libzstd: + v.REMOTE_DEBUGGING_CFLAGS = f"-DHAVE_ZSTD {v.LIBZSTD_CFLAGS}".strip() + v.REMOTE_DEBUGGING_LIBS = v.LIBZSTD_LIBS + else: + v.REMOTE_DEBUGGING_CFLAGS = "" + v.REMOTE_DEBUGGING_LIBS = "" + v.export("REMOTE_DEBUGGING_CFLAGS") + v.export("REMOTE_DEBUGGING_LIBS") + + +def _check_curses(v, lib, panel_lib): + """Detect a curses library pair via pkg-config, with link-test fallback.""" + lib_upper = lib.upper() + panel_upper = panel_lib.upper() + pkg = pyconf.pkg_check_modules("CURSES", lib) + if pkg: + pyconf.define( + f"HAVE_{lib_upper}", + 1, + f"Define if you have the '{lib}' library", + ) + v.have_curses = True + pkg2 = pyconf.pkg_check_modules("PANEL", panel_lib) + if pkg2: + pyconf.define( + f"HAVE_{panel_upper}", + 1, + f"Define if you have the '{panel_lib}' library", + ) + v.have_panel = True + else: + v.have_panel = False + else: + v.have_curses = False + + +def check_curses(v): + # --------------------------------------------------------------------------- + # Curses / panel detection + # --------------------------------------------------------------------------- + + # PY_CHECK_CURSES: try ncursesw/panelw first, then ncurses/panel. + _check_curses(v, "ncursesw", "panelw") + if not v.have_curses: + _check_curses(v, "ncurses", "panel") + + # Curses header and link fallback; also curses function probes + with pyconf.save_env(): + v.CPPFLAGS = f"{v.CPPFLAGS} {v.CURSES_CFLAGS} {v.PANEL_CFLAGS}".strip() + pyconf.check_headers( + "ncursesw/curses.h", + "ncursesw/ncurses.h", + "ncursesw/panel.h", + "ncurses/curses.h", + "ncurses/ncurses.h", + "ncurses/panel.h", + "curses.h", + "ncurses.h", + "panel.h", + ) + + # Link fallback for curses (in case pkg-config gave no libs). + # Mirrors AC_SEARCH_LIBS([initscr], [ncursesw ncurses]) -- first checks if + # initscr is already available in current LIBS (which includes pkg-config + # results), then tries -lncursesw and -lncurses individually. + v.LIBS = f"{v.LIBS} {v.CURSES_LIBS} {v.PANEL_LIBS}".strip() + ac_cv_search_initscr = pyconf.search_libs( + "initscr", ["ncursesw", "ncurses"], required=False + ) + if not ac_cv_search_initscr: + v.have_curses = False + else: + if not v.have_curses: + v.have_curses = True + if not v.CURSES_LIBS: + v.CURSES_LIBS = ( + ac_cv_search_initscr + if ac_cv_search_initscr != "none required" + else "" + ) + ac_cv_search_update_panels = pyconf.search_libs( + "update_panels", ["panelw", "panel"], required=False + ) + if not ac_cv_search_update_panels: + v.have_panel = False + else: + if not v.have_panel: + v.have_panel = True + if not v.PANEL_LIBS: + v.PANEL_LIBS = ( + ac_cv_search_update_panels + if ac_cv_search_update_panels != "none required" + else "" + ) + + # Capture persistent values before save_env restores them + curses_have = v.have_curses + panel_have = v.have_panel + curses_libs = v.CURSES_LIBS + panel_libs = v.PANEL_LIBS + curses_cflags = v.CURSES_CFLAGS + panel_cflags = v.PANEL_CFLAGS + + # Note: autoconf's condition here is effectively always-true due to + # a quoting bug (test "have_curses" != "no"), so the function checks + # always run when any curses header is available. + _have_any_curses_h = False + for h in ( + "HAVE_NCURSESW_NCURSES_H", + "HAVE_NCURSESW_CURSES_H", + "HAVE_NCURSES_NCURSES_H", + "HAVE_NCURSES_CURSES_H", + "HAVE_NCURSES_H", + "HAVE_CURSES_H", + ): + if pyconf.is_defined(h): + _have_any_curses_h = True + break + if _have_any_curses_h: + # Strip -D_XOPEN_SOURCE=600 (pyconfig.h sets 700) + curses_cflags = curses_cflags.replace( + "-D_XOPEN_SOURCE=600", "" + ).strip() + panel_cflags = panel_cflags.replace( + "-D_XOPEN_SOURCE=600", "" + ).strip() + if v.ac_sys_system == "Darwin": + curses_cflags = ( + f"{curses_cflags} -D_XOPEN_SOURCE_EXTENDED=1".strip() + ) + + # _CURSES_INCLUDES: conditionally include the right curses header + # (mirrors the _CURSES_INCLUDES M4 macro in configure_8.ac lines 47-63) + CURSES_INCLUDES = """\ +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif +""" + + # On Solaris, term.h requires curses.h -- check with curses includes + pyconf.check_header("term.h", extra_includes=CURSES_INCLUDES) + + # HP/UX 11.0: mvwdelch may be a block, not an expression + if pyconf.compile_check( + preamble=CURSES_INCLUDES, + body="int rtn; rtn = mvwdelch(0,0,0);", + ): + pyconf.define( + "MVWDELCH_IS_EXPRESSION", + 1, + "Define if mvwdelch in curses.h is an expression.", + ) + + if pyconf.compile_check( + preamble=CURSES_INCLUDES, body="WINDOW *w; w->_flags = 0;" + ): + pyconf.define( + "WINDOW_HAS_FLAGS", + 1, + "Define if WINDOW in curses.h offers a field _flags.", + ) + + # PY_CHECK_CURSES_FUNC: probe individual curses functions via compile check + # (mirrors PY_CHECK_CURSES_FUNC in configure_8.ac lines 119-140) + curses_funcs = [ + "is_pad", + "is_term_resized", + "resize_term", + "resizeterm", + "immedok", + "syncok", + "wchgat", + "filter", + "has_key", + "typeahead", + "use_env", + ] + for fn in curses_funcs: + if pyconf.compile_check( + description=f"for curses function {fn}", + preamble=CURSES_INCLUDES + + f""" +#ifndef {fn} +void *x={fn}; +#endif +""", + ): + pyconf.define( + f"HAVE_CURSES_{fn.upper()}", + 1, + f"Define if you have the '{fn}' function.", + ) + + # Re-apply persistent curses values captured inside save_env block + v.have_curses = curses_have + v.have_panel = panel_have + v.CURSES_LIBS = curses_libs + v.PANEL_LIBS = panel_libs + v.CURSES_CFLAGS = curses_cflags + v.PANEL_CFLAGS = panel_cflags + v.export("CURSES_LIBS") + v.export("CURSES_CFLAGS") + v.export("PANEL_LIBS") + v.export("PANEL_CFLAGS") diff --git a/Tools/configure/conf_filesystem.py b/Tools/configure/conf_filesystem.py new file mode 100644 index 00000000000000..4957f368cc5e8b --- /dev/null +++ b/Tools/configure/conf_filesystem.py @@ -0,0 +1,115 @@ +"""Filesystem related checks.""" + +import pyconf + + +def check_device_macros(v): + # --------------------------------------------------------------------------- + # Device macros: major, minor, makedev + # --------------------------------------------------------------------------- + + pyconf.checking("for major, minor, and makedev") + device_macros_code = """ + #if defined(MAJOR_IN_MKDEV) + #include + #elif defined(MAJOR_IN_SYSMACROS) + #include + #include + #else + #include + #endif + """ + ac_cv_device_macros = pyconf.link_check( + preamble=device_macros_code, + body="makedev(major(0),minor(0));", + cache_var="ac_cv_device_macros", + ) + pyconf.result(ac_cv_device_macros) + if ac_cv_device_macros: + pyconf.define( + "HAVE_DEVICE_MACROS", + 1, + "Define to 1 if you have the device macros.", + ) + + # Always defined for backwards compatibility + pyconf.define( + "SYS_SELECT_WITH_SYS_TIME", + 1, + "Define if you can safely include both and " + "(which you can't on SCO ODT 3.0).", + ) + + +def check_device_files(v): + # --------------------------------------------------------------------------- + # Device files (/dev/ptmx, /dev/ptc) + # --------------------------------------------------------------------------- + + pyconf.notice("checking for device files") + + if v.ac_sys_system in ("Linux-android", "iOS"): + # These platforms will never have /dev/ptmx or /dev/ptc + v.ac_cv_file__dev_ptmx = False + v.ac_cv_file__dev_ptc = False + else: + if v.cross_compiling: + if not v.ac_cv_file__dev_ptmx: + pyconf.checking("for /dev/ptmx") + pyconf.result("not set") + pyconf.error( + "set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE " + "file when cross compiling" + ) + if not v.ac_cv_file__dev_ptc: + pyconf.checking("for /dev/ptc") + pyconf.result("not set") + pyconf.error( + "set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE " + "file when cross compiling" + ) + else: + pyconf.checking("for /dev/ptmx") + v.ac_cv_file__dev_ptmx = pyconf.path_exists("/dev/ptmx") + pyconf.result(v.ac_cv_file__dev_ptmx) + pyconf.checking("for /dev/ptc") + v.ac_cv_file__dev_ptc = pyconf.path_exists("/dev/ptc") + pyconf.result(v.ac_cv_file__dev_ptc) + + if v.ac_cv_file__dev_ptmx: + pyconf.define( + "HAVE_DEV_PTMX", + 1, + "Define to 1 if you have the /dev/ptmx device file.", + ) + if v.ac_cv_file__dev_ptc: + pyconf.define( + "HAVE_DEV_PTC", + 1, + "Define to 1 if you have the /dev/ptc device file.", + ) + + if v.ac_sys_system == "Darwin": + v.LIBS = f"{v.LIBS} -framework CoreFoundation".strip() + + +def check_dirent(v): + # --------------------------------------------------------------------------- + # dirent.d_type + # --------------------------------------------------------------------------- + + if pyconf.link_check( + "if the dirent structure of a d_type field", + """ +#include +int main(void) { + struct dirent entry; + return entry.d_type == DT_UNKNOWN; +} +""", + ): + pyconf.define( + "HAVE_DIRENT_D_TYPE", + 1, + "Define to 1 if the dirent structure has a d_type field", + ) diff --git a/Tools/configure/conf_init.py b/Tools/configure/conf_init.py new file mode 100644 index 00000000000000..2c708b7f30ee0e --- /dev/null +++ b/Tools/configure/conf_init.py @@ -0,0 +1,251 @@ +"""conf_init — Bootstrap, source dirs, version, pkg-config. + +Handles the earliest configuration steps: platform feature macros +(NetBSD, FreeBSD, Darwin), source/build directory detection, git +metadata, canonical host triplet, build-python selection (including +cross-compilation), prefix/directory layout, VERSION/SOVERSION, +pkg-config probing, and the missing-stdlib-config option. +""" + +import conf_modules +import pyconf + +PYTHON_VERSION = "3.15" + +WITH_BUILD_PYTHON = pyconf.arg_with( + "build-python", + metavar=f"python{PYTHON_VERSION}", + help=( + f"path to build python binary for cross compiling " + f"(default: _bootstrap_python or python{PYTHON_VERSION})" + ), +) +WITH_PKG_CONFIG = pyconf.arg_with( + "pkg-config", + metavar="yes|no|check", + help="use pkg-config to detect build options (default is check)", +) +WITH_MISSING_STDLIB_CONFIG = pyconf.arg_with( + "missing-stdlib-config", + metavar="FILE", + help="File with custom module error messages for missing stdlib modules", +) + + +def setup_platform_defines(): + """pyconfig.h platform feature macros for NetBSD, FreeBSD, Darwin.""" + pyconf.define( + "_NETBSD_SOURCE", + 1, + "Define on NetBSD to activate all library features", + ) + pyconf.define( + "__BSD_VISIBLE", + 1, + "Define on FreeBSD to activate all library features", + ) + pyconf.define( + "_DARWIN_C_SOURCE", + 1, + "Define on Darwin to activate all library features", + ) + + +def setup_source_dirs(v): + """Detect source and build directories, set srcdir/abs_srcdir/abs_builddir.""" + srcdir_raw = pyconf._srcdir_arg or v.srcdir or "." + srcdir_abs = pyconf.abspath(srcdir_raw) + builddir = pyconf.abspath(".") + out_of_tree = srcdir_abs != builddir + v.export("srcdir", "." if not out_of_tree else srcdir_abs) + v.export("abs_srcdir", srcdir_abs) + v.export("abs_builddir", builddir) + pyconf.srcdir = srcdir_abs + + if out_of_tree: + v.export("BASECPPFLAGS", "-IObjects -IInclude -IPython") + else: + v.export("BASECPPFLAGS", "") + + v.srcdir_abs = srcdir_abs + + +def setup_git_metadata(v): + """Detect git and set GITVERSION, GITTAG, GITBRANCH.""" + git_dir = pyconf.path_join([v.srcdir_abs, ".git"]) + if pyconf.path_exists(git_dir): + HAS_GIT = bool(pyconf.find_prog("git")) + else: + HAS_GIT = False + + if HAS_GIT: + v.GITVERSION = "git --git-dir $(srcdir)/.git rev-parse --short HEAD" + v.GITTAG = ( + "git --git-dir $(srcdir)/.git describe --all --always --dirty" + ) + v.GITBRANCH = "git --git-dir $(srcdir)/.git name-rev --name-only HEAD" + else: + v.GITVERSION = "" + v.GITTAG = "" + v.GITBRANCH = "" + v.export("GITVERSION") + v.export("GITTAG") + v.export("GITBRANCH") + + +def setup_canonical_host(v): + """Run canonical host detection and validate cross-compilation settings.""" + pyconf.canonical_host() + v.cross_compiling = pyconf.cross_compiling + v.host = pyconf.host + v.host_cpu = pyconf.host_cpu + v.export("build", pyconf.build) + v.export("host") + + if v.cross_compiling == "maybe": + pyconf.error( + "error: Cross compiling requires --host=HOST-TUPLE and --build=ARCH" + ) + + # Remove stale pybuilddir.txt; will be regenerated by --generate-posix-vars. + pyconf.rm_f("pybuilddir.txt") + + +def setup_build_python(v): + """Handle --with-build-python, freeze module, and PYTHON_FOR_REGEN.""" + bp_raw = WITH_BUILD_PYTHON.value + PYTHON_FOR_REGEN: str = "" + with_build_python = None + + if bp_raw is not None: + pyconf.checking("for --with-build-python") + if bp_raw == "yes": + with_build_python = f"python{PYTHON_VERSION}" + elif bp_raw == "no": + pyconf.error( + "error: invalid --with-build-python option: expected path or 'yes', not 'no'" + ) + else: + with_build_python = bp_raw + if not pyconf.find_prog(with_build_python): + pyconf.error( + f"error: invalid or missing build python binary '{with_build_python}'" + ) + build_python_ver = pyconf.cmd_output( + [ + with_build_python, + "-c", + "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')", + ] + ) + if build_python_ver != PYTHON_VERSION: + pyconf.error( + f"error: '{with_build_python}' has incompatible version {build_python_ver} " + f"(expected: {PYTHON_VERSION})" + ) + PYTHON_FOR_REGEN = with_build_python + PYTHON_FOR_FREEZE = with_build_python + v.PYTHON_FOR_BUILD = ( + "_PYTHON_PROJECT_BASE=$(abs_builddir) " + "_PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) " + "PYTHONPATH=$(srcdir)/Lib " + "_PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) " + "_PYTHON_SYSCONFIGDATA_PATH=$(shell test -f pybuilddir.txt && " + "echo $(abs_builddir)/`cat pybuilddir.txt`) " + with_build_python + ) + pyconf.result(with_build_python) + else: + if v.cross_compiling: + pyconf.error("error: Cross compiling requires --with-build-python") + v.PYTHON_FOR_BUILD = "./$(BUILDPYTHON) -E" + PYTHON_FOR_FREEZE = "./_bootstrap_python" + v.export("PYTHON_FOR_BUILD") + + pyconf.checking("Python for regen version") + if pyconf.find_prog(PYTHON_FOR_REGEN): + pyconf.result(pyconf.cmd_output([PYTHON_FOR_REGEN, "-V"])) + else: + pyconf.result("missing") + + v.export("PYTHON_FOR_FREEZE", PYTHON_FOR_FREEZE) + + conf_modules.setup_freeze_module(v) + + if with_build_python is None: + PYTHON_FOR_REGEN = pyconf.check_progs( + [ + f"python{PYTHON_VERSION}", + "python3.15", + "python3.14", + "python3.13", + "python3.12", + "python3.11", + "python3.10", + "python3", + "python", + ], + default="python3", + ) + v.export("PYTHON_FOR_REGEN", PYTHON_FOR_REGEN) + + +def setup_prefix_and_dirs(v): + """Set prefix and standard autoconf directory variables.""" + v.prefix = pyconf.get_dir_arg("prefix", "/usr/local") + if not isinstance(v.prefix, str): + v.prefix = "/usr/local" + if v.prefix != "/" and v.prefix.endswith("/"): + v.prefix = v.prefix.rstrip("/") + v.export("prefix") + + v.export("exec_prefix", pyconf.get_dir_arg("exec_prefix", "${prefix}")) + v.export( + "datarootdir", pyconf.get_dir_arg("datarootdir", "${prefix}/share") + ) + v.export("bindir", pyconf.get_dir_arg("bindir", "${exec_prefix}/bin")) + v.export("libdir", pyconf.get_dir_arg("libdir", "${exec_prefix}/lib")) + v.export("mandir", pyconf.get_dir_arg("mandir", "${datarootdir}/man")) + v.export( + "includedir", pyconf.get_dir_arg("includedir", "${prefix}/include") + ) + # Also set uppercase aliases for use in configure.py code + v.export("BINDIR", pyconf.get_dir_arg("bindir", "${exec_prefix}/bin")) + v.export("LIBDIR", pyconf.get_dir_arg("libdir", "${exec_prefix}/lib")) + v.export("MANDIR", pyconf.get_dir_arg("mandir", "${datarootdir}/man")) + v.export( + "INCLUDEDIR", pyconf.get_dir_arg("includedir", "${prefix}/include") + ) + v.export("VPATH", v.srcdir) + + +def setup_version_and_config_args(v): + """Set VERSION, SOVERSION, and CONFIG_ARGS.""" + v.export("VERSION", PYTHON_VERSION) + v.export("SOVERSION", "1.0") + # Value is computed at output time by _resolve_exports() so that + # precious variables registered via env_var() in later files are included. + v.export("CONFIG_ARGS", "") + + +def setup_pkg_config(v): + """Handle --with-pkg-config option.""" + pkgconf_raw = WITH_PKG_CONFIG.value_or("check") + + if pkgconf_raw in ("yes", "check"): + v.PKG_CONFIG = pyconf.find_prog("pkg-config") + elif pkgconf_raw == "no": + v.PKG_CONFIG = "" + else: + pyconf.error( + f"error: invalid argument --with-pkg-config={pkgconf_raw}" + ) + + if pkgconf_raw == "yes" and not v.PKG_CONFIG: + pyconf.error("error: pkg-config is required") + pyconf.env["PKG_CONFIG"] = v.PKG_CONFIG + + +def setup_missing_stdlib_config(v): + """Handle --with-missing-stdlib-config option.""" + msc_raw = WITH_MISSING_STDLIB_CONFIG.value_or("") + v.export("MISSING_STDLIB_CONFIG", msc_raw) diff --git a/Tools/configure/conf_macos.py b/Tools/configure/conf_macos.py new file mode 100644 index 00000000000000..c1de8577a91c64 --- /dev/null +++ b/Tools/configure/conf_macos.py @@ -0,0 +1,590 @@ +"""conf_macos — Apple platform configuration (macOS, iOS, frameworks). + +Handles iOS cross-compilation tools; --enable-universalsdk and +--with-universal-archs; --with-framework-name and --enable-framework +(Darwin and iOS variants); --with-app-store-compliance; macOS/iOS +deployment targets and initial CFLAGS/LDFLAGS; macOS SDKROOT detection +and compiler selection; --enable-framework (WITH_NEXT_FRAMEWORK); +--with-dsymutil; dyld detection; Darwin-specific compiler flags; +universal architecture flags; and MACOSX_DEPLOYMENT_TARGET. +""" + +import os + +import pyconf + +ENABLE_UNIVERSALSDK = pyconf.arg_enable( + "universalsdk", + metavar="SDKDIR", + help="create a universal binary build; SDKDIR = macOS SDK path (default: no)", +) +WITH_UNIVERSAL_ARCHS = pyconf.arg_with( + "universal-archs", + metavar="ARCH", + help=( + "kind of macOS universal binary to create; only valid with --enable-universalsdk; " + 'choices: "universal2", "intel-64", "intel-32", "intel", "32-bit", ' + '"64-bit", "3-way", "all"' + ), +) +WITH_FRAMEWORK_NAME = pyconf.arg_with( + "framework-name", + metavar="FRAMEWORK", + help="name for the Python framework on macOS (only with --enable-framework, default: Python)", +) +ENABLE_FRAMEWORK = pyconf.arg_enable( + "framework", + metavar="INSTALLDIR", + help="create a Python.framework rather than a traditional Unix install (default: no)", +) +WITH_APP_STORE_COMPLIANCE = pyconf.arg_with( + "app-store-compliance", + metavar="PATCH-FILE", + help="enable patches required for app store compliance; optional PATCH-FILE for custom patch", +) +WITH_DSYMUTIL = pyconf.arg_with( + "dsymutil", + help="link debug information into final executable with dsymutil in macOS (default is no)", + false_is="no", +) + + +# --------------------------------------------------------------------------- +# From conf_platform +# --------------------------------------------------------------------------- + + +def setup_ios_cross_tools(v): + """Seed AR/CC/CPP/CXX for iOS cross-compilation.""" + if not v.AR: + if pyconf.fnmatch(v.host, "aarch64-apple-ios*-simulator"): + v.AR = "arm64-apple-ios-simulator-ar" + elif pyconf.fnmatch(v.host, "aarch64-apple-ios*"): + v.AR = "arm64-apple-ios-ar" + elif pyconf.fnmatch(v.host, "x86_64-apple-ios*-simulator"): + v.AR = "x86_64-apple-ios-simulator-ar" + + if not v.CC: + if pyconf.fnmatch(v.host, "aarch64-apple-ios*-simulator"): + v.CC = "arm64-apple-ios-simulator-clang" + elif pyconf.fnmatch(v.host, "aarch64-apple-ios*"): + v.CC = "arm64-apple-ios-clang" + elif pyconf.fnmatch(v.host, "x86_64-apple-ios*-simulator"): + v.CC = "x86_64-apple-ios-simulator-clang" + + if not v.CPP: + if pyconf.fnmatch(v.host, "aarch64-apple-ios*-simulator"): + v.CPP = "arm64-apple-ios-simulator-cpp" + elif pyconf.fnmatch(v.host, "aarch64-apple-ios*"): + v.CPP = "arm64-apple-ios-cpp" + elif pyconf.fnmatch(v.host, "x86_64-apple-ios*-simulator"): + v.CPP = "x86_64-apple-ios-simulator-cpp" + + if not v.CXX: + if pyconf.fnmatch(v.host, "aarch64-apple-ios*-simulator"): + v.CXX = "arm64-apple-ios-simulator-clang++" + elif pyconf.fnmatch(v.host, "aarch64-apple-ios*"): + v.CXX = "arm64-apple-ios-clang++" + elif pyconf.fnmatch(v.host, "x86_64-apple-ios*-simulator"): + v.CXX = "x86_64-apple-ios-simulator-clang++" + + +def setup_universalsdk(v): + """Handle --enable-universalsdk and --with-universal-archs.""" + pyconf.checking("for --enable-universalsdk") + usdk_raw = ENABLE_UNIVERSALSDK.value + + v.UNIVERSALSDK = "" + enable_universalsdk = None + if usdk_raw is not None: + if usdk_raw == "yes": + val = pyconf.cmd_output( + ["/usr/bin/xcodebuild", "-version", "-sdk", "macosx", "Path"] + ) + if ".sdk" not in val: + val = "/Developer/SDKs/MacOSX10.4u.sdk" + if not pyconf.path_is_dir(val): + val = "/" + elif usdk_raw == "no": + val = None + else: + val = usdk_raw + if val is None: + v.UNIVERSALSDK = "" + enable_universalsdk = "" + else: + v.UNIVERSALSDK = str(val) + enable_universalsdk = val + if not pyconf.path_is_dir(v.UNIVERSALSDK): + pyconf.error( + f"error: --enable-universalsdk specifies non-existing SDK: {v.UNIVERSALSDK}" + ) + + if v.UNIVERSALSDK: + pyconf.result(v.UNIVERSALSDK) + else: + pyconf.result("no") + v.export("UNIVERSALSDK") + + v.enable_universalsdk = enable_universalsdk + + v.export("ARCH_RUN_32BIT", "") + + v.UNIVERSAL_ARCHS = "32-bit" + if pyconf.platform_system() == "Darwin" and v.UNIVERSALSDK: + dylib = pyconf.path_join([v.UNIVERSALSDK, "usr/lib/libSystem.dylib"]) + _, file_out = pyconf.cmd_status(["/usr/bin/file", "-L", dylib]) + if "ppc" not in file_out: + v.UNIVERSAL_ARCHS = "intel" + + v.export("LIPO_32BIT_FLAGS", "") + v.export("LIPO_INTEL64_FLAGS", "") + + # --- --with-universal-archs --- + pyconf.checking("for --with-universal-archs") + if WITH_UNIVERSAL_ARCHS.given: + v.UNIVERSAL_ARCHS = WITH_UNIVERSAL_ARCHS.value_or(v.UNIVERSAL_ARCHS) + + if v.UNIVERSALSDK: + pyconf.result(v.UNIVERSAL_ARCHS) + else: + pyconf.result("no") + + +def setup_framework_name(v): + """Handle --with-framework-name option.""" + fw_name = WITH_FRAMEWORK_NAME.value + if fw_name is not None and fw_name not in ("yes", "no"): + v.PYTHONFRAMEWORK = fw_name + v.PYTHONFRAMEWORKDIR = f"{fw_name}.framework" + v.PYTHONFRAMEWORKIDENTIFIER = f"org.python.{fw_name.lower()}" + else: + v.PYTHONFRAMEWORK = "Python" + v.PYTHONFRAMEWORKDIR = "Python.framework" + v.PYTHONFRAMEWORKIDENTIFIER = "org.python.python" + + +def setup_framework(v): + """Handle --enable-framework and all FRAMEWORK* variables.""" + fw_raw = ENABLE_FRAMEWORK.value + v.enable_framework = fw_raw + + v.PYTHONFRAMEWORKPREFIX = "" + v.PYTHONFRAMEWORKINSTALLDIR = "" + v.PYTHONFRAMEWORKINSTALLNAMEPREFIX = "" + v.RESSRCDIR = "" + v.FRAMEWORKINSTALLFIRST = "" + v.FRAMEWORKINSTALLLAST = "" + v.FRAMEWORKALTINSTALLFIRST = "" + v.FRAMEWORKALTINSTALLLAST = "" + v.FRAMEWORKPYTHONW = "" + v.FRAMEWORKUNIXTOOLSPREFIX = "" + v.FRAMEWORKINSTALLAPPSPREFIX = "" + v.INSTALLTARGETS = "commoninstall bininstall maninstall" + + ac_default_prefix = "/usr/local" + + if fw_raw is not None: + val = fw_raw + if fw_raw == "yes": + if v.ac_sys_system == "Darwin": + val = "/Library/Frameworks" + elif v.ac_sys_system == "iOS": + val = "Apple/iOS/Frameworks/$(MULTIARCH)" + else: + pyconf.error("error: Unknown platform for framework build") + + if val == "no": + if v.ac_sys_system == "iOS": + pyconf.error("error: iOS builds must use --enable-framework") + v.PYTHONFRAMEWORK = "" + v.PYTHONFRAMEWORKDIR = "no-framework" + v.FRAMEWORKUNIXTOOLSPREFIX = ( + v.prefix if v.prefix != "NONE" else ac_default_prefix + ) + v.enable_framework = "" + else: + v.PYTHONFRAMEWORKPREFIX = val + v.PYTHONFRAMEWORKINSTALLDIR = ( + f"{v.PYTHONFRAMEWORKPREFIX}/{v.PYTHONFRAMEWORKDIR}" + ) + + if v.ac_sys_system == "Darwin": + _setup_framework_darwin(v, val, ac_default_prefix) + elif v.ac_sys_system == "iOS": + _setup_framework_ios(v) + else: + pyconf.error("error: Unknown platform for framework build") + else: + if v.ac_sys_system == "iOS": + pyconf.error("error: iOS builds must use --enable-framework") + v.PYTHONFRAMEWORK = "" + v.PYTHONFRAMEWORKDIR = "no-framework" + v.FRAMEWORKUNIXTOOLSPREFIX = ( + v.prefix if v.prefix != "NONE" else ac_default_prefix + ) + v.enable_framework = "" + + _export_framework_vars(v) + + +def _setup_framework_darwin(v, val, ac_default_prefix): + """Configure framework variables for macOS Darwin builds.""" + v.FRAMEWORKINSTALLFIRST = "frameworkinstallversionedstructure" + v.FRAMEWORKALTINSTALLFIRST = "frameworkinstallversionedstructure " + v.FRAMEWORKINSTALLLAST = ( + "frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools" + ) + v.FRAMEWORKALTINSTALLLAST = "frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools" + v.FRAMEWORKPYTHONW = "frameworkpythonw" + v.FRAMEWORKINSTALLAPPSPREFIX = "/Applications" + v.INSTALLTARGETS = "commoninstall bininstall maninstall" + v.FRAMEWORKUNIXTOOLSPREFIX = ( + v.prefix if v.prefix != "NONE" else ac_default_prefix + ) + + if val.startswith("/System"): + v.FRAMEWORKINSTALLAPPSPREFIX = "/Applications" + if v.prefix == "NONE": + v.FRAMEWORKUNIXTOOLSPREFIX = "/usr" + elif val.startswith("/Library"): + v.FRAMEWORKINSTALLAPPSPREFIX = "/Applications" + elif val.endswith("/Library/Frameworks"): + mdir = pyconf.path_parent(pyconf.path_parent(val)) + v.FRAMEWORKINSTALLAPPSPREFIX = f"{mdir}/Applications" + if v.prefix == "NONE": + v.FRAMEWORKUNIXTOOLSPREFIX = mdir + + v.prefix = f"{v.PYTHONFRAMEWORKINSTALLDIR}/Versions/{v.VERSION}" + v.PYTHONFRAMEWORKINSTALLNAMEPREFIX = v.prefix + v.RESSRCDIR = "Mac/Resources/framework" + pyconf.config_files( + [ + "Mac/Makefile", + "Mac/PythonLauncher/Makefile", + "Mac/Resources/framework/Info.plist", + "Mac/Resources/app/Info.plist", + ] + ) + + +def _setup_framework_ios(v): + """Configure framework variables for iOS builds.""" + v.FRAMEWORKINSTALLFIRST = "frameworkinstallunversionedstructure" + v.FRAMEWORKALTINSTALLFIRST = "frameworkinstallunversionedstructure " + v.FRAMEWORKINSTALLLAST = "frameworkinstallmobileheaders" + v.FRAMEWORKALTINSTALLLAST = "frameworkinstallmobileheaders" + v.FRAMEWORKPYTHONW = "" + v.INSTALLTARGETS = "libinstall inclinstall sharedinstall" + v.prefix = v.PYTHONFRAMEWORKPREFIX + v.PYTHONFRAMEWORKINSTALLNAMEPREFIX = f"@rpath/{v.PYTHONFRAMEWORKDIR}" + v.RESSRCDIR = "Apple/iOS/Resources" + pyconf.config_files(["Apple/iOS/Resources/Info.plist"]) + + +def _export_framework_vars(v): + """Export all framework-related variables.""" + v.export("PYTHONFRAMEWORK") + v.export("PYTHONFRAMEWORKIDENTIFIER") + v.export("PYTHONFRAMEWORKDIR") + v.export("PYTHONFRAMEWORKPREFIX") + v.export("PYTHONFRAMEWORKINSTALLDIR") + v.export("PYTHONFRAMEWORKINSTALLNAMEPREFIX") + v.export("RESSRCDIR") + v.export("FRAMEWORKINSTALLFIRST") + v.export("FRAMEWORKINSTALLLAST") + v.export("FRAMEWORKALTINSTALLFIRST") + v.export("FRAMEWORKALTINSTALLLAST") + v.export("FRAMEWORKPYTHONW") + v.export("FRAMEWORKUNIXTOOLSPREFIX") + v.export("FRAMEWORKINSTALLAPPSPREFIX") + v.export("INSTALLTARGETS") + + pyconf.define_unquoted( + "_PYTHONFRAMEWORK", f'"{v.PYTHONFRAMEWORK}"', "framework name" + ) + + +def setup_app_store_compliance(v): + """Handle --with-app-store-compliance option.""" + pyconf.checking("for --with-app-store-compliance") + asc_raw = WITH_APP_STORE_COMPLIANCE.value + + if asc_raw is not None and asc_raw != "no": + if asc_raw == "yes": + if v.ac_sys_system in ("Darwin", "iOS"): + v.APP_STORE_COMPLIANCE_PATCH = ( + "Mac/Resources/app-store-compliance.patch" + ) + pyconf.result("applying default app store compliance patch") + else: + pyconf.error( + f"error: no default app store compliance patch available for {v.ac_sys_system}" + ) + else: + v.APP_STORE_COMPLIANCE_PATCH = asc_raw + pyconf.result("applying custom app store compliance patch") + else: + if v.ac_sys_system == "iOS": + v.APP_STORE_COMPLIANCE_PATCH = ( + "Mac/Resources/app-store-compliance.patch" + ) + pyconf.result("applying default app store compliance patch") + else: + v.APP_STORE_COMPLIANCE_PATCH = "" + pyconf.result("not patching for app store compliance") + v.export("APP_STORE_COMPLIANCE_PATCH") + + +def setup_deployment_targets_and_flags(v): + """Set macOS/iOS deployment targets and initialize compiler flags.""" + v.export("CONFIGURE_MACOSX_DEPLOYMENT_TARGET", "") + v.export("EXPORT_MACOSX_DEPLOYMENT_TARGET", "#") + v.export("IPHONEOS_DEPLOYMENT_TARGET") + if not v.is_set("IPHONEOS_DEPLOYMENT_TARGET"): + v.IPHONEOS_DEPLOYMENT_TARGET = "" + + v.export("CFLAGS", v.CFLAGS) + v.export("CPPFLAGS", v.CPPFLAGS) + v.export("LDFLAGS", v.LDFLAGS) + v.export("LIBS", v.LIBS) + v.export("BASECFLAGS", "") + v.export("CFLAGS_NODIST", v.CFLAGS_NODIST) + v.export("LDFLAGS_NODIST", v.LDFLAGS_NODIST) + + if pyconf.fnmatch(v.host, "wasm64-*-emscripten"): + v.CFLAGS += " -sMEMORY64=1" + v.LDFLAGS += " -sMEMORY64=1" + + if v.ac_sys_system == "iOS": + v.CFLAGS += f" -mios-version-min={v.IPHONEOS_DEPLOYMENT_TARGET}" + v.LDFLAGS += f" -mios-version-min={v.IPHONEOS_DEPLOYMENT_TARGET}" + + +def setup_macos_compiler(v): + """macOS: detect SDKROOT and select compiler (gcc/clang).""" + if v.ac_sys_system != "Darwin": + return + + HAS_XCRUN = bool(pyconf.find_prog("xcrun")) + pyconf.checking("macOS SDKROOT") + if not v.SDKROOT: + if HAS_XCRUN: + v.SDKROOT = pyconf.cmd_output(["xcrun", "--show-sdk-path"]) + else: + v.SDKROOT = "/" + pyconf.result(v.SDKROOT) + + if not v.CC: + found_gcc = pyconf.find_prog("gcc") + found_clang = pyconf.find_prog("clang") + if found_gcc and found_clang: + ver = pyconf.cmd_output([found_gcc, "--version"]) + if "llvm-gcc" in ver: + v.CC = found_clang + v.CXX = found_clang + "++" + elif found_clang and not found_gcc: + v.CC = found_clang + v.CXX = found_clang + "++" + elif not found_gcc and not found_clang: + found_clang = pyconf.cmd_output( + ["/usr/bin/xcrun", "-find", "clang"] + ) + if found_clang: + v.CC = found_clang + v.CXX = pyconf.cmd_output( + ["/usr/bin/xcrun", "-find", "clang++"] + ) + + +def setup_next_framework(v): + """Handle --enable-framework option.""" + pyconf.checking("for --enable-framework") + if v.enable_framework: + v.BASECFLAGS += " -fno-common -dynamic" + pyconf.define( + "WITH_NEXT_FRAMEWORK", + 1, + "Define if you want to produce an OpenStep/Rhapsody framework " + "(shared library plus accessory files).", + ) + pyconf.result("yes") + if v.enable_shared: + pyconf.error( + "Specifying both --enable-shared and --enable-framework is not supported, " + "use only --enable-framework instead" + ) + else: + pyconf.result("no") + + +def setup_dsymutil(v): + """Handle --with-dsymutil option.""" + DSYMUTIL_PATH = "" + dsymutil_enabled = WITH_DSYMUTIL.process_bool() + if dsymutil_enabled and v.MACHDEP != "darwin": + pyconf.error("dsymutil debug linking is only available in macOS.") + DSYMUTIL = "true" if dsymutil_enabled else "" + + if DSYMUTIL: + DSYMUTIL_PATH = pyconf.find_prog("dsymutil") + if not DSYMUTIL_PATH: + pyconf.error("dsymutil command not found on $PATH") + + v.export("DSYMUTIL", DSYMUTIL) + v.export("DSYMUTIL_PATH", DSYMUTIL_PATH) + + +def check_dyld(v): + """Check for dyld on Darwin.""" + pyconf.checking("for dyld") + if f"{v.ac_sys_system}/{v.ac_sys_release}".startswith("Darwin/"): + pyconf.define( + "WITH_DYLD", + 1, + "Define if you want to use the new-style (Openstep, Rhapsody, MacOS) " + "dynamic linker (dyld) instead of the old-style (NextStep) dynamic " + "linker (rld). Dyld is necessary to support frameworks.", + ) + pyconf.result("always on for Darwin") + else: + pyconf.result("no") + + +def _setup_darwin_flags(v): + """Darwin-specific compiler flags, universal SDK, and deployment target.""" + if v.UNIVERSALSDK.endswith("/MacOSX10.4u.sdk"): + v.CC = "gcc-4.0" + v.CPP = "cpp-4.0" + pyconf.result(v.CC) + + if pyconf.check_compile_flag( + "-Wunguarded-availability", extra_flags=["-Werror"] + ): + v.CFLAGS_NODIST += " -Werror=unguarded-availability" + + v.LIPO_INTEL64_FLAGS = "" + + if v.enable_universalsdk: + _setup_universal_archs(v) + + v.export("ARCH_TRIPLES") + + _setup_macos_deployment_target(v) + + pyconf.checking("if specified universal architectures work") + if not pyconf.link_check("#include ", 'printf("%d", 42);'): + pyconf.result("no") + pyconf.error( + "error: check config.log and use the '--with-universal-archs' option" + ) + else: + pyconf.result("yes") + + +def _setup_universal_archs(v): + """Set UNIVERSAL_ARCH_FLAGS based on --with-universal-archs value.""" + v.ARCH_TRIPLES = "" + ua = v.UNIVERSAL_ARCHS + if ua == "32-bit": + v.UNIVERSAL_ARCH_FLAGS = "-arch ppc -arch i386" + v.LIPO_32BIT_FLAGS = "" + v.ARCH_RUN_32BIT = "" + v.ARCH_TRIPLES = "ppc-apple-darwin i386-apple-darwin" + elif ua == "64-bit": + v.UNIVERSAL_ARCH_FLAGS = "-arch ppc64 -arch x86_64" + v.LIPO_32BIT_FLAGS = "" + v.ARCH_RUN_32BIT = "true" + v.ARCH_TRIPLES = "ppc64-apple-darwin x86_64-apple-darwin" + elif ua == "all": + v.UNIVERSAL_ARCH_FLAGS = ( + "-arch i386 -arch ppc -arch ppc64 -arch x86_64" + ) + v.LIPO_32BIT_FLAGS = "-extract ppc7400 -extract i386" + v.ARCH_RUN_32BIT = "/usr/bin/arch -i386 -ppc" + v.ARCH_TRIPLES = "i386-apple-darwin ppc-apple-darwin ppc64-apple-darwin x86_64-apple-darwin" + elif ua == "universal2": + v.UNIVERSAL_ARCH_FLAGS = "-arch arm64 -arch x86_64" + v.LIPO_32BIT_FLAGS = "" + v.LIPO_INTEL64_FLAGS = "-extract x86_64" + v.ARCH_RUN_32BIT = "true" + v.ARCH_TRIPLES = "aarch64-apple-darwin x86_64-apple-darwin" + elif ua == "intel": + v.UNIVERSAL_ARCH_FLAGS = "-arch i386 -arch x86_64" + v.LIPO_32BIT_FLAGS = "-extract i386" + v.ARCH_RUN_32BIT = "/usr/bin/arch -i386" + v.ARCH_TRIPLES = "i386-apple-darwin x86_64-apple-darwin" + elif ua == "intel-32": + v.UNIVERSAL_ARCH_FLAGS = "-arch i386" + v.LIPO_32BIT_FLAGS = "" + v.ARCH_RUN_32BIT = "" + v.ARCH_TRIPLES = "i386-apple-darwin" + elif ua == "intel-64": + v.UNIVERSAL_ARCH_FLAGS = "-arch x86_64" + v.LIPO_32BIT_FLAGS = "" + v.ARCH_RUN_32BIT = "true" + v.ARCH_TRIPLES = "x86_64-apple-darwin" + elif ua == "3-way": + v.UNIVERSAL_ARCH_FLAGS = "-arch i386 -arch ppc -arch x86_64" + v.LIPO_32BIT_FLAGS = "-extract ppc7400 -extract i386" + v.ARCH_RUN_32BIT = "/usr/bin/arch -i386 -ppc" + v.ARCH_TRIPLES = ( + "i386-apple-darwin ppc-apple-darwin x86_64-apple-darwin" + ) + else: + pyconf.error( + "error: proper usage is " + "--with-universal-arch=universal2|32-bit|64-bit|all|intel|3-way" + ) + + if v.UNIVERSALSDK != "/": + v.CFLAGS = ( + f"{v.UNIVERSAL_ARCH_FLAGS} -isysroot {v.UNIVERSALSDK} {v.CFLAGS}" + ) + v.LDFLAGS = ( + f"{v.UNIVERSAL_ARCH_FLAGS} -isysroot {v.UNIVERSALSDK} {v.LDFLAGS}" + ) + v.CPPFLAGS = f"-isysroot {v.UNIVERSALSDK} {v.CPPFLAGS}" + else: + v.CFLAGS = f"{v.UNIVERSAL_ARCH_FLAGS} {v.CFLAGS}" + v.LDFLAGS = f"{v.UNIVERSAL_ARCH_FLAGS} {v.LDFLAGS}" + + v.export("LIPO_32BIT_FLAGS") + v.export("LIPO_INTEL64_FLAGS") + v.export("ARCH_RUN_32BIT") + + +def _setup_macos_deployment_target(v): + """Determine and set MACOSX_DEPLOYMENT_TARGET.""" + pyconf.checking("which MACOSX_DEPLOYMENT_TARGET to use") + sw = pyconf.cmd_output(["sw_vers", "-productVersion"]) + parts = sw.split(".") + cur_target_major = int(parts[0]) if parts else 0 + cur_target_minor = int(parts[1]) if len(parts) > 1 else 0 + cur_target = f"{cur_target_major}.{cur_target_minor}" + + if cur_target_major == 10 and 3 <= cur_target_minor <= 5: + cur_target = "10.3" + if v.enable_universalsdk: + if v.UNIVERSAL_ARCHS in ( + "all", + "3-way", + "intel", + "64-bit", + ): + cur_target = "10.5" + else: + arch = pyconf.cmd_output(["/usr/bin/arch"]) + if arch == "i386": + cur_target = "10.4" + + v.CONFIGURE_MACOSX_DEPLOYMENT_TARGET = ( + v.MACOSX_DEPLOYMENT_TARGET or cur_target + ) + v.MACOSX_DEPLOYMENT_TARGET = v.CONFIGURE_MACOSX_DEPLOYMENT_TARGET + os.environ["MACOSX_DEPLOYMENT_TARGET"] = v.MACOSX_DEPLOYMENT_TARGET + v.EXPORT_MACOSX_DEPLOYMENT_TARGET = "" + v.export("MACOSX_DEPLOYMENT_TARGET") + v.export("CONFIGURE_MACOSX_DEPLOYMENT_TARGET") + v.export("EXPORT_MACOSX_DEPLOYMENT_TARGET") + pyconf.result(v.MACOSX_DEPLOYMENT_TARGET) diff --git a/Tools/configure/conf_math.py b/Tools/configure/conf_math.py new file mode 100644 index 00000000000000..915a78d7367833 --- /dev/null +++ b/Tools/configure/conf_math.py @@ -0,0 +1,475 @@ +"""conf_math — Math, floating-point, semaphores, wchar. + +Handles --with-libm and --with-libc; checks GCC inline assembler +and floating-point features (x64 asm, x87 control word, mc68881 fpcr, +double rounding, float word endianness); checks C99 math functions; +probes POSIX named and unnamed semaphores; handles --enable-big-digits +for Python long integers; and checks wchar_t size and signedness +(including Solaris workarounds). +""" + +import pyconf + +WITH_LIBM = pyconf.arg_with( + "libm", + help="override libm math library to STRING (default is system-dependent)", +) +WITH_LIBC = pyconf.arg_with( + "libc", + help="override libc C library to STRING (default is system-dependent)", +) +ENABLE_BIG_DIGITS = pyconf.arg_enable( + "big-digits", + help="use big digits (30 or 15 bits) for Python longs (default is 30)", +) + + +def check_math_library(v): + # --------------------------------------------------------------------------- + # Math library: --with-libm and --with-libc + # --------------------------------------------------------------------------- + + v.export("LIBM") # registered for Makefile substitution + + if v.ac_sys_system != "Darwin": + v.LIBM = "-lm" + else: + v.LIBM = "" + + pyconf.checking("for --with-libm=STRING") + with_libm = WITH_LIBM.value + if with_libm is not None: + if with_libm == "no": + v.LIBM = "" + pyconf.result("force LIBM empty") + elif with_libm != "yes": + v.LIBM = with_libm + pyconf.result(f'set LIBM="{with_libm}"') + else: + pyconf.error("proper usage is --with-libm=STRING") + else: + pyconf.result(f'default LIBM="{v.LIBM}"') + + v.export("LIBC") + + pyconf.checking("for --with-libc=STRING") + with_libc = WITH_LIBC.value + if with_libc is not None: + if with_libc == "no": + v.LIBC = "" + pyconf.result("force LIBC empty") + elif with_libc != "yes": + v.LIBC = with_libc + pyconf.result(f'set LIBC="{with_libc}"') + else: + pyconf.error("proper usage is --with-libc=STRING") + else: + pyconf.result(f'default LIBC="{v.LIBC}"') + + # Linux: __fpu_control (AC_CHECK_FUNC with custom action → no HAVE_ define) + if not pyconf.check_func("__fpu_control", autodefine=False): + pyconf.check_lib("ieee", "__fpu_control") + + +def _define_float_big(): + pyconf.define( + "DOUBLE_IS_BIG_ENDIAN_IEEE754", + 1, + "Define if C doubles are 64-bit IEEE 754 binary format, " + "stored with the most significant byte first", + ) + + +def _define_float_little(): + pyconf.define( + "DOUBLE_IS_LITTLE_ENDIAN_IEEE754", + 1, + "Define if C doubles are 64-bit IEEE 754 binary format, " + "stored with the least significant byte first", + ) + + +def _define_float_unknown(): + if "arm" in pyconf.host_cpu: + pyconf.define( + "DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754", + 1, + "Define if C doubles are 64-bit IEEE 754 binary format, " + "stored in ARM mixed-endian order (byte order 45670123)", + ) + else: + pyconf.error( + "Unknown float word ordering. You need to manually " + "preset ax_cv_c_float_words_bigendian=no (or yes) " + "according to your system." + ) + + +def check_gcc_asm_and_floating_point(v): + # --------------------------------------------------------------------------- + # GCC inline assembler checks + # --------------------------------------------------------------------------- + + # x64 + pyconf.checking("for x64 gcc inline assembler") + ac_cv_gcc_asm_for_x64 = pyconf.link_check( + body='__asm__ __volatile__ ("movq %rcx, %rax");', + cache_var="ac_cv_gcc_asm_for_x64", + ) + pyconf.result(ac_cv_gcc_asm_for_x64) + if ac_cv_gcc_asm_for_x64: + pyconf.define( + "HAVE_GCC_ASM_FOR_X64", + 1, + "Define if we can use x64 gcc inline assembler", + ) + + # --------------------------------------------------------------------------- + # Floating-point properties + # --------------------------------------------------------------------------- + + pyconf.ax_c_float_words_bigendian( + on_big=_define_float_big, + on_little=_define_float_little, + on_unknown=_define_float_unknown, + ) + + # x87 control word (gcc inline asm) + pyconf.checking( + "whether we can use gcc inline assembler to get and set x87 control word" + ) + ac_cv_gcc_asm_for_x87 = pyconf.link_check( + body=""" + unsigned short cw; + __asm__ __volatile__ ("fnstcw %0" : "=m" (cw)); + __asm__ __volatile__ ("fldcw %0" : : "m" (cw)); + """, + cache_var="ac_cv_gcc_asm_for_x87", + ) + pyconf.result(ac_cv_gcc_asm_for_x87) + if ac_cv_gcc_asm_for_x87: + pyconf.define( + "HAVE_GCC_ASM_FOR_X87", + 1, + "Define if we can use gcc inline assembler to get and set x87 control word", + ) + + # mc68881 fpcr + pyconf.checking( + "whether we can use gcc inline assembler to get and set mc68881 fpcr" + ) + ac_cv_gcc_asm_for_mc68881 = pyconf.link_check( + body=""" + unsigned int fpcr; + __asm__ __volatile__ ("fmove.l %%fpcr,%0" : "=dm" (fpcr)); + __asm__ __volatile__ ("fmove.l %0,%%fpcr" : : "dm" (fpcr)); + """, + cache_var="ac_cv_gcc_asm_for_mc68881", + ) + pyconf.result(ac_cv_gcc_asm_for_mc68881) + if ac_cv_gcc_asm_for_mc68881: + pyconf.define( + "HAVE_GCC_ASM_FOR_MC68881", + 1, + "Define if we can use gcc inline assembler to get and set mc68881 fpcr", + ) + + # x87-style double rounding + pyconf.checking("for x87-style double rounding") + saved_cc = v.CC + v.CC = f"{v.CC} {v.BASECFLAGS}".strip() + ac_cv_x87_double_rounding = pyconf.run_check( + r""" + #include + #include + int main(void) { + volatile double x, y, z; + x = 0.99999999999999989; /* 1-2**-53 */ + y = 1./x; + if (y != 1.) + exit(0); + x = 1e16; + y = 2.99999; + z = x + y; + if (z != 1e16+4.) + exit(0); + exit(1); + } + """, + cache_var="ac_cv_x87_double_rounding", + on_success_return=False, + on_failure_return=True, + cross_compiling_default=False, + ) + v.CC = saved_cc + pyconf.result(ac_cv_x87_double_rounding) + if ac_cv_x87_double_rounding: + pyconf.define( + "X87_DOUBLE_ROUNDING", + 1, + "Define if arithmetic is subject to x87-style double rounding issue", + ) + + +def check_c99_math(v): + # --------------------------------------------------------------------------- + # C99 math functions (required) + # --------------------------------------------------------------------------- + + libs_save = v.LIBS + v.LIBS = f"{v.LIBS} {v.LIBM}".strip() + for mfunc in ( + "acosh", + "asinh", + "atanh", + "erf", + "erfc", + "expm1", + "log1p", + "log2", + ): + if not pyconf.check_func(mfunc): + pyconf.error("Python requires C99 compatible libm") + v.LIBS = libs_save + + +def check_big_digits(v): + # --------------------------------------------------------------------------- + # Python long digit size: --enable-big-digits + # --------------------------------------------------------------------------- + + pyconf.checking("digit size for Python's longs") + big_digits_raw = ENABLE_BIG_DIGITS.value + if big_digits_raw is not None: + if big_digits_raw == "yes": + enable_big_digits = "30" + elif big_digits_raw == "no": + enable_big_digits = "15" + elif big_digits_raw in ("15", "30"): + enable_big_digits = big_digits_raw + else: + pyconf.error( + f"bad value {big_digits_raw} for --enable-big-digits; " + "value should be 15 or 30" + ) + enable_big_digits = ( + big_digits_raw # unreachable but satisfies linter + ) + pyconf.result(enable_big_digits) + pyconf.define_unquoted( + "PYLONG_BITS_IN_DIGIT", + enable_big_digits, + "Define as the preferred size in bits of long digits", + ) + else: + pyconf.result("no value specified") + + +def check_wchar(v): + # --------------------------------------------------------------------------- + # wchar.h and wchar_t properties + # --------------------------------------------------------------------------- + + if pyconf.check_header("wchar.h"): + pyconf.define( + "HAVE_WCHAR_H", + 1, + "Define if the compiler provides a wchar.h header file.", + ) + v.wchar_h = True + else: + v.wchar_h = False + + if v.wchar_h: + pyconf.check_sizeof("wchar_t", default=4, includes=["wchar.h"]) + + pyconf.checking("whether wchar_t is signed") + ac_cv_wchar_t_signed = pyconf.run_check( + r""" + #include + int main() + { + return ((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); + } + """, + cache_var="ac_cv_wchar_t_signed", + cross_compiling_default=True, + ) + pyconf.result(ac_cv_wchar_t_signed) + + pyconf.checking("whether wchar_t is usable") + wchar_size = int(v.ac_cv_sizeof_wchar_t or "0") + wchar_unsigned = not ac_cv_wchar_t_signed + if wchar_size >= 2 and wchar_unsigned: + pyconf.define( + "HAVE_USABLE_WCHAR_T", + 1, + "Define if you have a useable wchar_t type defined in wchar.h; " + "useable means wchar_t must be an unsigned type with at least " + "16 bits. (see Include/unicodeobject.h).", + ) + pyconf.result("yes") + else: + pyconf.result("no") + + # Oracle Solaris: wchar_t is non-Unicode in non-Unicode locales + if v.ac_sys_system == "SunOS": + if pyconf.path_is_file("/etc/os-release"): + os_release_content = pyconf.read_file("/etc/os-release") + os_name = "" + for line in os_release_content.splitlines(): + if line.startswith("NAME="): + os_name = line.split("=", 1)[1].strip().strip('"') + break + if os_name == "Oracle Solaris": + pyconf.define( + "HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION", + 1, + "Define if the internal form of wchar_t in non-Unicode locales " + "is not Unicode.", + ) + + +WITH_SYSTEM_LIBMPDEC = pyconf.arg_with( + "system-libmpdec", + help="build _decimal using installed mpdecimal library (default is yes)", + default="yes", + var="with_system_libmpdec", +) +WITH_DECIMAL_CONTEXTVAR = pyconf.arg_with( + "decimal-contextvar", + help="build _decimal using coroutine-local rather than thread-local context (default is yes)", + default="yes", +) + + +def _use_bundled_libmpdec(v): + v.LIBMPDEC_CFLAGS = r"-I$(srcdir)/Modules/_decimal/libmpdec" + v.LIBMPDEC_LIBS = r"-lm $(LIBMPDEC_A)" + v.LIBMPDEC_INTERNAL = r"$(LIBMPDEC_HEADERS) $(LIBMPDEC_A)" + v.have_mpdec = True + + +def detect_libmpdec(v): + """Detect libmpdec and configure decimal module.""" + v.have_mpdec = False + v.LIBMPDEC_CFLAGS = "" + v.LIBMPDEC_LIBS = "" + v.LIBMPDEC_INTERNAL = "" + + with_system_libmpdec = WITH_SYSTEM_LIBMPDEC.process_value(v) + + if with_system_libmpdec == "no": + _use_bundled_libmpdec(v) + else: + # Try pkg-config + pkg = pyconf.find_prog("pkg-config") + found_pkg = False + if pkg: + if pyconf.cmd([pkg, "--atleast-version=2.5.0", "libmpdec"]): + status, output = pyconf.cmd_status( + [pkg, "--cflags", "--libs", "libmpdec"] + ) + if status == 0: + parts = output.split() + cflags_parts = [] + libs_parts = [] + for p in parts: + if p.startswith("-I") or p.startswith("-D"): + cflags_parts.append(p) + else: + libs_parts.append(p) + v.LIBMPDEC_CFLAGS = " ".join(cflags_parts) + v.LIBMPDEC_LIBS = " ".join(libs_parts) + found_pkg = True + if not found_pkg: + v.LIBMPDEC_CFLAGS = "" + v.LIBMPDEC_LIBS = "-lmpdec -lm" + v.LIBMPDEC_INTERNAL = "" + + # Verify linkage (mpd_version symbol) + if pyconf.link_check( + preamble="""\ +#include +#if MPD_VERSION_HEX < 0x02050000 +# error "mpdecimal 2.5.0 or higher required" +#endif +""", + body="const char *x = mpd_version();", + extra_cflags=v.LIBMPDEC_CFLAGS, + extra_libs=v.LIBMPDEC_LIBS, + ): + v.have_mpdec = True + else: + v.have_mpdec = False + + # Disable forced inlining in debug builds + with_pydebug = v.Py_DEBUG + if with_pydebug: + v.LIBMPDEC_CFLAGS += " -DTEST_COVERAGE" + + # --with-decimal-contextvar + with_decimal_contextvar = WITH_DECIMAL_CONTEXTVAR.process_value(None) + if with_decimal_contextvar != "no": + pyconf.define( + "WITH_DECIMAL_CONTEXTVAR", + 1, + "Define if you want build the _decimal module using a " + "coroutine-local rather than a thread-local context", + ) + + if with_system_libmpdec == "no": + # Determine bundled libmpdec machine flavor + pyconf.checking("decimal libmpdec machine") + if v.ac_sys_system.startswith("Darwin"): + libmpdec_machine = "universal" + else: + ac_cv_sizeof_size_t = int(v.ac_cv_sizeof_size_t or 8) + ac_cv_gcc_asm_for_x64 = v.ac_cv_gcc_asm_for_x64 + ac_cv_type___uint128_t = v.ac_cv_type___uint128_t + ac_cv_gcc_asm_for_x87 = v.ac_cv_gcc_asm_for_x87 + libmpdec_system = ( + "sunos" if v.ac_sys_system.startswith("SunOS") else "other" + ) + libmpdec_machine = "unknown" + if ac_cv_sizeof_size_t == 8: + if ac_cv_gcc_asm_for_x64: + libmpdec_machine = "x64" + elif ac_cv_type___uint128_t: + libmpdec_machine = "uint128" + else: + libmpdec_machine = "ansi64" + elif ac_cv_sizeof_size_t == 4: + if ac_cv_gcc_asm_for_x87 and libmpdec_system != "sunos": + cc_name = v.ac_cv_cc_name + if "gcc" in cc_name or "clang" in cc_name: + libmpdec_machine = "ppro" + else: + libmpdec_machine = "ansi32" + else: + libmpdec_machine = "ansi32" + pyconf.result(libmpdec_machine) + + mflags = { + "x64": " -DCONFIG_64=1 -DASM=1", + "uint128": " -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1", + "ansi64": " -DCONFIG_64=1 -DANSI=1", + "ppro": " -DCONFIG_32=1 -DANSI=1 -DASM=1 -Wno-unknown-pragmas", + "ansi32": " -DCONFIG_32=1 -DANSI=1", + "ansi-legacy": " -DCONFIG_32=1 -DANSI=1 -DLEGACY_COMPILER=1", + "universal": " -DUNIVERSAL=1", + } + if libmpdec_machine in mflags: + v.LIBMPDEC_CFLAGS += mflags[libmpdec_machine] + elif libmpdec_machine == "unknown": + pyconf.fatal("_decimal: unsupported architecture") + + if v.have_ipa_pure_const_bug: + v.LIBMPDEC_CFLAGS += " -fno-ipa-pure-const" + + if v.have_glibc_memmove_bug: + v.LIBMPDEC_CFLAGS += " -U_FORTIFY_SOURCE" + + v.export("LIBMPDEC_CFLAGS") + v.export("LIBMPDEC_LIBS") + v.export("LIBMPDEC_INTERNAL") diff --git a/Tools/configure/conf_modules.py b/Tools/configure/conf_modules.py new file mode 100644 index 00000000000000..71bf547e88aff4 --- /dev/null +++ b/Tools/configure/conf_modules.py @@ -0,0 +1,494 @@ +"""conf_modules — Stdlib module definitions, HACL. + +Sets up platform-specific not-available module lists; declares +MODULE_BUILDTYPE for ~60 stdlib extension modules (always-builtin, +shared, disabled, n/a); configures HACL* cryptographic library +flags (libHacl_Hash_SHA2, etc.); and sets up remaining module +variables (LIBHACL_*, MODULE_*_LDFLAGS). +""" + +import pyconf + + +def setup_module_deps(v): + # --------------------------------------------------------------------------- + # MODULE_DEPS_SHARED / LIBPYTHON + # --------------------------------------------------------------------------- + + v.export("MODULE_DEPS_SHARED") + v.export("LIBPYTHON") + v.MODULE_DEPS_SHARED = "$(MODULE_DEPS_STATIC) $(EXPORTSYMS)" + v.LIBPYTHON = "" + + android_api_level = v.ANDROID_API_LEVEL + if v.PY_ENABLE_SHARED == "1" and ( + android_api_level or v.MACHDEP == "cygwin" + ): + v.MODULE_DEPS_SHARED = r"$(MODULE_DEPS_SHARED) $(LDLIBRARY)" + v.LIBPYTHON = r"$(BLDLIBRARY)" + + if v.ac_sys_system == "iOS": + v.MODULE_DEPS_SHARED = ( + r"$(MODULE_DEPS_SHARED) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)" + ) + + +def setup_freeze_module(v): + """Set FREEZE_MODULE_BOOTSTRAP, FREEZE_MODULE, and related variables.""" + if v.cross_compiling: + FREEZE_MODULE_BOOTSTRAP = ( + "$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py" + ) + FREEZE_MODULE_BOOTSTRAP_DEPS = "$(srcdir)/Programs/_freeze_module.py" + FREEZE_MODULE = "$(FREEZE_MODULE_BOOTSTRAP)" + FREEZE_MODULE_DEPS = "$(FREEZE_MODULE_BOOTSTRAP_DEPS)" + PYTHON_FOR_BUILD_DEPS = "" + else: + FREEZE_MODULE_BOOTSTRAP = "./Programs/_freeze_module" + FREEZE_MODULE_BOOTSTRAP_DEPS = "Programs/_freeze_module" + FREEZE_MODULE = ( + "$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py" + ) + FREEZE_MODULE_DEPS = ( + "_bootstrap_python $(srcdir)/Programs/_freeze_module.py" + ) + PYTHON_FOR_BUILD_DEPS = "$(BUILDPYTHON)" + v.export("FREEZE_MODULE_BOOTSTRAP", FREEZE_MODULE_BOOTSTRAP) + v.export("FREEZE_MODULE_BOOTSTRAP_DEPS", FREEZE_MODULE_BOOTSTRAP_DEPS) + v.export("FREEZE_MODULE", FREEZE_MODULE) + v.export("FREEZE_MODULE_DEPS", FREEZE_MODULE_DEPS) + v.export("PYTHON_FOR_BUILD_DEPS", PYTHON_FOR_BUILD_DEPS) + + +def setup_platform_na_modules(v): + # --------------------------------------------------------------------------- + # Platform module n/a lists (PY_STDLIB_MOD_SET_NA) + # --------------------------------------------------------------------------- + + sys = v.ac_sys_system + + if sys == "AIX": + pyconf.stdlib_module_set_na(["_scproxy"]) + elif sys.startswith("VxWorks"): + pyconf.stdlib_module_set_na(["_scproxy", "termios", "grp"]) + elif sys == "Darwin": + pass # _scproxy is available on macOS + elif sys == "iOS": + pyconf.stdlib_module_set_na( + [ + "_curses", + "_curses_panel", + "_gdbm", + "_multiprocessing", + "_posixshmem", + "_posixsubprocess", + "_scproxy", + "_tkinter", + "grp", + "nis", + "readline", + "pwd", + "spwd", + "syslog", + ] + ) + elif ( + sys.startswith("CYGWIN") + or sys.startswith("QNX") + or sys.startswith("FreeBSD") + ): + pyconf.stdlib_module_set_na(["_scproxy"]) + elif sys == "Emscripten": + pyconf.stdlib_module_set_na( + [ + "_curses", + "_curses_panel", + "_dbm", + "_gdbm", + "_multiprocessing", + "_posixshmem", + "_posixsubprocess", + "_scproxy", + "_tkinter", + "_interpreters", + "_interpchannels", + "_interpqueues", + "grp", + "pwd", + "resource", + "syslog", + "readline", + ] + ) + elif sys == "WASI": + pyconf.stdlib_module_set_na( + [ + "_curses", + "_curses_panel", + "_dbm", + "_gdbm", + "_multiprocessing", + "_posixshmem", + "_posixsubprocess", + "_scproxy", + "_tkinter", + "_interpreters", + "_interpchannels", + "_interpqueues", + "grp", + "pwd", + "resource", + "syslog", + ] + ) + pyconf.stdlib_module_set_na( + [ + "_ctypes_test", + "_remote_debugging", + "_testimportmultiple", + "_testmultiphase", + "_testsinglephase", + "fcntl", + "mmap", + "termios", + "xxlimited", + "xxlimited_35", + ] + ) + else: + pyconf.stdlib_module_set_na(["_scproxy"]) + + # --------------------------------------------------------------------------- + # MODULE_BUILDTYPE + # --------------------------------------------------------------------------- + + host_cpu = v.host_cpu + if host_cpu in ("wasm32", "wasm64"): + v.export("MODULE_BUILDTYPE", "static") + else: + v.export("MODULE_BUILDTYPE", v.MODULE_BUILDTYPE or "shared") + + +def setup_stdlib_modules(v): + # --------------------------------------------------------------------------- + # Stdlib extension modules + # --------------------------------------------------------------------------- + + # Bootstrap modules (Modules/Setup.bootstrap) + pyconf.stdlib_module_simple("_io", cflags="-I$(srcdir)/Modules/_io") + pyconf.stdlib_module_simple("time", ldflags=v.TIMEMODULE_LIB) + + # Always-enabled + pyconf.stdlib_module_simple("array") + pyconf.stdlib_module_simple("_math_integer") + pyconf.stdlib_module_simple("_asyncio") + pyconf.stdlib_module_simple("_bisect") + pyconf.stdlib_module_simple("_csv") + pyconf.stdlib_module_simple("_heapq") + pyconf.stdlib_module_simple("_json") + pyconf.stdlib_module_simple("_lsprof") + pyconf.stdlib_module_simple("_pickle") + pyconf.stdlib_module_simple("_posixsubprocess") + pyconf.stdlib_module_simple("_queue") + pyconf.stdlib_module_simple("_random") + pyconf.stdlib_module_simple( + "_remote_debugging", + cflags=v.REMOTE_DEBUGGING_CFLAGS, + ldflags=v.REMOTE_DEBUGGING_LIBS, + ) + pyconf.stdlib_module_simple("select") + pyconf.stdlib_module_simple("_struct") + pyconf.stdlib_module_simple("_types") + pyconf.stdlib_module_simple("_typing") + pyconf.stdlib_module_simple("_interpreters") + pyconf.stdlib_module_simple("_interpchannels") + pyconf.stdlib_module_simple("_interpqueues") + pyconf.stdlib_module_simple("_zoneinfo") + + # multiprocessing + pyconf.stdlib_module( + "_multiprocessing", + supported=v.ac_cv_func_sem_unlink is True, + cflags="-I$(srcdir)/Modules/_multiprocessing", + ) + pyconf.stdlib_module( + "_posixshmem", + supported=bool(v.have_posix_shmem), + cflags=v.POSIXSHMEM_CFLAGS, + ldflags=v.POSIXSHMEM_LIBS, + ) + + # libm-dependent + pyconf.stdlib_module_simple("_statistics", ldflags=v.LIBM) + pyconf.stdlib_module_simple("cmath", ldflags=v.LIBM) + pyconf.stdlib_module_simple("math", ldflags=v.LIBM) + pyconf.stdlib_module_simple( + "_datetime", + ldflags=f"{v.TIMEMODULE_LIB} {v.LIBM}".strip(), + ) + + # Unix modules with platform dependencies + pyconf.stdlib_module( + "fcntl", + supported=( + v.ac_cv_header_sys_ioctl_h is True + and v.ac_cv_header_fcntl_h is True + ), + ldflags=v.FCNTL_LIBS, + ) + pyconf.stdlib_module( + "mmap", + supported=( + v.ac_cv_header_sys_mman_h is True + and v.ac_cv_header_sys_stat_h is True + ), + ) + pyconf.stdlib_module( + "_socket", + supported=( + v.ac_cv_header_sys_socket_h is True + and v.ac_cv_header_sys_types_h is True + and v.ac_cv_header_netinet_in_h is True + ), + ldflags=v.SOCKET_LIBS, + ) + + # Platform-specific + pyconf.stdlib_module( + "grp", + supported=( + v.ac_cv_func_getgrent is True + and ( + v.ac_cv_func_getgrgid is True + or v.ac_cv_func_getgrgid_r is True + ) + ), + ) + pyconf.stdlib_module( + "pwd", + supported=( + v.ac_cv_func_getpwuid is True or v.ac_cv_func_getpwuid_r is True + ), + ) + pyconf.stdlib_module( + "resource", supported=v.ac_cv_header_sys_resource_h is True + ) + pyconf.stdlib_module( + "_scproxy", + enabled=v.ac_sys_system == "Darwin", + ldflags="-framework SystemConfiguration -framework CoreFoundation", + ) + pyconf.stdlib_module("syslog", supported=v.ac_cv_header_syslog_h is True) + pyconf.stdlib_module("termios", supported=v.ac_cv_header_termios_h is True) + + # expat / elementtree + pyconf.stdlib_module( + "pyexpat", + supported=v.ac_cv_header_sys_time_h is True, + cflags=v.LIBEXPAT_CFLAGS, + ldflags=v.LIBEXPAT_LDFLAGS, + ) + pyconf.stdlib_module("_elementtree", cflags=v.LIBEXPAT_CFLAGS) + + # CJK codecs + pyconf.stdlib_module_simple("_codecs_cn") + pyconf.stdlib_module_simple("_codecs_hk") + pyconf.stdlib_module_simple("_codecs_iso2022") + pyconf.stdlib_module_simple("_codecs_jp") + pyconf.stdlib_module_simple("_codecs_kr") + pyconf.stdlib_module_simple("_codecs_tw") + pyconf.stdlib_module_simple("_multibytecodec") + pyconf.stdlib_module_simple("unicodedata") + + +def setup_remaining_modules(v): + # --------------------------------------------------------------------------- + # Remaining conditionally-enabled extension modules + # --------------------------------------------------------------------------- + + pyconf.stdlib_module( + "_ctypes", + supported=v.have_libffi is True, + cflags=f"{v.NO_STRICT_OVERFLOW_CFLAGS} {v.LIBFFI_CFLAGS}".strip(), + ldflags=v.LIBFFI_LIBS, + ) + pyconf.stdlib_module( + "_curses", + supported=v.have_curses is True, + cflags=v.CURSES_CFLAGS, + ldflags=v.CURSES_LIBS, + ) + pyconf.stdlib_module( + "_curses_panel", + supported=(v.have_curses is True and v.have_panel is True), + cflags=f"{v.PANEL_CFLAGS} {v.CURSES_CFLAGS}".strip(), + ldflags=f"{v.PANEL_LIBS} {v.CURSES_LIBS}".strip(), + ) + pyconf.stdlib_module( + "_decimal", + supported=v.have_mpdec is True, + cflags=v.LIBMPDEC_CFLAGS, + ldflags=v.LIBMPDEC_LIBS, + ) + + if v.with_system_libmpdec is False: + pyconf.warn( + "the bundled copy of libmpdec is scheduled for removal in Python 3.16; " + "consider using a system installed mpdecimal library." + ) + if v.with_system_libmpdec is True and v.have_mpdec is False: + pyconf.warn( + "no system libmpdec found; falling back to pure-Python version " + "for the decimal module" + ) + + pyconf.stdlib_module( + "_dbm", + enabled=bool(v.with_dbmliborder), + supported=v.have_dbm is not False, + cflags=v.DBM_CFLAGS, + ldflags=v.DBM_LIBS, + ) + pyconf.stdlib_module( + "_gdbm", + enabled="gdbm" in v.with_dbmliborder.split(":"), + supported=v.have_gdbm is True, + cflags=v.GDBM_CFLAGS, + ldflags=v.GDBM_LIBS, + ) + pyconf.stdlib_module( + "readline", + supported=v.with_readline is not False, + cflags=v.READLINE_CFLAGS, + ldflags=v.READLINE_LIBS, + ) + pyconf.stdlib_module( + "_sqlite3", + enabled=v.have_sqlite3 is True, + supported=v.have_supported_sqlite3 is True, + cflags=v.LIBSQLITE3_CFLAGS, + ldflags=v.LIBSQLITE3_LIBS, + ) + pyconf.stdlib_module( + "_tkinter", + supported=v.have_tcltk is True, + cflags=v.TCLTK_CFLAGS, + ldflags=v.TCLTK_LIBS, + ) + pyconf.stdlib_module( + "_uuid", + supported=v.have_uuid is True, + cflags=v.LIBUUID_CFLAGS, + ldflags=v.LIBUUID_LIBS, + ) + + # Compression + pyconf.stdlib_module( + "zlib", + supported=v.have_zlib is True, + cflags=v.ZLIB_CFLAGS, + ldflags=v.ZLIB_LIBS, + ) + pyconf.stdlib_module_simple( + "binascii", + cflags=v.BINASCII_CFLAGS, + ldflags=v.BINASCII_LIBS, + ) + pyconf.stdlib_module( + "_bz2", + supported=v.have_bzip2 is True, + cflags=v.BZIP2_CFLAGS, + ldflags=v.BZIP2_LIBS, + ) + pyconf.stdlib_module( + "_lzma", + supported=v.have_liblzma is True, + cflags=v.LIBLZMA_CFLAGS, + ldflags=v.LIBLZMA_LIBS, + ) + pyconf.stdlib_module( + "_zstd", + supported=v.have_libzstd is True, + cflags=v.LIBZSTD_CFLAGS, + ldflags=v.LIBZSTD_LIBS, + ) + + # OpenSSL bindings + openssl_cflags = v.OPENSSL_INCLUDES + openssl_ldflags_common = ( + f"{v.OPENSSL_LDFLAGS} {v.OPENSSL_LDFLAGS_RPATH}".strip() + ) + pyconf.stdlib_module( + "_ssl", + supported=v.ac_cv_working_openssl_ssl is True, + cflags=openssl_cflags, + ldflags=f"{openssl_ldflags_common} {v.OPENSSL_LIBS}".strip(), + ) + pyconf.stdlib_module( + "_hashlib", + supported=v.ac_cv_working_openssl_hashlib is True, + cflags=openssl_cflags, + ldflags=f"{openssl_ldflags_common} {v.LIBCRYPTO_LIBS}".strip(), + ) + + # Test modules + pyconf.stdlib_module( + "_testcapi", + enabled=v.TEST_MODULES, + ldflags=v.LIBATOMIC, + ) + pyconf.stdlib_module("_testclinic", enabled=v.TEST_MODULES) + pyconf.stdlib_module("_testclinic_limited", enabled=v.TEST_MODULES) + pyconf.stdlib_module("_testlimitedcapi", enabled=v.TEST_MODULES) + pyconf.stdlib_module("_testinternalcapi", enabled=v.TEST_MODULES) + pyconf.stdlib_module("_testbuffer", enabled=v.TEST_MODULES) + pyconf.stdlib_module( + "_testimportmultiple", + enabled=v.TEST_MODULES, + supported=v.ac_cv_func_dlopen is True, + ) + pyconf.stdlib_module( + "_testmultiphase", + enabled=v.TEST_MODULES, + supported=v.ac_cv_func_dlopen is True, + ) + pyconf.stdlib_module( + "_testsinglephase", + enabled=v.TEST_MODULES, + supported=v.ac_cv_func_dlopen is True, + ) + pyconf.stdlib_module("xxsubtype", enabled=v.TEST_MODULES) + pyconf.stdlib_module("_xxtestfuzz", enabled=v.TEST_MODULES) + pyconf.stdlib_module( + "_ctypes_test", + enabled=v.TEST_MODULES, + supported=(v.have_libffi is True and v.ac_cv_func_dlopen is True), + cflags=v.LIBFFI_CFLAGS, + ldflags=f"{v.LIBFFI_LIBS} {v.LIBM}".strip(), + ) + pyconf.stdlib_module( + "xxlimited", + enabled=v.TEST_MODULES, + supported=v.ac_cv_func_dlopen is True, + ) + pyconf.stdlib_module( + "xxlimited_35", + enabled=v.TEST_MODULES, + supported=v.ac_cv_func_dlopen is True, + ) + + # MODULE_BLOCK must be exported after the last stdlib_module call + v.export("MODULE_BLOCK") + + +ENABLE_TEST_MODULES = pyconf.arg_enable( + "test-modules", help="don't build nor install test modules" +) + + +def check_test_modules(v): + # --------------------------------------------------------------------------- + # --disable-test-modules + # --------------------------------------------------------------------------- + + v.export("TEST_MODULES", not ENABLE_TEST_MODULES.is_no()) diff --git a/Tools/configure/conf_net.py b/Tools/configure/conf_net.py new file mode 100644 index 00000000000000..e74154541f43a3 --- /dev/null +++ b/Tools/configure/conf_net.py @@ -0,0 +1,500 @@ +"""conf_net — Network configuration checks. + +Probes for nsl/socket/network libraries and --with-libs; handles +--enable-ipv6 with platform-specific IPv6 stack type detection; +checks Linux CAN socket support; checks netdb and socket functions; +validates getaddrinfo (including broken-resolver bug check); probes +gethostbyname_r (3, 5, or 6 argument variants); and checks socklen_t. + +Consolidates networking code previously scattered across conf_sharedlib, +conf_syslibs, conf_probes, conf_math, and conf_checks. +""" + +import pyconf + +WITH_LIBS = pyconf.arg_with( + "libs", + metavar="'lib1 ...'", + help="link against additional libs (default is no)", +) +ENABLE_IPV6 = pyconf.arg_enable( + "ipv6", + help="enable ipv6 (with ipv4) support (default is yes if supported)", +) + + +# --------------------------------------------------------------------------- +# From conf_sharedlib +# --------------------------------------------------------------------------- + + +def check_network_libs(v): + """Check for nsl, socket, network libraries and --with-libs.""" + if pyconf.check_lib("nsl", "t_open"): + v.LIBS = f"-lnsl {v.LIBS}" + if pyconf.check_lib("socket", "socket"): + v.LIBS = f"-lsocket {v.LIBS}" + if f"{v.ac_sys_system}/{v.ac_sys_release}".startswith("Haiku"): + if pyconf.check_lib("network", "socket"): + v.LIBS = f"-lnetwork {v.LIBS}" + + pyconf.checking("for --with-libs") + libs_val = WITH_LIBS.value + if libs_val is not None and libs_val != "no": + pyconf.result(libs_val) + v.LIBS = f"{libs_val} {v.LIBS}" + else: + pyconf.result("no") + + +# --------------------------------------------------------------------------- +# From conf_syslibs +# --------------------------------------------------------------------------- + + +def check_ipv6(v): + """Handle --enable-ipv6 and IPv6 stack type detection.""" + pyconf.checking("if --enable-ipv6 is specified") + + if ENABLE_IPV6.is_no(): + pyconf.result("no") + v.ipv6 = False + elif ENABLE_IPV6.is_yes(): + pyconf.result("yes") + pyconf.define("ENABLE_IPV6") + v.ipv6 = True + else: + # Auto-detect + if pyconf.compile_check( + preamble="#include \n#include ", + body="int domain = AF_INET6;", + ): + v.ipv6 = True + else: + v.ipv6 = False + + if v.ac_sys_system == "WASI": + v.ipv6 = False + + pyconf.result(v.ipv6) + + if v.ipv6: + pyconf.checking("if RFC2553 API is available") + if pyconf.compile_check( + preamble="#include \n#include ", + body="struct sockaddr_in6 x; int y = x.sin6_scope_id;", + ): + pyconf.result("yes") + else: + pyconf.result("no") + v.ipv6 = False + + if v.ipv6: + pyconf.define("ENABLE_IPV6") + + # IPv6 stack type detection + ipv6type = "unknown" + ipv6lib = "none" + ipv6libdir = "" + ipv6trylibc = False + BASECFLAGS = v.BASECFLAGS + + if v.ipv6 and not pyconf.cross_compiling: + for i in ( + "inria", + "kame", + "linux-glibc", + "linux-inet6", + "solaris", + "toshiba", + "v6d", + "zeta", + ): + if i == "kame" and pyconf.check_define("netinet/in.h", "__KAME__"): + ipv6type = i + ipv6lib = "inet6" + ipv6libdir = "/usr/local/v6/lib" + ipv6trylibc = True + elif i == "linux-glibc" and pyconf.check_define( + "features.h", "__GLIBC__" + ): + ipv6type = i + ipv6trylibc = True + elif i == "linux-inet6" and pyconf.path_is_dir("/usr/inet6"): + ipv6type = i + ipv6lib = "inet6" + ipv6libdir = "/usr/inet6/lib" + BASECFLAGS = "-I/usr/inet6/include " + BASECFLAGS + elif i == "solaris" and pyconf.path_is_file("/etc/netconfig"): + netconfig_content = pyconf.read_file("/etc/netconfig") + if "tcp6" in netconfig_content: + ipv6type = i + ipv6trylibc = True + elif i == "inria" and pyconf.check_define( + "netinet/in.h", "IPV6_INRIA_VERSION" + ): + ipv6type = i + elif i == "toshiba" and pyconf.check_define( + "sys/param.h", "_TOSHIBA_INET6" + ): + ipv6type = i + ipv6lib = "inet6" + ipv6libdir = "/usr/local/v6/lib" + elif i == "v6d" and pyconf.check_define( + "/usr/local/v6/include/sys/v6config.h", "__V6D__" + ): + ipv6type = i + ipv6lib = "v6" + ipv6libdir = "/usr/local/v6/lib" + BASECFLAGS = "-I/usr/local/v6/include " + BASECFLAGS + elif i == "zeta" and pyconf.check_define( + "sys/param.h", "_ZETA_MINAMI_INET6" + ): + ipv6type = i + ipv6lib = "inet6" + ipv6libdir = "/usr/local/v6/lib" + if ipv6type != "unknown": + break + pyconf.checking("ipv6 stack type") + pyconf.result(ipv6type) + + v.BASECFLAGS = BASECFLAGS # may have inet6 include path appended + + if v.ipv6 and ipv6lib != "none": + pyconf.checking("ipv6 library") + libpath = pyconf.path_join([ipv6libdir, f"lib{ipv6lib}.a"]) + if ipv6libdir and pyconf.path_is_file(libpath): + v.LIBS = f"-L{ipv6libdir} -l{ipv6lib} {v.LIBS}" + pyconf.result(f"lib{ipv6lib}") + elif ipv6trylibc: + pyconf.result("libc") + else: + pyconf.fatal( + f"No {ipv6lib} library found; cannot continue.\n" + f"You need to fetch lib{ipv6lib}.a from appropriate ipv6 kit." + ) + + +def check_can_sockets(v): + """Check CAN socket support (CAN_RAW_FD_FRAMES, CAN_RAW_JOIN_FILTERS).""" + pyconf.checking("CAN_RAW_FD_FRAMES") + if pyconf.compile_check( + program="#include \n" + "int main(void) { int can_raw_fd_frames = CAN_RAW_FD_FRAMES; return 0; }\n" + ): + pyconf.result("yes") + pyconf.define( + "HAVE_LINUX_CAN_RAW_FD_FRAMES", + 1, + "Define if compiling using Linux 3.6 or later.", + ) + else: + pyconf.result("no") + + pyconf.checking("for CAN_RAW_JOIN_FILTERS") + if pyconf.compile_check( + program="#include \n" + "int main(void) { int can_raw_join_filters = CAN_RAW_JOIN_FILTERS; return 0; }\n" + ): + pyconf.result("yes") + pyconf.define( + "HAVE_LINUX_CAN_RAW_JOIN_FILTERS", + 1, + "Define if compiling using Linux 4.1 or later.", + ) + else: + pyconf.result("no") + + +# --------------------------------------------------------------------------- +# From conf_probes +# --------------------------------------------------------------------------- + + +def _check_netdb_func(func): + pyconf.check_func(func, includes=["netdb.h"]) + + +def _check_socket_func(func): + pyconf.check_func( + func, + includes=[ + "sys/types.h", + "sys/socket.h", + "netinet/in.h", + "arpa/inet.h", + ], + ) + + +def check_netdb_socket_funcs(v): + # --------------------------------------------------------------------------- + # Netdb / socket function checks + # PY_CHECK_NETDB_FUNC / PY_CHECK_SOCKET_FUNC helper wrappers + # --------------------------------------------------------------------------- + + for f in ( + "hstrerror", + "getservbyname", + "getservbyport", + "gethostbyname", + "gethostbyaddr", + "getprotobyname", + ): + _check_netdb_func(f) + + for f in ( + "inet_aton", + "inet_ntoa", + "inet_pton", + "getpeername", + "getsockname", + "accept", + "bind", + "connect", + "listen", + "recvfrom", + "sendto", + "setsockopt", + "socket", + ): + _check_socket_func(f) + + # setgroups — in unistd.h on some systems, grp.h on others + pyconf.check_func( + "setgroups", includes=["unistd.h"], conditional_headers=["HAVE_GRP_H"] + ) + + +def check_getaddrinfo(v): + # --------------------------------------------------------------------------- + # getaddrinfo probe (full run-test) + # --------------------------------------------------------------------------- + + pyconf.checking("for getaddrinfo") + ac_cv_func_getaddrinfo = pyconf.link_check( + preamble=""" + #include + #include + #include + #include + """, + body="getaddrinfo(NULL, NULL, NULL, NULL);", + cache_var="ac_cv_func_getaddrinfo", + ) + pyconf.result("yes" if ac_cv_func_getaddrinfo else "no") + + if ac_cv_func_getaddrinfo: + GETADDRINFO_TEST = r""" + #include + #include + #include + #include + #include + #include + + int main(void) + { + int passive, gaierr, inet4 = 0, inet6 = 0; + struct addrinfo hints, *ai, *aitop; + char straddr[INET6_ADDRSTRLEN], strport[16]; + + for (passive = 0; passive <= 1; passive++) { + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; + hints.ai_flags = passive ? AI_PASSIVE : 0; + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = IPPROTO_TCP; + if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) { + (void)gai_strerror(gaierr); + goto bad; + } + for (ai = aitop; ai; ai = ai->ai_next) { + if (ai->ai_addr == NULL || + ai->ai_addrlen == 0 || + getnameinfo(ai->ai_addr, ai->ai_addrlen, + straddr, sizeof(straddr), strport, sizeof(strport), + NI_NUMERICHOST|NI_NUMERICSERV) != 0) { + goto bad; + } + switch (ai->ai_family) { + case AF_INET: + if (strcmp(strport, "54321") != 0) goto bad; + if (passive) { + if (strcmp(straddr, "0.0.0.0") != 0) goto bad; + } else { + if (strcmp(straddr, "127.0.0.1") != 0) goto bad; + } + inet4++; + break; + case AF_INET6: + if (strcmp(strport, "54321") != 0) goto bad; + if (passive) { + if (strcmp(straddr, "::") != 0) goto bad; + } else { + if (strcmp(straddr, "::1") != 0) goto bad; + } + inet6++; + break; + case AF_UNSPEC: + goto bad; + default: + break; + } + } + freeaddrinfo(aitop); + aitop = NULL; + } + if (!(inet4 == 0 || inet4 == 2)) goto bad; + if (!(inet6 == 0 || inet6 == 2)) goto bad; + if (aitop) freeaddrinfo(aitop); + return 0; + bad: + if (aitop) freeaddrinfo(aitop); + return 1; + } + """ + pyconf.checking("getaddrinfo bug") + if pyconf.cross_compiling: + if v.ac_sys_system in ("Linux-android", "iOS"): + ac_cv_buggy_getaddrinfo = False + elif v.enable_ipv6 != "": + ac_cv_buggy_getaddrinfo = ( + "no -- configured with --(en|dis)able-ipv6" + ) + else: + ac_cv_buggy_getaddrinfo = True + else: + ok = pyconf.run_check(GETADDRINFO_TEST) + ac_cv_buggy_getaddrinfo = not ok + pyconf.result(ac_cv_buggy_getaddrinfo) + else: + ac_cv_buggy_getaddrinfo = True + + if not ac_cv_func_getaddrinfo or ac_cv_buggy_getaddrinfo is True: + if v.ipv6: + pyconf.error( + "You must get working getaddrinfo() function " + 'or pass the "--disable-ipv6" option to configure.' + ) + else: + pyconf.define( + "HAVE_GETADDRINFO", + 1, + "Define if you have the getaddrinfo function.", + ) + + pyconf.check_func("getnameinfo") + + +# --------------------------------------------------------------------------- +# From conf_math +# --------------------------------------------------------------------------- + + +def check_gethostbyname_r(v): + # --------------------------------------------------------------------------- + # gethostbyname_r (3, 5, or 6 argument variants) + # --------------------------------------------------------------------------- + + pyconf.define_template( + "HAVE_GETHOSTBYNAME_R", + "Define this if you have some version of gethostbyname_r()", + ) + + if pyconf.check_func("gethostbyname_r"): + pyconf.define("HAVE_GETHOSTBYNAME_R") + old_cflags = v.CFLAGS + v.CFLAGS = f"{v.CFLAGS} {v.MY_CPPFLAGS} {v.MY_THREAD_CPPFLAGS} {v.MY_CFLAGS}".strip() + + pyconf.checking("gethostbyname_r with 6 args") + if pyconf.compile_check( + preamble="#include ", + body=""" + char *name; + struct hostent *he, *res; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop) + """, + ): + pyconf.define("HAVE_GETHOSTBYNAME_R") + pyconf.define( + "HAVE_GETHOSTBYNAME_R_6_ARG", + 1, + "Define this if you have the 6-arg version of gethostbyname_r().", + ) + pyconf.result("yes") + else: + pyconf.result("no") + pyconf.checking("gethostbyname_r with 5 args") + if pyconf.compile_check( + preamble="#include ", + body=""" + char *name; + struct hostent *he; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop) + """, + ): + pyconf.define("HAVE_GETHOSTBYNAME_R") + pyconf.define( + "HAVE_GETHOSTBYNAME_R_5_ARG", + 1, + "Define this if you have the 5-arg version of gethostbyname_r().", + ) + pyconf.result("yes") + else: + pyconf.result("no") + pyconf.checking("gethostbyname_r with 3 args") + if pyconf.compile_check( + preamble="#include ", + body=""" + char *name; + struct hostent *he; + struct hostent_data data; + (void) gethostbyname_r(name, he, &data); + """, + ): + pyconf.define("HAVE_GETHOSTBYNAME_R") + pyconf.define( + "HAVE_GETHOSTBYNAME_R_3_ARG", + 1, + "Define this if you have the 3-arg version of gethostbyname_r().", + ) + pyconf.result("yes") + else: + pyconf.result("no") + + v.CFLAGS = old_cflags + else: + pyconf.check_func("gethostbyname") + + v.export("HAVE_GETHOSTBYNAME_R_6_ARG") + v.export("HAVE_GETHOSTBYNAME_R_5_ARG") + v.export("HAVE_GETHOSTBYNAME_R_3_ARG") + v.export("HAVE_GETHOSTBYNAME_R") + v.export("HAVE_GETHOSTBYNAME") + + +# --------------------------------------------------------------------------- +# From conf_checks +# --------------------------------------------------------------------------- + + +def check_socklen_t(v): + # --------------------------------------------------------------------------- + # socklen_t + # --------------------------------------------------------------------------- + + if not pyconf.check_type( + "socklen_t", headers=["sys/types.h", "sys/socket.h"] + ): + pyconf.define( + "socklen_t", + "int", + "Define to 'int' if does not define.", + ) diff --git a/Tools/configure/conf_optimization.py b/Tools/configure/conf_optimization.py new file mode 100644 index 00000000000000..b5f84af53fd69e --- /dev/null +++ b/Tools/configure/conf_optimization.py @@ -0,0 +1,349 @@ +"""conf_optimization — LLVM, LTO, PGO, BOLT toolchain integration. + +Locates the LLVM bin directory for clang-based builds; handles +--with-lto (full/thin/default) including llvm-ar discovery and +platform-specific LTO flags for clang, gcc, and emcc; configures +PGO instrumentation/use flags and llvm-profdata; and handles +--enable-bolt (llvm-bolt, merge-fdata, BOLT_*_FLAGS). +""" + +import os + +import pyconf + +WITH_LTO = pyconf.arg_with( + "lto", + metavar="full|thin|no|yes", + help="enable Link-Time-Optimization in any build (default is no)", +) +ENABLE_BOLT = pyconf.arg_enable( + "bolt", + help="enable usage of the llvm-bolt post-link optimizer (default is no)", + false_is="no", +) + + +def setup_profile_task(v): + """Handle PROFILE_TASK environment variable.""" + pyconf.env_var("PROFILE_TASK", "Python args for PGO generation task") + pyconf.checking("PROFILE_TASK") + v.PROFILE_TASK = v.PROFILE_TASK or "-m test --pgo --timeout=$(TESTTIMEOUT)" + pyconf.result(v.PROFILE_TASK) + v.export("PROFILE_TASK") + + +def locate_llvm_bin(v): + """Locate LLVM bin directory for clang-based builds.""" + llvm_bin_dir = "" + llvm_path = os.environ.get("PATH", "") + if v.ac_cv_cc_name == "clang": + clang_bin = pyconf.find_prog("clang") + if clang_bin and pyconf.path_is_symlink(clang_bin): + clang_dir = pyconf.path_parent(clang_bin) + clang_target = pyconf.readlink(clang_bin) + llvm_bin_dir = pyconf.path_join( + [clang_dir, pyconf.path_parent(clang_target)] + ) + llvm_path = llvm_path + os.pathsep + llvm_bin_dir + v.llvm_path = llvm_path + + +def setup_lto(v): + """Handle --with-lto option.""" + pyconf.checking("for --with-lto") + v.Py_LTO = "false" + v.Py_LTO_POLICY = "default" + v.LTOFLAGS = "" + v.LTOCFLAGS = "" + v.LDFLAGS_NOLTO = "" + + lto_val = WITH_LTO.value + if lto_val is not None: + if lto_val == "full": + v.Py_LTO = "true" + v.Py_LTO_POLICY = "full" + pyconf.result("yes") + elif lto_val == "thin": + v.Py_LTO = "true" + v.Py_LTO_POLICY = "thin" + pyconf.result("yes") + elif lto_val == "yes": + v.Py_LTO = "true" + v.Py_LTO_POLICY = "default" + pyconf.result("yes") + elif lto_val == "no": + v.Py_LTO = "false" + pyconf.result("no") + else: + pyconf.error(f"error: unknown lto option: '{lto_val}'") + else: + pyconf.result("no") + + if v.Py_LTO == "true": + _setup_lto_flags(v) + + v.export("LTOFLAGS") + v.export("LTOCFLAGS") + + +def _setup_lto_flags(v): + """Set LTO compiler/linker flags based on compiler type.""" + if v.ac_cv_cc_name == "clang": + _setup_lto_clang(v) + elif v.ac_cv_cc_name == "emcc": + if v.Py_LTO_POLICY != "default": + pyconf.error("error: emcc supports only default lto.") + v.LTOFLAGS = "-flto" + v.LTOCFLAGS = "-flto" + elif v.ac_cv_cc_name == "gcc": + if v.Py_LTO_POLICY == "thin": + pyconf.error( + "error: thin lto is not supported under gcc compiler." + ) + v.LDFLAGS_NOLTO = "-fno-lto" + if v.ac_sys_system.startswith("Darwin"): + v.LTOFLAGS = ( + '-flto -Wl,-export_dynamic -Wl,-object_path_lto,"$@".lto' + ) + v.LTOCFLAGS = "-flto" + else: + v.LTOFLAGS = "-flto -fuse-linker-plugin -ffat-lto-objects" + + if v.ac_cv_prog_cc_g: + v.LTOFLAGS += " -g" + + v.CFLAGS_NODIST += f" {v.LTOCFLAGS or v.LTOFLAGS}" + v.LDFLAGS_NODIST += f" {v.LTOFLAGS}" + + +def _setup_lto_clang(v): + """Set LTO flags for clang compiler.""" + v.LDFLAGS_NOLTO = "-fno-lto" + if pyconf.check_compile_flag("-flto=thin"): + v.LDFLAGS_NOLTO = "-flto=thin" + else: + v.LDFLAGS_NOLTO = "-flto" + + LLVM_AR = pyconf.check_prog("llvm-ar", path=v.llvm_path, default="") + v.export("LLVM_AR") + LLVM_AR_FOUND = ( + "found" if (LLVM_AR and pyconf.is_executable(LLVM_AR)) else "not-found" + ) + v.export("LLVM_AR_FOUND") + + if v.ac_sys_system.startswith("Darwin") and LLVM_AR_FOUND == "not-found": + xcrun_status, xcrun_out = pyconf.cmd_status( + ["/usr/bin/xcrun", "-find", "ar"] + ) + if xcrun_status == 0 and xcrun_out: + LLVM_AR = "/usr/bin/xcrun ar" + LLVM_AR_FOUND = "found" + pyconf.notice(f"llvm-ar found via xcrun: {LLVM_AR}") + + if LLVM_AR_FOUND == "not-found": + pyconf.error( + "error: llvm-ar is required for a --with-lto build with clang " + "but could not be found." + ) + + v.AR = LLVM_AR + + if v.ac_sys_system.startswith("Darwin"): + if v.Py_LTO_POLICY == "default": + if pyconf.check_compile_flag("-flto=thin"): + v.LTOFLAGS = '-flto=thin -Wl,-export_dynamic -Wl,-object_path_lto,"$@".lto' + v.LTOCFLAGS = "-flto=thin" + else: + v.LTOFLAGS = ( + '-flto -Wl,-export_dynamic -Wl,-object_path_lto,"$@".lto' + ) + v.LTOCFLAGS = "-flto" + else: + v.LTOFLAGS = ( + f"-flto={v.Py_LTO_POLICY} -Wl,-export_dynamic" + f' -Wl,-object_path_lto,"$@".lto' + ) + v.LTOCFLAGS = f"-flto={v.Py_LTO_POLICY}" + else: + if v.Py_LTO_POLICY == "default": + if pyconf.check_compile_flag("-flto=thin"): + v.LTOFLAGS = "-flto=thin" + else: + v.LTOFLAGS = "-flto" + else: + v.LTOFLAGS = f"-flto={v.Py_LTO_POLICY}" + + +def setup_pgo_flags(v): + """Set PGO profiling flags based on compiler type.""" + v.export("PGO_PROF_GEN_FLAG") + v.export("PGO_PROF_USE_FLAG") + v.export("LLVM_PROF_MERGER") + v.export("LLVM_PROF_FILE") + v.export("LLVM_PROF_ERR") + v.export("LLVM_PROFDATA") + + v.LLVM_PROFDATA = pyconf.check_prog( + "llvm-profdata", path=v.llvm_path, default="" + ) + v.export("LLVM_PROFDATA") + LLVM_PROF_FOUND = ( + "found" + if (v.LLVM_PROFDATA and pyconf.is_executable(v.LLVM_PROFDATA)) + else "not-found" + ) + v.export("LLVM_PROF_FOUND") + + if v.ac_sys_system.startswith("Darwin") and LLVM_PROF_FOUND == "not-found": + xcrun_status, xcrun_out = pyconf.cmd_status( + ["/usr/bin/xcrun", "-find", "llvm-profdata"] + ) + if xcrun_status == 0 and xcrun_out: + v.LLVM_PROFDATA = "/usr/bin/xcrun llvm-profdata" + LLVM_PROF_FOUND = "found" + pyconf.notice(f"llvm-profdata found via xcrun: {v.LLVM_PROFDATA}") + + v.LLVM_PROF_ERR = False + v.PGO_PROF_GEN_FLAG = "" + v.PGO_PROF_USE_FLAG = "" + v.LLVM_PROF_MERGER = "" + v.LLVM_PROF_FILE = "" + + if v.ac_cv_cc_name == "clang": + v.PGO_PROF_GEN_FLAG = "-fprofile-instr-generate" + v.PGO_PROF_USE_FLAG = ( + '-fprofile-instr-use="$(shell pwd)/code.profclangd"' + ) + v.LLVM_PROF_MERGER = ( + f"{v.LLVM_PROFDATA} merge" + ' -output="$(shell pwd)/code.profclangd"' + ' "$(shell pwd)"/*.profclangr' + ) + v.LLVM_PROF_FILE = ( + 'LLVM_PROFILE_FILE="$(shell pwd)/code-%p.profclangr"' + ) + if LLVM_PROF_FOUND == "not-found": + v.LLVM_PROF_ERR = True + if v.REQUIRE_PGO: + pyconf.error( + "error: llvm-profdata is required for a --enable-optimizations " + "build but could not be found." + ) + elif v.ac_cv_cc_name == "gcc": + v.PGO_PROF_GEN_FLAG = "-fprofile-generate" + v.PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" + v.LLVM_PROF_MERGER = "true" + v.LLVM_PROF_FILE = "" + elif v.ac_cv_cc_name == "icc": + v.PGO_PROF_GEN_FLAG = "-prof-gen" + v.PGO_PROF_USE_FLAG = "-prof-use" + v.LLVM_PROF_MERGER = "true" + v.LLVM_PROF_FILE = "" + + +def setup_bolt(v): + """Handle --enable-bolt option.""" + bolt_enabled = ENABLE_BOLT.process_bool() + v.Py_BOLT = "true" if bolt_enabled else "false" + + v.export("PREBOLT_RULE") + v.PREBOLT_RULE = "" + v.LLVM_BOLT = "" + v.MERGE_FDATA = "" + v.export("LLVM_BOLT") + v.export("MERGE_FDATA") + + if v.Py_BOLT == "true": + _setup_bolt_tools(v) + + _setup_bolt_flags(v) + + +def _setup_bolt_tools(v): + """Find and configure BOLT tools when --enable-bolt is active.""" + v.PREBOLT_RULE = v.DEF_MAKE_ALL_RULE + v.DEF_MAKE_ALL_RULE = "bolt-opt" + v.DEF_MAKE_RULE = "build_all" + + if pyconf.check_compile_flag("-fno-reorder-blocks-and-partition"): + v.CFLAGS_NODIST += " -fno-reorder-blocks-and-partition" + + v.LDFLAGS_NODIST += " -Wl,--emit-relocs" + v.CFLAGS_NODIST += " -fno-pie" + v.LINKCC += " -fno-pie -no-pie" + + v.LLVM_BOLT = pyconf.check_prog("llvm-bolt", path=v.llvm_path, default="") + if v.LLVM_BOLT and pyconf.is_executable(v.LLVM_BOLT): + pyconf.result("Found llvm-bolt") + else: + pyconf.error( + "error: llvm-bolt is required for a --enable-bolt build but could not be found." + ) + + v.MERGE_FDATA = pyconf.check_prog( + "merge-fdata", path=v.llvm_path, default="" + ) + if v.MERGE_FDATA and pyconf.is_executable(v.MERGE_FDATA): + pyconf.result("Found merge-fdata") + else: + pyconf.error( + "error: merge-fdata is required for a --enable-bolt build but could not be found." + ) + + +def _setup_bolt_flags(v): + """Set BOLT_BINARIES and BOLT flag variables.""" + v.export("BOLT_BINARIES") + v.BOLT_BINARIES = "$(BUILDPYTHON)" + if v.enable_shared: + v.BOLT_BINARIES += " $(INSTSONAME)" + + pyconf.env_var( + "BOLT_COMMON_FLAGS", + "Common arguments to llvm-bolt when instrumenting and applying", + ) + pyconf.checking("BOLT_COMMON_FLAGS") + if not v.BOLT_COMMON_FLAGS: + v.BOLT_COMMON_FLAGS = ( + "-update-debug-sections " + "-skip-funcs=_PyEval_EvalFrameDefault," + "sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1," + "sre_ucs1_match.lto_priv.0/1,sre_ucs2_match.lto_priv.0/1,sre_ucs4_match.lto_priv.0/1" + ) + + pyconf.env_var( + "BOLT_INSTRUMENT_FLAGS", + "Arguments to llvm-bolt when instrumenting binaries", + ) + pyconf.checking("BOLT_INSTRUMENT_FLAGS") + if not v.BOLT_INSTRUMENT_FLAGS: + v.BOLT_INSTRUMENT_FLAGS = v.BOLT_COMMON_FLAGS + pyconf.result(v.BOLT_INSTRUMENT_FLAGS) + + pyconf.env_var( + "BOLT_APPLY_FLAGS", + "Arguments to llvm-bolt when creating a BOLT optimized binary", + ) + pyconf.checking("BOLT_APPLY_FLAGS") + if not v.BOLT_APPLY_FLAGS: + v.BOLT_APPLY_FLAGS = ( + f"{v.BOLT_COMMON_FLAGS} " + "-reorder-blocks=ext-tsp " + "-reorder-functions=cdsort " + "-split-functions " + "-icf=1 " + "-inline-all " + "-split-eh " + "-reorder-functions-use-hot-size " + "-peepholes=none " + "-jump-tables=aggressive " + "-inline-ap " + "-indirect-call-promotion=all " + "-dyno-stats " + "-use-gnu-stack " + "-frame-opt=hot" + ) + pyconf.result(v.BOLT_APPLY_FLAGS) + v.export("BOLT_COMMON_FLAGS") + v.export("BOLT_INSTRUMENT_FLAGS") + v.export("BOLT_APPLY_FLAGS") diff --git a/Tools/configure/conf_output.py b/Tools/configure/conf_output.py new file mode 100644 index 00000000000000..248a0b9812bff8 --- /dev/null +++ b/Tools/configure/conf_output.py @@ -0,0 +1,88 @@ +"""conf_output — Final output generation. + +Generates final output files (Makefile.pre, pyconfig.h, +Modules/Setup.*, etc.); runs makesetup to produce Modules/config.c; +and emits post-configuration warnings and notices (pkg-config, +optimizations, platform support tier). +""" + +import warnings + +import pyconf + + +def generate_output(v): + # --------------------------------------------------------------------------- + # Generate output files (AC_CONFIG_FILES / AC_OUTPUT) + # --------------------------------------------------------------------------- + + pyconf.config_files( + [ + "Makefile.pre", + "Misc/python.pc", + "Misc/python-embed.pc", + "Misc/python-config.sh", + "Modules/Setup.bootstrap", + "Modules/Setup.stdlib", + ] + ) + pyconf.config_files(["Modules/ld_so_aix"], chmod_x=True) + pyconf.output() # writes pyconfig.h and Makefile + + # --------------------------------------------------------------------------- + # Post-output steps + # --------------------------------------------------------------------------- + + if not pyconf.no_create: + if not pyconf.path_exists("Modules/Setup.local"): + pyconf.write_file( + "Modules/Setup.local", + "# Edit this file for local setup changes\n", + ) + + # Use relative paths when building in-place (srcdir == builddir) + # so that generated files like Modules/config.c get a relative path + # comment, matching the autoconf configure behaviour. + srcdir_rel = pyconf.relpath(pyconf.srcdir) if pyconf.srcdir else "." + if not pyconf.cmd( + [ + "/bin/sh", + f"{srcdir_rel}/Modules/makesetup", + "-c", + f"{srcdir_rel}/Modules/config.c.in", + "-s", + "Modules", + "Modules/Setup.local", + "Modules/Setup.stdlib", + "Modules/Setup.bootstrap", + f"{srcdir_rel}/Modules/Setup", + ] + ): + pyconf.error("makesetup failed") + + pyconf.rename_file("config.c", "Modules/config.c") + + if not v.PKG_CONFIG: + warnings.warn( + "pkg-config is missing. Some dependencies may not be detected correctly." + ) + + if v.Py_OPT is not True and v.Py_DEBUG is not True: + pyconf.notice(""" +If you want a release build with all stable optimizations active (PGO, etc), +please run ./configure --enable-optimizations +""") + + if (v.PY_SUPPORT_TIER or "1") == "0": + cc = v.ac_cv_cc_name + host = v.host + warnings.warn( + f'Platform "{host}" with compiler "{cc}" is not supported by the ' + "CPython core team, see https://peps.python.org/pep-0011/ for more information." + ) + + if not v.ac_cv_header_stdatomic_h: + print( + "Your compiler or platform does not have a working C11 stdatomic.h. " + "A future version of Python may require stdatomic.h." + ) diff --git a/Tools/configure/conf_paths.py b/Tools/configure/conf_paths.py new file mode 100644 index 00000000000000..812f5ad9c1b578 --- /dev/null +++ b/Tools/configure/conf_paths.py @@ -0,0 +1,194 @@ +"""conf_paths — Install paths. + +Handles --with-platlibdir and computes install paths (BINLIBDEST, LIBDEST, +SCRIPTDIR, etc.) and --with-wheel-pkg-dir; checks miscellaneous runtime +features (broken nice, broken poll, working tzset). +""" + +import pyconf + +WITH_PLATLIBDIR = pyconf.arg_with( + "platlibdir", + help='Python library directory name (default is "lib")', +) +WITH_WHEEL_PKG_DIR = pyconf.arg_with( + "wheel-pkg-dir", + help="Directory of wheel packages used by ensurepip (default: none)", +) + + +def setup_install_paths(v): + # --------------------------------------------------------------------------- + # --with-platlibdir + # --------------------------------------------------------------------------- + + v.export("PLATLIBDIR") + v.PLATLIBDIR = "lib" + pyconf.checking("for --with-platlibdir") + with_platlibdir = WITH_PLATLIBDIR.value + if with_platlibdir and with_platlibdir not in ("yes", "no", ""): + pyconf.result("yes") + v.PLATLIBDIR = with_platlibdir + else: + pyconf.result("no") + + v.export("LIBDEST") + v.export("BINLIBDEST") + v.LIBDEST = r"${prefix}/${PLATLIBDIR}/python$(VERSION)$(ABI_THREAD)" + v.BINLIBDEST = ( + r"${exec_prefix}/${PLATLIBDIR}/python$(VERSION)$(ABI_THREAD)" + ) + + # LIBPL (defined after ABIFLAGS and LDVERSION) + v.export("PY_ENABLE_SHARED") + platform_triplet = v.PLATFORM_TRIPLET + if not platform_triplet: + v.export("LIBPL", r"$(LIBDEST)/config-" + v.LDVERSION) + else: + v.export( + "LIBPL", + r"$(LIBDEST)/config-" + v.LDVERSION + f"-{platform_triplet}", + ) + + # --------------------------------------------------------------------------- + # --with-wheel-pkg-dir + # --------------------------------------------------------------------------- + + v.export("WHEEL_PKG_DIR") + v.WHEEL_PKG_DIR = "" + pyconf.checking("for --with-wheel-pkg-dir") + with_wheel = WITH_WHEEL_PKG_DIR.value + if with_wheel and with_wheel not in ("no",): + pyconf.result("yes") + v.WHEEL_PKG_DIR = with_wheel + else: + pyconf.result("no") + + +def check_misc_runtime(v): + # --------------------------------------------------------------------------- + # Miscellaneous runtime checks + # --------------------------------------------------------------------------- + + # broken nice() + pyconf.checking("for broken nice()") + ac_cv_broken_nice = pyconf.run_check( + r""" + #include + #include + int main(void) + { + int val1 = nice(1); + if (val1 != -1 && val1 == nice(2)) + exit(0); + exit(1); + } + """, + cache_var="ac_cv_broken_nice", + cross_compiling_default=False, + ) + pyconf.result(ac_cv_broken_nice) + if ac_cv_broken_nice: + pyconf.define( + "HAVE_BROKEN_NICE", + 1, + "Define if nice() returns success/failure instead of the new priority.", + ) + + # broken poll() + pyconf.checking("for broken poll()") + ac_cv_broken_poll = pyconf.run_check( + r""" + #include + #include + + int main(void) + { + struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 }; + int poll_test; + close (42); + poll_test = poll(&poll_struct, 1, 0); + if (poll_test < 0) + return 0; + else if (poll_test == 0 && poll_struct.revents != POLLNVAL) + return 0; + else + return 1; + } + """, + cache_var="ac_cv_broken_poll", + cross_compiling_default=False, + ) + pyconf.result(ac_cv_broken_poll) + if ac_cv_broken_poll: + pyconf.define( + "HAVE_BROKEN_POLL", + 1, + "Define if poll() sets errno on invalid file descriptors.", + ) + + # working tzset() + pyconf.checking("for working tzset()") + ac_cv_working_tzset = pyconf.run_check( + r""" + #include + #include + #include + + #if HAVE_TZNAME + extern char *tzname[]; + #endif + + int main(void) + { + time_t groundhogday = 1044144000; /* GMT-based */ + time_t midyear = groundhogday + (365 * 24 * 3600 / 2); + + putenv("TZ=UTC+0"); + tzset(); + if (localtime(&groundhogday)->tm_hour != 0) + exit(1); + #if HAVE_TZNAME + if (strcmp(tzname[0], "UTC") || + (tzname[1][0] != 0 && tzname[1][0] != ' ')) + exit(1); + #endif + + putenv("TZ=EST+5EDT,M4.1.0,M10.5.0"); + tzset(); + if (localtime(&groundhogday)->tm_hour != 19) + exit(1); + #if HAVE_TZNAME + if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT")) + exit(1); + #endif + + putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0"); + tzset(); + if (localtime(&groundhogday)->tm_hour != 11) + exit(1); + #if HAVE_TZNAME + if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT")) + exit(1); + #endif + + #if HAVE_STRUCT_TM_TM_ZONE + if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT")) + exit(1); + if (strcmp(localtime(&midyear)->tm_zone, "AEST")) + exit(1); + #endif + + exit(0); + } + """, + cache_var="ac_cv_working_tzset", + cross_compiling_default=False, + ) + pyconf.result(ac_cv_working_tzset) + if ac_cv_working_tzset: + pyconf.define( + "HAVE_WORKING_TZSET", + 1, + "Define if tzset() actually switches the local timezone in a meaningful way.", + ) diff --git a/Tools/configure/conf_platform.py b/Tools/configure/conf_platform.py new file mode 100644 index 00000000000000..7a0cdea18af211 --- /dev/null +++ b/Tools/configure/conf_platform.py @@ -0,0 +1,1148 @@ +"""conf_platform — Platform identity, MACHDEP, framework, host platform. + +Detects MACHDEP from uname or cross-compile host triplet; sets up +host_prefix for cross targets; seeds iOS cross-compilation tools +(AR/CC/CPP/CXX); handles --enable-universalsdk, --with-universal-archs, +--with-framework-name, --enable-framework (Darwin and iOS variants), +--with-app-store-compliance; and computes _PYTHON_HOST_PLATFORM for +cross-compilation. +""" + +import pyconf + + +def setup_machdep(v): + """Detect MACHDEP from uname or cross-compile host triplet.""" + pyconf.env_var("MACHDEP", "name for machine-dependent library files") + pyconf.checking("MACHDEP") + + v.ac_sys_system = "" + v.ac_sys_release = "" + if not v.MACHDEP: + if v.cross_compiling: + if pyconf.fnmatch(v.host, "*-*-linux-android*"): + v.ac_sys_system = "Linux-android" + elif pyconf.fnmatch(v.host, "*-*-linux*"): + v.ac_sys_system = "Linux" + elif pyconf.fnmatch(v.host, "*-*-cygwin*"): + v.ac_sys_system = "Cygwin" + elif pyconf.fnmatch(v.host, "*-apple-ios*"): + v.ac_sys_system = "iOS" + elif pyconf.fnmatch(v.host, "*-*-darwin*"): + v.ac_sys_system = "Darwin" + elif pyconf.fnmatch(v.host, "*-*-vxworks*"): + v.ac_sys_system = "VxWorks" + elif pyconf.fnmatch(v.host, "*-*-emscripten"): + v.ac_sys_system = "Emscripten" + elif pyconf.fnmatch(v.host, "*-*-wasi*"): + v.ac_sys_system = "WASI" + else: + v.MACHDEP = "unknown" + pyconf.error(f"error: cross build not supported for {v.host}") + v.ac_sys_release = "" + else: + v.ac_sys_system = pyconf.cmd_output(["uname", "-s"]) + if v.ac_sys_system in ("AIX", "UnixWare", "OpenUNIX"): + v.ac_sys_release = pyconf.cmd_output(["uname", "-v"]) + else: + v.ac_sys_release = pyconf.cmd_output(["uname", "-r"]) + + ac_md_system = ( + v.ac_sys_system.replace("/", "").replace(" ", "").lower() + ) + ac_md_release = v.ac_sys_release.replace("/", "").replace(" ", "") + ac_md_release = pyconf.sed(ac_md_release, r"^[A-Z]\.", "") + ac_md_release = ac_md_release.split(".")[0] + v.MACHDEP = ac_md_system + ac_md_release + + if v.MACHDEP.startswith("aix"): + v.MACHDEP = "aix" + elif v.MACHDEP.startswith("freebsd"): + v.MACHDEP = "freebsd" + elif v.MACHDEP.startswith("linux-android"): + v.MACHDEP = "android" + elif v.MACHDEP.startswith("linux"): + v.MACHDEP = "linux" + elif v.MACHDEP.startswith("cygwin"): + v.MACHDEP = "cygwin" + elif v.MACHDEP.startswith("darwin"): + v.MACHDEP = "darwin" + elif v.MACHDEP == "": + v.MACHDEP = "unknown" + + if v.ac_sys_system == "SunOS": + SUNOS_VERSION = pyconf.sed( + v.ac_sys_release, r"\.(\d)$", r".0\1" + ).replace(".", "") + pyconf.define( + "Py_SUNOS_VERSION", + SUNOS_VERSION, + "The version of SunOS/Solaris as reported by `uname -r' without the dot.", + ) + + pyconf.result(f'"{v.MACHDEP}"') + v.export("MACHDEP") + + +def setup_host_prefix(v): + """Set host_prefix and host_exec_prefix for cross-compile targets.""" + if not v.host_prefix: + v.export( + "host_prefix", + "/" if v.ac_sys_system == "Emscripten" else "${prefix}", + ) + + if not v.host_exec_prefix: + v.host_exec_prefix = ( + v.host_prefix + if v.ac_sys_system == "Emscripten" + else "${exec_prefix}" + ) + v.export("host_exec_prefix") + + +def setup_host_platform(v): + """Set _PYTHON_HOST_PLATFORM for cross-compilation.""" + v._PYTHON_HOST_PLATFORM = "" + if v.cross_compiling: + host_ident = "" + if pyconf.fnmatch(v.host, "*-*-linux*"): + host_ident = "arm" if v.host_cpu.startswith("arm") else v.host_cpu + elif pyconf.fnmatch(v.host, "*-*-cygwin*"): + host_ident = "" + elif pyconf.fnmatch(v.host, "*-apple-ios*"): + parts = v.host.split("-") + host_os = parts[2] if len(parts) > 2 else "" + host_device = parts[3] if len(parts) > 3 else "os" + + pyconf.checking("iOS deployment target") + v.IPHONEOS_DEPLOYMENT_TARGET = ( + host_os.removeprefix("ios") or "13.0" + ) + pyconf.result(v.IPHONEOS_DEPLOYMENT_TARGET) + + if v.host_cpu == "aarch64": + host_ident = ( + f"{v.IPHONEOS_DEPLOYMENT_TARGET}-arm64-iphone{host_device}" + ) + else: + host_ident = f"{v.IPHONEOS_DEPLOYMENT_TARGET}-{v.host_cpu}-iphone{host_device}" + elif pyconf.fnmatch(v.host, "*-*-darwin*"): + host_ident = "arm" if v.host_cpu.startswith("arm") else v.host_cpu + elif pyconf.fnmatch(v.host, "*-*-vxworks*"): + host_ident = v.host_cpu + elif pyconf.fnmatch(v.host, "*-*-emscripten"): + emcc_ver = pyconf.cmd_output(["emcc", "-dumpversion"]).split("-")[ + 0 + ] + host_ident = f"{emcc_ver}-{v.host_cpu}" + elif v.host.startswith("wasm32-") or v.host.startswith("wasm64-"): + host_ident = v.host_cpu + else: + v.MACHDEP = "unknown" + pyconf.error(f"error: cross build not supported for {v.host}") + + v._PYTHON_HOST_PLATFORM = v.MACHDEP + ( + f"-{host_ident}" if host_ident else "" + ) + + # Ensure IPHONEOS_DEPLOYMENT_TARGET exists even in non-iOS builds + if not v.is_set("IPHONEOS_DEPLOYMENT_TARGET"): + v.IPHONEOS_DEPLOYMENT_TARGET = "" + + v.export("_PYTHON_HOST_PLATFORM") + + +WITH_C_LOCALE_COERCION = pyconf.arg_with( + "c-locale-coercion", + help="enable C locale coercion to a UTF-8 based locale (default is yes)", + default="yes", +) + + +def check_endianness_and_soabi(v): + # --------------------------------------------------------------------------- + # Endianness + # --------------------------------------------------------------------------- + + pyconf.check_c_bigendian() + + # --------------------------------------------------------------------------- + # SOABI / EXT_SUFFIX / LDVERSION + # --------------------------------------------------------------------------- + + v.export("SOABI") # AC_SUBST registration + pyconf.checking("ABIFLAGS") + pyconf.result(v.ABIFLAGS) + pyconf.checking("SOABI") + version_nodots = v.VERSION.replace(".", "") + abiflags = v.ABIFLAGS + soabi_platform = v.SOABI_PLATFORM + v.SOABI = f"cpython-{version_nodots}{abiflags}" + if soabi_platform: + v.SOABI += f"-{soabi_platform}" + pyconf.result(v.SOABI) + + if v.Py_DEBUG is True: + v.export("ALT_SOABI") + abiflags_no_d = abiflags.replace("d", "") + v.ALT_SOABI = f"cpython-{version_nodots}{abiflags_no_d}" + if soabi_platform: + v.ALT_SOABI += f"-{soabi_platform}" + pyconf.define_unquoted( + "ALT_SOABI", + f'"{v.ALT_SOABI}"', + "Alternative SOABI used in debug build to load C extensions " + "built in release mode", + ) + + v.export("EXT_SUFFIX") + v.EXT_SUFFIX = f".{v.SOABI}{v.SHLIB_SUFFIX}" + + pyconf.checking("LDVERSION") + v.export("LDVERSION", "$(VERSION)$(ABIFLAGS)") + pyconf.result(v.LDVERSION) + + +def setup_xopen_source(v): + """Decide whether to define _XOPEN_SOURCE and related macros.""" + v.define_xopen_source = True + sys_rel = f"{v.ac_sys_system}/{v.ac_sys_release}" + if pyconf.fnmatch_any( + sys_rel, + [ + "OpenBSD/2.*", + "OpenBSD/3.*", + "OpenBSD/4.0*", + "OpenBSD/4.1*", + "OpenBSD/4.2*", + "OpenBSD/4.3*", + "OpenBSD/4.4*", + "OpenBSD/4.5*", + "OpenBSD/4.6*", + ], + ): + v.define_xopen_source = False + pyconf.define( + "_BSD_SOURCE", + 1, + "Define on OpenBSD to activate all library features", + ) + elif sys_rel.startswith("OpenBSD/"): + pyconf.define( + "_BSD_SOURCE", + 1, + "Define on OpenBSD to activate all library features", + ) + elif pyconf.fnmatch_any(sys_rel, ["NetBSD/1.5*", "NetBSD/1.6*"]): + v.define_xopen_source = False + elif sys_rel.startswith("SunOS/"): + v.define_xopen_source = False + elif sys_rel.startswith("OpenUNIX/8.0.0") or pyconf.fnmatch( + sys_rel, "UnixWare/7.1.[0-4]*" + ): + v.define_xopen_source = False + elif sys_rel.startswith("SCO_SV/3.2"): + v.define_xopen_source = False + elif pyconf.fnmatch_any( + sys_rel, ["Darwin/[6789].*", "Darwin/[12][0-9].*"] + ): + v.define_xopen_source = False + elif sys_rel.startswith("iOS/"): + v.define_xopen_source = False + elif sys_rel.startswith("QNX/6.3.2"): + v.define_xopen_source = False + elif sys_rel.startswith("VxWorks/"): + v.define_xopen_source = False + elif v.ac_sys_system.startswith(("hp", "HP")): + v.define_xopen_source = False + + if v.define_xopen_source: + pyconf.define( + "_XOPEN_SOURCE", + 800, + "Define to the level of X/Open that your system supports", + ) + pyconf.define( + "_XOPEN_SOURCE_EXTENDED", + 1, + "Define to activate Unix95-and-earlier features", + ) + pyconf.define_unquoted( + "_POSIX_C_SOURCE", + "202405L", + "Define to activate features from IEEE Std 1003.1-2024", + ) + + if v.ac_sys_system.startswith(("hp", "HP")): + pyconf.define( + "_INCLUDE__STDC_A1_SOURCE", + 1, + "Define to include mbstate_t for mbrtowc", + ) + + +def setup_platform_triplet(v): + """Detect PLATFORM_TRIPLET, MULTIARCH, and SOABI_PLATFORM.""" + pyconf.checking( + "for the platform triplet based on compiler characteristics" + ) + triplet_result = pyconf.run( + "$CPP $CPPFLAGS " + + pyconf.path_join([pyconf.srcdir, "Misc/platform_triplet.c"]), + vars={"CPP": v.CPP, "CPPFLAGS": v.CPPFLAGS}, + capture_output=True, + text=True, + ) + v.PLATFORM_TRIPLET = "" + if triplet_result.returncode == 0: + for line in triplet_result.stdout.splitlines(): + if line.startswith("PLATFORM_TRIPLET="): + v.PLATFORM_TRIPLET = line.removeprefix( + "PLATFORM_TRIPLET=" + ).strip() + break + pyconf.result(v.PLATFORM_TRIPLET or "none") + + pyconf.checking("for multiarch") + if ( + v.ac_sys_system.startswith("Darwin") + or v.ac_sys_system == "iOS" + or v.ac_sys_system.startswith("FreeBSD") + ): + v.MULTIARCH = "" + else: + v.MULTIARCH = pyconf.cmd_output([v.CC, "--print-multiarch"]) + + if v.PLATFORM_TRIPLET and v.MULTIARCH: + if v.PLATFORM_TRIPLET != v.MULTIARCH: + pyconf.error( + "error: internal configure error for the platform triplet, " + "please file a bug report" + ) + elif v.PLATFORM_TRIPLET and not v.MULTIARCH: + v.MULTIARCH = v.PLATFORM_TRIPLET + v.export("MULTIARCH") + v.export("PLATFORM_TRIPLET") + pyconf.result(v.MULTIARCH) + + if v.ac_sys_system == "iOS": + v.SOABI_PLATFORM = ( + v.PLATFORM_TRIPLET.split("-")[1] + if "-" in v.PLATFORM_TRIPLET + else v.PLATFORM_TRIPLET + ) + else: + v.SOABI_PLATFORM = v.PLATFORM_TRIPLET + v.export("SOABI_PLATFORM") + + v.export( + "MULTIARCH_CPPFLAGS", + f'-DMULTIARCH=\\"{v.MULTIARCH}\\"' if v.MULTIARCH else "", + ) + + +def setup_pep11_tier(v): + """Determine PEP 11 support tier from host/compiler combination.""" + pyconf.checking("for PEP 11 support tier") + host_cc = f"{v.host}/{v.ac_cv_cc_name}" + tier1 = [ + "x86_64-*-linux-gnu/gcc", + "x86_64-apple-darwin*/clang", + "aarch64-apple-darwin*/clang", + "i686-pc-windows-msvc/msvc", + "x86_64-pc-windows-msvc/msvc", + ] + tier2 = [ + "aarch64-*-linux-gnu/gcc", + "aarch64-*-linux-gnu/clang", + "powerpc64le-*-linux-gnu/gcc", + "wasm32-unknown-wasip1/clang", + "x86_64-*-linux-gnu/clang", + ] + tier3 = [ + "aarch64-pc-windows-msvc/msvc", + "armv7l-*-linux-gnueabihf/gcc", + "powerpc64le-*-linux-gnu/clang", + "s390x-*-linux-gnu/gcc", + "x86_64-*-freebsd*/clang", + "aarch64-apple-ios*-simulator/clang", + "aarch64-apple-ios*/clang", + "aarch64-*-linux-android/clang", + "x86_64-*-linux-android/clang", + "wasm32-*-emscripten/emcc", + ] + if pyconf.fnmatch_any(host_cc, tier1): + v.PY_SUPPORT_TIER = 1 + pyconf.result(f"{host_cc} has tier 1 (supported)") + elif pyconf.fnmatch_any(host_cc, tier2): + v.PY_SUPPORT_TIER = 2 + pyconf.result(f"{host_cc} has tier 2 (supported)") + elif pyconf.fnmatch_any(host_cc, tier3): + v.PY_SUPPORT_TIER = 3 + pyconf.result(f"{host_cc} has tier 3 (partially supported)") + else: + v.PY_SUPPORT_TIER = 0 + pyconf.warn(f"{host_cc} is not supported") + pyconf.define( + "PY_SUPPORT_TIER", + v.PY_SUPPORT_TIER, + "PEP 11 Support tier (1, 2, 3 or 0 for unsupported)", + ) + v.export("PY_SUPPORT_TIER") + + +def _define_maxlogname(): + pyconf.define( + "HAVE_MAXLOGNAME", + 1, + "Define if you have the 'MAXLOGNAME' constant.", + ) + + +def _define_ut_namesize(): + pyconf.define( + "HAVE_UT_NAMESIZE", + 1, + "Define if you have the 'HAVE_UT_NAMESIZE' constant.", + ) + + +def _define_pr_set_vma_anon_name(): + pyconf.define( + "HAVE_PR_SET_VMA_ANON_NAME", + 1, + "Define if you have the 'PR_SET_VMA_ANON_NAME' constant.", + ) + + +def check_declarations(v): + # --------------------------------------------------------------------------- + # Declaration / constant checks + # --------------------------------------------------------------------------- + + pyconf.check_decl( + "MAXLOGNAME", + on_found=_define_maxlogname, + extra_includes=["sys/param.h"], + ) + + pyconf.check_decl( + "UT_NAMESIZE", + on_found=_define_ut_namesize, + extra_includes=["utmp.h"], + ) + + # musl libc redefines struct prctl_mm_map and conflicts with linux/prctl.h + if v.ac_cv_libc != "musl": + pyconf.check_decl( + "PR_SET_VMA_ANON_NAME", + on_found=_define_pr_set_vma_anon_name, + extra_includes=["linux/prctl.h", "sys/prctl.h"], + ) + + +def check_pty_and_misc_funcs(v): + # --------------------------------------------------------------------------- + # PTY functions: openpty, login_tty, forkpty + # --------------------------------------------------------------------------- + + if not pyconf.check_func("openpty"): + if pyconf.check_lib("util", "openpty"): + pyconf.define("HAVE_OPENPTY") + v.LIBS = f"{v.LIBS} -lutil" + elif pyconf.check_lib("bsd", "openpty"): + pyconf.define("HAVE_OPENPTY") + v.LIBS = f"{v.LIBS} -lbsd" + + if pyconf.search_libs("login_tty", ["util"], required=False): + pyconf.define( + "HAVE_LOGIN_TTY", + 1, + "Define to 1 if you have the `login_tty' function.", + ) + + if not pyconf.check_func("forkpty"): + if pyconf.check_lib("util", "forkpty"): + pyconf.define("HAVE_FORKPTY") + v.LIBS = f"{v.LIBS} -lutil" + elif pyconf.check_lib("bsd", "forkpty"): + pyconf.define("HAVE_FORKPTY") + v.LIBS = f"{v.LIBS} -lbsd" + + # namespace functions + pyconf.check_funcs(["setns", "unshare"]) + + # long file support + pyconf.check_funcs( + ["fseek64", "fseeko", "fstatvfs", "ftell64", "ftello", "statvfs"] + ) + + pyconf.replace_funcs(["dup2"]) + + # getpgrp / setpgrp argument style + if pyconf.check_func("getpgrp"): + if pyconf.compile_check(includes=["unistd.h"], body="getpgrp(0);"): + pyconf.define( + "GETPGRP_HAVE_ARG", + 1, + "Define if getpgrp() must be called as getpgrp(0).", + ) + + if pyconf.check_func("setpgrp"): + if pyconf.compile_check(includes=["unistd.h"], body="setpgrp(0,0);"): + pyconf.define( + "SETPGRP_HAVE_ARG", + 1, + "Define if setpgrp() must be called as setpgrp(0, 0).", + ) + + +def check_clock_functions(v): + # --------------------------------------------------------------------------- + # Clock functions + # --------------------------------------------------------------------------- + + if not pyconf.check_func("clock_gettime"): + if pyconf.check_lib("rt", "clock_gettime"): + v.LIBS = f"{v.LIBS} -lrt" + pyconf.define("HAVE_CLOCK_GETTIME", 1) + pyconf.define( + "TIMEMODULE_LIB", + "rt", + "Library needed by timemodule.c: librt may be needed for clock_gettime()", + ) + v.TIMEMODULE_LIB = "-lrt" + v.export("TIMEMODULE_LIB") + + if not pyconf.check_func("clock_getres"): + if pyconf.check_lib("rt", "clock_getres"): + pyconf.define("HAVE_CLOCK_GETRES", 1) + + # clock_settime: avoid on Android and iOS (crashes when unprivileged) + if v.ac_sys_system not in ("Linux-android", "iOS"): + if not pyconf.check_func("clock_settime"): + if pyconf.check_lib("rt", "clock_settime"): + pyconf.define("HAVE_CLOCK_SETTIME", 1) + + # clock_nanosleep: avoid on Android < API 23 (wrong return value on signal) + android_api = int(v.ANDROID_API_LEVEL or "0") + skip_clock_nanosleep = ( + v.ac_sys_system == "Linux-android" and android_api < 23 + ) + if not skip_clock_nanosleep: + if not pyconf.check_func("clock_nanosleep"): + if pyconf.check_lib("rt", "clock_nanosleep"): + pyconf.define("HAVE_CLOCK_NANOSLEEP", 1) + + if not pyconf.check_func("nanosleep"): + if pyconf.check_lib("rt", "nanosleep"): + pyconf.define("HAVE_NANOSLEEP", 1) + + +def check_structs(v): + # --------------------------------------------------------------------------- + # Struct checks + # --------------------------------------------------------------------------- + + pyconf.check_struct_tm() + pyconf.check_struct_timezone() + for m in ( + "struct stat.st_rdev", + "struct stat.st_blksize", + "struct stat.st_flags", + "struct stat.st_gen", + "struct stat.st_birthtime", + "struct stat.st_blocks", + ): + pyconf.check_member(m, includes=["sys/types.h", "sys/stat.h"]) + + pyconf.check_members( + ["struct passwd.pw_gecos", "struct passwd.pw_passwd"], + includes=["sys/types.h", "pwd.h"], + ) + + # Issue #21085: In Cygwin, siginfo_t does not have si_band field. + pyconf.check_member("siginfo_t.si_band", includes=["signal.h"]) + + # struct statx members added after Linux 4.11 + if v.ac_cv_func_statx is True: + for m in ( + "struct statx.stx_mnt_id", + "struct statx.stx_dio_mem_align", + "struct statx.stx_subvol", + "struct statx.stx_atomic_write_unit_min", + "struct statx.stx_dio_read_offset_align", + "struct statx.stx_atomic_write_unit_max_opt", + ): + pyconf.check_member(m, includes=["linux/stat.h"]) + + # altzone in time.h + pyconf.checking("for time.h that defines altzone") + ac_cv_header_time_altzone = pyconf.compile_check( + includes=["time.h"], + body="return altzone;", + cache_var="ac_cv_header_time_altzone", + ) + pyconf.result(ac_cv_header_time_altzone) + if ac_cv_header_time_altzone: + pyconf.define( + "HAVE_ALTZONE", 1, "Define this if your time.h defines altzone." + ) + + # struct addrinfo + pyconf.checking("for addrinfo") + ac_cv_struct_addrinfo = pyconf.compile_check( + includes=["netdb.h"], + body="struct addrinfo a", + cache_var="ac_cv_struct_addrinfo", + ) + pyconf.result(ac_cv_struct_addrinfo) + if ac_cv_struct_addrinfo: + pyconf.define("HAVE_ADDRINFO", 1, "struct addrinfo (netdb.h)") + + # struct sockaddr_storage + pyconf.checking("for sockaddr_storage") + ac_cv_struct_sockaddr_storage = pyconf.compile_check( + includes=["sys/types.h", "sys/socket.h"], + body="struct sockaddr_storage s", + cache_var="ac_cv_struct_sockaddr_storage", + ) + pyconf.result(ac_cv_struct_sockaddr_storage) + if ac_cv_struct_sockaddr_storage: + pyconf.define( + "HAVE_SOCKADDR_STORAGE", + 1, + "struct sockaddr_storage (sys/socket.h)", + ) + + # struct sockaddr_alg + pyconf.checking("for sockaddr_alg") + ac_cv_struct_sockaddr_alg = pyconf.compile_check( + includes=["sys/types.h", "sys/socket.h", "linux/if_alg.h"], + body="struct sockaddr_alg s", + cache_var="ac_cv_struct_sockaddr_alg", + ) + pyconf.result(ac_cv_struct_sockaddr_alg) + if ac_cv_struct_sockaddr_alg: + pyconf.define( + "HAVE_SOCKADDR_ALG", 1, "struct sockaddr_alg (linux/if_alg.h)" + ) + + +def check_aix_pipe_buf(v): + # --------------------------------------------------------------------------- + # AIX: PIPE_BUF + # --------------------------------------------------------------------------- + + if v.ac_sys_system.startswith("AIX"): + pyconf.define( + "HAVE_BROKEN_PIPE_BUF", + 1, + "Define if the system reports an invalid PIPE_BUF value.", + ) + + +def check_posix_shmem(v): + # --------------------------------------------------------------------------- + # POSIX shared memory (_posixshmem) + # --------------------------------------------------------------------------- + + v.POSIXSHMEM_CFLAGS = "-I$(srcdir)/Modules/_multiprocessing" + v.POSIXSHMEM_LIBS = "" + with pyconf.save_env(): + shm_open_result = pyconf.search_libs("shm_open", ["rt"]) + posixshmem_libs = "-lrt" if shm_open_result == "-lrt" else "" + have_posix_shmem = pyconf.check_func( + "shm_open", headers=["sys/mman.h"] + ) and pyconf.check_func("shm_unlink", headers=["sys/mman.h"]) + v.POSIXSHMEM_LIBS = posixshmem_libs + v.have_posix_shmem = have_posix_shmem + v.export("POSIXSHMEM_CFLAGS") + v.export("POSIXSHMEM_LIBS") + + +def setup_c_locale_coercion(): + """Handle --with-c-locale-coercion option.""" + with_c_locale_coercion = WITH_C_LOCALE_COERCION.process_value(None) + if with_c_locale_coercion != "no": + pyconf.define( + "PY_COERCE_C_LOCALE", + 1, + "Define if you want to coerce the C locale to a UTF-8 based locale", + ) + + +def check_posix_functions(v): + """Check for Android function blocking and POSIX function availability.""" + # Android function blocking + ANDROID_API_LEVEL = int(v.ANDROID_API_LEVEL or 0) + if v.ac_sys_system == "Linux-android": + blocked = ( + "chroot initgroups setegid seteuid setgid sethostname " + "setregid setresgid setresuid setreuid setuid " + "sem_open sem_unlink" + ).split() + if ANDROID_API_LEVEL < 23: + blocked.append("fchmodat") + for name in blocked: + pyconf.cache[f"ac_cv_func_{name}"] = False + + # POSIX function checks + posix_funcs = """ + accept4 alarm bind_textdomain_codeset chmod chown clearenv + clock closefrom close_range confstr + copy_file_range ctermid dladdr dup dup3 execv explicit_bzero explicit_memset + faccessat fchmod fchmodat fchown fchownat fdopendir fdwalk fexecve + fork fork1 fpathconf fstatat ftime ftruncate futimens futimes futimesat + gai_strerror getegid geteuid getgid getgrent getgrgid getgrgid_r + getgrnam_r getgrouplist gethostname getitimer getloadavg getlogin getlogin_r + getpeername getpgid getpid getppid getpriority _getpty + getpwent getpwnam_r getpwuid getpwuid_r getresgid getresuid getrusage getsid getspent + getspnam getuid getwd grantpt if_nameindex initgroups kill killpg lchown linkat + lockf lstat lutimes madvise mbrtowc memrchr mkdirat mkfifo mkfifoat + mknod mknodat mktime mmap mremap nice openat opendir pathconf pause pipe + pipe2 plock poll ppoll posix_fadvise posix_fallocate posix_openpt posix_spawn posix_spawnp + posix_spawn_file_actions_addclosefrom_np + pread preadv preadv2 process_vm_readv + pthread_cond_timedwait_relative_np pthread_condattr_setclock pthread_init + pthread_kill pthread_get_name_np pthread_getname_np pthread_set_name_np + pthread_setname_np pthread_getattr_np + ptsname ptsname_r pwrite pwritev pwritev2 readlink readlinkat readv realpath renameat + rtpSpawn sched_get_priority_max sched_rr_get_interval sched_setaffinity + sched_setparam sched_setscheduler sem_clockwait sem_getvalue sem_open + sem_timedwait sem_unlink sendfile setegid seteuid setgid sethostname + setitimer setlocale setpgid setpgrp setpriority setregid setresgid + setresuid setreuid setsid setuid setvbuf shutdown sigaction sigaltstack + sigfillset siginterrupt sigpending sigrelse sigtimedwait sigwait + sigwaitinfo snprintf splice strftime strlcpy strsignal symlinkat sync + sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile + tmpnam tmpnam_r truncate ttyname_r umask uname unlinkat unlockpt utimensat utimes vfork + wait wait3 wait4 waitid waitpid wcscoll wcsftime wcsxfrm wmemcmp writev + """.split() + + pyconf.check_funcs(posix_funcs) + + # Linux-only: statx + if v.ac_sys_system.startswith("Linux"): + pyconf.check_func("statx") + + # lchmod: force off on Linux + machdep = v.MACHDEP + if machdep != "linux": + pyconf.check_func("lchmod") + + # iOS: block certain functions + if v.ac_sys_system != "iOS": + pyconf.check_funcs(["getentropy", "getgroups", "system"]) + + +def check_special_functions(v): + """Check dirfd, PY_CHECK_FUNC equivalents, flock, unsetenv, socket libs, chflags.""" + # dirfd + pyconf.checking("whether dirfd is declared") + if pyconf.compile_check( + preamble="#include \n#include ", + body="void *p = dirfd;", + ): + pyconf.result("yes") + pyconf.define( + "HAVE_DIRFD", + 1, + "Define if you have the 'dirfd' function or macro.", + ) + else: + pyconf.result("no") + + # PY_CHECK_FUNC equivalents — take address to verify usability + pyconf.check_func("chroot", headers=["unistd.h"]) + pyconf.check_func("link", headers=["unistd.h"]) + pyconf.check_func("symlink", headers=["unistd.h"]) + pyconf.check_func("fchdir", headers=["unistd.h"]) + pyconf.check_func("fsync", headers=["unistd.h"]) + pyconf.check_func("fdatasync", headers=["unistd.h"]) + pyconf.check_func( + "epoll_create", headers=["sys/epoll.h"], define="HAVE_EPOLL" + ) + pyconf.check_func("epoll_create1", headers=["sys/epoll.h"]) + pyconf.check_func("kqueue", headers=["sys/types.h", "sys/event.h"]) + pyconf.check_func("prlimit", headers=["sys/time.h", "sys/resource.h"]) + pyconf.check_func( + "_dyld_shared_cache_contains_path", + headers=["mach-o/dyld.h"], + define="HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH", + ) + pyconf.check_func( + "memfd_create", + headers=["sys/mman.h", "sys/memfd.h"], + conditional_headers=["HAVE_SYS_MMAN_H", "HAVE_SYS_MEMFD_H"], + ) + pyconf.check_func( + "eventfd", + headers=["sys/eventfd.h"], + conditional_headers=["HAVE_SYS_EVENTFD_H"], + ) + pyconf.check_func( + "timerfd_create", + headers=["sys/timerfd.h"], + conditional_headers=["HAVE_SYS_TIMERFD_H"], + define="HAVE_TIMERFD_CREATE", + ) + pyconf.check_func("ctermid_r", headers=["stdio.h"]) + pyconf.check_func("getpagesize", headers=["unistd.h"]) + + # flock: check declaration then library + pyconf.checking("for flock declaration") + if pyconf.compile_check( + preamble="#include ", + body="void *p = flock;", + ): + pyconf.result("yes") + if not pyconf.check_func("flock"): + if pyconf.check_lib("bsd", "flock"): + v.FCNTL_LIBS = "-lbsd" + else: + pyconf.result("no") + if not v.is_set("FCNTL_LIBS"): + v.FCNTL_LIBS = "" + v.export("FCNTL_LIBS") + + # broken unsetenv + pyconf.checking("for broken unsetenv") + if pyconf.compile_check( + preamble="#include ", + body='int res = unsetenv("DUMMY");', + ): + pyconf.result("no") + else: + pyconf.result("yes") + pyconf.define( + "HAVE_BROKEN_UNSETENV", + 1, + "Define if 'unsetenv' does not return an int.", + ) + + # SOCKET_LIBS: check for inet_aton / hstrerror in libc vs. -lresolv + v.SOCKET_LIBS = "" + if not pyconf.check_lib("c", "inet_aton"): + if pyconf.check_lib("resolv", "inet_aton"): + v.SOCKET_LIBS = "-lresolv" + if not v.SOCKET_LIBS: + if not pyconf.check_lib("c", "hstrerror"): + if pyconf.check_lib("resolv", "hstrerror"): + v.SOCKET_LIBS = "-lresolv" + v.export("SOCKET_LIBS") + + # chflags / lchflags + pyconf.checking("for chflags") + ac_cv_have_chflags = pyconf.run_check( + "#include \n#include \n" + "int main(int argc, char *argv[]) {\n" + " if(chflags(argv[0], 0) != 0) return 1;\n" + " return 0;\n" + "}\n", + default="cross", + ) + if ac_cv_have_chflags == "cross": + ac_cv_have_chflags = pyconf.check_func("chflags") + pyconf.result(ac_cv_have_chflags) + if ac_cv_have_chflags: + pyconf.define( + "HAVE_CHFLAGS", + 1, + "Define to 1 if you have the 'chflags' function.", + ) + + pyconf.checking("for lchflags") + ac_cv_have_lchflags = pyconf.run_check( + "#include \n#include \n" + "int main(int argc, char *argv[]) {\n" + " if(lchflags(argv[0], 0) != 0) return 1;\n" + " return 0;\n" + "}\n", + default="cross", + ) + if ac_cv_have_lchflags == "cross": + ac_cv_have_lchflags = pyconf.check_func("lchflags") + pyconf.result(ac_cv_have_lchflags) + if ac_cv_have_lchflags: + pyconf.define( + "HAVE_LCHFLAGS", + 1, + "Define to 1 if you have the 'lchflags' function.", + ) + + +def check_headers(v): + """Check for STDC_HEADERS and all required system headers.""" + pyconf.define( + "STDC_HEADERS", 1, "Define to 1 if you have the ANSI C header files." + ) + + pyconf.check_headers( + # Standard C headers (AC_INCLUDES_DEFAULT in autoconf) + "stdio.h", + "stdlib.h", + "string.h", + "inttypes.h", + "stdint.h", + "strings.h", + "unistd.h", + # Other headers + "alloca.h", + "asm/types.h", + "bluetooth.h", + "conio.h", + "direct.h", + "dlfcn.h", + "endian.h", + "errno.h", + "fcntl.h", + "grp.h", + "io.h", + "langinfo.h", + "libintl.h", + "libutil.h", + "linux/auxvec.h", + "sys/auxv.h", + "linux/fs.h", + "linux/limits.h", + "linux/memfd.h", + "linux/netfilter_ipv4.h", + "linux/random.h", + "linux/soundcard.h", + "linux/sched.h", + "linux/tipc.h", + "linux/wait.h", + "netdb.h", + "net/ethernet.h", + "netinet/in.h", + "netpacket/packet.h", + "poll.h", + "process.h", + "pthread.h", + "pty.h", + "sched.h", + "setjmp.h", + "shadow.h", + "signal.h", + "spawn.h", + "stropts.h", + "sys/audioio.h", + "sys/bsdtty.h", + "sys/devpoll.h", + "sys/endian.h", + "sys/epoll.h", + "sys/event.h", + "sys/eventfd.h", + "sys/file.h", + "sys/ioctl.h", + "sys/kern_control.h", + "sys/loadavg.h", + "sys/lock.h", + "sys/memfd.h", + "sys/mkdev.h", + "sys/mman.h", + "sys/modem.h", + "sys/param.h", + "sys/pidfd.h", + "sys/poll.h", + "sys/random.h", + "sys/resource.h", + "sys/select.h", + "sys/sendfile.h", + "sys/socket.h", + "sys/soundcard.h", + "sys/stat.h", + "sys/statvfs.h", + "sys/sys_domain.h", + "sys/syscall.h", + "sys/sysmacros.h", + "sys/termio.h", + "sys/time.h", + "sys/times.h", + "sys/timerfd.h", + "sys/types.h", + "sys/uio.h", + "sys/un.h", + "sys/utsname.h", + "sys/wait.h", + "sys/xattr.h", + "sysexits.h", + "syslog.h", + "termios.h", + "util.h", + "utime.h", + "utmp.h", + ) + # AC_HEADER_DIRENT: check for dirent.h + pyconf.check_headers("dirent.h") + + # AC_HEADER_MAJOR: check sys/mkdev.h then sys/sysmacros.h for major/minor/makedev + if pyconf.check_header("sys/mkdev.h"): + pyconf.define( + "MAJOR_IN_MKDEV", + 1, + "Define to 1 if major, minor, and makedev are declared in .", + ) + elif pyconf.check_header("sys/sysmacros.h"): + pyconf.define( + "MAJOR_IN_SYSMACROS", + 1, + "Define to 1 if major, minor, and makedev are declared in .", + ) + + save_CFLAGS = v.CFLAGS + v.CFLAGS = f"-std=c99 {v.CFLAGS}" + pyconf.check_headers("bluetooth/bluetooth.h") + v.CFLAGS = save_CFLAGS + + pyconf.check_headers( + "net/if.h", + prologue=""" + #include + #include + #include + #ifdef HAVE_SYS_SOCKET_H + # include + #endif + """, + ) + + pyconf.check_headers( + "linux/netlink.h", + "netlink/netlink.h", + prologue=""" + #ifdef HAVE_ASM_TYPES_H + #include + #endif + #ifdef HAVE_SYS_SOCKET_H + #include + #endif + """, + ) + + pyconf.check_headers( + "linux/qrtr.h", + prologue=""" + #ifdef HAVE_ASM_TYPES_H + #include + #endif + #ifdef HAVE_SYS_SOCKET_H + #include + #endif + """, + ) + + pyconf.check_headers( + "linux/vm_sockets.h", + prologue=""" + #ifdef HAVE_SYS_SOCKET_H + #include + #endif + """, + ) + + pyconf.check_headers( + "linux/can.h", + "linux/can/bcm.h", + "linux/can/isotp.h", + "linux/can/j1939.h", + "linux/can/raw.h", + "netcan/can.h", + prologue=""" + #ifdef HAVE_SYS_SOCKET_H + #include + #endif + """, + ) + + +def check_types_and_macros(v): + """Check clock_t, makedev, le64toh, large-file support, and standard type macros.""" + pyconf.check_type( + "clock_t", + fallback_define=( + "clock_t", + "long", + "Define to 'long' if does not define clock_t.", + ), + headers=["time.h"], + ) + + if pyconf.link_check( + """ + #if defined(MAJOR_IN_MKDEV) + #include + #elif defined(MAJOR_IN_SYSMACROS) + #include + #else + #include + #endif + """, + "makedev(0, 0)", + checking="for makedev", + ): + pyconf.define( + "HAVE_MAKEDEV", 1, "Define this if you have the makedev macro." + ) + + if pyconf.link_check( + """ + #ifdef HAVE_ENDIAN_H + #include + #elif defined(HAVE_SYS_ENDIAN_H) + #include + #endif + """, + "le64toh(1)", + checking="for le64toh", + ): + pyconf.define("HAVE_HTOLE64", 1, "Define this if you have le64toh()") + + # --- Large-file support --- + use_lfs = not v.ac_sys_system.startswith("GNU") + + if use_lfs: + if f"{v.ac_sys_system}/{v.ac_sys_release}".startswith("AIX"): + pyconf.define( + "_LARGE_FILES", + 1, + "This must be defined on AIX systems to enable large file support.", + ) + pyconf.define( + "_LARGEFILE_SOURCE", + 1, + "This must be defined on some systems to enable large file support.", + ) + pyconf.define( + "_FILE_OFFSET_BITS", + 64, + "This must be set to 64 on some systems to enable large file support.", + ) + + pyconf.shell( + "cat >> confdefs.h <<\\EOF\n" + "#if defined(SCO_DS)\n#undef _OFF_T\n#endif\nEOF\n", + exports=[], + ) + + # --- Type checks --- + pyconf.macro("AC_TYPE_MODE_T", []) + pyconf.macro("AC_TYPE_OFF_T", []) + pyconf.macro("AC_TYPE_PID_T", []) + pyconf.define_unquoted( + "RETSIGTYPE", + "void", + "assume C89 semantics that RETSIGTYPE is always void", + ) + pyconf.macro("AC_TYPE_SIZE_T", []) + pyconf.macro("AC_TYPE_UID_T", []) + + pyconf.check_type("ssize_t", headers=["sys/types.h"]) + if pyconf.check_type("__uint128_t"): + pyconf.define( + "HAVE_GCC_UINT128_T", + 1, + "Define if your compiler provides __uint128_t", + ) diff --git a/Tools/configure/conf_security.py b/Tools/configure/conf_security.py new file mode 100644 index 00000000000000..48266af6ce808b --- /dev/null +++ b/Tools/configure/conf_security.py @@ -0,0 +1,479 @@ +"""conf_security — OpenSSL, ensurepip, hashlib, test modules. + +Handles --with-ensurepip (install/upgrade/no); checks dirent d_type +and Linux getrandom() syscall/function; checks POSIX shared memory +(shm_open, shm_unlink); handles --with-openssl and --with-openssl-rpath +including pkg-config detection and version validation; handles +--with-ssl-default-suites; handles --with-builtin-hashlib-hashes; +and handles --disable-test-modules. +""" + +import pyconf + +WITH_OPENSSL = pyconf.arg_with( + "openssl", metavar="DIR", help="root of the OpenSSL directory" +) +WITH_OPENSSL_RPATH = pyconf.arg_with( + "openssl-rpath", + metavar="DIR|auto|no", + help="Set runtime library directory (rpath) for OpenSSL libraries, " + "no (default): don't set rpath, auto: auto-detect from --with-openssl " + "and pkg-config, DIR: set an explicit rpath", +) +WITH_SSL_DEFAULT_SUITES = pyconf.arg_with( + "ssl-default-suites", + metavar="python|openssl|STRING", + help="override default cipher suites string, python: use Python's preferred " + "selection (default), openssl: leave OpenSSL's defaults untouched, " + "STRING: use a custom string", +) +WITH_BUILTIN_HASHLIB_HASHES = pyconf.arg_with( + "builtin-hashlib-hashes", + metavar="md5,sha1,sha2,sha3,blake2", + help="builtin hash modules, md5, sha1, sha2, sha3 (with shake), blake2", +) + + +def check_getrandom(v): + # --------------------------------------------------------------------------- + # getrandom syscall (Linux) + # --------------------------------------------------------------------------- + + if pyconf.link_check( + "for the Linux getrandom() syscall", + """ +#include +#include +#include +#include +int main(void) { + char buffer[1]; + const size_t buflen = sizeof(buffer); + const int flags = GRND_NONBLOCK; + (void)syscall(SYS_getrandom, buffer, buflen, flags); + return 0; +} +""", + ): + pyconf.define( + "HAVE_GETRANDOM_SYSCALL", + 1, + "Define to 1 if the Linux getrandom() syscall is available", + ) + + # getrandom() libc function (Solaris/glibc) + if pyconf.link_check( + "for the getrandom() function", + """ +#include +#include +int main(void) { + char buffer[1]; + const size_t buflen = sizeof(buffer); + const int flags = 0; + (void)getrandom(buffer, buflen, flags); + return 0; +} +""", + ): + pyconf.define( + "HAVE_GETRANDOM", + 1, + "Define to 1 if the getrandom() function is available", + ) + + +def check_openssl(v): + # --------------------------------------------------------------------------- + # OpenSSL + # --------------------------------------------------------------------------- + + # AX_CHECK_OPENSSL: detect OpenSSL via --with-openssl or pkg-config. + # Sets OPENSSL_INCLUDES, OPENSSL_LIBS, OPENSSL_LDFLAGS, have_openssl. + with_openssl = WITH_OPENSSL.value + + v.OPENSSL_INCLUDES = "" + v.OPENSSL_LIBS = "" + v.OPENSSL_LDFLAGS = "" + v.have_openssl = False + + if with_openssl not in (None, "no"): + # Explicit --with-openssl=DIR + ssl_dir = str(with_openssl).rstrip("/") + v.OPENSSL_INCLUDES = f"-I{ssl_dir}/include" + v.OPENSSL_LIBS = "-lssl -lcrypto" + v.OPENSSL_LDFLAGS = f"-L{ssl_dir}/lib" + v.have_openssl = True + pyconf.checking("for OpenSSL directory") + pyconf.result(ssl_dir) + else: + # Try pkg-config + pkg_config = v.PKG_CONFIG + if pkg_config: + s1, pc_cflags = pyconf.cmd_status( + [pkg_config, "--cflags", "openssl"] + ) + s2, pc_libs = pyconf.cmd_status([pkg_config, "--libs", "openssl"]) + s3, pc_ldflags = pyconf.cmd_status( + [pkg_config, "--libs-only-L", "openssl"] + ) + if s1 == 0 and s2 == 0 and s3 == 0: + # Split includes (-I flags) from other cflags + inc_parts = [] + for f in pc_cflags.split(): + if f.startswith("-I"): + inc_parts.append(f) + inc_flags = " ".join(inc_parts) + # Extract only -l flags from --libs output (not -L, which is in LDFLAGS) + lib_parts = [] + for f in pc_libs.split(): + if not f.startswith("-L"): + lib_parts.append(f) + lib_flags = " ".join(lib_parts) + v.OPENSSL_INCLUDES = inc_flags + v.OPENSSL_LIBS = lib_flags + v.OPENSSL_LDFLAGS = pc_ldflags + v.have_openssl = True + pyconf.checking( + "whether compiling and linking against OpenSSL works" + ) + pyconf.result("yes") + else: + pyconf.checking( + "whether compiling and linking against OpenSSL works" + ) + pyconf.result("no") + else: + # Try default system paths + ssl_h_paths = [ + "/usr/include", + "/usr/local/include", + "/usr/include/openssl", + "/usr/local/include/openssl", + ] + found_ssl = False + for p in ssl_h_paths: + if pyconf.path_exists(pyconf.path_join([p, "openssl/ssl.h"])): + found_ssl = True + break + pyconf.checking( + "whether compiling and linking against OpenSSL works" + ) + if found_ssl: + v.OPENSSL_INCLUDES = "" + v.OPENSSL_LIBS = "-lssl -lcrypto" + v.OPENSSL_LDFLAGS = "" + v.have_openssl = True + pyconf.result("yes") + else: + pyconf.result("no") + + # rpath for OpenSSL + if v.GNULD: + rpath_arg = "-Wl,--enable-new-dtags,-rpath=" + elif v.ac_sys_system == "Darwin": + rpath_arg = "-Wl,-rpath," + else: + rpath_arg = "-Wl,-rpath=" + + openssl_rpath_opt = WITH_OPENSSL_RPATH.value_or("no") + v.OPENSSL_LDFLAGS_RPATH = "" + if openssl_rpath_opt in ("auto", "yes"): + v.OPENSSL_RPATH = "auto" + for arg in v.OPENSSL_LDFLAGS.split(): + if arg.startswith("-L"): + v.OPENSSL_LDFLAGS_RPATH += ( + f" {rpath_arg}{arg.removeprefix('-L')}" + ) + v.OPENSSL_LDFLAGS_RPATH = v.OPENSSL_LDFLAGS_RPATH.strip() + elif openssl_rpath_opt == "no": + v.OPENSSL_RPATH = "" + else: + if pyconf.path_is_dir(openssl_rpath_opt): + v.OPENSSL_RPATH = openssl_rpath_opt + v.OPENSSL_LDFLAGS_RPATH = f"{rpath_arg}{openssl_rpath_opt}" + else: + pyconf.error( + f'--with-openssl-rpath "{openssl_rpath_opt}" is not a directory' + ) + + v.export("OPENSSL_RPATH") + v.export("OPENSSL_LDFLAGS_RPATH") + + # Static OpenSSL build (unsupported, not advertised) + if v.PY_UNSUPPORTED_OPENSSL_BUILD == "static": + new_ssl_libs = [] + for arg in v.OPENSSL_LIBS.split(): + if arg.startswith("-l"): + libname = arg.removeprefix("-l") + new_ssl_libs.append( + f"-l:lib{libname}.a -Wl,--exclude-libs,lib{libname}.a" + ) + else: + new_ssl_libs.append(arg) + v.OPENSSL_LIBS = " ".join(new_ssl_libs) + f" {v.ZLIB_LIBS}".rstrip() + + # libcrypto-only libs (exclude -lssl/-Wl*ssl*) + LIBCRYPTO_LIBS = [] + for arg in v.OPENSSL_LIBS.split(): + if "ssl" not in arg: + LIBCRYPTO_LIBS.append(arg) + v.LIBCRYPTO_LIBS = " ".join(LIBCRYPTO_LIBS) + v.export("OPENSSL_INCLUDES") + v.export("OPENSSL_LIBS") + v.export("OPENSSL_LDFLAGS") + v.export("LIBCRYPTO_LIBS") + + # Check OpenSSL ssl module APIs + with pyconf.save_env(): + v.LIBS = f"{v.LIBS} {v.OPENSSL_LIBS}".strip() + v.CFLAGS = f"{v.CFLAGS} {v.OPENSSL_INCLUDES}".strip() + v.LDFLAGS = f"{v.LDFLAGS} {v.OPENSSL_LDFLAGS} {v.OPENSSL_LDFLAGS_RPATH}".strip() + working_ssl = pyconf.link_check( + "whether OpenSSL provides required ssl module APIs", + """ +#include +#include +#if OPENSSL_VERSION_NUMBER < 0x10101000L + #error "OpenSSL >= 1.1.1 is required" +#endif +static void keylog_cb(const SSL *ssl, const char *line) {} +int main(void) { + SSL_CTX *ctx = SSL_CTX_new(TLS_client_method()); + SSL_CTX_set_keylog_callback(ctx, keylog_cb); + SSL *ssl = SSL_new(ctx); + X509_VERIFY_PARAM *param = SSL_get0_param(ssl); + X509_VERIFY_PARAM_set1_host(param, "python.org", 0); + SSL_free(ssl); + SSL_CTX_free(ctx); + return 0; +} +""", + ) + v.ac_cv_working_openssl_ssl = working_ssl + + # Check OpenSSL hashlib module APIs + with pyconf.save_env(): + v.LIBS = f"{v.LIBS} {v.LIBCRYPTO_LIBS}".strip() + v.CFLAGS = f"{v.CFLAGS} {v.OPENSSL_INCLUDES}".strip() + v.LDFLAGS = f"{v.LDFLAGS} {v.OPENSSL_LDFLAGS} {v.OPENSSL_LDFLAGS_RPATH}".strip() + working_hashlib = pyconf.link_check( + "whether OpenSSL provides required hashlib module APIs", + """ +#include +#include +#if OPENSSL_VERSION_NUMBER < 0x10101000L + #error "OpenSSL >= 1.1.1 is required" +#endif +int main(void) { + OBJ_nid2sn(NID_md5); + OBJ_nid2sn(NID_sha1); + OBJ_nid2sn(NID_sha512); + OBJ_nid2sn(NID_sha3_512); + EVP_PBE_scrypt(NULL, 0, NULL, 0, 2, 8, 1, 0, NULL, 0); + return 0; +} +""", + ) + v.ac_cv_working_openssl_hashlib = working_hashlib + + +def check_ssl_cipher_suites(v): + # --------------------------------------------------------------------------- + # SSL default cipher suites + # --------------------------------------------------------------------------- + + pyconf.define_template( + "PY_SSL_DEFAULT_CIPHERS", + "Default cipher suites list for ssl module. " + "1: Python's preferred selection, 2: leave OpenSSL defaults untouched, " + "0: custom string", + ) + pyconf.define_template( + "PY_SSL_DEFAULT_CIPHER_STRING", + "Cipher suite string for PY_SSL_DEFAULT_CIPHERS=0", + ) + + ssl_suites = WITH_SSL_DEFAULT_SUITES.value_or("python") + if ssl_suites == "python": + pyconf.define("PY_SSL_DEFAULT_CIPHERS", 1) + elif ssl_suites == "openssl": + pyconf.define("PY_SSL_DEFAULT_CIPHERS", 2) + else: + pyconf.define("PY_SSL_DEFAULT_CIPHERS", 0) + pyconf.define("PY_SSL_DEFAULT_CIPHER_STRING", f'"{ssl_suites}"') + + +def check_builtin_hashlib_hashes(v): + # --------------------------------------------------------------------------- + # --with-builtin-hashlib-hashes + # --------------------------------------------------------------------------- + + default_hashlib_hashes = "md5,sha1,sha2,sha3,blake2" + + bh_raw = WITH_BUILTIN_HASHLIB_HASHES.value + if bh_raw is None or bh_raw == "yes": + builtin_hashes = default_hashlib_hashes + elif bh_raw == "no": + builtin_hashes = "" + else: + builtin_hashes = bh_raw + + pyconf.define_unquoted( + "PY_BUILTIN_HASHLIB_HASHES", + f'"{builtin_hashes}"', + "enabled builtin hash modules", + ) + + v.with_builtin_md5 = "md5" in builtin_hashes.split(",") + v.with_builtin_sha1 = "sha1" in builtin_hashes.split(",") + v.with_builtin_sha2 = "sha2" in builtin_hashes.split(",") + v.with_builtin_sha3 = "sha3" in builtin_hashes.split(",") + v.with_builtin_blake2 = "blake2" in builtin_hashes.split(",") + + +WITH_HASH_ALGORITHM = pyconf.arg_with( + "hash-algorithm", + metavar="fnv|siphash13|siphash24", + help="select hash algorithm for use in Python/pyhash.c (default is SipHash13)", +) + + +def setup_hash_algorithm(): + # --------------------------------------------------------------------------- + # str, bytes and memoryview hash algorithm + # --------------------------------------------------------------------------- + + pyconf.define_template( + "Py_HASH_ALGORITHM", + "Define hash algorithm for str, bytes and memoryview. " + "SipHash24: 1, FNV: 2, SipHash13: 3, externally defined: 0", + ) + + pyconf.checking("for --with-hash-algorithm") + hash_val = WITH_HASH_ALGORITHM.value + if hash_val is not None: + if hash_val == "siphash13": + pyconf.define("Py_HASH_ALGORITHM", 3) + pyconf.result("siphash13") + elif hash_val == "siphash24": + pyconf.define("Py_HASH_ALGORITHM", 1) + pyconf.result("siphash24") + elif hash_val == "fnv": + pyconf.define("Py_HASH_ALGORITHM", 2) + pyconf.result("fnv") + else: + pyconf.error(f"unknown hash algorithm '{hash_val}'") + else: + pyconf.result("default") + + +def _hacl_module(v, component, extname, enabled): + """Create a HACL*-based stdlib module entry.""" + ldflags = f"$(LIBHACL_{component}_LIB_{v.LIBHACL_LDEPS_LIBTYPE})" + pyconf.stdlib_module( + extname, enabled=enabled, cflags=v.LIBHACL_CFLAGS, ldflags=ldflags + ) + + +def setup_hacl(v): + # --------------------------------------------------------------------------- + # HACL* compilation flags + # --------------------------------------------------------------------------- + + LIBHACL_FLAG_I = ( + "-I$(srcdir)/Modules/_hacl -I$(srcdir)/Modules/_hacl/include" + ) + LIBHACL_FLAG_D = "-D_BSD_SOURCE -D_DEFAULT_SOURCE" + if v.ac_sys_system.startswith("Linux"): + if v.ac_cv_func_explicit_bzero is False: + LIBHACL_FLAG_D += " -DLINUX_NO_EXPLICIT_BZERO" + + v.export( + "LIBHACL_CFLAGS", + f"{LIBHACL_FLAG_I} {LIBHACL_FLAG_D} $(PY_STDMODULE_CFLAGS) $(CCSHARED)", + ) + + v.export("LIBHACL_LDFLAGS", "") + + # universal2 / Apple aarch64 detection + build_cpu = v.build_cpu + build_vendor = v.build_vendor + use_hacl_universal2 = v.UNIVERSAL_ARCHS == "universal2" or ( + build_cpu == "aarch64" and build_vendor == "apple" + ) + + # SIMD128 (SSE) + if v.ac_sys_system not in ("Linux-android", "WASI") or ( + v.ANDROID_API_LEVEL and int(v.ANDROID_API_LEVEL) >= 28 + ): + if pyconf.check_compile_flag( + "-msse -msse2 -msse3 -msse4.1 -msse4.2", extra_cflags="-Werror" + ): + v.LIBHACL_SIMD128_FLAGS = "-msse -msse2 -msse3 -msse4.1 -msse4.2" + pyconf.define( + "_Py_HACL_CAN_COMPILE_VEC128", + 1, + "HACL* library can compile SIMD128 implementations", + ) + if use_hacl_universal2: + v.LIBHACL_BLAKE2_SIMD128_OBJS = ( + "Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.o" + ) + else: + v.LIBHACL_BLAKE2_SIMD128_OBJS = ( + "Modules/_hacl/Hacl_Hash_Blake2s_Simd128.o" + ) + else: + v.LIBHACL_SIMD128_FLAGS = "" + v.LIBHACL_BLAKE2_SIMD128_OBJS = "" + else: + v.LIBHACL_SIMD128_FLAGS = "" + v.LIBHACL_BLAKE2_SIMD128_OBJS = "" + v.export("LIBHACL_SIMD128_FLAGS") + v.export("LIBHACL_BLAKE2_SIMD128_OBJS") + + # SIMD256 (AVX2) + if v.ac_sys_system not in ("Linux-android", "WASI") or ( + v.ANDROID_API_LEVEL and int(v.ANDROID_API_LEVEL) >= 28 + ): + if pyconf.check_compile_flag("-mavx2", extra_cflags="-Werror"): + v.LIBHACL_SIMD256_FLAGS = "-mavx2" + pyconf.define( + "_Py_HACL_CAN_COMPILE_VEC256", + 1, + "HACL* library can compile SIMD256 implementations", + ) + if use_hacl_universal2: + v.LIBHACL_BLAKE2_SIMD256_OBJS = ( + "Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.o" + ) + else: + v.LIBHACL_BLAKE2_SIMD256_OBJS = ( + "Modules/_hacl/Hacl_Hash_Blake2b_Simd256.o" + ) + else: + v.LIBHACL_SIMD256_FLAGS = "" + v.LIBHACL_BLAKE2_SIMD256_OBJS = "" + else: + v.LIBHACL_SIMD256_FLAGS = "" + v.LIBHACL_BLAKE2_SIMD256_OBJS = "" + v.export("LIBHACL_SIMD256_FLAGS") + v.export("LIBHACL_BLAKE2_SIMD256_OBJS") + + # HACL* library linking type (WASI -> static, else shared) + v.export( + "LIBHACL_LDEPS_LIBTYPE", + "STATIC" if v.ac_sys_system == "WASI" else "SHARED", + ) + + # --------------------------------------------------------------------------- + # HACL*-based cryptographic primitives (PY_HACL_CREATE_MODULE) + # --------------------------------------------------------------------------- + + _hacl_module(v, "MD5", "_md5", v.with_builtin_md5) + _hacl_module(v, "SHA1", "_sha1", v.with_builtin_sha1) + _hacl_module(v, "SHA2", "_sha2", v.with_builtin_sha2) + _hacl_module(v, "SHA3", "_sha3", v.with_builtin_sha3) + _hacl_module(v, "BLAKE2", "_blake2", v.with_builtin_blake2) + _hacl_module(v, "HMAC", "_hmac", v.ac_sys_system != "Emscripten") diff --git a/Tools/configure/conf_sharedlib.py b/Tools/configure/conf_sharedlib.py new file mode 100644 index 00000000000000..c574473ab299aa --- /dev/null +++ b/Tools/configure/conf_sharedlib.py @@ -0,0 +1,325 @@ +"""conf_sharedlib — Shared-lib linking, perf trampoline. + +Determines shared library extension (SHLIB_SUFFIX); computes LDSHARED, +LDCXXSHARED, BLDSHARED for each platform; sets CCSHARED (-fPIC etc.); +determines LINKFORSHARED for the main executable; exports shared-lib +variables (CFLAGSFORSHARED, SHLIBS); and configures perf trampoline +support. +""" + +import pyconf + + +def setup_shared_lib_suffix(v): + """Determine the shared library file extension.""" + pyconf.checking("the extension of shared libraries") + if not v.SHLIB_SUFFIX: + if v.ac_sys_system.startswith(("hp", "HP")): + v.SHLIB_SUFFIX = ( + ".so" if pyconf.platform_machine() == "ia64" else ".sl" + ) + elif v.ac_sys_system.startswith("CYGWIN"): + v.SHLIB_SUFFIX = ".dll" + else: + v.SHLIB_SUFFIX = ".so" + pyconf.result(v.SHLIB_SUFFIX) + + +def setup_ldshared(v): + """Determine LDSHARED, LDCXXSHARED, and BLDSHARED flags.""" + pyconf.checking("LDSHARED") + if not v.LDSHARED: + sr = f"{v.ac_sys_system}/{v.ac_sys_release}" + if sr.startswith("AIX"): + v.BLDSHARED = "Modules/ld_so_aix $(CC) -bI:Modules/python.exp" + v.LDSHARED = "$(LIBPL)/ld_so_aix $(CC) -bI:$(LIBPL)/python.exp" + elif sr.startswith("SunOS/5"): + if v.ac_cv_gcc_compat: + v.LDSHARED = "$(CC) -shared" + v.LDCXXSHARED = "$(CXX) -shared" + else: + v.LDSHARED = "$(CC) -G" + v.LDCXXSHARED = "$(CXX) -G" + elif v.ac_sys_system.startswith(("hp", "HP")): + if v.ac_cv_gcc_compat: + v.LDSHARED = "$(CC) -shared" + v.LDCXXSHARED = "$(CXX) -shared" + else: + v.LDSHARED = "$(CC) -b" + v.LDCXXSHARED = "$(CXX) -b" + elif sr.startswith("Darwin/1.3"): + v.LDSHARED = "$(CC) -bundle" + v.LDCXXSHARED = "$(CXX) -bundle" + if v.enable_framework: + v.BLDSHARED = f"{v.LDSHARED} $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + v.LDSHARED += " $(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + v.LDCXXSHARED += " $(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + else: + v.LDSHARED += " -undefined suppress" + v.LDCXXSHARED += " -undefined suppress" + elif sr.startswith(("Darwin/1.4", "Darwin/5.", "Darwin/6.")): + v.LDSHARED = "$(CC) -bundle" + v.LDCXXSHARED = "$(CXX) -bundle" + if v.enable_framework: + v.BLDSHARED = f"{v.LDSHARED} $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + v.LDSHARED += " $(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + v.LDCXXSHARED += " $(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + else: + v.BLDSHARED = f"{v.LDSHARED} -bundle_loader $(BUILDPYTHON)" + v.LDSHARED += ( + " -bundle_loader $(BINDIR)/python$(VERSION)$(EXE)" + ) + v.LDCXXSHARED += ( + " -bundle_loader $(BINDIR)/python$(VERSION)$(EXE)" + ) + elif sr.startswith("Darwin/"): + dt = v.MACOSX_DEPLOYMENT_TARGET or "" + dt_parts = dt.split(".") + dt_major = int(dt_parts[0]) if dt_parts else 0 + dt_minor = int(dt_parts[1]) if len(dt_parts) > 1 else 0 + if dt_major == 10 and dt_minor <= 2: + pyconf.error( + f"MACOSX_DEPLOYMENT_TARGET too old ({dt}), " + "only 10.3 or later is supported" + ) + v.LDSHARED = "$(CC) -bundle -undefined dynamic_lookup" + v.LDCXXSHARED = "$(CXX) -bundle -undefined dynamic_lookup" + v.BLDSHARED = v.LDSHARED + elif sr.startswith("iOS/"): + v.LDSHARED = "$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)" + v.LDCXXSHARED = ( + "$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)" + ) + v.BLDSHARED = v.LDSHARED + elif v.ac_sys_system in ("Emscripten", "WASI"): + v.LDSHARED = "$(CC) -shared" + v.LDCXXSHARED = "$(CXX) -shared" + elif v.ac_sys_system.startswith( + ("Linux", "GNU", "QNX", "VxWorks", "Haiku") + ): + v.LDSHARED = "$(CC) -shared" + v.LDCXXSHARED = "$(CXX) -shared" + elif v.ac_sys_system.startswith("FreeBSD"): + has_elf = pyconf.shell( + f'echo "" | {v.CC} -dM -E - | grep __ELF__', + exports=["_elf_out"], + ) + if has_elf._elf_out: + v.LDSHARED = "$(CC) -shared" + v.LDCXXSHARED = "$(CXX) -shared" + else: + v.LDSHARED = "ld -Bshareable" + elif v.ac_sys_system.startswith("OpenBSD"): + has_elf = pyconf.shell( + f'echo "" | {v.CC} -dM -E - | grep __ELF__', + exports=["_elf_out"], + ) + if has_elf._elf_out: + v.LDSHARED = "$(CC) -shared $(CCSHARED)" + v.LDCXXSHARED = "$(CXX) -shared $(CCSHARED)" + else: + rel = v.ac_sys_release + if pyconf.fnmatch_any( + rel, ["0.*", "1.*", "2.[0-7]", "2.[0-7].*"] + ): + v.LDSHARED = f"ld -Bshareable {v.LDFLAGS}" + else: + v.LDSHARED = "$(CC) -shared $(CCSHARED)" + v.LDCXXSHARED = "$(CXX) -shared $(CCSHARED)" + elif v.ac_sys_system.startswith(("NetBSD", "DragonFly")): + v.LDSHARED = "$(CC) -shared" + v.LDCXXSHARED = "$(CXX) -shared" + elif v.ac_sys_system.startswith(("OpenUNIX", "UnixWare")): + if v.ac_cv_gcc_compat: + v.LDSHARED = "$(CC) -shared" + v.LDCXXSHARED = "$(CXX) -shared" + else: + v.LDSHARED = "$(CC) -G" + v.LDCXXSHARED = "$(CXX) -G" + elif v.ac_sys_system.startswith("SCO_SV"): + v.LDSHARED = "$(CC) -Wl,-G,-Bexport" + v.LDCXXSHARED = "$(CXX) -Wl,-G,-Bexport" + elif v.ac_sys_system.startswith("CYGWIN"): + v.LDSHARED = "gcc -shared -Wl,--enable-auto-image-base" + v.LDCXXSHARED = "g++ -shared -Wl,--enable-auto-image-base" + else: + v.LDSHARED = "ld" + + if v.enable_wasm_dynamic_linking and v.ac_sys_system == "Emscripten": + v.BLDSHARED = "$(CC) -shared -sSIDE_MODULE=1" + + pyconf.result(v.LDSHARED) + v.LDCXXSHARED = v.LDCXXSHARED or v.LDSHARED + + pyconf.checking("BLDSHARED flags") + v.BLDSHARED = v.BLDSHARED or v.LDSHARED + pyconf.result(v.BLDSHARED) + + +def setup_ccshared(v): + """Determine CCSHARED flag for position-independent code.""" + pyconf.checking("CCSHARED") + if not v.CCSHARED: + if v.ac_sys_system.startswith("SunOS"): + if v.ac_cv_gcc_compat: + v.CCSHARED = "-fPIC" + elif pyconf.cmd_output(["uname", "-p"]) == "sparc": + v.CCSHARED = "-xcode=pic32" + else: + v.CCSHARED = "-Kpic" + elif v.ac_sys_system.startswith(("hp", "HP")): + v.CCSHARED = "-fPIC" if v.ac_cv_gcc_compat else "+z" + elif v.ac_sys_system.startswith(("Linux", "GNU")): + v.CCSHARED = "-fPIC" + elif v.ac_sys_system in ("Emscripten", "WASI"): + if v.enable_wasm_dynamic_linking: + v.CCSHARED = "-fPIC" + elif v.ac_sys_system.startswith( + ("FreeBSD", "NetBSD", "OpenBSD", "DragonFly") + ): + v.CCSHARED = "-fPIC" + elif v.ac_sys_system.startswith("Haiku"): + v.CCSHARED = "-fPIC" + elif v.ac_sys_system.startswith(("OpenUNIX", "UnixWare")): + v.CCSHARED = "-fPIC" if v.ac_cv_gcc_compat else "-KPIC" + elif v.ac_sys_system.startswith("SCO_SV"): + v.CCSHARED = "-fPIC" if v.ac_cv_gcc_compat else "-Kpic -belf" + elif v.ac_sys_system.startswith("VxWorks"): + v.CCSHARED = ( + "-fpic -D__SO_PICABILINUX__ -ftls-model=global-dynamic" + ) + pyconf.result(v.CCSHARED) + + +def setup_linkforshared(v): + """Determine LINKFORSHARED flags for the main executable.""" + pyconf.checking("LINKFORSHARED") + if not v.LINKFORSHARED: + sr = f"{v.ac_sys_system}/{v.ac_sys_release}" + if sr.startswith("AIX"): + v.LINKFORSHARED = "-Wl,-bE:Modules/python.exp -lld" + elif v.ac_sys_system.startswith(("hp", "HP")): + v.LINKFORSHARED = "-Wl,-E -Wl,+s" + elif v.ac_sys_system.startswith("Linux-android"): + v.LINKFORSHARED = "-pie -Xlinker -export-dynamic" + elif v.ac_sys_system.startswith(("Linux", "GNU")): + v.LINKFORSHARED = "-Xlinker -export-dynamic" + elif v.ac_sys_system.startswith(("Darwin", "iOS")): + v.LINKFORSHARED = ( + f"{v.extra_undefs} -framework CoreFoundation".strip() + ) + stack_size = "4000000" if v.with_ubsan else "1000000" + pyconf.define_unquoted( + "THREAD_STACK_SIZE", + f"0x{stack_size}", + "Custom thread stack size depending on chosen sanitizer runtimes.", + ) + if v.ac_sys_system == "Darwin": + v.LINKFORSHARED = ( + f"-Wl,-stack_size,{stack_size} {v.LINKFORSHARED}" + ) + if v.enable_framework: + v.LINKFORSHARED += " $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + elif v.ac_sys_system == "iOS": + v.LINKFORSHARED = ( + f"-Wl,-stack_size,{stack_size} {v.LINKFORSHARED} " + "$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)" + ) + elif v.ac_sys_system.startswith(("OpenUNIX", "UnixWare")): + v.LINKFORSHARED = "-Wl,-Bexport" + elif v.ac_sys_system.startswith("SCO_SV"): + v.LINKFORSHARED = "-Wl,-Bexport" + elif v.ac_sys_system.startswith("ReliantUNIX"): + v.LINKFORSHARED = "-W1 -Blargedynsym" + elif v.ac_sys_system.startswith( + ("FreeBSD", "NetBSD", "OpenBSD", "DragonFly") + ): + has_elf = pyconf.shell( + f'_elf_out=$(echo "" | {v.CC} -dM -E - | grep __ELF__)', + exports=["_elf_out"], + ) + if has_elf._elf_out: + v.LINKFORSHARED = "-Wl,--export-dynamic" + elif sr.startswith("SunOS/5"): + if v.ac_cv_gcc_compat: + _, help_out = pyconf.cmd_status([v.CC, "-Xlinker", "--help"]) + if "export-dynamic" in help_out: + v.LINKFORSHARED = "-Xlinker --export-dynamic" + elif v.ac_sys_system.startswith("CYGWIN"): + if not v.enable_shared: + v.LINKFORSHARED = "-Wl,--out-implib=$(LDLIBRARY)" + elif v.ac_sys_system.startswith("QNX"): + v.LINKFORSHARED = "-Wl,-E -N 2048K" + elif v.ac_sys_system.startswith("VxWorks"): + v.LINKFORSHARED = "-Wl,-export-dynamic" + pyconf.result(v.LINKFORSHARED) + + +def setup_shared_lib_exports(v): + """Export shared library variables and set CFLAGSFORSHARED/SHLIBS.""" + v.export("SHLIB_SUFFIX") + v.export("LDSHARED") + v.export("LDCXXSHARED") + v.export("BLDSHARED") + v.export("CCSHARED") + v.export("LINKFORSHARED") + + pyconf.checking("CFLAGSFORSHARED") + if v.LIBRARY != v.LDLIBRARY: + if v.ac_sys_system.startswith("CYGWIN"): + v.CFLAGSFORSHARED = "" + else: + v.CFLAGSFORSHARED = "$(CCSHARED)" + else: + v.CFLAGSFORSHARED = "" + if v.enable_wasm_dynamic_linking: + v.CFLAGSFORSHARED = "$(CCSHARED)" + pyconf.result(v.CFLAGSFORSHARED) + v.export("CFLAGSFORSHARED") + + pyconf.checking("SHLIBS") + v.SHLIBS = "$(LIBS)" + pyconf.result(v.SHLIBS) + v.export("SHLIBS") + + +def setup_dynload(v): + """Select dynamic loading module and set MACHDEP_OBJS.""" + v.export("DLINCLDIR", ".") + + pyconf.check_func("dlopen") + ac_cv_func_dlopen = pyconf.cache.get("ac_cv_func_dlopen", False) + # Also update v in case Part 5 didn't set it + if not v.is_set("ac_cv_func_dlopen"): + v.ac_cv_func_dlopen = ac_cv_func_dlopen + + pyconf.checking("DYNLOADFILE") + v.DYNLOADFILE = "" + if not v.DYNLOADFILE: + sys_rel = f"{v.ac_sys_system}/{v.ac_sys_release}" + if pyconf.fnmatch(sys_rel, "[hH][pP]*"): + v.DYNLOADFILE = "dynload_hpux.o" + elif v.ac_cv_func_dlopen: + v.DYNLOADFILE = "dynload_shlib.o" + else: + v.DYNLOADFILE = "dynload_stub.o" + pyconf.result(v.DYNLOADFILE) + v.export("DYNLOADFILE") + + if v.DYNLOADFILE != "dynload_stub.o": + pyconf.define( + "HAVE_DYNAMIC_LOADING", + 1, + "Defined when any dynamic module loading is enabled.", + ) + + # MACHDEP_OBJS + extra_machdep_objs = v.extra_machdep_objs + pyconf.checking("MACHDEP_OBJS") + v.MACHDEP_OBJS = "" + if not v.MACHDEP_OBJS: + v.MACHDEP_OBJS = extra_machdep_objs + else: + v.MACHDEP_OBJS = f"{v.MACHDEP_OBJS} {extra_machdep_objs}" + pyconf.result(v.MACHDEP_OBJS if v.MACHDEP_OBJS else "none") + v.export("MACHDEP_OBJS") diff --git a/Tools/configure/conf_syslibs.py b/Tools/configure/conf_syslibs.py new file mode 100644 index 00000000000000..c46e5c8a5f9726 --- /dev/null +++ b/Tools/configure/conf_syslibs.py @@ -0,0 +1,360 @@ +"""conf_syslibs — GDBM, DBM, pthreads setup, base libraries, libatomic. + +Detects GDBM library and headers; handles --with-dbmliborder and +detects DBM backends (gdbm, ndbm, bdb) in the specified order; +configures POSIX threads (THREADOBJ, thread CFLAGS/LDFLAGS, +PTHREAD_SYSTEM_SCHED_SUPPORTED); probes for sendfile, dl, dld +libraries and backtrace/dladdr1 support; checks sem_init, intl, +AIX-specific extensions, and aligned memory access; and probes +whether libatomic is needed for . +""" + +import pyconf + +WITH_DBMLIBORDER = pyconf.arg_with( + "dbmliborder", + help="override order to check db backends for dbm (default is gdbm:ndbm:bdb)", +) + + +def detect_gdbm(v): + """Detect gdbm library.""" + v.have_gdbm = False + pyconf.env_var("GDBM_CFLAGS", "C compiler flags for gdbm") + pyconf.env_var("GDBM_LIBS", "additional linker flags for gdbm") + + if pyconf.check_header("gdbm.h", extra_cflags=v.GDBM_CFLAGS): + if pyconf.check_lib( + "gdbm", + "gdbm_open", + extra_cflags=v.GDBM_CFLAGS, + extra_libs=v.GDBM_LIBS, + ): + v.have_gdbm = True + v.GDBM_LIBS = v.GDBM_LIBS or "-lgdbm" + else: + v.have_gdbm = False + else: + v.have_gdbm = False + + v.export("GDBM_CFLAGS") + v.export("GDBM_LIBS") + + +def detect_dbm(v): + """Detect ndbm, gdbm_compat, libdb, and handle --with-dbmliborder.""" + v.have_ndbm = False + v.dbm_ndbm = "" + v.have_gdbm_compat = False + + # Only search for dbm_open if ndbm.h is present (mirrors AC_CHECK_HEADERS guard) + ac_cv_search_dbm_open = False + if pyconf.check_header("ndbm.h"): + ac_cv_search_dbm_open = pyconf.search_libs( + "dbm_open", ["ndbm", "gdbm_compat"], required=False + ) + if ac_cv_search_dbm_open and ac_cv_search_dbm_open is not False: + if ( + "ndbm" in ac_cv_search_dbm_open + or "gdbm_compat" in ac_cv_search_dbm_open + ): + v.dbm_ndbm = ac_cv_search_dbm_open + v.have_ndbm = True + elif ac_cv_search_dbm_open == "none required": + v.dbm_ndbm = "" + v.have_ndbm = True + else: + v.have_ndbm = False + + # Check for gdbm/ndbm.h and gdbm-ndbm.h + ac_cv_header_gdbm_slash_ndbm_h = pyconf.check_header("gdbm/ndbm.h") + if ac_cv_header_gdbm_slash_ndbm_h: + pyconf.define( + "HAVE_GDBM_NDBM_H", + 1, + "Define to 1 if you have the header file.", + ) + + ac_cv_header_gdbm_dash_ndbm_h = pyconf.check_header("gdbm-ndbm.h") + if ac_cv_header_gdbm_dash_ndbm_h: + pyconf.define( + "HAVE_GDBM_DASH_NDBM_H", + 1, + "Define to 1 if you have the header file.", + ) + + if ac_cv_header_gdbm_slash_ndbm_h or ac_cv_header_gdbm_dash_ndbm_h: + r = pyconf.search_libs("dbm_open", ["gdbm_compat"], required=False) + if r and r is not False: + v.have_gdbm_compat = True + else: + v.have_gdbm_compat = False + + # libdb >= 5 + ac_cv_have_libdb = False + if pyconf.check_header("db.h"): + if pyconf.link_check( + "#define DB_DBM_HSEARCH 1\n" + "#include \n" + "#if DB_VERSION_MAJOR < 5\n" + '# error "DB_VERSION_MAJOR < 5 is not supported."\n' + "#endif\n" + "int main(void) { DBM *dbm = dbm_open(NULL, 0, 0); return 0; }\n", + extra_libs="-ldb", + ): + ac_cv_have_libdb = True + pyconf.define( + "HAVE_LIBDB", + 1, + "Define to 1 if you have the `db' library (-ldb).", + ) + + # --with-dbmliborder + dbm_raw = WITH_DBMLIBORDER.value + with_dbmliborder = ( + dbm_raw if dbm_raw and dbm_raw != "yes" else "gdbm:ndbm:bdb" + ) + pyconf.checking("for --with-dbmliborder") + + for db in with_dbmliborder.split(":"): + if db not in ("ndbm", "gdbm", "bdb"): + pyconf.fatal( + "proper usage is --with-dbmliborder=db1:db2:... (gdbm:ndbm:bdb)" + ) + pyconf.result(with_dbmliborder) + + pyconf.checking("for _dbm module CFLAGS and LIBS") + v.DBM_CFLAGS = "" + v.DBM_LIBS = "" + have_dbm = False + + for db in with_dbmliborder.split(":"): + if db == "ndbm" and v.have_ndbm: + v.DBM_CFLAGS = "-DUSE_NDBM" + v.DBM_LIBS = v.dbm_ndbm + have_dbm = True + break + elif db == "gdbm" and v.have_gdbm_compat: + v.DBM_CFLAGS = "-DUSE_GDBM_COMPAT" + v.DBM_LIBS = "-lgdbm_compat" + have_dbm = True + break + elif db == "bdb" and ac_cv_have_libdb: + v.DBM_CFLAGS = "-DUSE_BERKDB" + v.DBM_LIBS = "-ldb" + have_dbm = True + break + pyconf.result(f"{v.DBM_CFLAGS} {v.DBM_LIBS}".strip() or "(none)") + v.have_dbm = have_dbm + v.with_dbmliborder = with_dbmliborder + # have_gdbm_dbmliborder: gdbm is in dbmliborder and gdbm is available + v.have_gdbm_dbmliborder = ( + "gdbm" in with_dbmliborder.split(":") and v.have_gdbm is True + ) + + v.export("DBM_CFLAGS") + v.export("DBM_LIBS") + + +def check_base_libraries(v): + """Probe for sendfile, dl, dld libraries and backtrace/dladdr1 support.""" + if pyconf.check_lib("sendfile", "sendfile"): + v.LIBS = f"-lsendfile {v.LIBS}" + if pyconf.check_lib("dl", "dlopen"): + v.LIBS = f"-ldl {v.LIBS}" + pyconf.define( + "HAVE_LIBDL", 1, "Define to 1 if you have the `dl' library (-ldl)." + ) + if pyconf.check_lib("dld", "shl_load"): + v.LIBS = f"-ldld {v.LIBS}" + + ac_cv_require_ldl = False + # Check all three headers (must evaluate all, not short-circuit) + eh_results = [] + for h in ("execinfo.h", "link.h", "dlfcn.h"): + eh_results.append(pyconf.check_headers(h)) + if any(eh_results): + if pyconf.check_funcs(["backtrace", "dladdr1"]): + ac_cv_require_ldl = True + + if ac_cv_require_ldl: + if not pyconf.check_lib("dl", "dlopen"): + v.LDFLAGS += " -ldl" + + +def check_remaining_libs(v): + """Check sem_init, intl, AIX-specific, and aligned memory access.""" + pyconf.search_libs("sem_init", ["pthread", "rt", "posix4"], required=False) + + if pyconf.check_lib("intl", "textdomain"): + pyconf.define( + "WITH_LIBINTL", + 1, + "Define to 1 if libintl is needed for locale functions.", + ) + v.LIBS = f"-lintl {v.LIBS}" + + if v.ac_sys_system.startswith("AIX"): + pyconf.checking("for genuine AIX C++ extensions support") + if pyconf.link_check("#include ", 'loadAndInit("", 0, "")'): + pyconf.define( + "AIX_GENUINE_CPLUSPLUS", + 1, + "Define for AIX if your compiler is a genuine IBM xlC/xlC_r " + "and you want support for AIX C++ shared extension modules.", + ) + pyconf.result("yes") + else: + pyconf.result("no") + pyconf.checking("for the system builddate") + AIX_BUILDDATE = pyconf.cmd_output( + ["sh", "-c", "lslpp -Lcq bos.mp64 | awk -F: '{ print $NF }'"] + ) + pyconf.define( + "AIX_BUILDDATE", + AIX_BUILDDATE, + "BUILD_GNU_TYPE + AIX_BUILDDATE are used to construct the PEP425 tag " + "of the build system.", + ) + pyconf.result(AIX_BUILDDATE) + + ac_cv_aligned_required = pyconf.run_check( + "aligned memory access is required", + """ + int main(void) { + char s[16]; + int i, *p1, *p2; + for (i=0; i < 16; i++) s[i] = i; + p1 = (int*)(s+1); + p2 = (int*)(s+2); + if (*p1 == *p2) return 1; + return 0; + } + """, + success=False, + failure=True, + cross_default=False if v.ac_sys_system == "Linux-android" else True, + ) + if ac_cv_aligned_required: + pyconf.define( + "HAVE_ALIGNED_REQUIRED", + 1, + "Define if aligned memory access is required", + ) + + +def check_libatomic(v): + # --------------------------------------------------------------------------- + # libatomic probe (must happen before AC_OUTPUT) + # --------------------------------------------------------------------------- + + with pyconf.save_env(): + v.CPPFLAGS = f"{v.BASECPPFLAGS} -I. -I{pyconf.srcdir}/Include {v.CPPFLAGS}".strip() + libatomic_needed = not pyconf.link_check( + "whether libatomic is needed by ", + """ +// pyatomic.h needs uint64_t and Py_ssize_t types +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SSIZE_T +typedef ssize_t Py_ssize_t; +#elif SIZEOF_VOID_P == SIZEOF_SIZE_T +typedef intptr_t Py_ssize_t; +#else +# error "unable to define Py_ssize_t" +#endif +#include "pyatomic.h" +int main() { + uint64_t value; + _Py_atomic_store_uint64(&value, 2); + if (_Py_atomic_or_uint64(&value, 8) != 2) return 1; + if (_Py_atomic_load_uint64(&value) != 10) return 1; + uint8_t byte = 0xb8; + if (_Py_atomic_or_uint8(&byte, 0x2d) != 0xb8) return 1; + if (_Py_atomic_load_uint8(&byte) != 0xbd) return 1; + return 0; +} +""", + ) + + if libatomic_needed: + v.LIBS = f"{v.LIBS} -latomic".strip() + v.LIBATOMIC = v.LIBATOMIC or "-latomic" + v.export("LIBATOMIC") + + +def check_stat_timestamps(v): + # --------------------------------------------------------------------------- + # Subsecond timestamps in struct stat + # --------------------------------------------------------------------------- + + pyconf.checking("for tv_nsec in struct stat") + ac_cv_stat_tv_nsec = pyconf.compile_check( + includes=["sys/stat.h"], + body="struct stat st;\nst.st_mtim.tv_nsec = 1;", + cache_var="ac_cv_stat_tv_nsec", + ) + pyconf.result(ac_cv_stat_tv_nsec) + if ac_cv_stat_tv_nsec: + pyconf.define( + "HAVE_STAT_TV_NSEC", + 1, + "Define if you have struct stat.st_mtim.tv_nsec", + ) + + pyconf.checking("for tv_nsec2 in struct stat") + ac_cv_stat_tv_nsec2 = pyconf.compile_check( + includes=["sys/stat.h"], + body="struct stat st;\nst.st_mtimespec.tv_nsec = 1;", + cache_var="ac_cv_stat_tv_nsec2", + ) + pyconf.result(ac_cv_stat_tv_nsec2) + if ac_cv_stat_tv_nsec2: + pyconf.define( + "HAVE_STAT_TV_NSEC2", + 1, + "Define if you have struct stat.st_mtimensec", + ) + + # --------------------------------------------------------------------------- + # Initialize curses/panel state -- detection happens in configure_8.py + # (configure_7.ac lines 1429-1430) + # --------------------------------------------------------------------------- + v.have_curses = False + v.have_panel = False + + +WITH_TZPATH = pyconf.arg_with( + "tzpath", + metavar="", + help="Select the default time zone search path for zoneinfo.TZPATH", +) + + +def _validate_tzpath(tzpath): + if not tzpath: + return + for part in tzpath.split(":"): + if not part.startswith("/"): + pyconf.error( + f"--with-tzpath must contain only absolute paths, not {tzpath}" + ) + + +def setup_tzpath(v): + """Handle --with-tzpath option.""" + TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" + pyconf.checking("for --with-tzpath") + tzpath_val = WITH_TZPATH.value + if tzpath_val: + if tzpath_val == "yes": + pyconf.error("--with-tzpath requires a value") + _validate_tzpath(tzpath_val) + TZPATH = tzpath_val + pyconf.result(f'"{TZPATH}"') + else: + _validate_tzpath(TZPATH) + pyconf.result(f'"{TZPATH}"') + v.export("TZPATH", TZPATH) diff --git a/Tools/configure/conf_targets.py b/Tools/configure/conf_targets.py new file mode 100644 index 00000000000000..51135dc869751b --- /dev/null +++ b/Tools/configure/conf_targets.py @@ -0,0 +1,381 @@ +"""conf_targets — Android, WASM, shared options, library names, ldlibrary. + +Checks --no-as-needed linker flag and detects Android API level; +handles --enable-wasm-dynamic-linking and --enable-wasm-pthreads; +determines executable suffix (--with-suffix, BUILDEXEEXT); sets +LIBRARY, LDLIBRARY, BLDLIBRARY, LINKCC, EXPORTSYMS, GNULD; handles +--enable-shared, --with-static-libpython, --enable-profiling; computes +final LDLIBRARY/RUNSHARED for each platform; sets HOSTRUNNER for +cross-compile targets; and configures AR, ARFLAGS, INSTALL, ABIFLAGS. +""" + +import os + +import pyconf + +WITH_SUFFIX = pyconf.arg_with( + "suffix", + metavar="SUFFIX", + help="set executable suffix (default empty; 'yes' means '.exe')", +) +ENABLE_SHARED = pyconf.arg_enable( + "shared", + help="enable building a shared Python library (default is no)", +) +WITH_STATIC_LIBPYTHON = pyconf.arg_with( + "static-libpython", + help="do not build libpythonMAJOR.MINOR.a and do not install python.o (default is yes)", +) +ENABLE_PROFILING = pyconf.arg_enable( + "profiling", + help="enable C-level code profiling with gprof (default is no)", +) + + +def _runshared(envvar: str) -> str: + """Build a RUNSHARED value the way autoconf does at configure time. + + Autoconf expands `pwd` and ${VAR:+:${VAR}} in the shell, so the + Makefile gets the resolved build directory and any existing env-var + value appended. + """ + cwd = pyconf.getcwd() + existing = os.environ.get(envvar, "") + if existing: + return f"{envvar}={cwd}:{existing}" + return f"{envvar}={cwd}" + + +def setup_android_api(v): + """Check --no-as-needed linker flag and detect Android API level.""" + v.export( + "NO_AS_NEEDED", + pyconf.check_linker_flag( + "-Wl,--no-as-needed", value="-Wl,--no-as-needed" + ), + ) + + pyconf.checking("for the Android API level") + android_out = pyconf.run( + "$CPP $CPPFLAGS -", + vars={"CPP": v.CPP, "CPPFLAGS": v.CPPFLAGS}, + input=( + "#ifdef __ANDROID__\n" + "android_api = __ANDROID_API__\n" + "arm_arch = __ARM_ARCH\n" + "#else\n" + "#error not Android\n" + "#endif\n" + ), + capture_output=True, + text=True, + ) + v.ANDROID_API_LEVEL = "" + arm_arch = "" + if android_out.returncode == 0: + for line in android_out.stdout.splitlines(): + if not line.startswith("#"): + if line.startswith("android_api = "): + v.ANDROID_API_LEVEL = line.removeprefix( + "android_api = " + ).strip() + elif line.startswith("arm_arch = "): + arm_arch = line.removeprefix("arm_arch = ").strip() + pyconf.result(v.ANDROID_API_LEVEL) + if not v.ANDROID_API_LEVEL: + pyconf.error("Fatal: you must define __ANDROID_API__") + pyconf.define( + "ANDROID_API_LEVEL", v.ANDROID_API_LEVEL, "The Android API level." + ) + v.LIBS += " -llog" + pyconf.checking("for the Android arm ABI") + pyconf.result(arm_arch) + if arm_arch == "7": + v.BASECFLAGS += " -mfloat-abi=softfp -mfpu=vfpv3-d16" + v.LDFLAGS += " -march=armv7-a -Wl,--fix-cortex-a8" + else: + pyconf.result("not Android") + v.export("ANDROID_API_LEVEL") + + +def setup_exe_suffix(v): + """Handle --with-suffix, BUILDEXEEXT, and HP-UX CC flag.""" + pyconf.checking("for --with-suffix") + if WITH_SUFFIX.given: + if WITH_SUFFIX.is_no(): + v.EXEEXT = "" + elif WITH_SUFFIX.is_yes(): + v.EXEEXT = ".exe" + else: + v.EXEEXT = WITH_SUFFIX.value_or("") + else: + if v.ac_sys_system == "Emscripten": + v.EXEEXT = ".mjs" + elif v.ac_sys_system == "WASI": + v.EXEEXT = ".wasm" + else: + v.EXEEXT = "" + pyconf.result(v.EXEEXT) + v.export("EXEEXT") + + v.ac_exeext = v.EXEEXT + + # --- BUILDEXEEXT --- + v.export("BUILDEXEEXT") + pyconf.checking("for case-insensitive build directory") + casedir = "CaseSensitiveTestDir" + pyconf.mkdir_p(casedir) + if pyconf.path_is_dir("casesensitivetestdir") and not v.EXEEXT: + pyconf.result("yes") + v.BUILDEXEEXT = ".exe" + else: + pyconf.result("no") + v.BUILDEXEEXT = v.EXEEXT + pyconf.rmdir(casedir) + + # HP-UX: append -Ae to CC + if v.ac_sys_system.startswith(("hp", "HP")) and v.ac_cv_cc_name in ("cc",): + v.CC += " -Ae" + + +def setup_library_names(v): + """Set LIBRARY, LDLIBRARY/BLDLIBRARY init, LINKCC, EXPORTSYMS, GNULD.""" + v.export("LIBRARY") + pyconf.checking("LIBRARY") + v.LIBRARY = v.LIBRARY or "libpython$(VERSION)$(ABIFLAGS).a" + pyconf.result(v.LIBRARY) + + # --- LDLIBRARY initial values --- + v.export("LDLIBRARY") + v.export("DLLLIBRARY") + v.export("BLDLIBRARY") + v.export("PY3LIBRARY") + v.export("LDLIBRARYDIR") + v.export("INSTSONAME") + v.export("RUNSHARED") + v.export("LDVERSION") + + v.LDLIBRARY = v.LIBRARY + v.BLDLIBRARY = "$(LDLIBRARY)" + v.INSTSONAME = "$(LDLIBRARY)" + v.DLLLIBRARY = "" + v.LDLIBRARYDIR = "" + v.RUNSHARED = "" + v.LDVERSION = v.VERSION + v.PY3LIBRARY = "" + + # --- LINKCC --- + v.export("LINKCC") + pyconf.checking("LINKCC") + if not v.LINKCC: + v.LINKCC = "$(PURIFY) $(CC)" + if v.ac_sys_system.startswith("QNX"): + v.LINKCC = "qcc" + pyconf.result(v.LINKCC) + + # --- EXPORTSYMS / EXPORTSFROM --- + v.export("EXPORTSYMS", "") + v.export("EXPORTSFROM", "") + pyconf.checking("EXPORTSYMS") + if v.ac_sys_system.startswith("AIX"): + v.EXPORTSYMS = "Modules/python.exp" + v.EXPORTSFROM = "." + pyconf.result(v.EXPORTSYMS) + + # --- GNULD: detect GNU linker --- + v.export("GNULD") + pyconf.checking("for GNU ld") + ld_prog = "ld" + if v.ac_cv_cc_name == "gcc": + ld_prog = pyconf.cmd_output([v.CC, "-print-prog-name=ld"]) + _, ld_ver = pyconf.cmd_status([ld_prog, "-V"]) + v.GNULD = "GNU" in ld_ver + pyconf.result(v.GNULD) + + +def setup_shared_options(v): + """Handle --enable-shared, --with-static-libpython, --enable-profiling.""" + pyconf.checking("for --enable-shared") + if ENABLE_SHARED.given: + v.enable_shared = not ENABLE_SHARED.is_no() + else: + v.enable_shared = v.ac_sys_system.startswith("CYGWIN") + pyconf.result(v.enable_shared) + + v.STATIC_LIBPYTHON = 1 + pyconf.checking("for --with-static-libpython") + if WITH_STATIC_LIBPYTHON.is_no(): + pyconf.result("no") + v.STATIC_LIBPYTHON = 0 + else: + pyconf.result("yes") + v.export("STATIC_LIBPYTHON") + + pyconf.checking("for --enable-profiling") + v.enable_profiling = ( + ENABLE_PROFILING.given and not ENABLE_PROFILING.is_no() + ) + if v.enable_profiling: + prof_ok = pyconf.try_link( + "int main(void) { return 0; }", extra_flags=["-pg"] + ) + if not prof_ok: + v.enable_profiling = False + pyconf.result(v.enable_profiling) + + if v.enable_profiling: + v.BASECFLAGS = f"-pg {v.BASECFLAGS}" + v.LDFLAGS = f"-pg {v.LDFLAGS}" + + +def setup_ldlibrary(v): + """Compute final LDLIBRARY, BLDLIBRARY, RUNSHARED values.""" + pyconf.checking("LDLIBRARY") + + if v.enable_framework: + if v.ac_sys_system == "Darwin": + v.LDLIBRARY = ( + "$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + ) + elif v.ac_sys_system == "iOS": + v.LDLIBRARY = "$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)" + else: + pyconf.error("Unknown platform for framework build") + v.BLDLIBRARY = "" + v.RUNSHARED = _runshared("DYLD_FRAMEWORK_PATH") + else: + v.BLDLIBRARY = "$(LDLIBRARY)" + + v.export("PY_ENABLE_SHARED", 0) + + if v.enable_shared: + v.PY_ENABLE_SHARED = 1 + pyconf.define( + "Py_ENABLE_SHARED", + 1, + "Defined if Python is built as a shared library.", + ) + _setup_ldlibrary_shared(v) + else: + if v.ac_sys_system.startswith("CYGWIN"): + v.BLDLIBRARY = "$(LIBRARY)" + v.LDLIBRARY = "libpython$(LDVERSION).dll.a" + + pyconf.result(v.LDLIBRARY) + + +def _setup_ldlibrary_shared(v): + """Set LDLIBRARY/BLDLIBRARY/RUNSHARED for --enable-shared builds.""" + if v.ac_sys_system.startswith("CYGWIN"): + v.LDLIBRARY = "libpython$(LDVERSION).dll.a" + v.BLDLIBRARY = "-L. -lpython$(LDVERSION)" + v.DLLLIBRARY = "libpython$(LDVERSION).dll" + elif v.ac_sys_system.startswith("SunOS"): + v.LDLIBRARY = "libpython$(LDVERSION).so" + v.BLDLIBRARY = "-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)" + v.RUNSHARED = _runshared("LD_LIBRARY_PATH") + v.INSTSONAME = f"{v.LDLIBRARY}.{v.SOVERSION}" + if not v.Py_DEBUG: + v.PY3LIBRARY = "libpython3.so" + elif v.ac_sys_system.startswith( + ( + "Linux", + "GNU", + "NetBSD", + "FreeBSD", + "DragonFly", + "OpenBSD", + "VxWorks", + ) + ): + v.LDLIBRARY = "libpython$(LDVERSION).so" + v.BLDLIBRARY = "-L. -lpython$(LDVERSION)" + v.RUNSHARED = _runshared("LD_LIBRARY_PATH") + if v.ac_sys_system != "Linux-android": + v.INSTSONAME = f"{v.LDLIBRARY}.{v.SOVERSION}" + if not v.Py_DEBUG: + v.PY3LIBRARY = "libpython3.so" + elif v.ac_sys_system.startswith(("hp", "HP")): + mach = pyconf.cmd_output(["uname", "-m"]) + v.LDLIBRARY = ( + "libpython$(LDVERSION).so" + if mach == "ia64" + else "libpython$(LDVERSION).sl" + ) + v.BLDLIBRARY = "-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)" + v.RUNSHARED = _runshared("SHLIB_PATH") + elif v.ac_sys_system.startswith("Darwin"): + v.LDLIBRARY = "libpython$(LDVERSION).dylib" + v.BLDLIBRARY = "-L. -lpython$(LDVERSION)" + v.RUNSHARED = _runshared("DYLD_LIBRARY_PATH") + elif v.ac_sys_system == "iOS": + v.LDLIBRARY = "libpython$(LDVERSION).dylib" + elif v.ac_sys_system.startswith("AIX"): + v.LDLIBRARY = "libpython$(LDVERSION).so" + v.RUNSHARED = _runshared("LIBPATH") + + +def setup_hostrunner(v): + """Detect HOSTRUNNER for cross-compile targets.""" + pyconf.checking("HOSTRUNNER") + if not v.HOSTRUNNER: + if v.ac_sys_system == "Emscripten": + NODE = pyconf.check_prog("node", default="node") + v.HOSTRUNNER = NODE + if v.host_cpu == "wasm64": + v.HOSTRUNNER += " --experimental-wasm-memory64" + elif v.ac_sys_system == "WASI": + pyconf.error("HOSTRUNNER must be set when cross-compiling to WASI") + else: + v.HOSTRUNNER = "" + v.export("HOSTRUNNER") + pyconf.result(v.HOSTRUNNER) + + if v.HOSTRUNNER: + v.PYTHON_FOR_BUILD = ( + f"_PYTHON_HOSTRUNNER='{v.HOSTRUNNER}' {v.PYTHON_FOR_BUILD}" + ) + + +def setup_library_deps(v): + """Set LIBRARY_DEPS, LINK_PYTHON_DEPS, LINK_PYTHON_OBJS.""" + v.LIBRARY_DEPS = "$(PY3LIBRARY) $(EXPORTSYMS)" + v.LINK_PYTHON_DEPS = "$(LIBRARY_DEPS)" + + if v.PY_ENABLE_SHARED == 1 or v.enable_framework: + v.LIBRARY_DEPS = f"$(LDLIBRARY) {v.LIBRARY_DEPS}" + if v.STATIC_LIBPYTHON == 1: + v.LIBRARY_DEPS = f"$(LIBRARY) {v.LIBRARY_DEPS}" + v.LINK_PYTHON_OBJS = "$(BLDLIBRARY)" + else: + if v.STATIC_LIBPYTHON == 0: + v.LINK_PYTHON_DEPS = f"{v.LIBRARY_DEPS} $(LIBRARY_OBJS)" + v.LIBRARY_DEPS = f"$(LIBRARY) {v.LIBRARY_DEPS}" + v.LINK_PYTHON_OBJS = "$(LIBRARY_OBJS)" + + v.export("LIBRARY_DEPS") + v.export("LINK_PYTHON_DEPS") + v.export("LINK_PYTHON_OBJS") + + +def setup_build_tools(v): + """Set AR, ARFLAGS, INSTALL, MKDIR_P, LN, ABIFLAGS.""" + v.export("AR", v.AR or pyconf.check_tools(["ar", "aal"], default="ar")) + v.export("ARFLAGS", v.ARFLAGS or "rcs") + + # HP-UX INSTALL fallback + if v.MACHDEP.startswith(("hp", "HP")): + if not os.environ.get("INSTALL"): + os.environ["INSTALL"] = f"{v.srcdir}/install-sh -c" + pyconf.find_install() + pyconf.find_mkdir_p() + v.export("MKDIR_P") + + v.export( + "LN", + v.LN or ("ln -s" if v.ac_sys_system.startswith("CYGWIN") else "ln"), + ) + + # ABIFLAGS / ABI_THREAD: initialized empty; filled in by Part 4 + v.export("ABIFLAGS") + v.export("ABI_THREAD") diff --git a/Tools/configure/conf_threads.py b/Tools/configure/conf_threads.py new file mode 100644 index 00000000000000..3214bfc99c6ad4 --- /dev/null +++ b/Tools/configure/conf_threads.py @@ -0,0 +1,407 @@ +"""Checked related to threading libraries.""" + +import pyconf + +_PTHREAD_TEST_SRC = """ + #include + #include + void* routine(void* p){return NULL;} + int main(void){ + pthread_t p; + if(pthread_create(&p,NULL,routine,NULL)!=0) return 1; + (void)pthread_detach(p); + return 0; + } + """ + + +def check_pthreads(v): + """Detect pthreads support and CXX thread flags.""" + ac_cv_pthread_is_default = pyconf.run_check( + "whether pthreads are available without options", + _PTHREAD_TEST_SRC, + cross_default=False, + ) + v.ac_cv_pthread_is_default = ac_cv_pthread_is_default + + if ac_cv_pthread_is_default: + ac_cv_kpthread = False + ac_cv_kthread = False + ac_cv_pthread = False + else: + ac_cv_kpthread = pyconf.run_check_with_cc_flag( + f"whether {v.CC} accepts -Kpthread", + "-Kpthread", + _PTHREAD_TEST_SRC, + cross_default=False, + ) + + if not ac_cv_kpthread and not ac_cv_pthread_is_default: + ac_cv_kthread = pyconf.run_check_with_cc_flag( + f"whether {v.CC} accepts -Kthread", + "-Kthread", + _PTHREAD_TEST_SRC, + cross_default=False, + ) + else: + ac_cv_kthread = False + + if not ac_cv_kthread and not ac_cv_pthread_is_default: + ac_cv_pthread = pyconf.run_check_with_cc_flag( + f"whether {v.CC} accepts -pthread", + "-pthread", + _PTHREAD_TEST_SRC, + cross_default=False, + ) + else: + ac_cv_pthread = False + + v.ac_cv_kpthread = ac_cv_kpthread + v.ac_cv_kthread = ac_cv_kthread + v.ac_cv_pthread = ac_cv_pthread + + if v.CXX: + if ac_cv_kpthread: + cxx_flag = "-Kpthread" + ac_cv_cxx_thread = True + elif ac_cv_kthread: + cxx_flag = "-Kthread" + ac_cv_cxx_thread = True + elif ac_cv_pthread: + cxx_flag = "-pthread" + ac_cv_cxx_thread = True + else: + cxx_flag = "" + ac_cv_cxx_thread = False + + if ac_cv_cxx_thread: + ac_cv_cxx_thread = pyconf.compile_link_check( + f"whether {v.CXX} also accepts flags for thread support", + compiler=f"{v.CXX} {cxx_flag}", + source="void foo();int main(){foo();}void foo(){}", + ) + # Note: autoconf saves/restores CXX here; the flag is added + # permanently later in setup_pthreads(). + if ac_cv_cxx_thread != "yes": + ac_cv_cxx_thread = False + else: + ac_cv_cxx_thread = False + + v.ac_cv_cxx_thread = ac_cv_cxx_thread + + +def setup_pthreads(v): + """Finalize CC/CXX/LIBS/posix_threads based on pthread detection results.""" + v.posix_threads = False + + ac_cv_pthread_is_default = v.ac_cv_pthread_is_default + ac_cv_kpthread = v.ac_cv_kpthread + ac_cv_kthread = v.ac_cv_kthread + ac_cv_pthread = v.ac_cv_pthread + ac_cv_cxx_thread = v.ac_cv_cxx_thread + unistd_defines_pthreads = ( + "" # only set in fallback branch; empty == "not checked" + ) + + if ac_cv_pthread_is_default: + # _REENTRANT is defined unconditionally + pyconf.define("_REENTRANT") + v.posix_threads = True + if v.ac_sys_system == "SunOS": + v.CFLAGS += " -D_REENTRANT" + elif ac_cv_kpthread: + v.CC += " -Kpthread" + if ac_cv_cxx_thread: + v.CXX += " -Kpthread" + v.posix_threads = True + elif ac_cv_kthread: + v.CC += " -Kthread" + if ac_cv_cxx_thread: + v.CXX += " -Kthread" + v.posix_threads = True + elif ac_cv_pthread: + v.CC += " -pthread" + if ac_cv_cxx_thread: + v.CXX += " -pthread" + v.posix_threads = True + else: + # Full fallback: probe pthread_create in various libs + pyconf.define("_REENTRANT") + + unistd_defines_pthreads = False + pyconf.checking("for _POSIX_THREADS in unistd.h") + unistd_defines_pthreads = pyconf.check_define( + "unistd.h", "_POSIX_THREADS" + ) + pyconf.result(unistd_defines_pthreads) + + prog = ( + "#include \n#include \n#include \n" + "void *start_routine(void *arg) { exit(0); }\n" + "int main(void) { pthread_create(NULL, NULL, start_routine, NULL); return 0; }\n" + ) + pyconf.checking("for pthread_create in -lpthread") + if pyconf.link_check(prog, extra_libs="-lpthread"): + pyconf.result("yes") + v.LIBS += " -lpthread" + v.posix_threads = True + else: + pyconf.result("no") + if pyconf.check_func("pthread_detach"): + v.posix_threads = True + elif pyconf.check_lib("pthreads", "pthread_create"): + v.posix_threads = True + v.LIBS += " -lpthreads" + elif pyconf.check_lib("c_r", "pthread_create"): + v.posix_threads = True + v.LIBS += " -lc_r" + elif pyconf.check_lib("pthread", "__pthread_create_system"): + v.posix_threads = True + v.LIBS += " -lpthread" + elif pyconf.check_lib("cma", "pthread_create"): + v.posix_threads = True + v.LIBS += " -lcma" + elif v.ac_sys_system == "WASI": + v.posix_threads = "stub" + else: + pyconf.fatal("could not find pthreads on your system") + + if pyconf.check_lib("mpc", "usconfig"): + v.LIBS += " -lmpc" + + if v.posix_threads is True: + # Only define _POSIX_THREADS if we went through the fallback branch and + # unistd.h doesn't define it there. For the other branches (kpthread, + # kthread, -pthread flag, pthread_is_default) the system headers already + # expose threads, so we must NOT define _POSIX_THREADS. + if unistd_defines_pthreads is False: + pyconf.define( + "_POSIX_THREADS", + 1, + "Define if you have POSIX threads, and your system does not define that.", + ) + + # Solaris semaphore bugs + sr = f"{v.ac_sys_system}/{v.ac_sys_release}" + if sr == "SunOS/5.6": + pyconf.define( + "HAVE_PTHREAD_DESTRUCTOR", + 1, + "Defined for Solaris 2.6 bug in pthread header.", + ) + elif ( + sr in ("SunOS/5.8",) + or v.ac_sys_system == "AIX" + or v.ac_sys_system == "NetBSD" + ): + pyconf.define( + "HAVE_BROKEN_POSIX_SEMAPHORES", + 1, + "Define if the Posix semaphores do not work on your system", + ) + + # PTHREAD_SCOPE_SYSTEM check + pyconf.checking("if PTHREAD_SCOPE_SYSTEM is supported") + ac_cv_pthread_system_supported = pyconf.run_check( + "#include \n#include \n" + "void *foo(void *parm) { return NULL; }\n" + "int main(void) {\n" + " pthread_attr_t attr; pthread_t id;\n" + " if (pthread_attr_init(&attr)) return -1;\n" + " if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) return -1;\n" + " if (pthread_create(&id, &attr, foo, NULL)) return -1;\n" + " if (pthread_join(id, NULL)) return -1;\n" + " return 0;\n" + "}\n", + default=False, + ) + pyconf.result(ac_cv_pthread_system_supported) + if ac_cv_pthread_system_supported: + pyconf.define( + "PTHREAD_SYSTEM_SCHED_SUPPORTED", + 1, + "Defined if PTHREAD_SCOPE_SYSTEM supported.", + ) + + if pyconf.check_func("pthread_sigmask"): + if v.ac_sys_system.startswith("CYGWIN"): + pyconf.define( + "HAVE_BROKEN_PTHREAD_SIGMASK", + 1, + "Define if pthread_sigmask() does not work on your system.", + ) + pyconf.check_func("pthread_getcpuclockid") + + if v.posix_threads == "stub": + pyconf.define( + "HAVE_PTHREAD_STUBS", + 1, + "Define if platform requires stubbed pthreads support", + ) + + +def check_posix_semaphores(v): + # --------------------------------------------------------------------------- + # POSIX semaphores + # --------------------------------------------------------------------------- + + pyconf.checking("whether POSIX semaphores are enabled") + ac_cv_posix_semaphores_enabled = pyconf.run_check( + r""" + #include + #include + #include + #include + #include + + int main(void) { + sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0); + if (a == SEM_FAILED) { + perror("sem_open"); + return 1; + } + sem_close(a); + sem_unlink("/autoconf"); + return 0; + } + """, + cache_var="ac_cv_posix_semaphores_enabled", + cross_compiling_default=True, + ) + pyconf.result(ac_cv_posix_semaphores_enabled) + if not ac_cv_posix_semaphores_enabled: + pyconf.define( + "POSIX_SEMAPHORES_NOT_ENABLED", + 1, + "Define if POSIX semaphores aren't enabled on your system", + ) + + pyconf.checking("for broken sem_getvalue") + ac_cv_broken_sem_getvalue = pyconf.run_check( + r""" + #include + #include + #include + #include + #include + + int main(void){ + sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0); + int count; + int res; + if(a==SEM_FAILED){ + perror("sem_open"); + return 1; + } + res = sem_getvalue(a, &count); + sem_close(a); + sem_unlink("/autocftw"); + return res==-1 ? 1 : 0; + } + """, + cache_var="ac_cv_broken_sem_getvalue", + cross_compiling_default=True, + on_success_return=False, + on_failure_return=True, + ) + pyconf.result(ac_cv_broken_sem_getvalue) + if ac_cv_broken_sem_getvalue: + pyconf.define( + "HAVE_BROKEN_SEM_GETVALUE", + 1, + "define to 1 if your sem_getvalue is broken.", + ) + + # RTLD flags + pyconf.check_decls( + [ + "RTLD_LAZY", + "RTLD_NOW", + "RTLD_GLOBAL", + "RTLD_LOCAL", + "RTLD_NODELETE", + "RTLD_NOLOAD", + "RTLD_DEEPBIND", + "RTLD_MEMBER", + ], + extra_includes=["dlfcn.h"], + ) + + +def setup_thread_headers_and_srcdirs(v): + # --------------------------------------------------------------------------- + # THREADHEADERS and SRCDIRS + # --------------------------------------------------------------------------- + + thread_headers = pyconf.glob_files( + pyconf.path_join([pyconf.srcdir, "Python", "thread_*.h"]) + ) + header_refs = [] + for h in sorted(thread_headers): + header_refs.append(f"$(srcdir)/{pyconf.relpath(h, pyconf.srcdir)}") + v.export("THREADHEADERS", " ".join(header_refs)) + + v.export( + "SRCDIRS", + " Modules" + " Modules/_ctypes" + " Modules/_decimal" + " Modules/_decimal/libmpdec" + " Modules/_hacl" + " Modules/_io" + " Modules/_multiprocessing" + " Modules/_remote_debugging" + " Modules/_sqlite" + " Modules/_sre" + " Modules/_testcapi" + " Modules/_testinternalcapi" + " Modules/_testlimitedcapi" + " Modules/_xxtestfuzz" + " Modules/_zstd" + " Modules/cjkcodecs" + " Modules/expat" + " Objects" + " Objects/mimalloc" + " Objects/mimalloc/prim" + " Parser" + " Parser/tokenizer" + " Parser/lexer" + " Programs" + " Python" + " Python/frozen_modules", + ) + + pyconf.checking("for build directories") + for dir in v.SRCDIRS.split(): + pyconf.mkdir_p(dir) + pyconf.result("done") + + +def check_thread_name_maxlen(v): + # --------------------------------------------------------------------------- + # Thread name max length + # --------------------------------------------------------------------------- + + sys = v.ac_sys_system + if sys.startswith("Linux"): + v._PYTHREAD_NAME_MAXLEN = "15" # Linux and Android + elif sys.startswith("SunOS"): + v._PYTHREAD_NAME_MAXLEN = "31" + elif sys.startswith("NetBSD"): + v._PYTHREAD_NAME_MAXLEN = "15" + elif sys in ("Darwin", "iOS"): + v._PYTHREAD_NAME_MAXLEN = "63" + elif sys.startswith("FreeBSD"): + v._PYTHREAD_NAME_MAXLEN = "19" + elif sys.startswith("OpenBSD"): + v._PYTHREAD_NAME_MAXLEN = "23" + else: + v._PYTHREAD_NAME_MAXLEN = "" + + if v._PYTHREAD_NAME_MAXLEN: + pyconf.define( + "_PYTHREAD_NAME_MAXLEN", + int(v._PYTHREAD_NAME_MAXLEN), + "Maximum length in bytes of a thread name", + ) + v.export("_PYTHREAD_NAME_MAXLEN") diff --git a/Tools/configure/conf_wasm.py b/Tools/configure/conf_wasm.py new file mode 100644 index 00000000000000..b0f664ed306c93 --- /dev/null +++ b/Tools/configure/conf_wasm.py @@ -0,0 +1,180 @@ +"""conf_wasm — WebAssembly flags and options. + +Handles --enable-wasm-dynamic-linking and --enable-wasm-pthreads options; +checks for unsupported systems; configures Emscripten-specific flags +(LINKFORSHARED, threading); and configures WASI-specific flags and defines. +""" + +import pyconf + +ENABLE_WASM_DYNAMIC_LINKING = pyconf.arg_enable( + "wasm-dynamic-linking", + help="Enable dynamic linking support for WebAssembly (default is no); " + "WASI requires an external dynamic loader to handle imports", +) +ENABLE_WASM_PTHREADS = pyconf.arg_enable( + "wasm-pthreads", + help="Enable pthread emulation for WebAssembly (default is no)", +) + + +def setup_wasm_options(v): + """Check for unsupported systems and handle WASM options.""" + sys_rel = f"{v.ac_sys_system}/{v.ac_sys_release}" + if sys_rel.startswith(("atheos", "Linux/1")): + pyconf.error( + f"This system ({sys_rel}) is no longer supported. " + "See README for details." + ) + + pyconf.checking("for --enable-wasm-dynamic-linking") + if ENABLE_WASM_DYNAMIC_LINKING.given: + if v.ac_sys_system not in ("Emscripten", "WASI"): + pyconf.error( + "--enable-wasm-dynamic-linking only applies to Emscripten and WASI" + ) + v.enable_wasm_dynamic_linking = ENABLE_WASM_DYNAMIC_LINKING.value_or( + False + ) + else: + v.enable_wasm_dynamic_linking = False + pyconf.result( + v.enable_wasm_dynamic_linking + if v.enable_wasm_dynamic_linking is not False + else "missing" + ) + + pyconf.checking("for --enable-wasm-pthreads") + if ENABLE_WASM_PTHREADS.given: + if v.ac_sys_system not in ("Emscripten", "WASI"): + pyconf.error( + "--enable-wasm-pthreads only applies to Emscripten and WASI" + ) + v.enable_wasm_pthreads = ENABLE_WASM_PTHREADS.value_or(False) + else: + v.enable_wasm_pthreads = "missing" + pyconf.result(v.enable_wasm_pthreads) + + +def setup_wasm_flags(v): + """Set WASM-specific CFLAGS, LDFLAGS, and LINKFORSHARED.""" + v.LINKFORSHARED = "" + + if v.ac_sys_system == "Emscripten": + _setup_emscripten_flags(v) + elif v.ac_sys_system == "WASI": + _setup_wasi_flags(v) + + # Force/suppress ac_cv_func_dlopen for WASM dynamic linking + if v.enable_wasm_dynamic_linking is True: + v.ac_cv_func_dlopen = True + elif v.enable_wasm_dynamic_linking is False: + v.ac_cv_func_dlopen = False + + # Ensure variables exist even on non-WASM builds + if not v.is_set("ARCH_TRIPLES"): + v.ARCH_TRIPLES = "" + if not v.is_set("wasm_debug"): + v.wasm_debug = False + if not v.is_set("ac_cv_func_dlopen"): + pass # left unset; Part 5 will probe it + + v.export("BASECFLAGS") + v.export("CFLAGS_NODIST") + v.export("LDFLAGS_NODIST") + v.export("LDFLAGS_NOLTO") + v.export("LINKFORSHARED") + v.export("WASM_ASSETS_DIR") + v.export("WASM_STDLIB") + + v.export("UNIVERSAL_ARCH_FLAGS", "") + + +def _setup_emscripten_flags(v): + """Set Emscripten-specific flags.""" + v.wasm_debug = v.Py_DEBUG is True + + v.LINKFORSHARED += " -sALLOW_MEMORY_GROWTH -sINITIAL_MEMORY=20971520" + v.LDFLAGS_NODIST += " -sWASM_BIGINT" + v.LINKFORSHARED += ( + " -sFORCE_FILESYSTEM -lidbfs.js -lnodefs.js -lproxyfs.js -lworkerfs.js" + ) + v.LINKFORSHARED += ( + " -sEXPORTED_RUNTIME_METHODS=FS,callMain,ENV,HEAPU32,TTY" + ) + v.LINKFORSHARED += ( + " -sEXPORTED_FUNCTIONS=_main,_Py_Version,__PyRuntime," + "_PyGILState_GetThisThreadState,__Py_DumpTraceback" + ) + v.LINKFORSHARED += " -sSTACK_SIZE=5MB" + v.LINKFORSHARED += " -sTEXTDECODER=2" + + if v.enable_wasm_dynamic_linking: + v.LINKFORSHARED += " -sMAIN_MODULE" + + if v.enable_wasm_pthreads: + v.CFLAGS_NODIST += " -pthread" + v.LDFLAGS_NODIST += " -sUSE_PTHREADS" + v.LINKFORSHARED += " -sPROXY_TO_PTHREAD" + + v.LDFLAGS_NODIST += " -sEXIT_RUNTIME" + WASM_LINKFORSHARED_DEBUG = "-gseparate-dwarf --emit-symbol-map" + + if v.wasm_debug: + v.LDFLAGS_NODIST += " -sASSERTIONS" + v.LINKFORSHARED += f" {WASM_LINKFORSHARED_DEBUG}" + else: + v.LINKFORSHARED += " -O2 -g0" + + +def _setup_wasi_flags(v): + """Set WASI-specific flags and defines.""" + pyconf.define( + "_WASI_EMULATED_SIGNAL", + 1, + "Define to 1 if you want to emulate signals on WASI", + ) + pyconf.define( + "_WASI_EMULATED_GETPID", + 1, + "Define to 1 if you want to emulate getpid() on WASI", + ) + pyconf.define( + "_WASI_EMULATED_PROCESS_CLOCKS", + 1, + "Define to 1 if you want to emulate process clocks on WASI", + ) + v.LIBS += " -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks" + + if v.enable_wasm_pthreads: + v.CFLAGS += " -target wasm32-wasi-threads -pthread" + v.CFLAGS_NODIST += " -target wasm32-wasi-threads -pthread" + v.LDFLAGS_NODIST += ( + " -target wasm32-wasi-threads -pthread" + " -Wl,--import-memory" + " -Wl,--export-memory" + " -Wl,--max-memory=10485760" + ) + + v.LDFLAGS_NODIST += " -z stack-size=16777216 -Wl,--stack-first -Wl,--initial-memory=41943040" + + +def setup_platform_objects(v): + """Set PLATFORM_HEADERS and PLATFORM_OBJS for Emscripten.""" + v.PLATFORM_HEADERS = "" + v.PLATFORM_OBJS = "" + + if v.ac_sys_system == "Emscripten": + v.PLATFORM_OBJS += ( + " Python/emscripten_signal.o" + " Python/emscripten_trampoline.o" + " Python/emscripten_trampoline_wasm.o" + " Python/emscripten_syscalls.o" + ) + v.PLATFORM_HEADERS += ( + " $(srcdir)/Include/internal/pycore_emscripten_signal.h" + " $(srcdir)/Include/internal/pycore_emscripten_trampoline.h" + ) + + v.export("PLATFORM_HEADERS") + v.export("PLATFORM_OBJS") diff --git a/Tools/configure/configure.py b/Tools/configure/configure.py new file mode 100644 index 00000000000000..56d84551ca643f --- /dev/null +++ b/Tools/configure/configure.py @@ -0,0 +1,193 @@ +"""configure.py — run CPython's Python-based build configuration. + +Usage: + python configure.py [--with-*] [--enable-*] [--prefix=PATH] ... +""" + +import pyconf # noqa: F401 — initialises the pyconf singleton +import conf_buildopts +import conf_compiler +import conf_extlibs +import conf_filesystem +import conf_init +import conf_macos +import conf_math +import conf_modules +import conf_net +import conf_optimization +import conf_output +import conf_paths +import conf_platform +import conf_security +import conf_sharedlib +import conf_syslibs +import conf_targets +import conf_threads +import conf_wasm + + +def _run(v): + """Run configure functions. Note that order matters here since we are + matching the behaviour of the configure.ac version of this script. + """ + conf_init.setup_platform_defines() + conf_init.setup_source_dirs(v) + conf_init.setup_git_metadata(v) + conf_init.setup_canonical_host(v) + conf_init.setup_build_python(v) + conf_init.setup_prefix_and_dirs(v) + conf_init.setup_version_and_config_args(v) + conf_init.setup_pkg_config(v) + conf_init.setup_missing_stdlib_config(v) + + conf_platform.setup_machdep(v) + conf_platform.setup_host_prefix(v) + conf_macos.setup_ios_cross_tools(v) + conf_macos.setup_universalsdk(v) + conf_macos.setup_framework_name(v) + conf_macos.setup_framework(v) + conf_macos.setup_app_store_compliance(v) + conf_platform.setup_host_platform(v) + + conf_platform.setup_xopen_source(v) + conf_macos.setup_deployment_targets_and_flags(v) + conf_macos.setup_macos_compiler(v) + conf_compiler.setup_compiler_detection(v) + conf_compiler.setup_cxx(v) + conf_platform.setup_platform_triplet(v) + conf_compiler.setup_stack_direction(v) + conf_platform.setup_pep11_tier(v) + conf_targets.setup_android_api(v) + conf_wasm.setup_wasm_options(v) + conf_targets.setup_exe_suffix(v) + conf_targets.setup_library_names(v) + conf_targets.setup_shared_options(v) + conf_targets.setup_ldlibrary(v) + conf_targets.setup_hostrunner(v) + conf_targets.setup_library_deps(v) + conf_targets.setup_build_tools(v) + + conf_buildopts.setup_disable_gil(v) + conf_buildopts.setup_pydebug(v) + conf_buildopts.setup_trace_refs(v) + conf_buildopts.setup_pystats(v) + conf_buildopts.setup_assertions(v) + conf_buildopts.setup_optimizations(v) + conf_optimization.setup_profile_task(v) + conf_optimization.locate_llvm_bin(v) + conf_optimization.setup_lto(v) + conf_optimization.setup_pgo_flags(v) + conf_optimization.setup_bolt(v) + conf_compiler.setup_strict_overflow(v) + conf_compiler.setup_opt_and_debug_cflags(v) + conf_wasm.setup_wasm_flags(v) + conf_compiler.setup_basecflags_overflow(v) + conf_compiler.setup_safety_options(v) + conf_compiler.setup_gcc_warnings(v) + + conf_buildopts.setup_experimental_jit(v) + conf_threads.check_pthreads(v) + conf_platform.check_headers(v) + conf_platform.check_types_and_macros(v) + conf_compiler.check_sizes(v) + conf_macos.setup_next_framework(v) + conf_macos.setup_dsymutil(v) + conf_macos.check_dyld(v) + conf_buildopts.setup_sanitizers(v) + conf_sharedlib.setup_shared_lib_suffix(v) + conf_sharedlib.setup_ldshared(v) + conf_sharedlib.setup_ccshared(v) + conf_sharedlib.setup_linkforshared(v) + conf_sharedlib.setup_shared_lib_exports(v) + conf_buildopts.setup_perf_trampoline(v) + conf_syslibs.check_base_libraries(v) + conf_extlibs.detect_uuid(v) + conf_syslibs.check_remaining_libs(v) + conf_security.setup_hash_algorithm() + conf_syslibs.setup_tzpath(v) + conf_net.check_network_libs(v) + + conf_extlibs.setup_expat(v) + conf_extlibs.detect_libffi(v) + conf_math.detect_libmpdec(v) + conf_extlibs.detect_sqlite3(v) + conf_extlibs.detect_tcltk(v) + conf_syslibs.detect_gdbm(v) + conf_syslibs.detect_dbm(v) + conf_threads.setup_pthreads(v) + conf_net.check_ipv6(v) + conf_net.check_can_sockets(v) + conf_buildopts.setup_doc_strings() + conf_compiler.check_stdatomic(v) + conf_buildopts.setup_mimalloc(v) + conf_buildopts.setup_pymalloc(v) + conf_platform.setup_c_locale_coercion() + conf_buildopts.setup_valgrind(v) + conf_buildopts.setup_dtrace(v) + conf_wasm.setup_platform_objects(v) + conf_sharedlib.setup_dynload(v) + conf_platform.check_posix_functions(v) + conf_platform.check_special_functions(v) + + conf_extlibs.check_compression_libraries(v) + conf_net.check_netdb_socket_funcs(v) + conf_platform.check_declarations(v) + conf_platform.check_pty_and_misc_funcs(v) + conf_platform.check_clock_functions(v) + conf_filesystem.check_device_macros(v) + conf_net.check_getaddrinfo(v) + conf_platform.check_structs(v) + conf_compiler.check_compiler_characteristics(v) + conf_net.check_gethostbyname_r(v) + conf_math.check_math_library(v) + conf_math.check_gcc_asm_and_floating_point(v) + conf_math.check_c99_math(v) + conf_threads.check_posix_semaphores(v) + conf_math.check_big_digits(v) + conf_math.check_wchar(v) + conf_platform.check_endianness_and_soabi(v) + conf_modules.setup_module_deps(v) + conf_paths.setup_install_paths(v) + conf_compiler.check_sign_extension_and_getc(v) + conf_extlibs.check_readline(v) + conf_paths.check_misc_runtime(v) + conf_syslibs.check_stat_timestamps(v) + + conf_extlibs.check_curses(v) + conf_filesystem.check_device_files(v) + conf_net.check_socklen_t(v) + conf_compiler.check_mbstowcs(v) + conf_compiler.check_computed_gotos(v) + conf_buildopts.check_tail_call_interp(v) + conf_buildopts.check_remote_debug(v) + conf_platform.check_aix_pipe_buf(v) + conf_threads.setup_thread_headers_and_srcdirs(v) + conf_compiler.check_compiler_bugs(v) + conf_buildopts.check_ensurepip(v) + conf_filesystem.check_dirent(v) + conf_security.check_getrandom(v) + conf_platform.check_posix_shmem(v) + conf_security.check_openssl(v) + conf_security.check_ssl_cipher_suites(v) + conf_security.check_builtin_hashlib_hashes(v) + conf_modules.check_test_modules(v) + conf_syslibs.check_libatomic(v) + conf_threads.check_thread_name_maxlen(v) + conf_modules.setup_platform_na_modules(v) + conf_modules.setup_stdlib_modules(v) + conf_security.setup_hacl(v) + conf_modules.setup_remaining_modules(v) + conf_buildopts.check_jit_stencils(v) + conf_output.generate_output(v) + + +def main() -> None: + pyconf.init_args() + if pyconf.check_help(): + return + v = pyconf.vars + _run(v) + + +if __name__ == "__main__": + main() diff --git a/Tools/configure/pyconf.py b/Tools/configure/pyconf.py new file mode 100644 index 00000000000000..899ce2a3145891 --- /dev/null +++ b/Tools/configure/pyconf.py @@ -0,0 +1,3296 @@ +""" +pyconf.py — module for the CPython Python-based configure system. + +Provides the pyconf API used by conf_*.py. +""" + +import fnmatch as _fnmatch +import os +import re +import shlex +import shutil +import subprocess +import sys +import tempfile +import types +from dataclasses import dataclass +from pathlib import Path +from typing import Any, Iterator + + +# --------------------------------------------------------------------------- +# Argument validation for transpiler-critical functions +# The transpiler precomputes HAVE_* define names from these strings at +# transpile time. If a caller passes a string that doesn't match the +# expected character set, the precomputed name will be wrong in the +# transpiled shell script. These checks catch that at Python-run time. +# --------------------------------------------------------------------------- + +_RE_FUNC_NAME = re.compile(r"^[a-zA-Z_][a-zA-Z0-9_]*$") +_RE_HEADER_NAME = re.compile(r"^[a-zA-Z0-9][a-zA-Z0-9_./+-]*$") +_RE_DECL_NAME = re.compile(r"^[A-Za-z_][A-Za-z0-9_]*$") +_RE_MEMBER_NAME = re.compile(r"^[a-z_][a-z0-9_ ]*\.[a-z_][a-z0-9_]*$") + + +def format_yn(value: bool) -> str: + """Format a boolean as 'yes' or 'no' (for output and Makefile substs).""" + return "yes" if value else "no" + + +# --------------------------------------------------------------------------- +# pyconf.vars — shared mutable namespace for cross-part state +# --------------------------------------------------------------------------- + + +class Vars: + """Namespace for configure variables. + + Attributes that have not been explicitly set default to + ``os.environ.get(name, "")``, mirroring autoconf's behaviour where + unset shell variables expand to the empty string and environment + variables are picked up automatically. + """ + + _exports: set[str] + + def __init__(self) -> None: + object.__setattr__(self, "_exports", set()) + + def __getattr__(self, name: str) -> str: + if name.startswith("_"): + raise AttributeError(name) + return os.environ.get(name, "") + + def is_set(self, name: str) -> bool: + """Return True if *name* has been explicitly assigned.""" + return name in self.__dict__ + + _SENTINEL = object() + + def export( + self, name: str, value: str | bool | None | object = _SENTINEL + ) -> None: + """Mark a variable for Makefile substitution (AC_SUBST). + + If *value* is given, assigns it to this Vars instance first. + Otherwise looks up the value from this Vars instance. + The name is recorded in ``self._exports``. + """ + self._exports.add(name) + if value is not self._SENTINEL: + setattr(self, name, value) + val = self.__dict__.get(name) + if val is not None: + substs[name] = ( + format_yn(val) if isinstance(val, bool) else str(val) + ) + elif name not in substs: + substs[name] = "" + + def __repr__(self) -> str: + items = ", ".join( + f"{k}={v!r}" + for k, v in self.__dict__.items() + if not k.startswith("_") + ) + return f"Vars({items})" + + +vars = Vars() + +# True between a checking() call and its matching result() call. +# Probe functions (compile_check, link_check, run_check, etc.) use this to +# emit a result line when the caller did a bare checking() without result(). +_result_pending: bool = False + +# --------------------------------------------------------------------------- +# Platform identity (set by canonical_host()) +# --------------------------------------------------------------------------- +cross_compiling: bool = False +host: str = "" # e.g. "x86_64-pc-linux-gnu" +host_cpu: str = "" # e.g. "x86_64" +build: str = "" # e.g. "x86_64-pc-linux-gnu" + +# Compiler identity (set by find_compiler()) +CC: str = "" +CPP: str = "" +GCC: bool = False +ac_cv_cc_name: str = "" # "gcc", "clang", "emcc", etc. +ac_cv_gcc_compat: bool = False +ac_cv_prog_cc_g: bool = False + +# --------------------------------------------------------------------------- +# Build output state +# --------------------------------------------------------------------------- +cache: dict[str, Any] = {} # probe result cache (ac_cv_* style) +defines: dict[str, tuple] = {} # pyconfig.h #define entries +substs: dict[str, str] = {} # Makefile substitution variables +_header_map: dict[str, str] = {} # HAVE_FOO_H → "foo.h" reverse map +srcdir: str = "" # source directory path + +# --------------------------------------------------------------------------- +# Environment dict (for PKG_CONFIG etc.) +# --------------------------------------------------------------------------- +env: dict[str, str] = {} + +# --------------------------------------------------------------------------- +# Command-line behaviour flags (set by init_args()) +# --------------------------------------------------------------------------- +quiet: bool = False # --quiet / -q / --silent +no_create: bool = False # --no-create / -n +cache_file: str = "" # --cache-file=FILE / -C +disable_option_checking: bool = False # --disable-option-checking +_help_requested: bool = False # deferred --help flag +_dir_args: dict[str, str] = {} # standard dir args: --prefix, --bindir, etc. +_srcdir_arg: str = "" # --srcdir value from argv (empty = not set) +_original_config_args: list[str] = [] # original user-facing args + +# --------------------------------------------------------------------------- +# Internal: option + env-var registries (populated by option() / env_var()) +# --------------------------------------------------------------------------- +# Each entry: {'flag': str, 'metavar': str, 'help': str, 'default': Any, 'value': str|None} +_options: dict[ + str, dict[str, Any] +] = {} # keyed by normalized name (no leading --, hyphens→underscores) +_env_vars: dict[str, str] = {} # keyed by var name, value is description + + +# --------------------------------------------------------------------------- +# Stub API — all no-ops or minimal implementations +# --------------------------------------------------------------------------- + + +# Standard autoconf installation directory variables (in display order) +_DIR_VARS: list[tuple[str, str, str]] = [ + # (arg-name, key, default) + ("prefix", "prefix", "/usr/local"), + ("exec-prefix", "exec_prefix", "${prefix}"), + ("bindir", "bindir", "${exec_prefix}/bin"), + ("sbindir", "sbindir", "${exec_prefix}/sbin"), + ("libexecdir", "libexecdir", "${exec_prefix}/libexec"), + ("sysconfdir", "sysconfdir", "${prefix}/etc"), + ("sharedstatedir", "sharedstatedir", "${prefix}/com"), + ("localstatedir", "localstatedir", "${prefix}/var"), + ("runstatedir", "runstatedir", "${localstatedir}/run"), + ("libdir", "libdir", "${exec_prefix}/lib"), + ("includedir", "includedir", "${prefix}/include"), + ("oldincludedir", "oldincludedir", "/usr/include"), + ("datarootdir", "datarootdir", "${prefix}/share"), + ("datadir", "datadir", "${datarootdir}"), + ("infodir", "infodir", "${datarootdir}/info"), + ("localedir", "localedir", "${datarootdir}/locale"), + ("mandir", "mandir", "${datarootdir}/man"), + ("docdir", "docdir", "${datarootdir}/doc/${PACKAGE_TARNAME}"), + ("htmldir", "htmldir", "${docdir}"), + ("dvidir", "dvidir", "${docdir}"), + ("pdfdir", "pdfdir", "${docdir}"), + ("psdir", "psdir", "${docdir}"), +] + + +def init_args() -> None: + """Parse sys.argv early: handle VAR=VALUE, --help, --version, behaviour flags, + and standard directory arguments. Must be called before configure parts run. + """ + global \ + quiet, \ + no_create, \ + cache_file, \ + disable_option_checking, \ + _help_requested, \ + _srcdir_arg + global _dir_args + + global _original_config_args + # Save user-facing args (exclude --srcdir which is internal to the wrapper) + _original_config_args = [ + a for a in sys.argv[1:] if not a.startswith("--srcdir") + ] + # Register built-in autoconf precious variables. User-level precious + # variables (MACHDEP, PROFILE_TASK, GDBM_CFLAGS, …) are registered via + # env_var() calls in the configure_*.py files instead. + for pvar in [ + "CC", + "CFLAGS", + "CXX", + "CXXFLAGS", + "CPP", + "CPPFLAGS", + "LDFLAGS", + "LIBS", + "PKG_CONFIG", + "PKG_CONFIG_LIBDIR", + "PKG_CONFIG_PATH", + ]: + env_var(pvar) + + new_argv: list[str] = [sys.argv[0]] + i = 1 + while i < len(sys.argv): + arg = sys.argv[i] + i += 1 + + # VAR=VALUE (no leading '--', NAME is all-caps word chars) + if re.match(r"^[A-Za-z_][A-Za-z0-9_]*=", arg) and not arg.startswith( + "-" + ): + name, value = arg.split("=", 1) + os.environ[name] = value + continue + + # Early-exit flags + if arg in ("-h", "--help"): + _help_requested = True + continue + if arg in ("-V", "--version"): + print("configure (CPython) 3.15") + sys.exit(0) + + # Behaviour flags + if arg in ("-q", "--quiet", "--silent"): + quiet = True + continue + if arg in ("-n", "--no-create"): + no_create = True + continue + if arg == "-C": + cache_file = "config.cache" + continue + if arg.startswith("--cache-file="): + cache_file = arg.split("=", 1)[1] + continue + if arg == "--cache-file" and i < len(sys.argv): + cache_file = sys.argv[i] + i += 1 + continue + if arg == "--disable-option-checking": + disable_option_checking = True + continue + + # --srcdir=DIR (autoconf compatibility; later args override earlier ones) + if arg == "--srcdir": + if i < len(sys.argv): + _srcdir_arg = sys.argv[i] + i += 1 + continue + if arg.startswith("--srcdir="): + _srcdir_arg = arg.split("=", 1)[1] + continue + + # Standard directory args + matched_dir = False + for argname, key, default in _DIR_VARS: + if arg == f"--{argname}": + # Next token is the value + if i < len(sys.argv): + _dir_args[key] = sys.argv[i] + i += 1 + matched_dir = True + break + if arg.startswith(f"--{argname}="): + _dir_args[key] = arg.split("=", 1)[1] + matched_dir = True + break + if matched_dir: + continue + + new_argv.append(arg) + + sys.argv[:] = new_argv + + # Load cache file if requested + if cache_file: + if os.path.exists(cache_file): + print(f"configure: loading cache {cache_file}") + _load_cache() + else: + print(f"configure: creating cache {cache_file}") + + +def _cache_deserialize(s: str) -> Any: + """Convert a cache-file string value to a Python object. + + 'yes' → True, 'no' → False, numeric strings → int, else str. + """ + if s == "yes": + return True + if s == "no": + return False + # Keep numeric strings as strings — callers like check_sizeof() do + # int(cache[key]) explicitly. + return s + + +def _cache_serialize(v: Any) -> str: + """Convert a Python cache value to a string for the cache file. + + True → 'yes', False → 'no', else str(v). + """ + if v is True: + return "yes" + if v is False: + return "no" + return str(v) + + +def _cache_quote(s: str) -> str: + """Quote a value for the shell-compatible cache file if needed. + + Values containing spaces, quotes, braces, or other shell meta-characters + are wrapped in single quotes (with internal single quotes escaped). + """ + if s and not re.search(r"[^a-zA-Z0-9_./:@+=-]", s): + return s + # Shell single-quote: replace ' with '\'' + return "'" + s.replace("'", "'\\''") + "'" + + +def _load_cache() -> None: + """Load cached probe results from cache_file into pyconf.cache. + + Handles both the autoconf shell-script format: + ac_cv_foo=${ac_cv_foo=value} + test ${ac_cv_foo+y} || ac_cv_foo='value with spaces' + and the simple key=value format written by older pyconf versions. + """ + try: + with open(cache_file) as fh: + for line in fh: + line = line.strip() + if not line or line.startswith("#"): + continue + # Autoconf format: key=${key=value} + m = re.match(r"^([a-zA-Z_]\w*)=\$\{\1=(.*)\}$", line) + if m: + k = m.group(1) + v = _cache_unquote(m.group(2)) + cache[k] = _cache_deserialize(v) + continue + # Autoconf alternate: test ${key+y} || key='value' + m = re.match( + r"^test\s+\$\{([a-zA-Z_]\w*)\+y\}\s+\|\|\s+\1=(.*)", + line, + ) + if m: + k = m.group(1) + v = _cache_unquote(m.group(2)) + cache[k] = _cache_deserialize(v) + continue + # Simple format: key=value + if "=" in line: + k, v = line.split("=", 1) + k = k.strip() + v = _cache_unquote(v.strip()) + cache[k] = _cache_deserialize(v) + except OSError: + pass + + +def _cache_unquote(s: str) -> str: + """Remove shell single-quotes from a cache value string.""" + if s.startswith("'") and s.endswith("'"): + # Undo shell single-quoting: 'foo'\''bar' → foo'bar + s = s[1:-1] + s = s.replace("'\\''", "'") + return s + + +_CACHE_HEADER = """\ +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +""" + + +def _save_cache() -> None: + """Save pyconf.cache to cache_file in autoconf-compatible format.""" + if not cache_file: + return + try: + with open(cache_file, "w") as fh: + fh.write(_CACHE_HEADER) + for k, v in sorted(cache.items()): + sv = _cache_serialize(v) + qv = _cache_quote(sv) + fh.write(f"{k}=${{{k}={qv}}}\n") + except OSError as e: + warn(f"cannot write cache file {cache_file}: {e}") + + +def get_dir_arg(key: str, default: str) -> str: + """Return a standard directory argument value, or *default* if not supplied.""" + return _dir_args.get(key, default) + + +def check_help() -> bool: + """If --help was requested, print help. Call after all option() calls.""" + if _help_requested: + _print_help() + return True + return False + + +def _print_help() -> None: + """Print configure --help output matching autoconf format.""" + lines: list[str] = [] + a = lines.append + a("Usage: configure [OPTION]... [VAR=VALUE]...") + a("") + a("To assign environment variables (e.g., CC, CFLAGS...), specify them as") + a( + "VAR=VALUE. See below for descriptions of some of the useful variables." + ) + a("") + a("Defaults for the options are specified in brackets.") + a("") + a("Configuration:") + a(" -h, --help display this help and exit") + a(" -V, --version display version information and exit") + a(" -q, --quiet, --silent do not print 'checking ...' messages") + a(" -n, --no-create do not create output files") + a(" --cache-file=FILE cache test results in FILE [disabled]") + a(" -C alias for --cache-file=config.cache") + a( + " --srcdir=DIR find the sources in DIR [configure dir or '..']" + ) + a( + " --disable-option-checking ignore unrecognized --enable/--with options" + ) + a("") + a("Installation directories:") + a( + " --prefix=PREFIX install architecture-independent files in PREFIX" + ) + a(" [/usr/local]") + a( + " --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX" + ) + a(" [PREFIX]") + a("") + a("By default, 'make install' will install all the files in") + a("'/usr/local/bin', '/usr/local/lib' etc. You can specify") + a("an installation prefix other than '/usr/local' using '--prefix',") + a("for instance '--prefix=$HOME'.") + a("") + a("For better control, use the options below.") + a("") + a("Fine tuning of the installation directories:") + for argname, _key, default in _DIR_VARS[ + 2: + ]: # skip prefix, exec-prefix (shown above) + opt = f" --{argname}=DIR" + a(f"{opt:<38}[{default}]") + a("") + a("System types:") + a(" --build=BUILD configure for building on BUILD [guessed]") + a( + " --host=HOST cross-compile to build programs to run on HOST [BUILD]" + ) + a("") + + # Optional Features + features = [ + (k, v) + for k, v in _options.items() + if k.startswith("enable_") or k.startswith("disable_") + ] + if features: + a("Optional Features:") + a( + " --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)" + ) + a(" --enable-FEATURE[=ARG] include FEATURE [ARG=yes]") + for key, info in features: + flag = info["flag"].lstrip("-") + metavar = info.get("metavar", "") + help_text = info.get("help", "") + opt = f" --{flag}" + if metavar: + opt += f"[={metavar}]" + if help_text: + if len(opt) <= 38: + a(f"{opt:<38}{help_text}") + else: + a(opt) + a(f"{'':38}{help_text}") + else: + a(opt) + a("") + + # Optional Packages + packages = [ + (k, v) + for k, v in _options.items() + if k.startswith("with_") or k.startswith("without_") + ] + if packages: + a("Optional Packages:") + a( + " --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)" + ) + a(" --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]") + for key, info in packages: + flag = info["flag"].lstrip("-") + metavar = info.get("metavar", "") + help_text = info.get("help", "") + opt = f" --{flag}" + if metavar: + opt += f"[={metavar}]" + if help_text: + if len(opt) <= 38: + a(f"{opt:<38}{help_text}") + else: + a(opt) + a(f"{'':38}{help_text}") + else: + a(opt) + a("") + + # Environment variables + if _env_vars: + a("Some influential environment variables:") + for var, desc in _env_vars.items(): + opt = f" {var}" + if desc: + if len(opt) <= 20: + a(f"{opt:<20}{desc}") + else: + a(opt) + a(f"{'':20}{desc}") + else: + a(opt) + a("") + a( + "Use these variables to override the choices made by 'configure' or to help" + ) + a("it to find libraries and programs with nonstandard names/locations.") + print("\n".join(lines)) + + +@dataclass +class OptionSpec: + """Autoconf-shaped option declaration and parsed value. + + ``_raw`` keeps autoconf's 4-state value model: + - None (not provided) + - "yes" + - "no" + - arbitrary string + + Use ``process_bool(v)`` or ``process_value(v)`` to resolve the value, + emit checking/result output, and optionally set a var on *v*. + """ + + kind: str # "enable" | "with" + name: str + display: str + help: str = "" + metavar: str = "" + default: Any = None + _raw: str | None = None + var: str | None = None + false_is: str | None = ( + None # "no" for enable-style, "yes" for disable-style + ) + + @property + def given(self) -> bool: + return self._raw is not None + + def is_yes(self) -> bool: + return self._raw == "yes" + + def is_no(self) -> bool: + return self._raw == "no" + + @property + def value(self) -> Any: + """Resolved value: raw if given, else declared default.""" + return self._raw if self._raw is not None else self.default + + def value_or(self, default: Any) -> Any: + return self._raw if self.given else default + + def report(self, checking_text: str, value: Any) -> Any: + checking(checking_text) + result(value) + return value + + def process_bool(self, v: Any = None) -> bool: + """Resolve option as a boolean, emit checking/result, optionally set var. + + Uses ``false_is`` to determine boolean interpretation: + - ``false_is="no"``: value == "no" is False, anything else is True + (enable-style, the most common pattern) + - ``false_is="yes"``: value == "yes" is False, anything else is True + (disable-style, e.g. --disable-gil) + """ + value = self._raw if self._raw is not None else self.default + if value is None: + bool_value = False + else: + bool_value = value != self.false_is + checking(f"for {self.display}") + result("yes" if bool_value else "no") + if self.var is not None and v is not None: + setattr(v, self.var, bool_value) + return bool_value + + def process_value(self, v: Any = None) -> Any: + """Resolve option as raw value, emit checking/result, optionally set var. + + Returns ``self._raw`` if the user passed the flag, otherwise + ``self.default``. + """ + value = self._raw if self._raw is not None else self.default + checking(f"for {self.display}") + result(value) + if self.var is not None and v is not None: + setattr(v, self.var, value) + return value + + +def _normalize_opt_name(name: str) -> str: + """Normalize option logical names to underscore form.""" + return name.replace("-", "_") + + +def _option_key(kind: str, name: str) -> str: + """Build the normalized _options key for arg_enable/arg_with.""" + return f"{kind}_{_normalize_opt_name(name)}" + + +def _parse_ac_arg(kind: str, name: str) -> str | None: + """Parse an AC_ARG_ENABLE/AC_ARG_WITH style option from sys.argv. + + Last occurrence wins, matching autoconf CLI behaviour. + Hyphens and underscores are treated as equivalent for matching names. + """ + wanted = _normalize_opt_name(name) + positive = "enable" if kind == "enable" else "with" + negative = "disable" if kind == "enable" else "without" + raw: str | None = None + + for token in sys.argv[1:]: + if not token.startswith("--"): + continue + option_token = token[2:] + if "=" in option_token: + opt_name, opt_value = option_token.split("=", 1) + else: + opt_name, opt_value = option_token, None + normalized = _normalize_opt_name(opt_name) + + if normalized == f"{positive}_{wanted}": + raw = "yes" if opt_value is None else opt_value + continue + if normalized == f"{negative}_{wanted}": + raw = "no" if opt_value is None else opt_value + continue + + return raw + + +def arg_enable( + name: str, + *, + display: str | None = None, + help: str = "", + metavar: str = "", + default: Any = None, + var: str | None = None, + false_is: str | None = None, +) -> OptionSpec: + """Declare and parse an AC_ARG_ENABLE option.""" + normalized_name = _normalize_opt_name(name) + key = _option_key("enable", normalized_name) + shown = display or f"--enable-{normalized_name.replace('_', '-')}" + raw = _parse_ac_arg("enable", normalized_name) + _options[key] = { + "flag": shown, + "metavar": metavar, + "help": help, + "default": default, + "value": raw, + } + return OptionSpec( + kind="enable", + name=normalized_name.replace("_", "-"), + display=shown, + help=help, + metavar=metavar, + default=default, + _raw=raw, + var=var, + false_is=false_is, + ) + + +def arg_with( + name: str, + *, + display: str | None = None, + help: str = "", + metavar: str = "", + default: Any = None, + var: str | None = None, + false_is: str | None = None, +) -> OptionSpec: + """Declare and parse an AC_ARG_WITH option.""" + normalized_name = _normalize_opt_name(name) + key = _option_key("with", normalized_name) + shown = display or f"--with-{normalized_name.replace('_', '-')}" + raw = _parse_ac_arg("with", normalized_name) + _options[key] = { + "flag": shown, + "metavar": metavar, + "help": help, + "default": default, + "value": raw, + } + return OptionSpec( + kind="with", + name=normalized_name.replace("_", "-"), + display=shown, + help=help, + metavar=metavar, + default=default, + _raw=raw, + var=var, + false_is=false_is, + ) + + +def env_var(name: str, description: str = "") -> None: + """Declare an environment variable accepted by configure (AC_ARG_VAR). + + Records the variable for help/documentation purposes, seeds its value + from the process environment if present, and marks it as a precious + variable so it is recorded in CONFIG_ARGS. + """ + _env_vars[name] = description + if name in os.environ: + env[name] = os.environ[name] + # Record in _original_config_args so CONFIG_ARGS includes it (like + # autoconf's precious-variable mechanism). + present = { + a.split("=", 1)[0] + for a in _original_config_args + if "=" in a and not a.startswith("-") + } + if name not in present and name in os.environ: + _original_config_args.append(f"{name}={os.environ[name]}") + + +def define(name: str, value: Any = 1, description: str = "") -> None: + """Write a #define into pyconfig.h (AC_DEFINE). + + *value* is stored as-is (int or str). String values will be quoted in the + output; use define_unquoted() to suppress quoting. + Stores into pyconf.defines[name] = (value, description, quoted=True). + """ + defines[name] = (value, description, True) + + +def define_unquoted(name: str, value: Any, description: str = "") -> None: + """Like define() but value is not quoted in the output (AC_DEFINE_UNQUOTED). + + Stores into pyconf.defines[name] = (value, description, quoted=False). + """ + defines[name] = (value, description, False) + + +def define_template(name: str, description: str = "") -> None: + """Register a pyconfig.h template entry without setting a value. + + Stores into pyconf.defines[name] = (None, description, False). + """ + defines.setdefault(name, (None, description, False)) + + +def is_defined(name: str) -> bool: + """Return True if name has been defined (value is not None) in pyconf.defines.""" + entry = defines.get(name) + return entry is not None and entry[0] is not None + + +def export(name: str, value: str | None = None) -> None: + """Mark a variable for Makefile substitution (AC_SUBST). + + If *value* is given, also sets pyconf.substs[name] = value. + If *value* is None, looks up the value in order: + 1. pyconf.vars (shared namespace) + 2. The caller's local variables (mirrors AC_SUBST reading a shell var) + 3. Falls back to "" as a placeholder. + """ + if value is not None: + substs[name] = format_yn(value) if isinstance(value, bool) else value + else: + # 1. Try shared vars namespace (only explicitly set attributes) + val = vars.__dict__.get(name) + if val is None: + # 2. Try caller's local variables (AC_SUBST convention) + import inspect + + frame = inspect.currentframe() + try: + caller_locals = ( + frame.f_back.f_locals if frame and frame.f_back else {} + ) + finally: + del frame + val = caller_locals.get(name) + if val is not None: + substs[name] = ( + format_yn(val) if isinstance(val, bool) else str(val) + ) + elif name not in substs: + substs[name] = "" + + +def config_files(files: list[str], chmod_x: bool = False) -> None: + """List files to generate from templates (AC_CONFIG_FILES). + + *files*: list of output file paths (relative to build dir). + *chmod_x*: if True, mark generated files as executable. + Appended to pyconf.substs['_config_files'] for use by output(). + """ + existing = ( + substs.get("_config_files", "").split() + if substs.get("_config_files") + else [] + ) + existing.extend(files) + substs["_config_files"] = " ".join(existing) + if chmod_x: + existing_x = ( + substs.get("_config_files_x", "").split() + if substs.get("_config_files_x") + else [] + ) + existing_x.extend(files) + substs["_config_files_x"] = " ".join(existing_x) + + +def output() -> None: + """Write pyconfig.h and process config files from accumulated defines/substs. + + Steps: + 1. Re-snapshot all explicitly exported vars with their final values. + 2. Populate module substs from accumulated module state. + 3. Write pyconfig.h from pyconf.defines into the build directory. + 4. For each file listed via config_files(), read /.in, + substitute all @VAR@ tokens from pyconf.substs, and write the output. + Files marked chmod_x (via config_files(..., chmod_x=True)) are made executable. + Skips file writing when --no-create is active. + Saves probe cache when --cache-file is set. + """ + _resolve_exports() + _populate_module_substs() + if cache_file: + _save_cache() + if not no_create: + _write_pyconfig_h() + _process_config_files() + _write_config_status() + + +def _resolve_exports() -> None: + """Re-snapshot all explicitly exported vars into substs with final values. + + v.export() registers a variable name and immediately snapshots its value + into substs. However, many variables are modified after the initial + export() call (e.g. LIBS, BASECFLAGS). This function does a final pass + so that the last-assigned value wins, matching autoconf's AC_SUBST + behaviour of capturing the value at output time. + """ + for name in vars._exports: + val = vars.__dict__.get(name) + if val is not None: + substs[name] = ( + format_yn(val) if isinstance(val, bool) else str(val) + ) + elif name not in substs: + substs[name] = "" + # Finalize CONFIG_ARGS now that all env_var() calls have been made. + substs["CONFIG_ARGS"] = " ".join(f"'{a}'" for a in _original_config_args) + + +def _populate_module_substs() -> None: + """Populate MODULE_{NAME}_TRUE/_STATE/_CFLAGS/_LDFLAGS in substs, + and build the MODULE_BLOCK string for @MODULE_BLOCK@ in Makefile.pre.in. + + AM_CONDITIONAL sets MODULE_{NAME}_TRUE = "" when the condition is true + (module enabled+supported) or "#" when false (disabled/missing/n/a). + These are used as @MODULE_{NAME}_TRUE@ tokens in Modules/Setup.stdlib.in. + + MODULE_BLOCK is a newline-separated block of all MODULE_*_STATE and + optional MODULE_*_CFLAGS / MODULE_*_LDFLAGS assignments, substituted + in one shot via @MODULE_BLOCK@ in Makefile.pre.in. + """ + block_lines: list[str] = [] + for name, info in _stdlib_modules.items(): + key = "MODULE_" + name.upper().replace("-", "_") + enabled = info.get("enabled", True) + supported = info.get("supported", True) + na = info.get("na", False) + if na: + state = "n/a" + elif not supported and enabled: + state = "missing" + elif not supported: + state = "n/a" + elif not enabled: + state = "disabled" + else: + state = "yes" + # _TRUE="" means "build this module"; only "yes" state builds + substs[key + "_TRUE"] = "" if state == "yes" else "#" + substs[key + "_STATE"] = state + block_lines.append(f"{key}_STATE={state}") + if "cflags" in info: + cflags = str(info["cflags"] or "") + substs.setdefault(key + "_CFLAGS", cflags) + if state not in ("disabled", "n/a", "missing"): + block_lines.append(f"{key}_CFLAGS={cflags}") + if "ldflags" in info: + ldflags = str(info["ldflags"] or "") + substs.setdefault(key + "_LDFLAGS", ldflags) + if state not in ("disabled", "n/a", "missing"): + block_lines.append(f"{key}_LDFLAGS={ldflags}") + substs["MODULE_BLOCK"] = "\n".join(block_lines) + + +def _write_pyconfig_h(path: str = "pyconfig.h") -> None: + """Write pyconfig.h by processing pyconfig.h.in (like autoconf's config.status). + + Reads pyconfig.h.in from srcdir. For each ``#undef NAME`` line, substitutes: + - ``#define NAME value`` when the symbol was set via define() / define_unquoted() + - ``/* #undef NAME */`` when it was explicitly undefined (value=None) or not set + + Also appends any pyconf.defines entries that don't appear in pyconfig.h.in + (defines added by our configure that aren't in the standard template). + Falls back to the old from-scratch approach if pyconfig.h.in is not found. + """ + template_path = ( + os.path.join(srcdir, "pyconfig.h.in") if srcdir else "pyconfig.h.in" + ) + if not os.path.exists(template_path): + # Fall back: generate from scratch (no template available) + _write_pyconfig_h_scratch(path) + return + + def _render(name: str) -> str: + if name not in defines: + return f"/* #undef {name} */" + value, desc, quoted = defines[name] + if value is None: + return f"/* #undef {name} */" + if value == "" or value == 0: + return f"#define {name} {value}" + if isinstance(value, int): + return f"#define {name} {value}" + if quoted: + return f'#define {name} "{value}"' + return f"#define {name} {value}" + + # Match both "#undef NAME" and "# undef NAME" (indented, inside #ifndef blocks) + undef_re = re.compile(r"^([ \t]*)#[ \t]*undef[ \t]+(\w+)\s*$") + seen: set[str] = set() + out_lines: list[str] = [ + "/* pyconfig.h. Generated from pyconfig.h.in by configure. */" + ] + with open(template_path) as fh: + for raw in fh: + line = raw.rstrip("\n") + m = undef_re.match(line) + if m: + indent, name = m.group(1), m.group(2) + seen.add(name) + rendered = _render(name) + # Re-apply indentation (for "# undef" inside #ifndef guards) + if indent and rendered.startswith("#define "): + rendered = indent + "# " + rendered[1:] + elif indent and rendered.startswith("/* #undef "): + rendered = indent + rendered + out_lines.append(rendered) + else: + out_lines.append(line) + + # Do not append extras: autoconf config.status only outputs defines that are + # in pyconfig.h.in. Defines not in the template are silently dropped. + + with open(path, "w") as fh: + fh.write("\n".join(out_lines) + "\n") + + +def _write_pyconfig_h_scratch(path: str = "pyconfig.h") -> None: + """Fallback: write pyconfig.h from scratch when no template is available.""" + lines = [ + "/* pyconfig.h — generated by pyconf */", + "", + "#ifndef Py_PYCONFIG_H", + "#define Py_PYCONFIG_H", + "", + ] + for name, entry in defines.items(): + value, description, quoted = entry + if description: + lines.append(f"/* {description} */") + if value is None: + lines.append(f"/* #undef {name} */") + elif value == "" or value == 0: + lines.append(f"#define {name} {value}") + elif isinstance(value, int): + lines.append(f"#define {name} {value}") + elif quoted: + lines.append(f'#define {name} "{value}"') + else: + lines.append(f"#define {name} {value}") + lines.append("") + lines += ["#endif /* Py_PYCONFIG_H */", ""] + with open(path, "w") as fh: + fh.write("\n".join(lines)) + + +def _subst_vars(text: str) -> str: + """Replace all @VAR@ tokens in *text* with values from pyconf.substs. + + Replicates autoconf config.status behaviour: + - When srcdir is "." (in-tree build), VPATH lines whose value reduces to + only ".", "$(srcdir)", or "${srcdir}" are blanked out (leaving an empty + line to preserve line numbers), matching autoconf's ac_vpsub logic. + """ + import re + + def _replace(m: "re.Match[str]") -> str: + key = m.group(1) + val = substs.get(key, m.group(0)) + return str(val) + + result = re.sub(r"@([A-Za-z_][A-Za-z0-9_]*)@", _replace, text) + # Neutralise VPATH when srcdir == "." (autoconf ac_vpsub / config.status): + # remove sole ".", "$(srcdir)", "${srcdir}" entries; blank the line if empty. + srcdir = substs.get("srcdir", "") + if srcdir == ".": + srcdir_tokens = r"(\.|\$\(srcdir\)|\$\{srcdir\})" + + def _neutralise_vpath(m: "re.Match[str]") -> str: + val = m.group(3) + # Strip all srcdir-equivalent colon-separated tokens + cleaned = re.sub( + r"(^|:)" + srcdir_tokens + r"(:|$)", ":", val + ).strip(":") + return "" if not cleaned.strip() else m.group(0) + + result = re.sub( + r"^([ \t]*VPATH[ \t]*=)([ \t]*)(.*)$", + _neutralise_vpath, + result, + flags=re.MULTILINE, + ) + return result + + +def _process_config_files() -> None: + """Read each *.in template and write the substituted output file.""" + files_str = substs.get("_config_files", "") + if not files_str: + return + chmod_x_set = set(substs.get("_config_files_x", "").split()) + abs_top_srcdir = substs.get("abs_srcdir", srcdir or ".") + abs_top_builddir = substs.get("abs_builddir", str(os.path.abspath("."))) + for outfile in files_str.split(): + infile = ( + os.path.join(srcdir, f"{outfile}.in") + if srcdir + else f"{outfile}.in" + ) + if not os.path.exists(infile): + warn(f"config file template not found: {infile}") + continue + with open(infile) as fh: + content = fh.read() + # Compute per-file abs_srcdir/abs_builddir like autoconf does: + # ac_abs_srcdir = abs_top_srcdir + dir-suffix-of-outfile + outdir = os.path.dirname(outfile) + if outdir: + per_file_abs_srcdir = os.path.join(abs_top_srcdir, outdir) + per_file_abs_builddir = os.path.join(abs_top_builddir, outdir) + else: + per_file_abs_srcdir = abs_top_srcdir + per_file_abs_builddir = abs_top_builddir + saved_abs_srcdir = substs.get("abs_srcdir") + saved_abs_builddir = substs.get("abs_builddir") + substs["abs_srcdir"] = per_file_abs_srcdir + substs["abs_builddir"] = per_file_abs_builddir + content = _subst_vars(content) + substs["abs_srcdir"] = saved_abs_srcdir or "" + substs["abs_builddir"] = saved_abs_builddir or "" + if outdir: + os.makedirs(outdir, exist_ok=True) + with open(outfile, "w") as fh: + fh.write(content) + if outfile in chmod_x_set: + import stat + + current = os.stat(outfile).st_mode + os.chmod( + outfile, current | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH + ) + + +def _write_config_status() -> None: + """Write config.status script and its saved state. + + Generates: + - config.status.json: serialized substs and defines so config.status + can regenerate output files without re-running the full configure. + - config.status: a shell script that handles --recheck (re-runs configure) + and file regeneration (re-does @VAR@ substitution). + """ + import json as _json + + # Serialize defines: convert tuples to lists for JSON + serialized_defines = {} + for name, entry in defines.items(): + value, description, quoted = entry + serialized_defines[name] = [value, description, quoted] + + state = { + "substs": dict(substs), + "defines": serialized_defines, + "srcdir": srcdir, + } + with open("config.status.json", "w") as fh: + _json.dump(state, fh, indent=1) + + # Write config.status as a shell script + config_args = substs.get("CONFIG_ARGS", "") + # The script delegates to pyconf._config_status_main() for file generation + script = f"""\ +#!/bin/sh +# Generated by configure. Do not edit. +# +# This script is a minimal replacement for autoconf's config.status. +# It can regenerate output files from their .in templates and re-run +# configure with --recheck. + +CONFIG_ARGS='{config_args}' + +for arg in "$@"; do + case "$arg" in + --recheck) + echo "running configure with args: $CONFIG_ARGS" + exec ./configure $CONFIG_ARGS + ;; + esac +done + +# Regenerate files. If CONFIG_FILES is set in the environment, only +# those files are processed. If positional arguments are given, they +# are treated as the list of files. Otherwise all config files are +# regenerated. +exec python3 {os.path.join(srcdir or ".", "Tools/configure/pyconf.py")} --config-status "$@" +""" + with open("config.status", "w") as fh: + fh.write(script) + import stat + + current = os.stat("config.status").st_mode + os.chmod( + "config.status", current | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH + ) + + +def _config_status_main(argv: list[str]) -> None: + """Entry point when config.status invokes pyconf for file regeneration. + + Loads saved state from config.status.json and regenerates the requested + files (or all config files if none are specified). + + Supports: + - ``./config.status`` — regenerate all config files and pyconfig.h + - ``./config.status Makefile.pre`` — regenerate only Makefile.pre + - ``CONFIG_FILES=Makefile.pre CONFIG_HEADERS= ./config.status`` + """ + import json as _json + + global substs, defines, srcdir + + with open("config.status.json") as fh: + state = _json.load(fh) + + substs = state["substs"] + # Restore defines: convert lists back to tuples + defines = {} + for name, entry in state["defines"].items(): + defines[name] = tuple(entry) + srcdir = state["srcdir"] + + # Determine which files to process + env_files = os.environ.get("CONFIG_FILES") + env_headers = os.environ.get("CONFIG_HEADERS") + + # Positional arguments (non-flag) override the file list + file_args = [a for a in argv if not a.startswith("-")] + + if file_args: + # Regenerate only the specified files + requested = set(file_args) + elif env_files is not None: + # CONFIG_FILES env var specifies which files to process + requested = set(env_files.split()) if env_files else set() + else: + requested = None # means "all" + + # Should we regenerate pyconfig.h? + do_headers = True + if env_headers is not None: + # CONFIG_HEADERS= (empty) means skip headers + do_headers = bool(env_headers) + if file_args: + # If specific files were requested, only do headers if pyconfig.h is listed + assert requested is not None + do_headers = "pyconfig.h" in requested + + if do_headers: + _write_pyconfig_h() + + # Regenerate config files + all_files_str = substs.get("_config_files", "") + if not all_files_str: + return + chmod_x_set = set(substs.get("_config_files_x", "").split()) + + for outfile in all_files_str.split(): + if requested is not None and outfile not in requested: + continue + infile = ( + os.path.join(srcdir, f"{outfile}.in") + if srcdir + else f"{outfile}.in" + ) + if not os.path.exists(infile): + warn(f"config file template not found: {infile}") + continue + with open(infile) as fh: + content = fh.read() + content = _subst_vars(content) + outdir = os.path.dirname(outfile) + if outdir: + os.makedirs(outdir, exist_ok=True) + with open(outfile, "w") as fh: + fh.write(content) + if outfile in chmod_x_set: + import stat + + current = os.stat(outfile).st_mode + os.chmod( + outfile, current | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH + ) + + +def _is_verbose() -> bool: + """Return True if output should be printed (not quiet and not --help mode).""" + return not quiet and not _help_requested + + +def checking(what: str) -> None: + """Print 'checking ...' on stdout without a newline (AC_MSG_CHECKING). + + The matching result() call prints the answer on the same line. + Suppressed when --quiet / -q is active or --help was requested. + """ + global _result_pending + _result_pending = True + if _is_verbose(): + print(f"checking {what}... ", end="", flush=True) + + +def result(value: Any) -> None: + """Print the result of the most recent checking() call (AC_MSG_RESULT). + + Completes the line started by checking(). + Boolean True/False are formatted as 'yes'/'no' to match autoconf behaviour. + Suppressed when --quiet / -q is active or --help was requested. + """ + global _result_pending + _result_pending = False + if _is_verbose(): + if value is True: + value = "yes" + elif value is False: + value = "no" + print(str(value)) + + +checking_fn = checking # alias used by link_check to avoid param shadowing + + +def _flush_result(value: Any) -> None: + """Emit result(value) if a checking() is pending, otherwise do nothing. + + Called by probe functions that follow a bare checking() call. + """ + if _result_pending: + result(value) + + +def _print_cached() -> None: + """Print '(cached) ' inline if a checking() line is pending. + + Matches autoconf's behaviour of printing '(cached) ' between + 'checking ...' and the result value when the answer comes + from the cache file. + """ + if _result_pending and _is_verbose(): + print("(cached) ", end="", flush=True) + + +def warn(msg: str) -> None: + """Print a configure warning to stderr (AC_MSG_WARN).""" + print(f"configure: WARNING: {msg}", file=sys.stderr) + + +def notice(msg: str) -> None: + """Print an informational notice to stdout with script name prefix (AC_MSG_NOTICE).""" + if _is_verbose(): + print(f"configure: {msg}") + + +def error(msg: str) -> None: + """Print an error message to stderr and exit with code 1 (AC_MSG_ERROR).""" + print(f"configure: error: {msg}", file=sys.stderr) + sys.exit(1) + + +def fatal(msg: str) -> None: + """Print a fatal error message to stderr and exit with code 1. + + Alias for error() with a slightly different prefix, matching autoconf's + AC_MSG_FAILURE behaviour. + """ + print(f"configure: fatal error: {msg}", file=sys.stderr) + sys.exit(1) + + +def use_system_extensions() -> None: + """AC_USE_SYSTEM_EXTENSIONS — enable POSIX/XSI/BSD extensions. + + Defines the standard feature-test macros so that headers expose their + full APIs. This mirrors what autoconf's AC_USE_SYSTEM_EXTENSIONS does. + """ + define_unquoted("_ALL_SOURCE", 1, "Enable extensions on AIX 3, Interix.") + define_unquoted("_DARWIN_C_SOURCE", 1, "Enable extensions on Mac OS X.") + define_unquoted( + "_GNU_SOURCE", 1, "Enable GNU extensions on systems that have them." + ) + define_unquoted( + "_HPUX_ALT_XOPEN_SOCKET_API", 1, "Enable extensions on HP-UX." + ) + define_unquoted("_NETBSD_SOURCE", 1, "Enable extensions on NetBSD.") + define_unquoted("_OPENBSD_SOURCE", 1, "Enable extensions on OpenBSD.") + define_unquoted( + "_POSIX_PTHREAD_SEMANTICS", + 1, + "Enable threading extensions on Solaris.", + ) + define_unquoted( + "__STDC_WANT_IEC_60559_ATTRIBS_EXT__", + 1, + "Enable IEC 60559 attribs extensions.", + ) + define_unquoted( + "__STDC_WANT_IEC_60559_BFP_EXT__", + 1, + "Enable IEC 60559 BFP extensions.", + ) + define_unquoted( + "__STDC_WANT_IEC_60559_DFP_EXT__", + 1, + "Enable IEC 60559 DFP extensions.", + ) + define_unquoted( + "__STDC_WANT_IEC_60559_EXT__", 1, "Enable IEC 60559 extensions." + ) + define_unquoted( + "__STDC_WANT_IEC_60559_FUNCS_EXT__", + 1, + "Enable IEC 60559 funcs extensions.", + ) + define_unquoted( + "__STDC_WANT_IEC_60559_TYPES_EXT__", + 1, + "Enable IEC 60559 types extensions.", + ) + define_unquoted( + "__STDC_WANT_LIB_EXT2__", 1, "Enable ISO C 2001 extensions." + ) + define_unquoted( + "__STDC_WANT_MATH_SPEC_FUNCS__", + 1, + "Enable extensions specified in the standard.", + ) + define_unquoted("_TANDEM_SOURCE", 1, "Enable extensions on HP NonStop.") + define_unquoted( + "__EXTENSIONS__", 1, "Enable general extensions on Solaris." + ) + + +def run( + cmd: str, *, vars: dict[str, str] | None = None, **kwargs: Any +) -> subprocess.CompletedProcess: + """Run a shell-like command string, expanding $VAR / ${VAR} references. + + *cmd* is tokenized with shlex.split() (respecting quoting and backslash + escapes), then each token has shell-variable references expanded using + *vars* (defaults to os.environ). The resulting argv list is passed to + subprocess.run() along with any extra *kwargs*. + + This mirrors how configure.ac shell lines work: whitespace separates + tokens, quoting protects spaces inside arguments, and $VAR is substituted + from the environment. Example:: + + pyconf.run("$CPP $CPPFLAGS Misc/platform_triplet.c", + vars={"CPP": "gcc -E", "CPPFLAGS": "-I."}, ...) + # runs: ["gcc", "-E", "-I.", "Misc/platform_triplet.c"] + """ + lookup = vars if vars is not None else dict(os.environ) + expanded = re.sub( + r"\$\{(\w+)\}|\$(\w+)", + lambda m: lookup.get(m.group(1) or m.group(2), ""), + cmd, + ) + argv = shlex.split(expanded) + return subprocess.run(argv, **kwargs) + + +def canonical_host() -> None: + """AC_CANONICAL_HOST equivalent — detect host/build/cross_compiling. + + Uses config.guess and config.sub from the source tree when available, + matching autoconf's behaviour. Falls back to Python's platform module. + """ + global cross_compiling, host, host_cpu, build + + # Locate config.guess/config.sub in the source tree (same directory as + # configure-old, i.e. the project root). + aux_dir = srcdir or "." + config_guess = os.path.join(aux_dir, "config.guess") + config_sub = os.path.join(aux_dir, "config.sub") + + if os.path.isfile(config_guess) and os.access(config_guess, os.X_OK): + try: + raw = subprocess.check_output( + [config_guess], text=True, stderr=subprocess.DEVNULL + ).strip() + # Canonicalize through config.sub if available + if os.path.isfile(config_sub) and os.access(config_sub, os.X_OK): + raw = subprocess.check_output( + [config_sub, raw], text=True, stderr=subprocess.DEVNULL + ).strip() + build = raw + except (subprocess.CalledProcessError, OSError): + build = _fallback_triplet() + else: + build = _fallback_triplet() + + # Parse the triplet: cpu-vendor-os (autoconf splits on '-') + parts = build.split("-", 2) + if len(parts) >= 3: + build_cpu = parts[0] + else: + build_cpu = parts[0] + + # For native builds, host == build + host = build + host_cpu = build_cpu + cross_compiling = False + + +def _fallback_triplet() -> str: + """Construct a host triplet from Python's platform module (fallback).""" + import platform as _platform + + machine = _platform.machine() + system = _platform.system().lower() + release = _platform.release() + # Try to match GNU config.guess output format + if system == "darwin": + return f"{machine}-apple-{system}{release}" + elif system == "linux": + return f"{machine}-pc-{system}-gnu" + else: + return f"{machine}-pc-{system}-gnu" + + +def _find_working_cc(candidates: list[str]) -> str: + """Find the first compiler in *candidates* that can compile a trivial program.""" + src = "int main(void) { return 0; }\n" + for cand in candidates: + if not shutil.which(cand): + continue + try: + with tempfile.TemporaryDirectory() as tmp: + srcf = os.path.join(tmp, "conftest.c") + objf = os.path.join(tmp, "conftest.o") + with open(srcf, "w") as f: + f.write(src) + r = subprocess.run( + f"{cand} -c {shlex.quote(srcf)} -o {shlex.quote(objf)}", + shell=True, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + if r.returncode == 0: + return cand + except OSError: + continue + # Fall back to "cc" even if not verified + return "cc" + + +def find_compiler(cc: str | None = None, cpp: str | None = None) -> None: + """AC_PROG_CC equivalent — find and probe the C compiler. + + On macOS, replicates the configure.ac logic that detects llvm-gcc and + falls back to clang. Sets pyconf.CC, pyconf.CPP, pyconf.GCC, + pyconf.ac_cv_cc_name, pyconf.ac_cv_gcc_compat, and pyconf.ac_cv_prog_cc_g. + """ + global CC, CPP, GCC, ac_cv_cc_name, ac_cv_gcc_compat, ac_cv_prog_cc_g + env_cc = os.environ.get("CC", "") + + if cc: + CC = cc + elif env_cc: + CC = env_cc + else: + # macOS-specific: replicate configure.ac lines 4904-4959 + # Check if gcc is actually llvm-gcc and fall back to clang + if sys.platform == "darwin": + CC = _macos_find_cc() + else: + # Standard AC_PROG_CC search order: gcc, cc + # Verify the compiler can actually compile a trivial program, + # since a compiler may be installed but broken (e.g. FreeBSD + # gcc package without cc1). + CC = _find_working_cc(["gcc", "cc"]) + + CPP = cpp or os.environ.get("CPP", "") or f"{CC} -E" + + # Probe the actual compiler identity by checking --version output, + # not just the binary name. On macOS, /usr/bin/gcc is Apple clang. + _identify_compiler() + ac_cv_prog_cc_g = True + + +def _macos_find_cc() -> str: + """macOS CC selection, matching configure.ac logic. + + Searches PATH for gcc and clang. If both found, checks whether gcc + is actually llvm-gcc (or Apple clang masquerading as gcc) and falls + back to clang. Also sets CXX as a side effect when appropriate. + """ + global CC + found_gcc = None + found_clang = None + for d in os.environ.get("PATH", "").split(os.pathsep): + if not d: + continue + gcc_path = os.path.join(d, "gcc") + clang_path = os.path.join(d, "clang") + if ( + found_gcc is None + and os.path.isfile(gcc_path) + and os.access(gcc_path, os.X_OK) + ): + found_gcc = gcc_path + if ( + found_clang is None + and os.path.isfile(clang_path) + and os.access(clang_path, os.X_OK) + ): + found_clang = clang_path + if found_gcc and found_clang: + break + + if found_gcc and found_clang: + # Check if gcc is llvm-gcc + try: + ver = subprocess.check_output( + [found_gcc, "--version"], text=True, stderr=subprocess.DEVNULL + ) + if "llvm-gcc" in ver: + notice("Detected llvm-gcc, falling back to clang") + return found_clang + except (subprocess.CalledProcessError, OSError): + pass + # gcc found and is not llvm-gcc — use it (AC_PROG_CC default) + return "gcc" + elif not found_gcc and found_clang: + notice("No GCC found, use CLANG") + return found_clang + elif not found_gcc and not found_clang: + # Try xcrun + try: + found_clang = subprocess.check_output( + ["/usr/bin/xcrun", "-find", "clang"], + text=True, + stderr=subprocess.DEVNULL, + ).strip() + if found_clang: + notice("Using clang from Xcode.app") + return found_clang + except (subprocess.CalledProcessError, OSError): + pass + # Default: gcc found, clang not — use gcc + return "gcc" + + +def _identify_compiler() -> None: + """Probe the C compiler's true identity via its --version output. + + On macOS, /usr/bin/gcc is Apple Clang, so just checking the binary + name is not sufficient. This sets ac_cv_cc_name, ac_cv_gcc_compat, + and GCC to match what autoconf's AC_PROG_CC + later checks produce. + """ + global GCC, ac_cv_cc_name, ac_cv_gcc_compat + # Try to get the compiler's self-identification + cc_basename = os.path.basename(CC.split()[0]) if CC else "" + try: + ver = subprocess.check_output( + [CC, "--version"], text=True, stderr=subprocess.DEVNULL + ) + except (subprocess.CalledProcessError, OSError): + ver = "" + + if "clang" in ver.lower(): + ac_cv_cc_name = "clang" + ac_cv_gcc_compat = True + GCC = True # clang is gcc-compatible + elif "clang" in cc_basename: + ac_cv_cc_name = "clang" + ac_cv_gcc_compat = True + GCC = True + elif ( + "gcc" in cc_basename + or "GCC" in ver + or "Free Software Foundation" in ver + ): + ac_cv_cc_name = "gcc" + ac_cv_gcc_compat = True + GCC = True + else: + ac_cv_cc_name = "unknown" + ac_cv_gcc_compat = False + GCC = False + + +def find_install() -> None: + """AC_PROG_INSTALL — find the install program. + + Sets INSTALL, INSTALL_PROGRAM, INSTALL_SCRIPT, INSTALL_DATA in substs. + """ + for candidate in ("ginstall", "install"): + path = shutil.which(candidate) + if path: + substs["INSTALL"] = path + " -c" + break + else: + substs["INSTALL"] = "install -c" + substs.setdefault("INSTALL_PROGRAM", "${INSTALL}") + substs.setdefault("INSTALL_SCRIPT", "${INSTALL}") + substs.setdefault("INSTALL_DATA", "${INSTALL} -m 644") + + +def find_mkdir_p() -> None: + """AC_PROG_MKDIR_P — find mkdir -p equivalent. + + Matches autoconf logic: only use full path if a coreutils/BusyBox mkdir + is found (identified by --version output). Falls back to plain 'mkdir -p'. + """ + # Search PATH (+ /opt/sfw/bin) for coreutils/BusyBox mkdir or gmkdir + search_path = os.environ.get("PATH", "") + os.pathsep + "/opt/sfw/bin" + found = None + for d in search_path.split(os.pathsep): + if not d: + continue + for prog in ("mkdir", "gmkdir"): + p = os.path.join(d, prog) + if not (os.path.isfile(p) and os.access(p, os.X_OK)): + continue + try: + ver = subprocess.check_output( + [p, "--version"], text=True, stderr=subprocess.STDOUT + ) + # autoconf accepts coreutils, BusyBox, or fileutils 4.1 + if ( + "coreutils)" in ver + or "BusyBox " in ver + or "fileutils) 4.1" in ver + ): + found = p + break + except (subprocess.CalledProcessError, OSError): + continue + if found: + break + substs["MKDIR_P"] = f"{found} -p" if found else "mkdir -p" + + +def check_prog(prog: str, path: str | None = None, default: str = "") -> str: + """AC_CHECK_PROG / AC_PATH_TOOL — find a single program in PATH (or *path* if given). + + Returns the full path if found, else *default*. + """ + found = shutil.which(prog, path=path) + return found if found else default + + +def check_progs(progs: list[str], default: str = "") -> str: + """AC_CHECK_PROGS — return the first program found in PATH. + + Returns: first found program name or *default*. + """ + for p in progs: + if shutil.which(p): + return p + return default + + +def check_tools(progs: list[str], default: str = "") -> str: + """Find the first tool (AR, RANLIB, etc.) present in PATH. + + Alias for check_progs(); exists to mirror autoconf's tool-search macros. + """ + return check_progs(progs, default=default) + + +def _confdefs_preamble() -> str: + """Generate #define/#undef lines from current pyconf.defines (like confdefs.h). + + Prepending this to test sources ensures checks see the same definitions + as the real configure would via autoconf's incrementally-built confdefs.h. + """ + lines: list[str] = [] + for name, entry in defines.items(): + value, desc, quoted = entry + if value is None: + lines.append(f"/* #undef {name} */") + elif value == "" or value == 0: + lines.append(f"#define {name} {value}") + elif isinstance(value, int): + lines.append(f"#define {name} {value}") + elif quoted: + lines.append(f'#define {name} "{value}"') + else: + lines.append(f"#define {name} {value}") + return "\n".join(lines) + "\n" if lines else "" + + +def _run_cc(src: str, out: str, cflags: str = "", libs: str = "") -> bool: + """Run CC to compile/link *src* → *out* using shell=True. + + *cflags* goes between CC and the source file. + *libs* goes after the source file (standard linker ordering). + Uses the shell to split CC (so CC="ccache gcc" works) and expand quoting. + Returns True if the compiler exits 0. + """ + # Use vars.CC if available (may include flags like -pthread added by + # setup_pthreads), falling back to the module-level CC. + cc = getattr(vars, "CC", None) or CC + # shlex.quote protects paths that may contain spaces + cmd = f"{cc} {cflags} {shlex.quote(src)} -o {shlex.quote(out)} {libs}" + try: + r = subprocess.run( + cmd, + shell=True, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + return r.returncode == 0 + except OSError: + return False + + +def _compile_test(source: str, extra_flags: list[str] | None = None) -> bool: + """Compile *source* with CC and return True if it succeeds. + + Uses a temporary directory so the working tree is never touched. + Returns False if CC is not set or compilation fails. + Includes both CPPFLAGS and CFLAGS, matching autoconf's AC_COMPILE_IFELSE. + """ + if not CC: + return False + vars_cppflags = getattr(vars, "CPPFLAGS", "") + vars_cflags = getattr(vars, "CFLAGS", "") + flags = " ".join(shlex.quote(f) for f in (extra_flags or [])) + with tempfile.TemporaryDirectory() as tmp: + src = os.path.join(tmp, "conftest.c") + obj = os.path.join(tmp, "conftest.o") + with open(src, "w") as f: + f.write(_confdefs_preamble() + source) + return _run_cc( + src, + obj, + cflags=f"{vars_cppflags} {vars_cflags} {flags} -c".strip(), + ) + + +def _link_test(source: str, extra_flags: list[str] | None = None) -> bool: + """Compile-and-link *source* and return True if it succeeds. + + Automatically includes pyconf.vars.CFLAGS and pyconf.vars.LIBS so that + probes pick up the same flags that the rest of the build uses. + Libraries (-l flags) in extra_flags are separated and placed after the + source file (required by GNU ld); other flags stay before the source. + """ + if not CC: + return False + vars_cflags = getattr(vars, "CFLAGS", "") + vars_cppflags = getattr(vars, "CPPFLAGS", "") + vars_ldflags = getattr(vars, "LDFLAGS", "") + vars_libs = getattr(vars, "LIBS", "") + # Split extra_flags into compiler flags and linker -l/-L/-Wl, flags + pre_flags: list[str] = [] + lib_flags: list[str] = [] + for f in extra_flags or []: + if f.startswith("-l") or f.startswith("-L") or f.startswith("-Wl,"): + lib_flags.append(f) + else: + pre_flags.append(f) + cflags = f"{vars_cppflags} {vars_cflags} {vars_ldflags} {' '.join(shlex.quote(f) for f in pre_flags)}".strip() + libs = f"{' '.join(shlex.quote(f) for f in lib_flags)} {vars_libs}".strip() + with tempfile.TemporaryDirectory() as tmp: + src = os.path.join(tmp, "conftest.c") + exe = os.path.join(tmp, "conftest") + with open(src, "w") as f: + f.write(_confdefs_preamble() + source) + return _run_cc(src, exe, cflags=cflags, libs=libs) + + +def check_compile_flag( + flag: str, extra_flags: list[str] | None = None, extra_cflags: str = "" +) -> bool: + """Return True if CC accepts *flag* (compile-only test). + + Uses a minimal C source file so the test is purely about flag acceptance. + """ + src = "int main(void) { return 0; }\n" + # Split flag in case it contains multiple flags separated by spaces + flag_parts = flag.split() + all_flags = flag_parts + list(extra_flags or []) + extra_cflags.split() + return _compile_test(src, extra_flags=all_flags) + + +def check_linker_flag(flag: str, value: str | None = None) -> str: + """Return *value* (default: *flag*) if the linker accepts *flag*, else ''. + + If *value* is None, returns *flag* itself on success. + """ + src = "int main(void) { return 0; }\n" + if _link_test(src, extra_flags=[flag]): + return value if value is not None else flag + return "" + + +def compile_check( + *, + description: str = "", + preamble: str = "", + includes: list[str] | None = None, + body: str = "", + program: str = "", + cc: str = "", + extra_flags: list[str] | None = None, + extra_cflags: str = "", + cache_var: str = "", + then: Any = None, + otherwise: Any = None, + else_: Any = None, +) -> Any: + """AC_COMPILE_IFELSE — test if a C program compiles successfully. + + Builds source from *preamble*/*includes*/*body* (AC_COMPILE_IFELSE style) + or from *program* directly. Optionally uses *cc* instead of CC and + *extra_flags* added to the compiler invocation. + + *then* / *otherwise* (or *else_*) may be callables (called on success/failure) + or plain values (returned on success/failure). Returns True/False when neither + is given; returns the chosen value when one of them is a non-callable. + """ + inc_lines = "".join(f"#include <{h}>\n" for h in (includes or [])) + if program: + src = ( + program + if program.strip().startswith("#") or "main" in program + else (f"int main(void) {{\n{program}\nreturn 0;\n}}\n") + ) + else: + # Ensure body ends with a semicolon so it's valid C inside main() + body_s = body.rstrip() + if body_s and not body_s.endswith(";") and not body_s.endswith("}"): + body_s += ";" + src = f"{preamble}\n{inc_lines}\nint main(void) {{\n{body_s}\nreturn 0;\n}}\n" + + flags = list(extra_flags or []) + extra_cflags.split() + if cc: + # Override CC temporarily for this test + saved = globals().get("CC", "") + globals()["CC"] = cc + ok = _compile_test(src, extra_flags=flags) + globals()["CC"] = saved + else: + ok = _compile_test(src, extra_flags=flags) + + else_val = otherwise if otherwise is not None else else_ + chosen = then if ok else else_val + if callable(chosen): + chosen() + return ok + if chosen is not None: + return chosen + return ok + + +def link_check( + prologue: str = "", + body: str = "", + *, + preamble: str = "", + source: str = "", + includes: list[str] | None = None, + extra_cflags: str = "", + extra_libs: str = "", + cache_var: str = "", + checking: str = "", +) -> bool: + """AC_LINK_IFELSE — test if code compiles and links. Returns bool. + + Two calling conventions are supported: + link_check(prologue, body, checking="for foo") — body goes inside main() + link_check(description, full_source) — full_source used as-is + + In the second form, if *body* contains 'main' or starts with '#', it is + treated as a complete source file and *prologue* is treated as *checking*. + *source* keyword always overrides and is used as-is. + *extra_cflags* / *extra_libs* are added to the compile/link command. + """ + # Detect (description, full_source) calling convention: + # link_check("some description", """#include... int main...""") + body_is_source = ( + body.lstrip().startswith("#") or "main" in body or "int main" in body + ) + checking_label = checking + if body and body_is_source and not source and not preamble: + # Treat prologue as the checking description, body as full source + if not checking_label: + checking_label = prologue + source = body + prologue = "" + body = "" + + # Detect when prologue is itself a complete program (contains int main) + # link_check("""#include... int main...""") — no body + prologue_is_source = ( + not body + and not source + and not preamble + and ("int main" in prologue or "return 0;" in prologue) + ) + if prologue_is_source: + source = prologue + prologue = "" + + if checking_label: + checking_fn(checking_label) + pre = preamble or prologue + if source: + src = source + else: + inc_lines = "".join(f"#include <{h}>\n" for h in (includes or [])) + src = ( + f"{pre}\n{inc_lines}\nint main(void) {{\n{body};\nreturn 0;\n}}\n" + ) + flags = extra_cflags.split() + extra_libs.split() + ok = _link_test(src, extra_flags=flags if flags else None) + if checking_label: + result(ok) + return ok + + +def try_link(source: str, extra_flags: list[str] | None = None) -> bool: + """Compile-and-link *source*; return True on success.""" + return _link_test(source, extra_flags=extra_flags) + + +def compile_link_check(description: str, compiler: str, source: str) -> str: + """Compile-and-link *source* using the given *compiler* command. + + Returns 'yes' on success, 'no' on failure. + """ + with tempfile.TemporaryDirectory() as tmp: + src = os.path.join(tmp, "conftest.c") + exe = os.path.join(tmp, "conftest") + with open(src, "w") as f: + f.write(source) + cmd = f"{compiler} {shlex.quote(src)} -o {shlex.quote(exe)}" + try: + result_proc = subprocess.run( + cmd, + shell=True, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + return "yes" if result_proc.returncode == 0 else "no" + except OSError: + return "no" + + +def run_check( + description_or_source: str, + source: str = "", + *, + cross_default: Any = None, + default: Any = None, + cross_compiling_default: Any = None, + cross_compiling_result: Any = None, + success: Any = None, + failure: Any = None, + on_success_return: Any = None, + on_failure_return: Any = None, + extra_cflags: str = "", + extra_libs: str = "", + cache_var: str = "", +) -> Any: + """AC_RUN_IFELSE — compile, link, and run a C program. + + May be called as run_check(source) or run_check(description, source). + Returns *success* if the program exits 0, *failure* otherwise. + Returns *cross_default* (or *default* if given) when cross-compiling. + *extra_cflags* and *extra_libs* are added to the compile/link command. + """ + code = source if source else description_or_source + # Resolve alias params; default to True/False so callers can use `if result:` + _success = ( + True + if on_success_return is None and success is None + else (on_success_return if on_success_return is not None else success) + ) + _failure = ( + False + if on_failure_return is None and failure is None + else (on_failure_return if on_failure_return is not None else failure) + ) + + def _first_set(*vals: Any) -> Any: + for v in vals: + if v is not None: + return v + return False + + xdefault = _first_set( + default, cross_compiling_result, cross_compiling_default, cross_default + ) + if cross_compiling: + return xdefault + # Include vars.CFLAGS, vars.LIBS etc. to match autoconf's AC_RUN_IFELSE + # which inherits the accumulated compiler/linker flags (e.g. -pthread). + vars_cflags = getattr(vars, "CFLAGS", "") + vars_cppflags = getattr(vars, "CPPFLAGS", "") + vars_ldflags = getattr(vars, "LDFLAGS", "") + vars_libs = getattr(vars, "LIBS", "") + all_cflags = ( + f"{vars_cppflags} {vars_cflags} {vars_ldflags} {extra_cflags}".strip() + ) + all_libs = f"{extra_libs} {vars_libs}".strip() + with tempfile.TemporaryDirectory() as tmp: + src = os.path.join(tmp, "conftest.c") + exe = os.path.join(tmp, "conftest") + with open(src, "w") as f: + f.write(_confdefs_preamble() + code) + try: + if not _run_cc(src, exe, cflags=all_cflags, libs=all_libs): + return _failure + run = subprocess.run( + [exe], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL + ) + ret = _success if run.returncode == 0 else _failure + return ret + except OSError: + return _failure + + +def run_check_with_cc_flag( + description: str, flag: str, source: str, cross_default: bool = False +) -> bool: + """Compile+run *source* with an extra CC *flag*. Returns bool. + + Returns *cross_default* when cross-compiling. + """ + if cross_compiling: + return cross_default + with tempfile.TemporaryDirectory() as tmp: + src = os.path.join(tmp, "conftest.c") + exe = os.path.join(tmp, "conftest") + with open(src, "w") as f: + f.write(source) + try: + if not _run_cc(src, exe, cflags=shlex.quote(flag)): + return False + run = subprocess.run( + [exe], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL + ) + ok = run.returncode == 0 + return ok + except OSError: + return False + + +def run_program_output( + source: str, + extra_cflags: str = "", + extra_ldflags: str = "", + extra_libs: str = "", +) -> str: + """Compile, link, run *source*, and return its stdout. Returns '' on failure.""" + if cross_compiling: + return "" + with tempfile.TemporaryDirectory() as tmp: + src = os.path.join(tmp, "conftest.c") + exe = os.path.join(tmp, "conftest") + with open(src, "w") as f: + f.write(source) + cflags = f"{extra_cflags} {extra_ldflags}".strip() + try: + if not _run_cc(src, exe, cflags=cflags, libs=extra_libs): + return "" + run = subprocess.run([exe], capture_output=True, text=True) + return run.stdout if run.returncode == 0 else "" + except OSError: + return "" + + +# --------------------------------------------------------------------------- +# Header / struct / member probes +# --------------------------------------------------------------------------- + + +def _header_name_to_define(header: str) -> str: + """Convert 'sys/types.h' → 'HAVE_SYS_TYPES_H'.""" + return "HAVE_" + header.upper().replace("/", "_").replace( + ".", "_" + ).replace("-", "_") + + +def _ac_includes_default() -> str: + """Generate the AC_INCLUDES_DEFAULT preamble. + + This matches autoconf's behavior: conditionally include standard system + headers that have already been detected. Many system headers on BSDs + require sys/types.h or other standard headers to be included first. + """ + # These are the headers autoconf's AC_INCLUDES_DEFAULT uses. + _default_headers = [ + ("HAVE_STDIO_H", "stdio.h"), + ("HAVE_STDLIB_H", "stdlib.h"), + ("HAVE_STRING_H", "string.h"), + ("HAVE_INTTYPES_H", "inttypes.h"), + ("HAVE_STDINT_H", "stdint.h"), + ("HAVE_STRINGS_H", "strings.h"), + ("HAVE_SYS_TYPES_H", "sys/types.h"), + ("HAVE_SYS_STAT_H", "sys/stat.h"), + ("HAVE_UNISTD_H", "unistd.h"), + ] + lines: list[str] = [] + for have_def, hdr in _default_headers: + entry = defines.get(have_def) + if entry is not None and entry[0] == 1: + lines.append(f"#include <{hdr}>") + return "\n".join(lines) + "\n" if lines else "" + + +def check_header( + header: str, + extra_cflags: str = "", + extra_includes: str = "", + autodefine: bool = True, +) -> bool: + """Check for a single C header. Returns True if found; defines HAVE_
. + + *extra_cflags*: extra compiler flags (e.g. -I paths) for this test. + *extra_includes*: extra #include lines prepended to the test source. + *autodefine*: if False, do not automatically define HAVE_
when found. + (Use when the caller has a custom action, like AC_CHECK_HEADER with non-empty action.) + Caches results in pyconf.cache under key 'ac_cv_header_'. + + Like autoconf's AC_CHECK_HEADERS, the default includes (stdio.h, + stdlib.h, sys/types.h, etc.) are prepended to the test source unless + *extra_includes* already supplies a custom preamble. + """ + if not _RE_HEADER_NAME.match(header): + raise ValueError( + f"check_header: invalid header name {header!r} " + f"(must match [a-z0-9][a-z0-9_./+-]*)" + ) + cache_key = "ac_cv_header_" + header.replace("/", "_").replace( + ".", "_" + ).replace("-", "_") + define_name = _header_name_to_define(header) + # Print "checking for
..." unless the caller already started one. + own_checking = not _result_pending + if own_checking: + checking(f"for {header}") + if cache_key in cache and not extra_cflags and not extra_includes: + _print_cached() + found = cache[cache_key] + setattr(vars, cache_key, found) + _header_map[define_name] = header + if found and autodefine: + define( + define_name, + 1, + f"Define to 1 if you have the <{header}> header file.", + ) + if own_checking: + result(found) + return found + # Use AC_INCLUDES_DEFAULT preamble when no custom extra_includes given. + preamble = extra_includes if extra_includes else _ac_includes_default() + src = f"{preamble}\n#include <{header}>\nint main(void) {{ return 0; }}\n" + flags = extra_cflags.split() if extra_cflags else None + found = _compile_test(src, extra_flags=flags) + if not extra_cflags and not extra_includes: + cache[cache_key] = found + setattr(vars, cache_key, found) + # Populate reverse map for conditional_headers lookup + _header_map[define_name] = header + if found and autodefine: + define( + define_name, + 1, + f"Define to 1 if you have the <{header}> header file.", + ) + if own_checking: + result(found) + return found + + +def check_headers( + *headers: str | list, prologue: str = "", defines: dict | None = None +) -> bool: + """AC_CHECK_HEADERS — check multiple headers; define HAVE_
for each found. + + May be called as check_headers("a.h", "b.h") or check_headers(["a.h", "b.h"]). + *prologue*: extra C code placed before the #include under test. + *defines*: optional dict to record results (header → True/False). + Returns True if ALL listed headers are found. + """ + flat: list[str] = [] + for h in headers: + if isinstance(h, list): + flat.extend(h) + else: + flat.append(h) + all_found = True + for h in flat: + found = check_header(h, extra_includes=prologue) + all_found = all_found and found + if defines is not None: + defines[h] = found + return all_found + + +def check_define(header: str, define_name: str) -> bool: + """Check if macro *define_name* is #defined in *header*. Returns bool.""" + src = ( + f"#include <{header}>\n" + f"#ifndef {define_name}\n" + f"#error not defined\n" + f"#endif\n" + f"int main(void) {{ return 0; }}\n" + ) + return _compile_test(src) + + +def check_member(member: str, includes: list[str] | None = None) -> bool: + """AC_CHECK_MEMBER — check for a struct.field member. Returns bool. + + *member* is 'struct_name.field', e.g. 'struct stat.st_blksize'. + Defines HAVE__ as a side-effect if found. + """ + if not _RE_MEMBER_NAME.match(member): + raise ValueError( + f"check_member: invalid member {member!r} " + f"(must match [a-z_][a-z0-9_ ]*.field)" + ) + parts = member.split(".", 1) + if len(parts) != 2: + return False + struct_name, field = parts + inc_lines = "".join(f"#include <{h}>\n" for h in (includes or [])) + src = ( + f"{inc_lines}\n" + f"int main(void) {{\n" + f" {struct_name} s;\n" + f" (void)s.{field};\n" + f" return 0;\n" + f"}}\n" + ) + found = _compile_test(src) + define_name = ( + "HAVE_" + struct_name.upper().replace(" ", "_") + "_" + field.upper() + ) + if found: + define(define_name, 1, f"Define to 1 if '{member}' exists.") + return found + + +def check_members( + *members: str | list, includes: list[str] | None = None +) -> None: + """AC_CHECK_MEMBERS — check multiple struct members; define HAVE_ for each. + + May be called as check_members("a.b", "c.d") or check_members(["a.b", "c.d"]). + """ + flat: list[str] = [] + for m in members: + if isinstance(m, list): + flat.extend(m) + else: + flat.append(m) + for m in flat: + check_member(m, includes=includes) + + +def check_struct_tm() -> None: + """AC_STRUCT_TM — Check struct tm for tm_zone member; defines HAVE_STRUCT_TM_TM_ZONE. + + AC_STRUCT_TM only checks tm_zone, not tm_gmtoff. + Also defines HAVE_TM_ZONE if tm_zone is present (autoconf compat). + """ + if check_member("struct tm.tm_zone", includes=["time.h"]): + define("HAVE_TM_ZONE", 1, "Define to 1 if your struct tm has tm_zone.") + + +def check_struct_timezone() -> None: + """Check for 'struct timezone'; defines HAVE_STRUCT_TIMEZONE if present.""" + src = ( + "#include \n" + "int main(void) { struct timezone tz; (void)tz; return 0; }\n" + ) + if _compile_test(src): + define( + "HAVE_STRUCT_TIMEZONE", 1, "Define to 1 if struct timezone exists." + ) + + +# --------------------------------------------------------------------------- +# Type / symbol probes +# --------------------------------------------------------------------------- + + +def _type_to_define(type_: str) -> str: + """Convert 'unsigned long long' → 'UNSIGNED_LONG_LONG'.""" + return type_.upper().replace(" ", "_").replace("*", "P").replace("/", "_") + + +def check_sizeof( + type_: str, + default: int | None = None, + headers: list[str] | None = None, + includes: list[str] | None = None, +) -> int: + """AC_CHECK_SIZEOF — determine sizeof(*type_*). + + Compiles and runs a tiny program that prints the size. On failure or when + cross-compiling, returns *default* (or 0). + Defines SIZEOF_ as a side-effect. + *headers* lists extra headers to include in the test program. + """ + cache_key = "ac_cv_sizeof_" + _type_to_define(type_).lower() + own_checking = not _result_pending + if own_checking: + checking(f"for sizeof {type_}") + if cache_key in cache: + _print_cached() + size = int(cache[cache_key]) + define_name = "SIZEOF_" + _type_to_define(type_) + define( + define_name, size, f"The size of `{type_}', as computed by sizeof." + ) + if own_checking: + result(str(size)) + return size + extra_includes = "".join( + f"#include <{h}>\n" for h in (headers or includes or []) + ) + src = ( + "#include \n" + "#include \n" + "#include \n" + extra_includes + "int main(void) {\n" + f' printf("%zu\\n", sizeof({type_}));\n' + " return 0;\n" + "}\n" + ) + output_str = run_program_output(src) + if output_str.strip().isdigit(): + size = int(output_str.strip()) + else: + size = default if default is not None else 0 + cache[cache_key] = str(size) + define_name = "SIZEOF_" + _type_to_define(type_) + define(define_name, size, f"The size of `{type_}', as computed by sizeof.") + if own_checking: + result(str(size)) + return size + + +def check_alignof(type_: str) -> int: + """AC_CHECK_ALIGNOF — determine alignment of *type_*. + + Returns alignment as int; defines ALIGNOF_ as a side-effect. + """ + cache_key = "ac_cv_alignof_" + _type_to_define(type_).lower() + own_checking = not _result_pending + if own_checking: + checking(f"for alignof {type_}") + if cache_key in cache: + _print_cached() + alignment = int(cache[cache_key]) + define_name = "ALIGNOF_" + _type_to_define(type_) + define( + define_name, + alignment, + f"The alignment of `{type_}', as computed by _Alignof.", + ) + if own_checking: + result(str(alignment)) + return alignment + src = ( + "#include \n" + "#include \n" + "int main(void) {\n" + f' printf("%zu\\n", _Alignof({type_}));\n' + " return 0;\n" + "}\n" + ) + output_str = run_program_output(src) + if output_str.strip().isdigit(): + alignment = int(output_str.strip()) + else: + alignment = 0 + cache[cache_key] = str(alignment) + define_name = "ALIGNOF_" + _type_to_define(type_) + define( + define_name, + alignment, + f"The alignment of `{type_}', as computed by _Alignof.", + ) + if own_checking: + result(str(alignment)) + return alignment + + +def check_type( + name: str, + fallback_define: tuple | None = None, + headers: list[str] | None = None, + extra_includes: str | list[str] = "", +) -> bool: + """AC_CHECK_TYPE — check for C type *name*. + + *fallback_define*: (alias, base_type, desc) — if the type is absent, emit + ``typedef base_type alias;`` by calling define(). + *extra_includes*: extra header string(s) prepended to the test source. + Returns True if the type exists. + """ + inc_lines = "".join(f"#include <{h}>\n" for h in (headers or [])) + if isinstance(extra_includes, list): + extra_inc_str = "".join(f"#include <{h}>\n" for h in extra_includes) + else: + extra_inc_str = extra_includes + src = ( + f"{inc_lines}\n" + f"{extra_inc_str}\n" + f"int main(void) {{ {name} x; (void)x; return 0; }}\n" + ) + found = _compile_test(src) + if found: + # AC_CHECK_TYPES defines HAVE_ when found + have_name = "HAVE_" + _type_to_define(name) + define( + have_name, 1, f"Define to 1 if the system has the type `{name}'." + ) + elif fallback_define is not None: + alias, base_type, desc = fallback_define + define(alias, base_type, desc) + return found + + +def check_c_const() -> None: + """AC_C_CONST — check for const keyword; defines 'const' to empty if missing.""" + src = "int main(void) {\n const int x = 0;\n (void)x;\n return 0;\n}\n" + if not _compile_test(src): + define( + "const", + "", + "Define to empty if 'const' does not conform to ANSI C.", + ) + + +def check_c_bigendian() -> None: + """AC_C_BIGENDIAN — detect byte order; defines WORDS_BIGENDIAN if big-endian.""" + src = ( + "#include \n" + "int main(void) {\n" + " unsigned int x = 1;\n" + " unsigned char *p = (unsigned char *)&x;\n" + ' printf("%d\\n", p[0] == 0 ? 1 : 0);\n' + " return 0;\n" + "}\n" + ) + output_str = run_program_output(src).strip() + if output_str == "1": + define( + "WORDS_BIGENDIAN", + 1, + "Define to 1 if your processor stores words big-endian.", + ) + + +def ax_c_float_words_bigendian( + on_big: Any = None, on_little: Any = None, on_unknown: Any = None +) -> None: + """Check float word ordering; calls on_big/on_little/on_unknown callbacks.""" + src = ( + "#include \n" + "int main(void) {\n" + " double d = 1.0;\n" + " unsigned char *p = (unsigned char *)&d;\n" + " /* IEEE 754 double 1.0 = 3FF0000000000000 hex.\n" + " * big-endian: p[0]==0x3f (MSB first)\n" + " * little-endian: p[7]==0x3f (LSB first, MSB last)\n" + " */\n" + ' if (p[0] == 0x3f) { printf("big\\n"); }\n' + ' else if (p[7] == 0x3f) { printf("little\\n"); }\n' + ' else { printf("unknown\\n"); }\n' + " return 0;\n" + "}\n" + ) + output_str = run_program_output(src).strip() + if output_str == "big" and callable(on_big): + on_big() + elif output_str == "little" and callable(on_little): + on_little() + elif callable(on_unknown): + on_unknown() + + +# --------------------------------------------------------------------------- +# Function / declaration probes +# --------------------------------------------------------------------------- + + +def check_func( + func: str, + headers: list[str] | None = None, + includes: list[str] | None = None, + conditional_headers: list[str] | None = None, + define: str = "", + body: str = "", + autodefine: bool = True, +) -> bool: + """AC_CHECK_FUNC — check for C function *func*. Returns bool. + + *headers* / *includes*: headers to include in the test. + *conditional_headers*: list of HAVE_* define names; each header is only + included when the corresponding define is set. + *define*: override the define name written on success (default: HAVE_). + *body*: custom function-call expression to use in main() (default: func()). + Defines HAVE_ (or *define*) as a side-effect if found. + Caches results in pyconf.cache. + """ + if not _RE_FUNC_NAME.match(func): + raise ValueError( + f"check_func: invalid function name {func!r} " + f"(must match [a-z_][a-z0-9_]*)" + ) + cache_key = f"ac_cv_func_{func}" + own_checking = not _result_pending + if own_checking: + checking(f"for {func}") + if cache_key in cache: + _print_cached() + found = cache[cache_key] + setattr(vars, cache_key, found) + define_name = define if define else "HAVE_" + func.upper() + if found and autodefine: + define_unquoted( + define_name, + 1, + f"Define to 1 if you have the `{func}' function.", + ) + if own_checking: + result(found) + return found + all_headers = list(headers or []) + list(includes or []) + # Build the set of headers that are covered by conditional_headers, so we + # don't unconditionally include a header that may not exist on this system. + cond_header_paths = set() + for cond_h in conditional_headers or []: + path = _header_map.get(cond_h, "") + if path: + cond_header_paths.add(path) + # Only unconditionally include headers NOT already in conditional_headers. + unconditional = [h for h in all_headers if h not in cond_header_paths] + inc_lines = "".join(f"#include <{h}>\n" for h in unconditional) + cond_lines = "" + for cond_h in conditional_headers or []: + # cond_h is like "HAVE_SYS_MMAN_H" → header "sys/mman.h" + # Look up the original header path from the defines/header_map dict. + h = _header_map.get(cond_h, "") + if not h: + # Fallback: HAVE_SYS_MMAN_H → sys_mman_h → sys/mman.h + # Strip HAVE_ prefix and _H suffix, lowercase, replace _ with / + # for known directory prefixes. + raw = cond_h.removeprefix("HAVE_").lower() + if raw.endswith("_h"): + raw = raw[:-2] + # Replace first _ with / if the prefix is a known directory + known_dirs = { + "sys", + "linux", + "netinet", + "netpacket", + "net", + "arpa", + "machine", + "asm", + "bluetooth", + "readline", + "editline", + "openssl", + "db", + "gdbm", + "uuid", + "pthread", + } + parts = raw.split("_", 1) + if len(parts) == 2 and parts[0] in known_dirs: + h = parts[0] + "/" + parts[1].replace("_", "/", 0) + ".h" + else: + h = raw.replace("_", "/") + ".h" + cond_lines += f"#ifdef {cond_h}\n#include <{h}>\n#endif\n" + # Two strategies matching autoconf: + # - With headers (PY_CHECK_FUNC style): compile-only, take address of func + # ("void *x = func") — requires real prototype from headers. + # - Without headers (AC_CHECK_FUNC style): link test with stub prototype + # ("char func(); func()") — works even without a real declaration. + if body: + call = body + elif all_headers or cond_lines: + call = f"(void)(&{func})" + else: + call = f"{func}()" + # Only emit a conflicting prototype when no real headers are included; + # with headers, rely on the real declaration to avoid conflicts. + if all_headers or cond_lines: + proto = "" + else: + proto = ( + f"/* Override any GCC internal prototype to avoid an error. */\n" + f'#ifdef __cplusplus\nextern "C"\n#endif\n' + f"char {func}();\n" + ) + src = ( + f"{inc_lines}{cond_lines}\n" + f"{proto}" + f"int main(void) {{ {call}; return 0; }}\n" + ) + # With headers: compile-only (PY_CHECK_FUNC style, address-of check). + # Without headers: link test (AC_CHECK_FUNC style, stub + call). + if all_headers or cond_lines: + found = _compile_test(src) + else: + found = _link_test(src) + cache[cache_key] = found + setattr(vars, cache_key, found) + define_name = define if define else "HAVE_" + func.upper() + if found and autodefine: + define_unquoted( + define_name, 1, f"Define to 1 if you have the `{func}' function." + ) + if own_checking: + result(found) + return found + + +def check_funcs(funcs: list[str], headers: list[str] | None = None) -> None: + """AC_CHECK_FUNCS — check multiple functions; define HAVE_ for each found.""" + for f in funcs: + check_func(f, headers=headers) + + +def check_decl( + decl: str, + includes: list[str] | None = None, + extra_includes: list[str] | None = None, + on_found: Any = None, + on_notfound: Any = None, +) -> bool: + """AC_CHECK_DECL — check if declaration/macro *decl* is available. + + *includes* / *extra_includes*: headers to include in the test. + Calls *on_found()* or *on_notfound()* callbacks. Returns bool. + """ + if not _RE_DECL_NAME.match(decl): + raise ValueError( + f"check_decl: invalid declaration name {decl!r} " + f"(must match [A-Za-z_][A-Za-z0-9_]*)" + ) + all_includes = list(includes or []) + list(extra_includes or []) + inc_lines = "".join(f"#include <{h}>\n" for h in all_includes) + src = f"{inc_lines}\nint main(void) {{\n (void){decl};\n return 0;\n}}\n" + found = _compile_test(src) + # AC_CHECK_DECL always writes HAVE_DECL_ as 0 or 1 + define( + "HAVE_DECL_" + decl.upper(), + 1 if found else 0, + f"Define to 1 if you have the declaration of `{decl}'.", + ) + if found and callable(on_found): + on_found() + elif not found and callable(on_notfound): + on_notfound() + return found + + +def check_decls( + decls: list[str] | str, + includes: list[str] | None = None, + extra_includes: list[str] | None = None, +) -> None: + """AC_CHECK_DECLS — check multiple declarations; define HAVE_DECL_ for each. + + *decls* may be a list of names or a single name string. + """ + names = [decls] if isinstance(decls, str) else decls + all_includes = list(includes or []) + list(extra_includes or []) + for d in names: + found = check_decl(d, includes=all_includes) + define( + "HAVE_DECL_" + d.upper(), + 1 if found else 0, + f"Define to 1 if you have the declaration of `{d}'.", + ) + + +# --------------------------------------------------------------------------- +# Library probes +# --------------------------------------------------------------------------- + + +def check_lib( + lib: str, + func: str, + extra_cflags: str = "", + extra_libs: str = "", + libs_also: list[str] | None = None, +) -> bool: + """AC_CHECK_LIB — check if *lib* provides *func*. Returns bool. + + *extra_cflags* / *extra_libs* are added to the compile/link invocation. + *libs_also*: additional library names to try alongside *lib*. + Does NOT automatically add -l to LDFLAGS; the caller must do that + if the result is True. + """ + src = f"char {func}();\nint main(void) {{ return {func}(); }}\n" + also = " ".join(f"-l{lib_name}" for lib_name in (libs_also or [])) + flags = ( + extra_cflags.split() + [f"-l{lib}"] + extra_libs.split() + also.split() + ) + found = _link_test(src, extra_flags=flags) + # Set ac_cv_lib__ cache variable (autoconf convention) + cache_key = f"ac_cv_lib_{lib}_{func}" + cache[cache_key] = found + setattr(vars, cache_key, found) + return found + + +def search_libs( + func: str, libs: list[str], other_libs: str = "", required: bool = True +) -> str: + """AC_SEARCH_LIBS — find first library that provides *func*. + + Returns 'none required' if found in default libs, '-l' if found in + one of *libs*. When *required* is True (default) and the function is not + found anywhere, raises SystemExit. When *required* is False, returns "" + (falsy) instead. + Also adds the found library to vars.LIBS (like AC_SEARCH_LIBS does). + The return value is always truthy on success. + """ + # First check if already available without extra -l + src = f"char {func}();\nint main(void) {{ return {func}(); }}\n" + extra = other_libs.split() if other_libs else [] + if _link_test(src, extra_flags=extra): + return "none required" + for lib in libs: + if _link_test(src, extra_flags=extra + [f"-l{lib}"]): + found_flag = f"-l{lib}" + # Add to vars.LIBS like AC_SEARCH_LIBS does + cur_libs = getattr(vars, "LIBS", "") + setattr(vars, "LIBS", f"{found_flag} {cur_libs}".strip()) + return found_flag + if required: + error(f"required function '{func}' not found in any of: {libs}") + return "" + + +def replace_funcs(funcs: list[str]) -> None: + """AC_REPLACE_FUNCS — check each func; note which need replacement. + + Records missing functions in pyconf.substs['LIBOBJS'] (space-separated). + """ + missing = substs.get("LIBOBJS", "").split() + for func in funcs: + if not check_func(func): + missing.append(f"{func}.o") + substs["LIBOBJS"] = " ".join(missing) + + +def pkg_check_modules(pkg_var: str, module_spec: str) -> Any: + """PKG_CHECK_MODULES — query pkg-config for *module_spec*. + + Returns a SimpleNamespace with .cflags and .libs on success, None if + pkg-config is unavailable or the module is not found. + Sets _CFLAGS and _LIBS in pyconf.substs. + """ + pkg_config = shutil.which("pkg-config") + if not pkg_config: + return None + try: + cflags = subprocess.check_output( + [pkg_config, "--cflags", module_spec], + stderr=subprocess.DEVNULL, + text=True, + ).strip() + libs = subprocess.check_output( + [pkg_config, "--libs", module_spec], + stderr=subprocess.DEVNULL, + text=True, + ).strip() + except subprocess.CalledProcessError: + return None + substs[f"{pkg_var}_CFLAGS"] = cflags + substs[f"{pkg_var}_LIBS"] = libs + setattr(vars, f"{pkg_var}_CFLAGS", cflags) + setattr(vars, f"{pkg_var}_LIBS", libs) + ns = types.SimpleNamespace(cflags=cflags, libs=libs) + return ns + + +def check_emscripten_port(pkg_var: str, emport_args: str) -> None: + """Check for an Emscripten port (e.g. USE_ZLIB). Sets CFLAGS/LDFLAGS. + + Only active when CC is emcc; otherwise a no-op. + """ + if "emcc" not in CC: + return + flag = ( + f"-s{emport_args}" if not emport_args.startswith("-") else emport_args + ) + existing_cflags = substs.get("CFLAGS", "") + existing_ldflags = substs.get("LDFLAGS", "") + substs["CFLAGS"] = f"{existing_cflags} {flag}".strip() + substs["LDFLAGS"] = f"{existing_ldflags} {flag}".strip() + + +# --------------------------------------------------------------------------- +# Stdlib module registration +# --------------------------------------------------------------------------- + +# Internal registry: name → dict of module metadata (insertion-ordered) +_stdlib_modules: dict[str, dict[str, Any]] = {} +# Pending na flags from stdlib_module_set_na() for not-yet-registered modules. +# These are applied when stdlib_module() is called, preserving insertion order. +_stdlib_modules_pending_na: set[str] = set() + + +def stdlib_module( + name: str, supported: bool = True, enabled: bool = True, **kwargs: Any +) -> None: + """PY_STDLIB_MOD — register a stdlib extension module with full options. + + kwargs may include: sources, headers, cflags, ldflags, depends, etc. + Stores metadata in pyconf._stdlib_modules[name]. + Preserves any 'na' flag set by a prior stdlib_module_set_na() call. + """ + # Check both already-registered entries and the pending-na set + prev_na = ( + _stdlib_modules.get(name, {}).get("na", False) + or name in _stdlib_modules_pending_na + ) + _stdlib_modules_pending_na.discard(name) + _stdlib_modules[name] = { + "supported": supported, + "enabled": enabled, + **kwargs, + } + if prev_na: + _stdlib_modules[name]["na"] = True + _stdlib_modules[name]["supported"] = False + + +_UNSET = object() # sentinel for "argument not provided" + + +def stdlib_module_simple( + name: str, cflags: Any = _UNSET, ldflags: Any = _UNSET +) -> None: + """PY_STDLIB_MOD_SIMPLE — register an always-available stdlib module. + + Only records cflags/ldflags when they are explicitly provided (matching + autoconf m4_ifblank behaviour: args not provided → no CFLAGS/LDFLAGS line). + """ + kwargs: dict[str, Any] = {} + if cflags is not _UNSET: + kwargs["cflags"] = cflags + if ldflags is not _UNSET: + kwargs["ldflags"] = ldflags + stdlib_module(name, supported=True, enabled=True, **kwargs) + + +def stdlib_module_set_na(names: list[str]) -> None: + """Mark stdlib modules as not available (N/A) on this platform. + + For already-registered modules: sets supported=False and na=True in place + (preserving insertion order). + For not-yet-registered modules: stores the flag in _stdlib_modules_pending_na + so that the insertion order is determined by the later stdlib_module() call, + matching autoconf's behaviour where module ordering follows PY_STDLIB_MOD. + """ + for name in names: + if name in _stdlib_modules: + _stdlib_modules[name]["supported"] = False + _stdlib_modules[name]["na"] = True + else: + _stdlib_modules_pending_na.add(name) + + +# --------------------------------------------------------------------------- +# Shell / misc +# --------------------------------------------------------------------------- + + +def shell( + code: str, exports: list[str] | None = None +) -> types.SimpleNamespace: + """Run a shell fragment; capture listed variable names into pyconf.vars. + + *exports*: list of shell variable names whose values should be captured + into pyconf.vars after the fragment runs. + + Returns a SimpleNamespace with an attribute for each exported name set to + its captured value (empty string if the variable was unset or the shell + command failed). + """ + captured: dict[str, str] = {k: "" for k in (exports or [])} + if exports: + # Append export commands so we can read the values back + capture = "\n".join(f"echo {v}=${{{v}}}" for v in exports) + full_code = f"{code}\n{capture}" + else: + full_code = code + try: + result_proc = subprocess.run( + ["sh", "-c", full_code], + capture_output=True, + text=True, + env={**os.environ, **env}, + ) + if exports and result_proc.returncode == 0: + for line in result_proc.stdout.splitlines(): + if "=" in line: + k, _, val = line.partition("=") + k = k.strip() + if k in exports: + captured[k] = val + setattr(vars, k, val) + except (FileNotFoundError, OSError): + pass + return types.SimpleNamespace(**captured) + + +def sizeof(type_: str) -> int: + """Return previously computed sizeof result for *type_*. + + Looks up pyconf.cache for the value stored by check_sizeof(). + Returns 0 if not yet computed. + """ + cache_key = "ac_cv_sizeof_" + _type_to_define(type_).lower() + v = cache.get(cache_key, "0") + return int(v) if v.isdigit() else 0 + + +def macro(name: str, args: list | None = None) -> None: + """Passthrough for unknown/unimplemented macros — records the gap. + + Unknown macro calls are stored in pyconf.substs['_unknown_macros'] for + later audit rather than silently discarded. + """ + if args is None: + args = [] + entry = f"{name}({', '.join(str(a) for a in args)})" + existing = substs.get("_unknown_macros", "") + substs["_unknown_macros"] = (existing + "\n" + entry).strip() + + +# --------------------------------------------------------------------------- +# Transpilable wrapper functions +# --------------------------------------------------------------------------- +# These wrap stdlib calls (re, subprocess, pathlib, shutil, os) behind a +# pyconf API so that conf_*.py files don't need those imports directly. +# The transpiler maps each to a corresponding shell function or built-in. + + +def fnmatch(string: str, pattern: str) -> bool: + """Glob-style pattern match (shell: case "$string" in pattern) ...).""" + return _fnmatch.fnmatch(string, pattern) + + +def fnmatch_any(string: str, patterns: list[str]) -> bool: + """Return True if *string* matches any of the glob *patterns*.""" + return any(_fnmatch.fnmatch(string, p) for p in patterns) + + +def cmd(args: list[str]) -> bool: + """Run command and return True if it exits successfully.""" + return subprocess.run(args, capture_output=True).returncode == 0 + + +def cmd_output(args: list[str]) -> str: + """Run command and return stripped stdout. Raises on failure.""" + return subprocess.check_output(args, text=True).strip() + + +def cmd_status(args: list[str]) -> tuple[int, str]: + """Run command and return (exit_status, stripped_stdout).""" + r = subprocess.run(args, capture_output=True, text=True) + return r.returncode, r.stdout.strip() + + +def abspath(path: str) -> str: + """Resolve to absolute path (shell: $(cd "dir" && pwd)).""" + return str(Path(path).resolve()) + + +def path_exists(path: str) -> bool: + """Check if path exists (shell: [ -e "$path" ]).""" + return os.path.exists(path) + + +def path_is_dir(path: str) -> bool: + """Check if path is a directory (shell: [ -d "$path" ]).""" + return os.path.isdir(path) + + +def path_is_symlink(path: str) -> bool: + """Check if path is a symbolic link (shell: [ -L "$path" ]).""" + return os.path.islink(path) + + +def path_join(parts: list[str]) -> str: + """Join path parts (shell: "$a/$b").""" + return os.path.join(*parts) + + +def path_parent(path: str) -> str: + """Return parent directory of path (shell: dirname "$path").""" + return os.path.dirname(path) + + +def rm_f(path: str) -> None: + """Remove file if it exists (shell: rm -f "$path").""" + try: + os.unlink(path) + except FileNotFoundError: + pass + + +def find_prog(name: str) -> str: + """Find program on PATH (shell: command -v "$name"). Returns "" if not found.""" + return shutil.which(name) or "" + + +def sed(s: str, pattern: str, repl: str) -> str: + """Replace regex *pattern* with *repl* in *s* (shell: echo "$s" | sed).""" + return re.sub(pattern, repl, s) + + +def mkdir_p(path: str) -> None: + """Create directory and parents (shell: mkdir -p "$path").""" + os.makedirs(path, exist_ok=True) + + +def write_file(path: str, content: str) -> None: + """Write *content* to *path*, creating or overwriting.""" + with open(path, "w") as f: + f.write(content) + + +def rename_file(src: str, dst: str) -> None: + """Rename/move file (shell: mv "$src" "$dst").""" + os.rename(src, dst) + + +def path_is_file(path: str) -> bool: + """Check if path is a regular file (shell: [ -f "$path" ]).""" + return os.path.isfile(path) + + +def basename(path: str) -> str: + """Return base name of path (shell: basename "$path").""" + return os.path.basename(path) + + +def getcwd() -> str: + """Return current working directory (shell: pwd).""" + return os.getcwd() + + +def readlink(path: str) -> str: + """Read symbolic link target (shell: readlink "$path").""" + return os.readlink(path) + + +def is_executable(path: str) -> bool: + """Check if path is executable (shell: [ -x "$path" ]).""" + return os.access(path, os.X_OK) + + +def rmdir(path: str) -> None: + """Remove empty directory (shell: rmdir "$path").""" + os.rmdir(path) + + +def relpath(path: str, start: str | None = None) -> str: + """Return relative path (shell: realpath --relative-to).""" + if start is not None: + return os.path.relpath(path, start) + return os.path.relpath(path) + + +def glob_files(pattern: str) -> list[str]: + """Glob for files matching pattern (shell: glob expansion).""" + import glob as _glob + + return sorted(_glob.glob(pattern)) + + +def platform_machine() -> str: + """Return platform machine architecture (shell: uname -m).""" + import platform as _platform + + return _platform.machine() + + +def platform_system() -> str: + """Return platform system name (shell: uname -s).""" + import platform as _platform + + return _platform.system() + + +def read_file(path: str) -> str: + """Read entire file as string (shell: cat "$path").""" + with open(path) as f: + return f.read() + + +class _SaveEnvContext: + """Context manager returned by save_env(). + + Captures a snapshot of pyconf.substs and pyconf.vars immediately on + construction. Also works as a context manager that restores both on exit. + Supports dict-style read access (snap["KEY"]) for the substs snapshot. + """ + + def __init__(self) -> None: + self._snapshot = substs.copy() + self._vars_snapshot = vars.__dict__.copy() + + def __getitem__(self, key: str) -> Any: + return self._snapshot[key] + + def __iter__(self) -> Iterator[str]: + return iter(self._snapshot) + + def __enter__(self) -> "_SaveEnvContext": + return self + + def __exit__(self, *exc: Any) -> bool: + substs.clear() + substs.update(self._snapshot) + vars.__dict__.clear() + vars.__dict__.update(self._vars_snapshot) + return False # don't suppress exceptions + + +def save_env() -> _SaveEnvContext: + """Return a snapshot of pyconf.substs, usable as a context manager. + + Usage:: + + with pyconf.save_env(): + substs["CFLAGS"] += " -Ifoo" + ... # temporary changes here + # substs restored on exit + + Or as a plain snapshot:: + + snap = pyconf.save_env() + val = snap["CFLAGS"] + pyconf.restore_env(snap) + """ + return _SaveEnvContext() + + +def restore_env(snapshot: "_SaveEnvContext | dict[str, str]") -> None: + """Restore pyconf.substs (and pyconf.vars) to a previously saved snapshot. + + Accepts either a _SaveEnvContext (from save_env()) or a plain dict. + When given a plain dict, only substs is restored. + """ + if isinstance(snapshot, _SaveEnvContext): + substs.clear() + substs.update(snapshot._snapshot) + vars.__dict__.clear() + vars.__dict__.update(snapshot._vars_snapshot) + else: + substs.clear() + substs.update(snapshot) + + +# --------------------------------------------------------------------------- +# Allow pyconf.py to be invoked directly by config.status for file regen +# --------------------------------------------------------------------------- +if __name__ == "__main__": + if "--config-status" in sys.argv: + # Strip out our flag and pass the rest + argv = [a for a in sys.argv[1:] if a != "--config-status"] + _config_status_main(argv) + else: + print("usage: pyconf.py --config-status [FILES...]", file=sys.stderr) + sys.exit(1) diff --git a/Tools/configure/test_pyconf.py b/Tools/configure/test_pyconf.py new file mode 100644 index 00000000000000..b3b3c3976a19f5 --- /dev/null +++ b/Tools/configure/test_pyconf.py @@ -0,0 +1,1489 @@ +#!/usr/bin/env -S uv run --script +# /// script +# requires-python = ">=3.11" +# dependencies = ["pytest"] +# /// +""" +Tests for pyconf.py — run with: uv run Tools/configure/test_pyconf.py +""" + +import sys +import os +import pytest + +# Ensure the module is importable regardless of cwd +sys.path.insert(0, os.path.dirname(__file__)) +import pyconf + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + + +def _reset(): + """Reset all mutable module-level state between tests.""" + pyconf._options.clear() + pyconf._env_vars.clear() + pyconf._original_config_args.clear() + pyconf.defines.clear() + pyconf.substs.clear() + pyconf.env.clear() + pyconf.cache.clear() + + +@pytest.fixture(autouse=True) +def reset_state(): + _reset() + yield + _reset() + + +# --------------------------------------------------------------------------- +# arg_enable() / arg_with() + OptionSpec +# --------------------------------------------------------------------------- + + +class TestArgEnable: + def test_enable_forms(self, monkeypatch): + monkeypatch.setattr( + sys, + "argv", + [ + "configure", + "--enable-foo", + "--disable-foo", + "--enable-bar=xyz", + "--disable-baz=custom", + ], + ) + foo = pyconf.arg_enable("foo") + bar = pyconf.arg_enable("bar") + baz = pyconf.arg_enable("baz") + assert foo._raw == "no" + assert bar._raw == "xyz" + assert baz._raw == "custom" + + def test_last_occurrence_wins(self, monkeypatch): + monkeypatch.setattr( + sys, + "argv", + ["configure", "--enable-foo", "--disable-foo", "--enable-foo"], + ) + opt = pyconf.arg_enable("foo") + assert opt._raw == "yes" + + def test_hyphen_underscore_equivalent(self, monkeypatch): + monkeypatch.setattr(sys, "argv", ["configure", "--enable-trace_refs"]) + opt = pyconf.arg_enable("trace-refs") + assert opt._raw == "yes" + + def test_subtle_disable_style_case_enable_gil_custom(self, monkeypatch): + monkeypatch.setattr(sys, "argv", ["configure", "--enable-gil=foo"]) + gil = pyconf.arg_enable("gil", display="--disable-gil", false_is="yes") + assert gil._raw == "foo" + assert gil.process_bool() is True + + +class TestArgWith: + def test_with_without_forms(self, monkeypatch): + monkeypatch.setattr( + sys, + "argv", + [ + "configure", + "--with-ssl", + "--without-zlib", + "--with-hash-algorithm=siphash24", + "--without-openssl=forced", + ], + ) + ssl = pyconf.arg_with("ssl") + zlib = pyconf.arg_with("zlib") + hash_algo = pyconf.arg_with("hash-algorithm") + openssl = pyconf.arg_with("openssl") + assert ssl._raw == "yes" + assert zlib._raw == "no" + assert hash_algo._raw == "siphash24" + assert openssl._raw == "forced" + + +class TestOptionSpec: + def test_helpers(self, monkeypatch): + monkeypatch.setattr(sys, "argv", ["configure", "--with-foo=value"]) + opt = pyconf.arg_with("foo", false_is="no") + assert opt.given is True + assert opt.is_yes() is False + assert opt.is_no() is False + assert opt.value_or("fallback") == "value" + + def test_value_property_given(self, monkeypatch): + monkeypatch.setattr(sys, "argv", ["configure", "--with-foo=bar"]) + opt = pyconf.arg_with("foo", default="fallback") + assert opt.value == "bar" + + def test_value_property_not_given(self, monkeypatch): + monkeypatch.setattr(sys, "argv", ["configure"]) + opt = pyconf.arg_with("foo", default="fallback") + assert opt.value == "fallback" + + def test_value_property_no_default(self, monkeypatch): + monkeypatch.setattr(sys, "argv", ["configure"]) + opt = pyconf.arg_with("foo") + assert opt.value is None + + def test_report(self, capsys): + opt = pyconf.OptionSpec( + kind="enable", name="foo", display="--enable-foo", _raw="yes" + ) + value = opt.report("for --enable-foo", "yes") + out, _ = capsys.readouterr() + assert value == "yes" + assert out == "checking for --enable-foo... yes\n" + + def test_process_value_emits_checking_result(self, capsys): + opt = pyconf.OptionSpec( + kind="with", name="foo", display="--with-foo", _raw="yes" + ) + result = opt.process_value(None) + out, _ = capsys.readouterr() + assert result == "yes" + assert out == "checking for --with-foo... yes\n" + + def test_process_value_uses_default_when_raw_is_none(self, capsys): + opt = pyconf.OptionSpec( + kind="with", + name="foo", + display="--with-foo", + default="no", + ) + result = opt.process_value(None) + out, _ = capsys.readouterr() + assert result == "no" + assert out == "checking for --with-foo... no\n" + + def test_process_value_sets_var_on_v(self): + class V: + pass + + v = V() + opt = pyconf.OptionSpec( + kind="with", + name="trace-refs", + display="--with-trace-refs", + default="no", + var="with_trace_refs", + ) + opt.process_value(v) + assert v.with_trace_refs == "no" + + def test_process_value_sets_var_with_raw_value(self): + class V: + pass + + v = V() + opt = pyconf.OptionSpec( + kind="enable", + name="pystats", + display="--enable-pystats", + default="no", + _raw="yes", + var="enable_pystats", + ) + result = opt.process_value(v) + assert result == "yes" + assert v.enable_pystats == "yes" + + def test_process_value_no_var_skips_setattr(self): + class V: + pass + + v = V() + opt = pyconf.OptionSpec( + kind="with", + name="foo", + display="--with-foo", + default="no", + ) + opt.process_value(v) + assert not hasattr(v, "with_foo") + + def test_process_value_returns_resolved_value(self): + opt = pyconf.OptionSpec( + kind="with", + name="foo", + display="--with-foo", + default="no", + _raw="custom-value", + ) + assert opt.process_value(None) == "custom-value" + + def test_process_bool_enable_style(self, capsys): + opt = pyconf.OptionSpec( + kind="enable", + name="foo", + display="--enable-foo", + _raw="yes", + false_is="no", + ) + assert opt.process_bool() is True + out, _ = capsys.readouterr() + assert out == "checking for --enable-foo... yes\n" + + def test_process_bool_enable_style_no(self, capsys): + opt = pyconf.OptionSpec( + kind="enable", + name="foo", + display="--enable-foo", + _raw="no", + false_is="no", + ) + assert opt.process_bool() is False + out, _ = capsys.readouterr() + assert out == "checking for --enable-foo... no\n" + + def test_process_bool_disable_style(self, capsys): + opt = pyconf.OptionSpec( + kind="enable", + name="gil", + display="--disable-gil", + _raw="no", + false_is="yes", + ) + assert opt.process_bool() is True + out, _ = capsys.readouterr() + assert out == "checking for --disable-gil... yes\n" + + def test_process_bool_disable_style_yes_is_false(self, capsys): + opt = pyconf.OptionSpec( + kind="enable", + name="gil", + display="--disable-gil", + _raw="yes", + false_is="yes", + ) + assert opt.process_bool() is False + out, _ = capsys.readouterr() + assert out == "checking for --disable-gil... no\n" + + def test_process_bool_none_raw_returns_false(self, capsys): + opt = pyconf.OptionSpec( + kind="enable", + name="foo", + display="--enable-foo", + false_is="no", + ) + assert opt.process_bool() is False + out, _ = capsys.readouterr() + assert out == "checking for --enable-foo... no\n" + + def test_process_bool_none_raw_with_default(self, capsys): + opt = pyconf.OptionSpec( + kind="enable", + name="foo", + display="--enable-foo", + default="yes", + false_is="no", + ) + assert opt.process_bool() is True + out, _ = capsys.readouterr() + assert out == "checking for --enable-foo... yes\n" + + def test_process_bool_sets_var(self): + class V: + pass + + v = V() + opt = pyconf.OptionSpec( + kind="with", + name="pydebug", + display="--with-pydebug", + _raw="yes", + var="Py_DEBUG", + false_is="no", + ) + result = opt.process_bool(v) + assert result is True + assert v.Py_DEBUG is True + + def test_process_bool_no_v_skips_setattr(self): + opt = pyconf.OptionSpec( + kind="with", + name="pydebug", + display="--with-pydebug", + _raw="yes", + var="Py_DEBUG", + false_is="no", + ) + result = opt.process_bool() + assert result is True + + +# --------------------------------------------------------------------------- +# env_var() +# --------------------------------------------------------------------------- + + +class TestEnvVar: + def test_registers_description(self): + pyconf.env_var("CC", "C compiler") + assert pyconf._env_vars["CC"] == "C compiler" + + def test_seeds_from_os_environ(self, monkeypatch): + monkeypatch.setenv("PROFILE_TASK", "-m test --pgo") + pyconf.env_var("PROFILE_TASK", "Python args for PGO") + assert pyconf.env["PROFILE_TASK"] == "-m test --pgo" + + def test_absent_from_environ_not_seeded(self, monkeypatch): + monkeypatch.delenv("MY_VAR", raising=False) + pyconf.env_var("MY_VAR", "some var") + assert "MY_VAR" not in pyconf.env + + def test_precious_appended_to_config_args(self, monkeypatch): + monkeypatch.setenv("GDBM_CFLAGS", "-I/usr/include/gdbm") + pyconf.env_var("GDBM_CFLAGS", "C compiler flags for gdbm") + assert ( + "GDBM_CFLAGS=-I/usr/include/gdbm" in pyconf._original_config_args + ) + + def test_precious_not_duplicated(self, monkeypatch): + monkeypatch.setenv("GDBM_CFLAGS", "-I/usr/include/gdbm") + pyconf._original_config_args.append("GDBM_CFLAGS=-I/usr/include/gdbm") + pyconf.env_var("GDBM_CFLAGS", "C compiler flags for gdbm") + count = sum( + 1 + for a in pyconf._original_config_args + if a.startswith("GDBM_CFLAGS=") + ) + assert count == 1 + + def test_precious_not_added_when_absent(self, monkeypatch): + monkeypatch.delenv("GDBM_CFLAGS", raising=False) + pyconf.env_var("GDBM_CFLAGS", "C compiler flags for gdbm") + assert not any( + a.startswith("GDBM_CFLAGS=") for a in pyconf._original_config_args + ) + + +# --------------------------------------------------------------------------- +# define() / define_unquoted() / define_template() +# --------------------------------------------------------------------------- + + +class TestDefine: + def test_define_int(self): + pyconf.define("HAVE_UUID_H", 1, "Define if uuid.h present") + assert pyconf.defines["HAVE_UUID_H"] == ( + 1, + "Define if uuid.h present", + True, + ) + + def test_define_str_value(self): + pyconf.define("RETSIGTYPE", "void", "assume C89 semantics") + assert pyconf.defines["RETSIGTYPE"] == ( + "void", + "assume C89 semantics", + True, + ) + + def test_define_default_value(self): + pyconf.define("HAVE_FOO") + assert pyconf.defines["HAVE_FOO"][0] == 1 + + def test_define_quoted_flag(self): + pyconf.define("HAVE_FOO", 1) + assert pyconf.defines["HAVE_FOO"][2] is True + + def test_define_unquoted(self): + pyconf.define_unquoted("PYLONG_BITS_IN_DIGIT", 30, "bits per digit") + assert pyconf.defines["PYLONG_BITS_IN_DIGIT"] == ( + 30, + "bits per digit", + False, + ) + + def test_define_template_no_value(self): + pyconf.define_template( + "HAVE_ZLIB_COPY", "Define if zlib has inflateCopy" + ) + value, desc, quoted = pyconf.defines["HAVE_ZLIB_COPY"] + assert value is None + assert desc == "Define if zlib has inflateCopy" + + def test_define_template_does_not_overwrite(self): + pyconf.define("HAVE_ZLIB_COPY", 1, "already set") + pyconf.define_template("HAVE_ZLIB_COPY", "template description") + assert pyconf.defines["HAVE_ZLIB_COPY"][0] == 1 # not overwritten + + def test_define_overwrites(self): + pyconf.define("HAVE_FOO", 0) + pyconf.define("HAVE_FOO", 1) + assert pyconf.defines["HAVE_FOO"][0] == 1 + + +# --------------------------------------------------------------------------- +# export() +# --------------------------------------------------------------------------- + + +class TestExport: + def test_registers_empty_string_when_no_value(self): + v = pyconf.vars + v.export("BASECPPFLAGS") + assert "BASECPPFLAGS" in pyconf.substs + assert pyconf.substs["BASECPPFLAGS"] == "" + + def test_sets_value_when_assigned(self): + v = pyconf.vars + v.LIBPL = "/usr/lib/python3.14" + v.export("LIBPL") + assert pyconf.substs["LIBPL"] == "/usr/lib/python3.14" + + def test_does_not_overwrite_existing_when_no_value(self): + v = pyconf.vars + pyconf.substs["BASECPPFLAGS"] = "-DFOO" + v.export("BASECPPFLAGS") + assert pyconf.substs["BASECPPFLAGS"] == "-DFOO" + + def test_overwrites_when_value_assigned(self): + v = pyconf.vars + pyconf.substs["LIBPL"] = "/old" + v.LIBPL = "/new" + v.export("LIBPL") + assert pyconf.substs["LIBPL"] == "/new" + + def test_tracks_exported_names(self): + v = pyconf.vars + v.FOO_TEST = "bar" + v.export("FOO_TEST") + assert "FOO_TEST" in v._exports + + +# --------------------------------------------------------------------------- +# config_files() +# --------------------------------------------------------------------------- + + +class TestConfigFiles: + def test_registers_files(self): + pyconf.config_files(["Makefile.pre", "Misc/python.pc"]) + assert "Makefile.pre" in pyconf.substs["_config_files"] + assert "Misc/python.pc" in pyconf.substs["_config_files"] + + def test_accumulates_across_calls(self): + pyconf.config_files(["Makefile.pre"]) + pyconf.config_files(["Misc/python.pc"]) + files = pyconf.substs["_config_files"].split() + assert "Makefile.pre" in files + assert "Misc/python.pc" in files + + def test_chmod_x_records_separately(self): + pyconf.config_files(["Modules/ld_so_aix"], chmod_x=True) + assert "Modules/ld_so_aix" in pyconf.substs["_config_files"] + assert "Modules/ld_so_aix" in pyconf.substs["_config_files_x"] + + def test_no_chmod_x_by_default(self): + pyconf.config_files(["Makefile.pre"]) + assert "_config_files_x" not in pyconf.substs + + +# --------------------------------------------------------------------------- +# Messages: checking() / result() / notice() / warn() / error() / fatal() +# --------------------------------------------------------------------------- + + +class TestMessages: + def test_checking_prints_without_newline(self, capsys): + pyconf.checking("for gcc") + out, _ = capsys.readouterr() + assert out == "checking for gcc... " + assert not out.endswith("\n") + + def test_result_completes_line(self, capsys): + pyconf.checking("for gcc") + pyconf.result("yes") + out, _ = capsys.readouterr() + assert out == "checking for gcc... yes\n" + + def test_result_converts_to_str(self, capsys): + pyconf.result(42) + out, _ = capsys.readouterr() + assert out == "42\n" + + def test_notice_prints_to_stdout(self, capsys): + pyconf.notice("hello world") + out, _ = capsys.readouterr() + assert "hello world" in out + + def test_warn_prints_to_stderr(self, capsys): + pyconf.warn("something fishy") + _, err = capsys.readouterr() + assert "WARNING" in err + assert "something fishy" in err + + def test_error_exits_1(self): + with pytest.raises(SystemExit) as exc: + pyconf.error("fatal problem") + assert exc.value.code == 1 + + def test_error_prints_to_stderr(self, capsys): + with pytest.raises(SystemExit): + pyconf.error("fatal problem") + _, err = capsys.readouterr() + assert "fatal problem" in err + + def test_fatal_exits_1(self): + with pytest.raises(SystemExit) as exc: + pyconf.fatal("unrecoverable") + assert exc.value.code == 1 + + def test_fatal_prints_to_stderr(self, capsys): + with pytest.raises(SystemExit): + pyconf.fatal("unrecoverable") + _, err = capsys.readouterr() + assert "unrecoverable" in err + + +# --------------------------------------------------------------------------- +# use_system_extensions() +# --------------------------------------------------------------------------- + + +class TestUseSystemExtensions: + def test_defines_gnu_source(self): + pyconf.use_system_extensions() + assert "_GNU_SOURCE" in pyconf.defines + + def test_defines_all_source(self): + pyconf.use_system_extensions() + assert "_ALL_SOURCE" in pyconf.defines + + def test_defined_as_unquoted(self): + pyconf.use_system_extensions() + _, _, quoted = pyconf.defines["_GNU_SOURCE"] + assert quoted is False + + +# --------------------------------------------------------------------------- +# find_install() / find_mkdir_p() +# --------------------------------------------------------------------------- + + +class TestFindInstall: + def test_sets_install_in_substs(self): + pyconf.find_install() + assert "INSTALL" in pyconf.substs + assert pyconf.substs["INSTALL"] # non-empty + + def test_install_is_executable(self): + pyconf.find_install() + import shutil + + # INSTALL is "path -c"; check just the executable part + install_prog = pyconf.substs["INSTALL"].split()[0] + assert shutil.which(install_prog) is not None or os.path.isfile( + install_prog + ) + + +class TestFindMkdirP: + def test_sets_mkdir_p_in_substs(self): + pyconf.find_mkdir_p() + assert "MKDIR_P" in pyconf.substs + assert "mkdir" in pyconf.substs["MKDIR_P"] + + def test_includes_dash_p_flag(self): + pyconf.find_mkdir_p() + assert "-p" in pyconf.substs["MKDIR_P"] + + +# --------------------------------------------------------------------------- +# check_prog() / check_progs() / check_tools() +# --------------------------------------------------------------------------- + + +class TestCheckProg: + def test_finds_existing_program(self): + result = pyconf.check_prog("sh") + # check_prog returns the full path (like AC_PATH_TOOL) + assert result.endswith("/sh") + assert os.path.isabs(result) + + def test_returns_default_for_missing(self): + result = pyconf.check_prog( + "__nonexistent_prog_xyz__", default="NOTFOUND" + ) + assert result == "NOTFOUND" + + def test_default_empty_string(self): + result = pyconf.check_prog("__nonexistent_prog_xyz__") + assert result == "" + + +class TestCheckProgs: + def test_returns_first_found(self): + result = pyconf.check_progs(["__nonexistent__", "sh", "bash"]) + assert result in ("sh", "bash") + + def test_returns_default_when_none_found(self): + result = pyconf.check_progs(["__a__", "__b__"], default="NONE") + assert result == "NONE" + + def test_default_is_empty_string(self): + result = pyconf.check_progs(["__a__", "__b__"]) + assert result == "" + + +class TestCheckTools: + def test_alias_for_check_progs(self): + assert pyconf.check_tools(["sh"]) == pyconf.check_progs(["sh"]) + + def test_default_propagates(self): + assert pyconf.check_tools(["__xyz__"], default="AR") == "AR" + + +# --------------------------------------------------------------------------- +# Compiler / linker probes (require a real CC — skip if none) +# --------------------------------------------------------------------------- + +import shutil as _shutil # noqa: E402 + +HAS_CC = bool( + _shutil.which("gcc") or _shutil.which("cc") or _shutil.which("clang") +) + + +@pytest.fixture() +def with_cc(monkeypatch): + """Set pyconf.CC to a real compiler or skip the test.""" + cc = _shutil.which("gcc") or _shutil.which("cc") or _shutil.which("clang") + if not cc: + pytest.skip("no C compiler available") + monkeypatch.setattr(pyconf, "CC", cc) + return cc + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestCompileCheck: + def test_simple_compile_succeeds(self, with_cc): + ok = pyconf.compile_check(body="int x = 0; (void)x;") + assert ok is True + + def test_bad_syntax_fails(self, with_cc): + ok = pyconf.compile_check(body="this is not C !!!;") + assert ok is False + + def test_then_called_on_success(self, with_cc): + called = [] + pyconf.compile_check( + body="int x=0;(void)x;", then=lambda: called.append(1) + ) + assert called == [1] + + def test_else_called_on_failure(self, with_cc): + called = [] + pyconf.compile_check( + body="bad code!!!;", else_=lambda: called.append(1) + ) + assert called == [1] + + def test_includes_added_to_source(self, with_cc): + ok = pyconf.compile_check( + includes=["stdio.h"], + body='printf("");', + ) + assert ok is True + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestLinkCheck: + def test_valid_source_links(self, with_cc): + ok = pyconf.link_check(body="int x = 0; (void)x;") + assert ok is True + + def test_try_link_valid(self, with_cc): + src = "int main(void) { return 0; }\n" + assert pyconf.try_link(src) is True + + def test_try_link_invalid(self, with_cc): + src = "this is not valid C\n" + assert pyconf.try_link(src) is False + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestCheckCompileFlag: + def test_valid_flag(self, with_cc): + # -O0 is universally supported + assert pyconf.check_compile_flag("-O0") is True + + def test_bogus_flag(self, with_cc): + assert pyconf.check_compile_flag("--bogus-flag-xyz-12345") is False + + +# --------------------------------------------------------------------------- +# Header probes +# --------------------------------------------------------------------------- + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestCheckHeader: + def test_stdio_h_exists(self, with_cc): + assert pyconf.check_header("stdio.h") is True + + def test_defines_have_macro(self, with_cc): + pyconf.check_header("stdio.h") + assert "HAVE_STDIO_H" in pyconf.defines + + def test_nonexistent_returns_false(self, with_cc): + assert pyconf.check_header("__nonexistent_header_xyz__.h") is False + + def test_caches_result(self, with_cc): + pyconf.check_header("stdio.h") + assert "ac_cv_header_stdio_h" in pyconf.cache + + def test_cached_result_reused(self, with_cc, monkeypatch): + pyconf.check_header("stdio.h") + # Poison CC so any real compile would fail + monkeypatch.setattr(pyconf, "CC", "") + # Should still return True from cache + assert pyconf.check_header("stdio.h") is True + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestCheckHeaders: + def test_checks_multiple(self, with_cc): + results = {} + pyconf.check_headers("stdio.h", "string.h", defines=results) + assert results["stdio.h"] is True + assert results["string.h"] is True + + def test_nonexistent_marked_false(self, with_cc): + results = {} + pyconf.check_headers("__no_such__.h", defines=results) + assert results["__no_such__.h"] is False + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestCheckDefine: + def test_well_known_macro(self, with_cc): + # NULL is defined in stdio.h + assert pyconf.check_define("stdio.h", "NULL") is True + + def test_nonexistent_macro(self, with_cc): + assert pyconf.check_define("stdio.h", "__NO_SUCH_MACRO_XYZ__") is False + + +# --------------------------------------------------------------------------- +# Type / sizeof probes +# --------------------------------------------------------------------------- + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestCheckSizeof: + def test_sizeof_char_is_1(self, with_cc): + size = pyconf.check_sizeof("char") + assert size == 1 + + def test_defines_sizeof_macro(self, with_cc): + pyconf.check_sizeof("int") + assert "SIZEOF_INT" in pyconf.defines + + def test_sizeof_int_reasonable(self, with_cc): + size = pyconf.check_sizeof("int") + assert size in (2, 4, 8) + + def test_caches_result(self, with_cc): + pyconf.check_sizeof("long") + assert "ac_cv_sizeof_long" in pyconf.cache + + def test_sizeof_lookup(self, with_cc): + pyconf.check_sizeof("double") + assert pyconf.sizeof("double") == pyconf.check_sizeof("double") + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestCheckType: + def test_size_t_exists(self, with_cc): + assert pyconf.check_type("size_t", headers=["stddef.h"]) is True + + def test_nonexistent_type_returns_false(self, with_cc): + assert pyconf.check_type("__no_such_type_xyz_t") is False + + def test_fallback_define_called_when_absent(self, with_cc): + pyconf.check_type( + "__no_such_type_xyz_t", + fallback_define=( + "__no_such_type_xyz_t", + "unsigned long", + "fallback", + ), + ) + assert "__no_such_type_xyz_t" in pyconf.defines + + +# --------------------------------------------------------------------------- +# Function / declaration probes +# --------------------------------------------------------------------------- + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestCheckFunc: + def test_printf_exists(self, with_cc): + assert pyconf.check_func("printf") is True + + def test_defines_have_macro(self, with_cc): + pyconf.check_func("printf") + assert "HAVE_PRINTF" in pyconf.defines + + def test_nonexistent_returns_false(self, with_cc): + assert pyconf.check_func("__no_such_func_xyz_123__") is False + + def test_result_cached(self, with_cc): + pyconf.check_func("printf") + assert "ac_cv_func_printf" in pyconf.cache + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestCheckFuncs: + def test_checks_multiple(self, with_cc): + pyconf.check_funcs(["printf", "strlen"]) + assert "HAVE_PRINTF" in pyconf.defines + assert "HAVE_STRLEN" in pyconf.defines + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestCheckDecl: + def test_null_is_declared(self, with_cc): + found = pyconf.check_decl("NULL", includes=["stdio.h"]) + assert found is True + + def test_on_found_callback(self, with_cc): + called = [] + pyconf.check_decl( + "NULL", includes=["stdio.h"], on_found=lambda: called.append(1) + ) + assert called == [1] + + def test_on_notfound_callback(self, with_cc): + called = [] + pyconf.check_decl( + "__NO_SUCH_DECL_XYZ__", on_notfound=lambda: called.append(1) + ) + assert called == [1] + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestCheckDecls: + def test_defines_have_decl_macro(self, with_cc): + pyconf.check_decls("NULL", includes=["stdio.h"]) + assert "HAVE_DECL_NULL" in pyconf.defines + assert pyconf.defines["HAVE_DECL_NULL"][0] == 1 + + +# --------------------------------------------------------------------------- +# Library probes +# --------------------------------------------------------------------------- + + +@pytest.mark.skipif(not HAS_CC, reason="no C compiler available") +class TestCheckLib: + def test_libc_has_printf(self, with_cc): + # printf is in libc, but check_lib tests against explicit -l + # On Linux, libm has sqrt; test with that + result = pyconf.check_lib("m", "sqrt") + assert isinstance(result, bool) + + def test_nonexistent_lib_returns_false(self, with_cc): + assert pyconf.check_lib("__no_such_lib_xyz__", "printf") is False + + +# --------------------------------------------------------------------------- +# Stdlib module registration +# --------------------------------------------------------------------------- + + +class TestStdlibModule: + def setup_method(self): + pyconf._stdlib_modules.clear() + + def teardown_method(self): + pyconf._stdlib_modules.clear() + + def test_registers_module(self): + pyconf.stdlib_module("_json", supported=True, enabled=True) + assert "_json" in pyconf._stdlib_modules + + def test_stores_kwargs(self): + pyconf.stdlib_module("_csv", sources=["Modules/_csv.c"]) + assert pyconf._stdlib_modules["_csv"]["sources"] == ["Modules/_csv.c"] + + def test_supported_enabled_flags(self): + pyconf.stdlib_module("_testmod", supported=False, enabled=False) + assert pyconf._stdlib_modules["_testmod"]["supported"] is False + assert pyconf._stdlib_modules["_testmod"]["enabled"] is False + + +class TestStdlibModuleSimple: + def setup_method(self): + pyconf._stdlib_modules.clear() + + def teardown_method(self): + pyconf._stdlib_modules.clear() + + def test_registers_with_supported_enabled(self): + pyconf.stdlib_module_simple("_stat") + m = pyconf._stdlib_modules["_stat"] + assert m["supported"] is True + assert m["enabled"] is True + + def test_stores_cflags_ldflags(self): + pyconf.stdlib_module_simple( + "_posixsubprocess", cflags="-DFOO", ldflags="-lbar" + ) + m = pyconf._stdlib_modules["_posixsubprocess"] + assert m["cflags"] == "-DFOO" + assert m["ldflags"] == "-lbar" + + +class TestStdlibModuleSetNa: + def setup_method(self): + pyconf._stdlib_modules.clear() + + def teardown_method(self): + pyconf._stdlib_modules.clear() + pyconf._stdlib_modules_pending_na.clear() + + def test_marks_existing_module_unsupported(self): + pyconf.stdlib_module("_ctypes", supported=True) + pyconf.stdlib_module_set_na(["_ctypes"]) + assert pyconf._stdlib_modules["_ctypes"]["supported"] is False + + def test_creates_entry_for_unknown_module(self): + pyconf.stdlib_module_set_na(["_tkinter"]) + # Unknown module is deferred: not yet in _stdlib_modules, + # but in _stdlib_modules_pending_na (so order follows stdlib_module call). + assert "_tkinter" not in pyconf._stdlib_modules + assert "_tkinter" in pyconf._stdlib_modules_pending_na + + def test_multiple_names(self): + pyconf.stdlib_module_set_na(["_a", "_b", "_c"]) + for name in ("_a", "_b", "_c"): + assert name not in pyconf._stdlib_modules + assert name in pyconf._stdlib_modules_pending_na + + +# --------------------------------------------------------------------------- +# shell() +# --------------------------------------------------------------------------- + + +class TestShell: + def test_runs_without_error(self): + pyconf.shell("echo hello") # should not raise + + def test_captures_exported_var(self): + result = pyconf.shell("MYVAR=hello_world", exports=["MYVAR"]) + assert pyconf.vars.MYVAR == "hello_world" + assert result.MYVAR == "hello_world" + + def test_captures_computed_var(self): + result = pyconf.shell("X=$(echo computed)", exports=["X"]) + assert pyconf.vars.X == "computed" + assert result.X == "computed" + + def test_no_exports_no_side_effect(self): + before = set(vars(pyconf.vars).keys()) + pyconf.shell("TMPVAR=ignored") + after = set(vars(pyconf.vars).keys()) + assert "TMPVAR" not in after - before + + +# --------------------------------------------------------------------------- +# sizeof() lookup +# --------------------------------------------------------------------------- + + +class TestSizeof: + def test_returns_zero_when_not_computed(self): + assert pyconf.sizeof("__unknown_type__") == 0 + + def test_returns_cached_value(self): + pyconf.cache["ac_cv_sizeof_int"] = "4" + assert pyconf.sizeof("int") == 4 + + +# --------------------------------------------------------------------------- +# macro() passthrough +# --------------------------------------------------------------------------- + + +class TestMacro: + def test_records_unknown_macro(self): + pyconf.macro("AC_UNKNOWN_MACRO", ["arg1", "arg2"]) + assert "AC_UNKNOWN_MACRO" in pyconf.substs.get("_unknown_macros", "") + + def test_accumulates_multiple_macros(self): + pyconf.macro("MACRO_A", []) + pyconf.macro("MACRO_B", []) + recorded = pyconf.substs.get("_unknown_macros", "") + assert "MACRO_A" in recorded + assert "MACRO_B" in recorded + + +# --------------------------------------------------------------------------- +# save_env() / restore_env() +# --------------------------------------------------------------------------- + + +class TestSaveRestoreEnv: + def test_save_captures_substs(self): + pyconf.substs["FOO"] = "bar" + snap = pyconf.save_env() + assert snap["FOO"] == "bar" + + def test_restore_rolls_back(self): + pyconf.substs["FOO"] = "original" + snap = pyconf.save_env() + pyconf.substs["FOO"] = "modified" + pyconf.substs["BAR"] = "new" + pyconf.restore_env(snap) + assert pyconf.substs["FOO"] == "original" + assert "BAR" not in pyconf.substs + + def test_snapshot_is_independent(self): + pyconf.substs["A"] = "1" + snap = pyconf.save_env() + pyconf.substs["A"] = "2" + assert snap["A"] == "1" # snapshot unaffected + + +# --------------------------------------------------------------------------- +# output() — _write_pyconfig_h, _subst_vars, _process_config_files +# --------------------------------------------------------------------------- + + +class TestWritePyconfigH: + def setup_method(self): + # Force scratch mode: no pyconfig.h.in template available. + self._orig_srcdir = pyconf.srcdir + pyconf.srcdir = "/nonexistent" + + def teardown_method(self): + pyconf.srcdir = self._orig_srcdir + + def test_creates_file(self, tmp_path): + pyconf.defines["HAVE_FOO"] = (1, "Has foo", False) + out = str(tmp_path / "pyconfig.h") + pyconf._write_pyconfig_h(out) + text = open(out).read() + assert "#define HAVE_FOO 1" in text + + def test_header_guard(self, tmp_path): + out = str(tmp_path / "pyconfig.h") + pyconf._write_pyconfig_h(out) + text = open(out).read() + assert "#ifndef Py_PYCONFIG_H" in text + assert "#define Py_PYCONFIG_H" in text + assert "#endif" in text + + def test_quoted_string_value(self, tmp_path): + pyconf.defines["VERSION"] = ("3.14", "Python version", True) + out = str(tmp_path / "pyconfig.h") + pyconf._write_pyconfig_h(out) + text = open(out).read() + assert '#define VERSION "3.14"' in text + + def test_unquoted_string_value(self, tmp_path): + pyconf.defines["CC_NAME"] = ("gcc", "Compiler", False) + out = str(tmp_path / "pyconfig.h") + pyconf._write_pyconfig_h(out) + text = open(out).read() + assert "#define CC_NAME gcc" in text + + def test_none_value_emits_undef_comment(self, tmp_path): + pyconf.defines["UNDEF_ME"] = (None, "Not set", False) + out = str(tmp_path / "pyconfig.h") + pyconf._write_pyconfig_h(out) + text = open(out).read() + assert "/* #undef UNDEF_ME */" in text + + def test_description_as_comment(self, tmp_path): + pyconf.defines["HAVE_BAR"] = (1, "Define if bar exists", False) + out = str(tmp_path / "pyconfig.h") + pyconf._write_pyconfig_h(out) + text = open(out).read() + assert "/* Define if bar exists */" in text + + +class TestSubstVars: + def test_replaces_known_var(self): + pyconf.substs["CC"] = "gcc" + assert pyconf._subst_vars("@CC@") == "gcc" + + def test_leaves_unknown_var(self): + assert pyconf._subst_vars("@UNKNOWN@") == "@UNKNOWN@" + + def test_multiple_vars(self): + pyconf.substs["A"] = "hello" + pyconf.substs["B"] = "world" + assert pyconf._subst_vars("@A@ @B@") == "hello world" + + def test_no_vars(self): + assert pyconf._subst_vars("plain text") == "plain text" + + +class TestProcessConfigFiles: + def test_substitutes_template(self, tmp_path, monkeypatch): + monkeypatch.chdir(tmp_path) + infile = tmp_path / "Makefile.in" + infile.write_text("CC = @CC@\nVERSION = @VERSION@\n") + pyconf.srcdir = str(tmp_path) + pyconf.substs["_config_files"] = "Makefile" + pyconf.substs["CC"] = "gcc" + pyconf.substs["VERSION"] = "3.14" + pyconf._process_config_files() + result = (tmp_path / "Makefile").read_text() + assert "CC = gcc" in result + assert "VERSION = 3.14" in result + + def test_warns_missing_template(self, tmp_path, monkeypatch, capsys): + monkeypatch.chdir(tmp_path) + pyconf.srcdir = str(tmp_path) + pyconf.substs["_config_files"] = "missing_file" + pyconf._process_config_files() + err = capsys.readouterr().err + assert "missing_file" in err + + def test_no_files_is_noop(self, tmp_path, monkeypatch): + monkeypatch.chdir(tmp_path) + pyconf.srcdir = str(tmp_path) + # _config_files not set — should not raise + pyconf._process_config_files() + + def test_chmod_x(self, tmp_path, monkeypatch): + monkeypatch.chdir(tmp_path) + infile = tmp_path / "myscript.in" + infile.write_text("#!/bin/sh\n") + pyconf.srcdir = str(tmp_path) + pyconf.substs["_config_files"] = "myscript" + pyconf.substs["_config_files_x"] = "myscript" + pyconf._process_config_files() + import stat + + mode = os.stat(tmp_path / "myscript").st_mode + assert mode & stat.S_IXUSR + + +class TestOutput: + def test_output_writes_pyconfig_h(self, tmp_path, monkeypatch): + monkeypatch.chdir(tmp_path) + pyconf.srcdir = str(tmp_path) + pyconf.defines["HAVE_STDIO_H"] = (1, "Have stdio.h", False) + pyconf.output() + text = (tmp_path / "pyconfig.h").read_text() + assert "#define HAVE_STDIO_H 1" in text + + def test_output_processes_config_files(self, tmp_path, monkeypatch): + monkeypatch.chdir(tmp_path) + (tmp_path / "Makefile.in").write_text("CC=@CC@\n") + pyconf.srcdir = str(tmp_path) + pyconf.substs["_config_files"] = "Makefile" + pyconf.substs["CC"] = "clang" + pyconf.output() + assert (tmp_path / "Makefile").read_text() == "CC=clang\n" + + +# --------------------------------------------------------------------------- +# Cache file serialization/deserialization +# --------------------------------------------------------------------------- + + +class TestCacheSerialize: + def test_true_becomes_yes(self): + assert pyconf._cache_serialize(True) == "yes" + + def test_false_becomes_no(self): + assert pyconf._cache_serialize(False) == "no" + + def test_int_becomes_string(self): + assert pyconf._cache_serialize(8) == "8" + + def test_string_passthrough(self): + assert pyconf._cache_serialize("gcc") == "gcc" + + +class TestCacheDeserialize: + def test_yes_becomes_true(self): + assert pyconf._cache_deserialize("yes") is True + + def test_no_becomes_false(self): + assert pyconf._cache_deserialize("no") is False + + def test_numeric_stays_string(self): + assert pyconf._cache_deserialize("8") == "8" + + def test_string_passthrough(self): + assert pyconf._cache_deserialize("gcc") == "gcc" + + +class TestCacheQuote: + def test_simple_value_not_quoted(self): + assert pyconf._cache_quote("yes") == "yes" + + def test_numeric_not_quoted(self): + assert pyconf._cache_quote("8") == "8" + + def test_path_not_quoted(self): + assert pyconf._cache_quote("/usr/bin/gcc") == "/usr/bin/gcc" + + def test_value_with_spaces_quoted(self): + assert pyconf._cache_quote("none needed") == "'none needed'" + + def test_value_with_single_quote_escaped(self): + assert pyconf._cache_quote("it's") == "'it'\\''s'" + + def test_empty_string_quoted(self): + assert pyconf._cache_quote("") == "''" + + +class TestCacheUnquote: + def test_unquoted_passthrough(self): + assert pyconf._cache_unquote("yes") == "yes" + + def test_single_quoted(self): + assert pyconf._cache_unquote("'none needed'") == "none needed" + + def test_escaped_single_quote(self): + assert pyconf._cache_unquote("'it'\\''s'") == "it's" + + +class TestCacheRoundTrip: + """Test that values survive serialize → quote → unquote → deserialize.""" + + def test_bool_true(self): + v = True + s = pyconf._cache_serialize(v) + q = pyconf._cache_quote(s) + assert pyconf._cache_deserialize(pyconf._cache_unquote(q)) is True + + def test_bool_false(self): + v = False + s = pyconf._cache_serialize(v) + q = pyconf._cache_quote(s) + assert pyconf._cache_deserialize(pyconf._cache_unquote(q)) is False + + def test_int_value(self): + v = 8 + s = pyconf._cache_serialize(v) + q = pyconf._cache_quote(s) + assert pyconf._cache_unquote(q) == "8" + + def test_string_with_spaces(self): + v = "none needed" + s = pyconf._cache_serialize(v) + q = pyconf._cache_quote(s) + assert pyconf._cache_unquote(q) == "none needed" + + +class TestSaveLoadCache: + """Test _save_cache and _load_cache with actual files.""" + + def test_save_creates_file(self, tmp_path, monkeypatch): + cache_path = str(tmp_path / "config.cache") + monkeypatch.setattr(pyconf, "cache_file", cache_path) + pyconf.cache["ac_cv_func_printf"] = True + pyconf.cache["ac_cv_sizeof_long"] = "8" + pyconf._save_cache() + assert os.path.exists(cache_path) + + def test_save_format_matches_autoconf(self, tmp_path, monkeypatch): + cache_path = str(tmp_path / "config.cache") + monkeypatch.setattr(pyconf, "cache_file", cache_path) + pyconf.cache["ac_cv_func_printf"] = True + pyconf.cache["ac_cv_sizeof_long"] = "8" + pyconf._save_cache() + content = open(cache_path).read() + # Autoconf format: key=${key=value} + assert "ac_cv_func_printf=${ac_cv_func_printf=yes}" in content + assert "ac_cv_sizeof_long=${ac_cv_sizeof_long=8}" in content + + def test_save_has_header_comment(self, tmp_path, monkeypatch): + cache_path = str(tmp_path / "config.cache") + monkeypatch.setattr(pyconf, "cache_file", cache_path) + pyconf.cache["ac_cv_func_printf"] = True + pyconf._save_cache() + content = open(cache_path).read() + assert content.startswith("# This file is a shell script") + + def test_save_sorted(self, tmp_path, monkeypatch): + cache_path = str(tmp_path / "config.cache") + monkeypatch.setattr(pyconf, "cache_file", cache_path) + pyconf.cache["ac_cv_func_zzz"] = True + pyconf.cache["ac_cv_func_aaa"] = False + pyconf._save_cache() + lines = [ + line + for line in open(cache_path).readlines() + if line.strip() and not line.startswith("#") + ] + assert lines[0].startswith("ac_cv_func_aaa=") + assert lines[1].startswith("ac_cv_func_zzz=") + + def test_save_quotes_spaces(self, tmp_path, monkeypatch): + cache_path = str(tmp_path / "config.cache") + monkeypatch.setattr(pyconf, "cache_file", cache_path) + pyconf.cache["ac_cv_prog_CPP"] = "gcc -E" + pyconf._save_cache() + content = open(cache_path).read() + assert "ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'}" in content + + def test_load_autoconf_format(self, tmp_path, monkeypatch): + cache_path = str(tmp_path / "config.cache") + with open(cache_path, "w") as f: + f.write("# cache\n") + f.write("ac_cv_func_printf=${ac_cv_func_printf=yes}\n") + f.write("ac_cv_sizeof_long=${ac_cv_sizeof_long=8}\n") + f.write("ac_cv_func_missing=${ac_cv_func_missing=no}\n") + f.write("ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'}\n") + monkeypatch.setattr(pyconf, "cache_file", cache_path) + pyconf._load_cache() + assert pyconf.cache["ac_cv_func_printf"] is True + assert pyconf.cache["ac_cv_sizeof_long"] == "8" + assert pyconf.cache["ac_cv_func_missing"] is False + assert pyconf.cache["ac_cv_prog_CPP"] == "gcc -E" + + def test_load_simple_format(self, tmp_path, monkeypatch): + """Load the simpler key=value format (legacy pyconf).""" + cache_path = str(tmp_path / "config.cache") + with open(cache_path, "w") as f: + f.write("ac_cv_func_printf=yes\n") + f.write("ac_cv_sizeof_long=8\n") + monkeypatch.setattr(pyconf, "cache_file", cache_path) + pyconf._load_cache() + assert pyconf.cache["ac_cv_func_printf"] is True + assert pyconf.cache["ac_cv_sizeof_long"] == "8" + + def test_load_test_format(self, tmp_path, monkeypatch): + """Load the 'test ${key+y} || key=value' format.""" + cache_path = str(tmp_path / "config.cache") + with open(cache_path, "w") as f: + f.write("test ${ac_cv_path_PKG+y} || ac_cv_path_PKG='missing'\n") + monkeypatch.setattr(pyconf, "cache_file", cache_path) + pyconf._load_cache() + assert pyconf.cache["ac_cv_path_PKG"] == "missing" + + def test_roundtrip_save_load(self, tmp_path, monkeypatch): + cache_path = str(tmp_path / "config.cache") + monkeypatch.setattr(pyconf, "cache_file", cache_path) + pyconf.cache["ac_cv_func_printf"] = True + pyconf.cache["ac_cv_func_missing"] = False + pyconf.cache["ac_cv_sizeof_long"] = "8" + pyconf.cache["ac_cv_prog_CPP"] = "gcc -E" + pyconf._save_cache() + pyconf.cache.clear() + pyconf._load_cache() + assert pyconf.cache["ac_cv_func_printf"] is True + assert pyconf.cache["ac_cv_func_missing"] is False + assert pyconf.cache["ac_cv_sizeof_long"] == "8" + assert pyconf.cache["ac_cv_prog_CPP"] == "gcc -E" + + def test_no_save_when_cache_file_empty(self, tmp_path, monkeypatch): + monkeypatch.setattr(pyconf, "cache_file", "") + pyconf.cache["ac_cv_func_printf"] = True + pyconf._save_cache() + # No file should be created + assert not (tmp_path / "config.cache").exists() + + def test_load_skips_comments_and_blank_lines(self, tmp_path, monkeypatch): + cache_path = str(tmp_path / "config.cache") + with open(cache_path, "w") as f: + f.write("# comment\n\n") + f.write("ac_cv_func_x=${ac_cv_func_x=yes}\n") + f.write("# another comment\n") + monkeypatch.setattr(pyconf, "cache_file", cache_path) + pyconf._load_cache() + assert pyconf.cache == {"ac_cv_func_x": True} + + +class TestPrintCached: + """Test the (cached) output mechanism.""" + + def test_prints_cached_when_checking_pending(self, capsys, monkeypatch): + monkeypatch.setattr(pyconf, "quiet", False) + monkeypatch.setattr(pyconf, "_help_requested", False) + pyconf.checking("for something") + pyconf._print_cached() + pyconf.result("yes") + captured = capsys.readouterr() + assert "(cached) " in captured.out + + def test_no_output_when_not_checking(self, capsys, monkeypatch): + monkeypatch.setattr(pyconf, "quiet", False) + monkeypatch.setattr(pyconf, "_help_requested", False) + pyconf._print_cached() + captured = capsys.readouterr() + assert "(cached)" not in captured.out + + def test_no_output_when_quiet(self, capsys, monkeypatch): + monkeypatch.setattr(pyconf, "quiet", True) + monkeypatch.setattr(pyconf, "_help_requested", False) + pyconf.checking("for something") + pyconf._print_cached() + pyconf.result("yes") + captured = capsys.readouterr() + assert "(cached)" not in captured.out + + +class TestInitArgsCache: + """Test cache-related argument parsing in init_args().""" + + def test_dash_c_sets_cache_file(self, monkeypatch): + monkeypatch.setattr("sys.argv", ["configure", "-C"]) + pyconf.cache_file = "" + pyconf.init_args() + assert pyconf.cache_file == "config.cache" + + def test_cache_file_equals(self, monkeypatch): + monkeypatch.setattr( + "sys.argv", ["configure", "--cache-file=/tmp/my.cache"] + ) + pyconf.cache_file = "" + pyconf.init_args() + assert pyconf.cache_file == "/tmp/my.cache" + + def test_cache_file_separate_arg(self, monkeypatch): + monkeypatch.setattr( + "sys.argv", ["configure", "--cache-file", "/tmp/my.cache"] + ) + pyconf.cache_file = "" + pyconf.init_args() + assert pyconf.cache_file == "/tmp/my.cache" + + def test_creating_cache_message(self, capsys, monkeypatch, tmp_path): + cache_path = str(tmp_path / "config.cache") + monkeypatch.setattr( + "sys.argv", ["configure", f"--cache-file={cache_path}"] + ) + pyconf.cache_file = "" + pyconf.init_args() + captured = capsys.readouterr() + assert f"creating cache {cache_path}" in captured.out + + def test_loading_cache_message(self, capsys, monkeypatch, tmp_path): + cache_path = str(tmp_path / "config.cache") + with open(cache_path, "w") as f: + f.write("# cache\n") + monkeypatch.setattr( + "sys.argv", ["configure", f"--cache-file={cache_path}"] + ) + pyconf.cache_file = "" + pyconf.init_args() + captured = capsys.readouterr() + assert f"loading cache {cache_path}" in captured.out + + +# --------------------------------------------------------------------------- + +if __name__ == "__main__": + sys.exit(pytest.main([__file__, "-v"])) diff --git a/Tools/configure/test_transpile.py b/Tools/configure/test_transpile.py new file mode 100644 index 00000000000000..29e4f4d0924b2c --- /dev/null +++ b/Tools/configure/test_transpile.py @@ -0,0 +1,691 @@ +"""Tests for the Python-to-AWK transpiler. + +Each test writes a minimal conf_*.py-style Python function, transpiles it +using the AWK backend, wraps the output with the pyconf.awk runtime, runs +it under awk, and checks the result. + +Usage: + uv run Tools/configure/test_transpile.py +""" + +import ast +import os +import subprocess +import sys +import tempfile +import textwrap +import unittest + +# Ensure we can import from the Tools/configure directory +sys.path.insert(0, os.path.dirname(__file__)) + +from transpiler.py_to_pysh import PyToPysh +from transpiler.pysh_to_awk import PyshToAwk +from transpiler.awk_emit import AwkEmitter, AwkWriter +from transpiler import awk_ast as A +from transpiler.transpile import ( + ModuleInfo, + OptionInfo, +) + +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) +RUNTIME_PATH = os.path.join(SCRIPT_DIR, "transpiler", "pyconf.awk") + +# Find awk +AWK = "/usr/bin/awk" +if not os.path.exists(AWK): + AWK = "/usr/bin/mawk" + if not os.path.exists(AWK): + AWK = "awk" + + +def _get_runtime() -> str: + """Read pyconf.awk runtime.""" + with open(RUNTIME_PATH) as f: + return f.read() + + +_RUNTIME_CACHE: str | None = None + + +def get_runtime() -> str: + global _RUNTIME_CACHE + if _RUNTIME_CACHE is None: + _RUNTIME_CACHE = _get_runtime() + return _RUNTIME_CACHE + + +# String helper functions from pysh_to_awk._STRING_HELPERS +_STRING_HELPERS = None + + +def get_string_helpers() -> str: + global _STRING_HELPERS + if _STRING_HELPERS is None: + from transpiler.pysh_to_awk import _STRING_HELPERS as helpers + + _STRING_HELPERS = helpers + return _STRING_HELPERS + + +def transpile_python_func( + python_code: str, + option_vars: dict[str, OptionInfo] | None = None, +) -> str: + """Transpile a Python function string to AWK code. + + Returns the transpiled AWK function(s) as a string. + """ + tree = ast.parse(textwrap.dedent(python_code)) + mod = ModuleInfo(name="test", filepath="", tree=tree) + + all_opts = dict(mod.option_var_map) + if option_vars: + all_opts.update(option_vars) + + w = AwkWriter() + emitter = AwkEmitter(w) + + # Emit module-level constants + const_stmts: list[A.Stmt] = [] + for child in tree.body: + if isinstance(child, ast.Assign) and len(child.targets) == 1: + target = child.targets[0] + if ( + isinstance(target, ast.Name) + and isinstance(child.value, ast.Constant) + and target.id not in mod.option_var_map + ): + val = child.value.value + if isinstance(val, str): + const_stmts.append( + A.Assign(A.Var(target.id), A.StringLit(val)) + ) + elif isinstance(val, (int, float)): + const_stmts.append( + A.Assign(A.Var(target.id), A.StringLit(str(val))) + ) + elif isinstance(val, bool): + const_stmts.append( + A.Assign( + A.Var(target.id), + A.StringLit("yes" if val else "no"), + ) + ) + + if const_stmts: + const_func = A.FuncDef( + name="_init_constants", + params=[], + locals=[], + body=A.Block(const_stmts), + ) + emitter.emit_func(const_func) + w.emit() + + t1 = PyToPysh(mod, all_opts) + t2 = PyshToAwk(mod, all_opts) + for child in tree.body: + if isinstance(child, ast.FunctionDef): + mod.functions.append(child) + pysh_func = t1.transform_func(child) + awk_func = t2.transform_func(pysh_func) + emitter.emit_func(awk_func) + w.emit() + + return w.get_output() + + +def run_awk( + awk_funcs: str, + main_body: str, + extra_setup: str = "", +) -> subprocess.CompletedProcess: + """Run transpiled AWK functions under awk. + + Wraps the functions with pyconf.awk runtime, adds main_body in a BEGIN + block, and runs with awk. + + Returns CompletedProcess with stdout/stderr. + """ + default_setup = """ +# Minimal init for test environment +V["CC"] = (ENVIRON["CC"] != "" ? ENVIRON["CC"] : "cc") +V["CFLAGS"] = ENVIRON["CFLAGS"] +V["CPPFLAGS"] = ENVIRON["CPPFLAGS"] +V["LDFLAGS"] = ENVIRON["LDFLAGS"] +V["LIBS"] = ENVIRON["LIBS"] +V["GCC"] = "yes" +_pyconf_srcdir = "." +_pyconf_cross_compiling = "no" +pyconf_mktmpdir() +""" + script = f"""{get_runtime()} + +{get_string_helpers()} + +# === test setup === + +# === transpiled functions === +{awk_funcs} + +# === test main === +BEGIN {{ +{default_setup} +{extra_setup} +{main_body} +pyconf_cleanup() +}} +""" + with tempfile.NamedTemporaryFile( + mode="w", suffix=".awk", delete=False + ) as f: + f.write(script) + f.flush() + try: + result = subprocess.run( + [AWK, "-f", f.name], + capture_output=True, + text=True, + timeout=30, + ) + finally: + os.unlink(f.name) + return result + + +def transpile_and_run( + python_code: str, + main_body: str, + extra_setup: str = "", + option_vars: dict[str, OptionInfo] | None = None, +) -> subprocess.CompletedProcess: + """Convenience: transpile Python code and run the result.""" + awk_funcs = transpile_python_func(python_code, option_vars) + return run_awk(awk_funcs, main_body, extra_setup) + + +# --------------------------------------------------------------------------- +# Test cases +# --------------------------------------------------------------------------- + + +class TestAwkEmitter(unittest.TestCase): + """Test the AWK emitter directly with hand-built AST nodes.""" + + def test_string_literal(self): + w = AwkWriter() + e = AwkEmitter(w) + result = e.expr(A.StringLit("hello")) + self.assertEqual(result, '"hello"') + + def test_num_literal(self): + w = AwkWriter() + e = AwkEmitter(w) + result = e.expr(A.NumLit(42)) + self.assertEqual(result, "42") + + def test_var(self): + w = AwkWriter() + e = AwkEmitter(w) + result = e.expr(A.Var("x")) + self.assertEqual(result, "x") + + def test_array_ref(self): + w = AwkWriter() + e = AwkEmitter(w) + result = e.expr(A.ArrayRef("V", A.StringLit("FOO"))) + self.assertEqual(result, 'V["FOO"]') + + def test_func_call(self): + w = AwkWriter() + e = AwkEmitter(w) + result = e.expr(A.FuncCall("f", [A.StringLit("a"), A.NumLit(1)])) + self.assertEqual(result, 'f("a", 1)') + + def test_func_def(self): + w = AwkWriter() + e = AwkEmitter(w) + func = A.FuncDef( + name="test_func", + params=["a", "b"], + locals=["tmp"], + body=A.Block([A.Return(A.Var("a"))]), + ) + e.emit_func(func) + output = w.get_output() + self.assertIn("function test_func(a, b, tmp)", output) + self.assertIn("return a", output) + + def test_if_else(self): + w = AwkWriter() + e = AwkEmitter(w) + stmt = A.If( + branches=[ + A.IfBranch( + cond=A.BinOp(A.Var("x"), "==", A.StringLit("yes")), + body=A.Block([A.Assign(A.Var("y"), A.NumLit(1))]), + ) + ], + else_body=A.Block([A.Assign(A.Var("y"), A.NumLit(0))]), + ) + e.emit_stmt(stmt) + output = w.get_output() + self.assertIn('if ((x == "yes"))', output) + self.assertIn("y = 1", output) + self.assertIn("} else {", output) + self.assertIn("y = 0", output) + + +class TestBasicTranspile(unittest.TestCase): + """Basic transpilation: assignments, if/else, function calls.""" + + def test_simple_assignment(self): + result = transpile_and_run( + """ +def my_func(v): + v.FOO = "hello" +""", + 'u_my_func()\nprint "FOO=" V["FOO"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("FOO=hello", result.stdout) + + def test_if_else(self): + result = transpile_and_run( + """ +def my_func(v): + if v.FOO == "yes": + v.RESULT = "matched" + else: + v.RESULT = "nope" +""", + 'V["FOO"] = "yes"\nu_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=matched", result.stdout) + + def test_function_parameters(self): + result = transpile_and_run( + """ +def my_func(v, name, value): + v.RESULT = name +""", + 'u_my_func("hello", "world")\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=hello", result.stdout) + + def test_for_loop(self): + result = transpile_and_run( + """ +def my_func(v): + for x in ["a", "b", "c"]: + v.RESULT = x +""", + 'u_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=c", result.stdout) + + def test_string_concat(self): + result = transpile_and_run( + """ +def my_func(v): + v.RESULT = "hello" + " " + "world" +""", + 'u_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=hello world", result.stdout) + + def test_fstring(self): + result = transpile_and_run( + """ +def my_func(v): + name = "world" + v.RESULT = f"hello {name}" +""", + 'u_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=hello world", result.stdout) + + def test_ternary(self): + result = transpile_and_run( + """ +def my_func(v): + v.RESULT = "yes" if v.FOO == "1" else "no" +""", + 'V["FOO"] = "1"\nu_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=yes", result.stdout) + + def test_return_value(self): + result = transpile_and_run( + """ +def helper(v): + return "hello" + +def my_func(v): + v.RESULT = helper(v) +""", + 'u_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=hello", result.stdout) + + def test_boolean_true_false(self): + result = transpile_and_run( + """ +def my_func(v): + v.A = True + v.B = False +""", + 'u_my_func()\nprint "A=" V["A"] " B=" V["B"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("A=yes", result.stdout) + self.assertIn("B=no", result.stdout) + + def test_elif(self): + result = transpile_and_run( + """ +def my_func(v): + if v.X == "a": + v.RESULT = "1" + elif v.X == "b": + v.RESULT = "2" + else: + v.RESULT = "3" +""", + 'V["X"] = "b"\nu_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=2", result.stdout) + + +class TestStringMethods(unittest.TestCase): + """Test string method transpilation.""" + + def test_lower(self): + result = transpile_and_run( + """ +def my_func(v): + v.RESULT = v.INPUT.lower() +""", + 'V["INPUT"] = "HELLO"\nu_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=hello", result.stdout) + + def test_upper(self): + result = transpile_and_run( + """ +def my_func(v): + v.RESULT = v.INPUT.upper() +""", + 'V["INPUT"] = "hello"\nu_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=HELLO", result.stdout) + + def test_startswith(self): + result = transpile_and_run( + """ +def my_func(v): + if v.INPUT.startswith("hel"): + v.RESULT = "yes" + else: + v.RESULT = "no" +""", + 'V["INPUT"] = "hello"\nu_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=yes", result.stdout) + + def test_endswith(self): + result = transpile_and_run( + """ +def my_func(v): + if v.INPUT.endswith("llo"): + v.RESULT = "yes" + else: + v.RESULT = "no" +""", + 'V["INPUT"] = "hello"\nu_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=yes", result.stdout) + + def test_replace(self): + result = transpile_and_run( + """ +def my_func(v): + v.RESULT = v.INPUT.replace("world", "awk") +""", + 'V["INPUT"] = "hello world"\nu_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=hello awk", result.stdout) + + def test_in_string(self): + result = transpile_and_run( + """ +def my_func(v): + if "ell" in v.INPUT: + v.RESULT = "found" + else: + v.RESULT = "not found" +""", + 'V["INPUT"] = "hello"\nu_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=found", result.stdout) + + +class TestControlFlow(unittest.TestCase): + """Test control flow transpilation.""" + + def test_while_equivalent(self): + """Test for loop with list.""" + result = transpile_and_run( + """ +def my_func(v): + total = 0 + for x in [1, 2, 3]: + total = total + x + v.RESULT = str(total) +""", + 'u_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + # AWK treats string "1"+"2"+"3" as numeric addition + # but our list literals are strings so concatenation + # Just check it completes successfully + + def test_break(self): + result = transpile_and_run( + """ +def my_func(v): + for x in ["a", "b", "c"]: + if x == "b": + break + v.RESULT = x +""", + 'u_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=a", result.stdout) + + def test_continue(self): + result = transpile_and_run( + """ +def my_func(v): + v.RESULT = "" + for x in ["a", "b", "c"]: + if x == "b": + continue + v.RESULT = v.RESULT + x +""", + 'u_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=ac", result.stdout) + + def test_membership_in_list(self): + result = transpile_and_run( + """ +def my_func(v): + if v.X in ("a", "b", "c"): + v.RESULT = "found" + else: + v.RESULT = "not found" +""", + 'V["X"] = "b"\nu_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=found", result.stdout) + + +class TestVariableAccess(unittest.TestCase): + """Test v.NAME and related access patterns.""" + + def test_v_read_write(self): + result = transpile_and_run( + """ +def my_func(v): + v.OUT = v.IN +""", + 'V["IN"] = "test_value"\nu_my_func()\nprint "OUT=" V["OUT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("OUT=test_value", result.stdout) + + def test_aug_assign(self): + result = transpile_and_run( + """ +def my_func(v): + v.RESULT = "hello" + v.RESULT += " world" +""", + 'u_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=hello world", result.stdout) + + def test_comparison_ops(self): + result = transpile_and_run( + """ +def my_func(v): + if v.X == "yes": + v.R1 = "eq" + if v.X != "no": + v.R2 = "neq" +""", + 'V["X"] = "yes"\nu_my_func()\nprint "R1=" V["R1"] " R2=" V["R2"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("R1=eq", result.stdout) + self.assertIn("R2=neq", result.stdout) + + def test_none_check(self): + result = transpile_and_run( + """ +def my_func(v): + if v.X is None: + v.RESULT = "none" + else: + v.RESULT = "not_none" +""", + 'V["X"] = ""\nu_my_func()\nprint "RESULT=" V["RESULT"]', + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertIn("RESULT=none", result.stdout) + + +class TestExpandCmdVars(unittest.TestCase): + """Test _expand_cmd_vars() in pyconf.awk runtime.""" + + def _run_expand(self, cmd_str, extra_setup=""): + """Run _expand_cmd_vars on cmd_str and return the result.""" + main_body = f""" +V["CPP"] = "cc -E" +V["CPPFLAGS"] = "-I/usr/include" +V["CC"] = "/usr/bin/cc" +{extra_setup} +print _expand_cmd_vars("{cmd_str}") +""" + return run_awk("", main_body) + + def test_simple_var(self): + result = self._run_expand("$CC --version") + self.assertEqual(result.returncode, 0, result.stderr) + self.assertEqual(result.stdout.strip(), "/usr/bin/cc --version") + + def test_multiple_vars(self): + result = self._run_expand("$CPP $CPPFLAGS file.c") + self.assertEqual(result.returncode, 0, result.stderr) + self.assertEqual(result.stdout.strip(), "cc -E -I/usr/include file.c") + + def test_braced_var(self): + result = self._run_expand("${CC} --version") + self.assertEqual(result.returncode, 0, result.stderr) + self.assertEqual(result.stdout.strip(), "/usr/bin/cc --version") + + def test_no_vars(self): + result = self._run_expand("echo hello world") + self.assertEqual(result.returncode, 0, result.stderr) + self.assertEqual(result.stdout.strip(), "echo hello world") + + def test_unknown_var_expands_empty(self): + result = self._run_expand("prefix$UNKNOWN_VARsuffix rest") + self.assertEqual(result.returncode, 0, result.stderr) + # UNKNOWN_VARsuffix is one token, expands to empty + self.assertEqual(result.stdout.strip(), "prefix rest") + + def test_environ_fallback(self): + result = self._run_expand("$HOME/bin") + self.assertEqual(result.returncode, 0, result.stderr) + import os + + self.assertEqual(result.stdout.strip(), f"{os.environ['HOME']}/bin") + + def test_dollar_at_end(self): + result = self._run_expand("cost is 5$") + self.assertEqual(result.returncode, 0, result.stderr) + self.assertEqual(result.stdout.strip(), "cost is 5$") + + def test_pyconf_run_capture_expands(self): + """Test that pyconf_run_capture properly expands $VAR in commands.""" + result = transpile_and_run( + """ +def my_func(v): + result = pyconf.run( + "$CPP $CPPFLAGS -", + vars={"CPP": v.CPP, "CPPFLAGS": v.CPPFLAGS}, + capture_output=True, + text=True, + input="#define HELLO 42\\nHELLO", + ) + v.RC = str(result.returncode) +""", + """ +V["CPP"] = "cc -E" +V["CPPFLAGS"] = "" +u_my_func() +print "RC=" V["RC"] +""", + ) + self.assertEqual(result.returncode, 0, result.stderr) + # The C preprocessor should succeed (returncode 0) + self.assertIn("RC=0", result.stdout) + + +# --------------------------------------------------------------------------- +# Main +# --------------------------------------------------------------------------- + +if __name__ == "__main__": + unittest.main() diff --git a/Tools/configure/transpile.py b/Tools/configure/transpile.py new file mode 100644 index 00000000000000..f7b8c10955514b --- /dev/null +++ b/Tools/configure/transpile.py @@ -0,0 +1,16 @@ +"""transpile.py — compatibility shim for the transpiler package. + +The transpiler has moved to Tools/configure/transpiler/. +Run via: uv run Tools/configure/transpile.py [-o OUTPUT] + or: python -m transpiler [-o OUTPUT] (with Tools/configure on sys.path) +""" + +import os +import sys + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from transpiler.transpile import main # noqa: E402 + +if __name__ == "__main__": + main() diff --git a/Tools/configure/transpiler/__init__.py b/Tools/configure/transpiler/__init__.py new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/Tools/configure/transpiler/__main__.py b/Tools/configure/transpiler/__main__.py new file mode 100644 index 00000000000000..8ddb3a89557002 --- /dev/null +++ b/Tools/configure/transpiler/__main__.py @@ -0,0 +1,5 @@ +"""Entry point for ``python -m transpiler``.""" + +from .transpile import main + +main() diff --git a/Tools/configure/transpiler/awk_ast.py b/Tools/configure/transpiler/awk_ast.py new file mode 100644 index 00000000000000..aba4109e32f357 --- /dev/null +++ b/Tools/configure/transpiler/awk_ast.py @@ -0,0 +1,527 @@ +"""awk_ast.py — AWK AST intermediate representation for the transpiler. + +Defines dataclass nodes representing POSIX AWK constructs. The pipeline is: + + pysh_ast --[pysh_to_awk]--> awk_ast (this module) + --[awk_emit]--> awk text + +Key simplification: no separate BoolExpr hierarchy. +In AWK, comparisons and logical operators are regular expressions that +produce 0/1, usable in if conditions or as values. +""" + +from __future__ import annotations + +from dataclasses import dataclass, field + + +# --------------------------------------------------------------------------- +# Abstract bases +# --------------------------------------------------------------------------- + + +@dataclass +class AwkNode: + """Base class for all AWK AST nodes.""" + + +@dataclass +class Expr(AwkNode): + """Produces an AWK value (string or number).""" + + +@dataclass +class Stmt(AwkNode): + """An executable AWK statement.""" + + +# --------------------------------------------------------------------------- +# Expressions +# --------------------------------------------------------------------------- + + +@dataclass +class StringLit(Expr): + """A literal string value. + + AWK output: ``"value"`` + """ + + value: str + + +@dataclass +class NumLit(Expr): + """A literal number. + + AWK output: ``42`` + """ + + value: int | float + + +@dataclass +class Var(Expr): + """A variable reference. + + AWK output: ``name`` (no sigils) + """ + + name: str + + +@dataclass +class ArrayVar(Expr): + """An array variable passed by name (not subscripted). + + Used when an entire array is passed to a varargs function, so that the + emitter knows not to wrap it in a temporary array. + """ + + name: str + + +@dataclass +class ArrayRef(Expr): + """Array element access. + + AWK output: ``name[key]`` + """ + + name: str + key: Expr + + +@dataclass +class BinOp(Expr): + """Binary operator expression. + + AWK output: ``left op right`` + + Covers arithmetic (+, -, *, /, %), string comparison (==, !=, <, >, <=, >=), + logical (&&, ||), string match (~, !~), and string concatenation (" "). + """ + + left: Expr + op: str + right: Expr + + +@dataclass +class UnaryOp(Expr): + """Unary operator expression. + + AWK output: ``!expr`` or ``-expr`` + """ + + op: str + expr: Expr + + +@dataclass +class Ternary(Expr): + """Ternary conditional expression. + + AWK output: ``(test ? body : orelse)`` + """ + + test: Expr + body: Expr + orelse: Expr + + +@dataclass +class FuncCall(Expr): + """Function call expression. + + AWK output: ``name(args)`` + """ + + name: str + args: list[Expr] = field(default_factory=list) + + +@dataclass +class Regex(Expr): + """A regex literal. + + AWK output: ``/pattern/`` + """ + + pattern: str + + +@dataclass +class Match(Expr): + """Regex match expression. + + AWK output: ``expr ~ /pattern/`` or ``expr !~ /pattern/`` + """ + + expr: Expr + pattern: Expr # Regex or dynamic + negated: bool = False + + +@dataclass +class Concat(Expr): + """String concatenation via juxtaposition. + + AWK output: ``a b c`` (space-separated in source = concatenation) + """ + + parts: list[Expr] = field(default_factory=list) + + +@dataclass +class Sprintf(Expr): + """sprintf() call. + + AWK output: ``sprintf(fmt, args...)`` + """ + + fmt: str + args: list[Expr] = field(default_factory=list) + + +@dataclass +class InArray(Expr): + """Array membership test. + + AWK output: ``(key in array)`` + """ + + key: Expr + array: str + + +@dataclass +class Getline(Expr): + """Command getline for capturing output. + + AWK output: ``cmd | getline var`` + This is typically used as a statement but produces a value (0/1). + """ + + cmd: Expr + var: str = "_getline_tmp" + + +@dataclass +class Substr(Expr): + """substr() call. + + AWK output: ``substr(str, start[, len])`` + """ + + string: Expr + start: Expr + length: Expr | None = None + + +@dataclass +class Length(Expr): + """length() call. + + AWK output: ``length(expr)`` + """ + + expr: Expr + + +@dataclass +class Index(Expr): + """index() call. + + AWK output: ``index(haystack, needle)`` + """ + + haystack: Expr + needle: Expr + + +@dataclass +class Split(Expr): + """split() call. + + AWK output: ``split(str, arr, sep)`` + """ + + string: Expr + array: str + sep: Expr | None = None + + +@dataclass +class Sub(Expr): + """sub() or gsub() call. + + AWK output: ``gsub(pattern, replacement, target)`` + """ + + pattern: Expr + replacement: Expr + target: Expr + global_: bool = True # gsub vs sub + + +@dataclass +class Tolower(Expr): + """tolower() call. + + AWK output: ``tolower(expr)`` + """ + + expr: Expr + + +@dataclass +class Toupper(Expr): + """toupper() call. + + AWK output: ``toupper(expr)`` + """ + + expr: Expr + + +@dataclass +class System(Expr): + """system() call — execute a shell command. + + AWK output: ``system(cmd)`` + Returns the exit status. + """ + + cmd: Expr + + +# --------------------------------------------------------------------------- +# Statements +# --------------------------------------------------------------------------- + + +@dataclass +class Assign(Stmt): + """Variable or array assignment. + + AWK output: ``target = value`` + Target is a Var or ArrayRef. + """ + + target: Expr + value: Expr + + +@dataclass +class If(Stmt): + """if/else if/else construct. + + AWK output: ``if (cond) { ... } else if (...) { ... } else { ... }`` + """ + + branches: list[IfBranch] = field(default_factory=list) + else_body: Block | None = None + + +@dataclass +class IfBranch(AwkNode): + """A single if or else-if branch.""" + + cond: Expr + body: Block + + +@dataclass +class For(Stmt): + """C-style for loop. + + AWK output: ``for (init; cond; incr) { ... }`` + """ + + init: Stmt | None + cond: Expr | None + incr: Stmt | None + body: Block + + +@dataclass +class ForIn(Stmt): + """For-in loop over array keys. + + AWK output: ``for (var in array) { ... }`` + """ + + var: str + array: str + body: Block + + +@dataclass +class While(Stmt): + """While loop. + + AWK output: ``while (cond) { ... }`` + """ + + cond: Expr + body: Block + + +@dataclass +class Return(Stmt): + """Return statement. + + AWK output: ``return value`` + """ + + value: Expr | None = None + + +@dataclass +class Print(Stmt): + """Print statement. + + AWK output: ``print args [> dest]`` + """ + + args: list[Expr] = field(default_factory=list) + dest: Expr | None = None + append: bool = False + + +@dataclass +class Printf(Stmt): + """Printf statement. + + AWK output: ``printf fmt, args [> dest]`` + """ + + fmt: Expr + args: list[Expr] = field(default_factory=list) + dest: Expr | None = None + append: bool = False + + +@dataclass +class ExprStmt(Stmt): + """Expression used as statement (e.g., function call with no return). + + AWK output: ``expr`` + """ + + expr: Expr + + +@dataclass +class Delete(Stmt): + """Delete array element. + + AWK output: ``delete array[key]`` + """ + + array: str + key: Expr + + +@dataclass +class DeleteArray(Stmt): + """Delete entire array. + + AWK output: ``delete array`` + """ + + array: str + + +@dataclass +class Break(Stmt): + """Break statement.""" + + +@dataclass +class Continue(Stmt): + """Continue statement.""" + + +@dataclass +class Exit(Stmt): + """Exit statement. + + AWK output: ``exit [code]`` + """ + + code: Expr | None = None + + +@dataclass +class Block(Stmt): + """An ordered sequence of statements.""" + + stmts: list[Stmt] = field(default_factory=list) + + +@dataclass +class Comment(Stmt): + """A comment line. + + AWK output: ``# text`` + """ + + text: str + + +# --------------------------------------------------------------------------- +# Top-level nodes +# --------------------------------------------------------------------------- + + +@dataclass +class FuncDef(AwkNode): + """AWK function definition. + + Locals are declared as extra parameters separated by extra spaces. + + AWK output:: + + function name(params, loc1, loc2) { + ... + } + """ + + name: str + params: list[str] = field(default_factory=list) + locals: list[str] = field(default_factory=list) + body: Block = field(default_factory=Block) + + +@dataclass +class BeginBlock(AwkNode): + """AWK BEGIN block. + + AWK output: ``BEGIN { ... }`` + """ + + body: Block = field(default_factory=Block) + + +@dataclass +class VerbatimBlock(AwkNode): + """A block of verbatim AWK code included as-is. + + Used for embedding the pyconf.awk runtime library. + """ + + code: str + + +@dataclass +class Program(AwkNode): + """Complete AWK program. + + Contains function definitions, verbatim blocks, and a BEGIN block. + """ + + parts: list[FuncDef | BeginBlock | VerbatimBlock | Comment] = field( + default_factory=list + ) diff --git a/Tools/configure/transpiler/awk_emit.py b/Tools/configure/transpiler/awk_emit.py new file mode 100644 index 00000000000000..d7c23fbadecc32 --- /dev/null +++ b/Tools/configure/transpiler/awk_emit.py @@ -0,0 +1,520 @@ +"""awk_emit.py — AWK AST → POSIX AWK text emitter. + +Walks AWK AST nodes (see awk_ast.py) and produces AWK source code. + +Pipeline position:: + + pysh_ast --[pysh_to_awk]--> awk_ast --[this module]--> awk text +""" + +from __future__ import annotations + +from .awk_ast import ( + ArrayRef, + ArrayVar, + Assign, + BeginBlock, + BinOp, + Block, + Break, + Comment, + Concat, + Continue, + Delete, + DeleteArray, + Exit, + Expr, + ExprStmt, + For, + ForIn, + FuncCall, + FuncDef, + Getline, + If, + InArray, + Index, + Length, + Match, + NumLit, + Print, + Printf, + Program, + Regex, + Return, + Split, + Sprintf, + StringLit, + Stmt, + Sub, + Substr, + System, + Ternary, + Tolower, + Toupper, + UnaryOp, + Var, + VerbatimBlock, + While, +) + + +# --------------------------------------------------------------------------- +# AWK string escaping +# --------------------------------------------------------------------------- + + +def _escape_awk_string(s: str) -> str: + """Escape a string for use inside AWK double quotes.""" + s = s.replace("\\", "\\\\") + s = s.replace('"', '\\"') + s = s.replace("\n", "\\n") + s = s.replace("\t", "\\t") + s = s.replace("\r", "\\r") + return s + + +def _escape_regex(s: str) -> str: + """Escape a string for use inside AWK /regex/.""" + s = s.replace("\\", "\\\\") + s = s.replace("/", "\\/") + return s + + +# --------------------------------------------------------------------------- +# Writer helper +# --------------------------------------------------------------------------- + + +class AwkWriter: + """Manages AWK code output with proper indentation.""" + + def __init__(self) -> None: + self.lines: list[str] = [] + self.indent_level = 0 + + def emit(self, line: str = "") -> None: + if not line: + self.lines.append("") + else: + self.lines.append("\t" * self.indent_level + line) + + def emit_raw(self, text: str) -> None: + for ln in text.split("\n"): + self.lines.append(ln) + + def indent(self) -> None: + self.indent_level += 1 + + def dedent(self) -> None: + self.indent_level -= 1 + + def get_output(self) -> str: + return "\n".join(self.lines) + "\n" + + +# --------------------------------------------------------------------------- +# Emitter +# --------------------------------------------------------------------------- + + +class AwkEmitter: + """Emit AWK AST nodes as POSIX AWK text.""" + + def __init__(self, writer: AwkWriter) -> None: + self.w = writer + self._hoisted: list[str] = [] # lines to emit before current stmt + self._va_counter = 0 # unique temp array counter + + # ------------------------------------------------------------------ + # Top-level + # ------------------------------------------------------------------ + + def emit_program(self, program: Program) -> None: + for part in program.parts: + match part: + case FuncDef(): + self.emit_func(part) + self.w.emit() + case BeginBlock(): + self.emit_begin(part) + self.w.emit() + case VerbatimBlock(code=code): + self.w.emit_raw(code) + self.w.emit() + case Comment(text=text): + self.w.emit(f"# {text}") + + def emit_func(self, func: FuncDef) -> None: + params_str = ", ".join(func.params) + if func.locals: + locals_str = ", ".join(func.locals) + if params_str: + sig = f"{params_str}, {locals_str}" + else: + sig = f" {locals_str}" + else: + sig = params_str + self.w.emit(f"function {func.name}({sig}) {{") + self.w.indent() + self.emit_block(func.body) + self.w.dedent() + self.w.emit("}") + + def emit_begin(self, begin: BeginBlock) -> None: + self.w.emit("BEGIN {") + self.w.indent() + self.emit_block(begin.body) + self.w.dedent() + self.w.emit("}") + + # ------------------------------------------------------------------ + # Block and statements + # ------------------------------------------------------------------ + + def emit_block(self, block: Block) -> None: + if not block.stmts: + return + for stmt in block.stmts: + self.emit_stmt(stmt) + + def _flush_hoisted(self) -> None: + """Emit any hoisted setup lines (e.g., array population for varargs).""" + for line in self._hoisted: + self.w.emit(line) + self._hoisted.clear() + + def emit_stmt(self, node: Stmt) -> None: + match node: + case Assign(target=target, value=value): + tgt_s = self.expr(target) + val_s = self.expr(value) + self._flush_hoisted() + self.w.emit(f"{tgt_s} = {val_s}") + + case If(): + self._emit_if(node) + + case For(init=init, cond=cond, incr=incr, body=body): + init_s = self._stmt_inline(init) if init else "" + cond_s = self.expr(cond) if cond else "" + incr_s = self._stmt_inline(incr) if incr else "" + self._flush_hoisted() + self.w.emit(f"for ({init_s}; {cond_s}; {incr_s}) {{") + self.w.indent() + self.emit_block(body) + self.w.dedent() + self.w.emit("}") + + case ForIn(var=var, array=array, body=body): + self.w.emit(f"for ({var} in {array}) {{") + self.w.indent() + self.emit_block(body) + self.w.dedent() + self.w.emit("}") + + case While(cond=cond, body=body): + cond_s = self.expr(cond) + self._flush_hoisted() + self.w.emit(f"while ({cond_s}) {{") + self.w.indent() + self.emit_block(body) + self.w.dedent() + self.w.emit("}") + + case Return(value=None): + self.w.emit("return") + + case Return(value=value): + val_s = self.expr(value) + self._flush_hoisted() + self.w.emit(f"return {val_s}") + + case Print(args=args, dest=dest, append=append): + args_s = ", ".join(self.expr(a) for a in args) if args else "" + line = f"print {args_s}" if args_s else "print" + if dest: + op = ">>" if append else ">" + line += f" {op} {self.expr(dest)}" + self._flush_hoisted() + self.w.emit(line) + + case Printf(fmt=fmt, args=args, dest=dest, append=append): + parts = [self.expr(fmt)] + parts.extend(self.expr(a) for a in args) + line = "printf " + ", ".join(parts) + if dest: + op = ">>" if append else ">" + line += f" {op} {self.expr(dest)}" + self._flush_hoisted() + self.w.emit(line) + + case ExprStmt(expr=FuncCall(name="v_export", args=args)) if ( + len(args) >= 2 + ): + # v_export("NAME", value) → V["NAME"] = value; v_export("NAME") + name_s = self.expr(args[0]) + val_s = self.expr(args[1]) + self._flush_hoisted() + self.w.emit(f"V[{name_s}] = {val_s}") + self.w.emit(f"v_export({name_s})") + + case ExprStmt(expr=e): + line = self.expr(e) + self._flush_hoisted() + self.w.emit(line) + + case Delete(array=array, key=key): + self.w.emit(f"delete {array}[{self.expr(key)}]") + + case DeleteArray(array=array): + self.w.emit(f"delete {array}") + + case Break(): + self.w.emit("break") + + case Continue(): + self.w.emit("continue") + + case Exit(code=None): + self.w.emit("exit") + + case Exit(code=code): + self.w.emit(f"exit {self.expr(code)}") + + case Block(): + self.emit_block(node) + + case Comment(text=text): + self.w.emit(f"# {text}") + + case _: + raise ValueError( + f"unsupported AWK statement: {type(node).__name__}" + ) + + def _emit_if(self, node: If) -> None: + # Track how many extra else blocks we open for hoisted vararg setup. + extra_nesting = 0 + for i, branch in enumerate(node.branches): + cond_s = self.expr(branch.cond) + hoisted = list(self._hoisted) + self._hoisted.clear() + if i == 0: + for h in hoisted: + self.w.emit(h) + self.w.emit(f"if ({cond_s}) {{") + elif hoisted: + # Hoisted setup needed: close previous block with else, + # nest the hoisted lines and new if inside it. + self.w.emit("} else {") + self.w.indent() + extra_nesting += 1 + for h in hoisted: + self.w.emit(h) + self.w.emit(f"if ({cond_s}) {{") + else: + self.w.emit(f"}} else if ({cond_s}) {{") + self.w.indent() + self.emit_block(branch.body) + self.w.dedent() + if node.else_body and node.else_body.stmts: + self.w.emit("} else {") + self.w.indent() + self.emit_block(node.else_body) + self.w.dedent() + self.w.emit("}") + # Close any extra nesting from hoisted else blocks + for _ in range(extra_nesting): + self.w.dedent() + self.w.emit("}") + + def _stmt_inline(self, node: Stmt) -> str: + """Render a statement inline (for for-loop init/incr).""" + match node: + case Assign(target=target, value=value): + return f"{self.expr(target)} = {self.expr(value)}" + case ExprStmt(expr=e): + return self.expr(e) + case _: + raise ValueError( + f"cannot inline statement: {type(node).__name__}" + ) + + # ------------------------------------------------------------------ + # Expressions + # ------------------------------------------------------------------ + + def expr(self, node: Expr) -> str: + match node: + case StringLit(value=v): + return f'"{_escape_awk_string(v)}"' + + case NumLit(value=v): + return str(v) + + case Var(name=name): + return name + + case ArrayVar(name=name): + return name + + case ArrayRef(name=name, key=key): + return f"{name}[{self.expr(key)}]" + + case BinOp(left=left, op=op, right=right): + return f"({self.expr(left)} {op} {self.expr(right)})" + + case UnaryOp(op=op, expr=e): + return f"({op}{self.expr(e)})" + + case Ternary(test=test, body=body, orelse=orelse): + return ( + f"({self.expr(test)} ? {self.expr(body)} : " + f"{self.expr(orelse)})" + ) + + case FuncCall(name=name, args=args): + return self._emit_func_call(name, args) + + case Regex(pattern=pattern): + return f"/{_escape_regex(pattern)}/" + + case Match(expr=e, pattern=pat, negated=neg): + op = "!~" if neg else "~" + return f"({self.expr(e)} {op} {self.expr(pat)})" + + case Concat(parts=parts): + return " ".join(self.expr(p) for p in parts) + + case Sprintf(fmt=fmt, args=args): + all_args = [f'"{_escape_awk_string(fmt)}"'] + all_args.extend(self.expr(a) for a in args) + return f"sprintf({', '.join(all_args)})" + + case InArray(key=key, array=array): + return f"({self.expr(key)} in {array})" + + case Getline(cmd=cmd, var=var): + return f"({self.expr(cmd)} | getline {var})" + + case Substr(string=s, start=start, length=None): + return f"substr({self.expr(s)}, {self.expr(start)})" + + case Substr(string=s, start=start, length=length): + return ( + f"substr({self.expr(s)}, {self.expr(start)}, " + f"{self.expr(length)})" + ) + + case Length(expr=e): + return f"length({self.expr(e)})" + + case Index(haystack=h, needle=n): + return f"index({self.expr(h)}, {self.expr(n)})" + + case Split(string=s, array=array, sep=None): + return f"split({self.expr(s)}, {array})" + + case Split(string=s, array=array, sep=sep): + return f"split({self.expr(s)}, {array}, {self.expr(sep)})" + + case Sub(pattern=pat, replacement=repl, target=target, global_=g): + func = "gsub" if g else "sub" + return ( + f"{func}({self.expr(pat)}, {self.expr(repl)}, " + f"{self.expr(target)})" + ) + + case Tolower(expr=e): + return f"tolower({self.expr(e)})" + + case Toupper(expr=e): + return f"toupper({self.expr(e)})" + + case System(cmd=cmd): + return f"system({self.expr(cmd)})" + + case _: + raise ValueError( + f"unsupported AWK expression: {type(node).__name__}" + ) + + # ------------------------------------------------------------------ + # Varargs function call handling + # ------------------------------------------------------------------ + + # Maps function name → (fixed_leading, fixed_trailing). + # Variable args between fixed_leading and len-fixed_trailing are packed + # into a temp AWK array and passed as one array argument. + _VARARGS_FUNCS: dict[str, tuple[int, int]] = { + "pyconf_check_compile_flag": (1, 0), + "pyconf_check_progs": (0, 0), + "pyconf_check_tools": (0, 0), + "pyconf_cmd": (0, 0), + "pyconf_cmd_output": (0, 0), + "pyconf_cmd_status": (0, 1), # last arg is result array + "pyconf_fnmatch_any": (1, 0), # first arg is string, rest are patterns + "pyconf_stdlib_module_set_na": (0, 0), + "pyconf_path_join": (0, 0), + "pyconf_check_funcs": (0, 0), + "pyconf_check_headers": (0, 0), + "pyconf_replace_funcs": (0, 0), + "pyconf_check_decls": (0, 0), + "pyconf_config_files": (0, 0), + "pyconf_config_files_x": (0, 0), + "pyconf_shell": (0, 0), + } + + def _next_va_name(self) -> str: + self._va_counter += 1 + return f"_va{self._va_counter}" + + def _emit_func_call(self, name: str, args: list) -> str: + spec = self._VARARGS_FUNCS.get(name) + if spec is not None: + lead, trail = spec + total_fixed = lead + trail + if len(args) > total_fixed: + end = len(args) - trail if trail else len(args) + va_args = args[lead:end] + # If the sole variadic arg is an ArrayVar, pass it directly + # instead of wrapping in a temporary array — it is already + # a properly-formatted array (element 0 = count). + if len(va_args) == 1 and isinstance(va_args[0], ArrayVar): + call_args: list[str] = [] + call_args.extend(self.expr(a) for a in args[:lead]) + call_args.append(va_args[0].name) + call_args.extend(self.expr(a) for a in args[end:]) + return f"{name}({', '.join(call_args)})" + # Pack variable args into a temp array via hoisted lines. + # Lines are stored WITHOUT indentation — _flush_hoisted() + # emits them via self.w.emit() which adds the current indent. + va_name = self._next_va_name() + self._hoisted.append(f"delete {va_name}") + idx = 1 + for arg in va_args: + self._hoisted.append( + f"{va_name}[{idx}] = {self.expr(arg)}" + ) + idx += 1 + self._hoisted.append(f"{va_name}[0] = {idx - 1}") + call_args = [] + call_args.extend(self.expr(a) for a in args[:lead]) + call_args.append(va_name) + call_args.extend(self.expr(a) for a in args[end:]) + return f"{name}({', '.join(call_args)})" + args_s = ", ".join(self.expr(a) for a in args) + return f"{name}({args_s})" + + +# --------------------------------------------------------------------------- +# Public API +# --------------------------------------------------------------------------- + + +def generate_code(program: Program) -> str: + """Generate AWK source code from an AWK AST Program.""" + w = AwkWriter() + emitter = AwkEmitter(w) + emitter.emit_program(program) + return w.get_output() diff --git a/Tools/configure/transpiler/lint_transpilable.py b/Tools/configure/transpiler/lint_transpilable.py new file mode 100644 index 00000000000000..4bb5d337c7b949 --- /dev/null +++ b/Tools/configure/transpiler/lint_transpilable.py @@ -0,0 +1,887 @@ +"""lint_transpilable — AST-based checker for the transpilable Python subset. + +Ensures conf_*.py files stay within the subset of Python that can be +mechanically translated to POSIX shell by the transpiler. Run in CI +to prevent regressions. + +Usage: + python lint_transpilable.py [conf_*.py ...] + +If no files are given, lints all conf_*.py files in the same directory. +""" + +import ast +import glob +import os +import sys +from dataclasses import dataclass, field + +# Imports allowed in conf_*.py files. +# 'pyconf' and 'conf_*' are always allowed. +# Others will be flagged as needing replacement with pyconf wrappers. +ALLOWED_IMPORTS = frozenset({"pyconf", "os", "warnings"}) + +# os attributes that are allowed (will have pyconf equivalents). +# os.path.*, os.environ.*, etc. are flagged separately. +ALLOWED_OS_ATTRS = frozenset( + { + "environ", + "pathsep", + } +) + +# Imports that must be replaced with pyconf wrappers. +DISALLOWED_IMPORTS = frozenset( + { + "re", + "subprocess", + "pathlib", + "shutil", + "glob", + "platform", + } +) + +# Allowed pyconf method calls (pyconf.foo()). +ALLOWED_PYCONF_CALLS = frozenset( + { + # Core checking/result + "checking", + "result", + "warn", + "notice", + "error", + "fatal", + # Definitions and exports + "define", + "define_unquoted", + "define_template", + # Compilation checks + "compile_check", + "link_check", + "run_check", + "compile_link_check", + "try_link", + "check_compile_flag", + "check_linker_flag", + "run_check_with_cc_flag", + # Function/header/type checks + "check_func", + "check_funcs", + "check_headers", + "check_header", + "check_sizeof", + "check_alignof", + "sizeof", + "check_type", + "check_member", + "check_members", + "check_decl", + "check_decls", + "check_define", + "check_c_const", + "check_c_restrict", + "check_c_bigendian", + "ax_c_float_words_bigendian", + "check_struct_tm", + "check_struct_timezone", + "check_lib", + "search_libs", + "replace_funcs", + # Program checks + "check_prog", + "check_progs", + "check_tools", + "find_prog", + "find_install", + "find_mkdir_p", + # Compiler + "find_compiler", + "use_system_extensions", + # Option handling + "arg_with", + "arg_enable", + "env_var", + "get_dir_arg", + # Host/build + "canonical_host", + # File operations (pyconf wrappers) + "abspath", + "basename", + "getcwd", + "readlink", + "relpath", + "path_exists", + "path_is_dir", + "path_is_file", + "path_is_symlink", + "path_parent", + "path_join", + "rm_f", + "rmdir", + "mkdir_p", + "rename_file", + "write_file", + "read_file", + "is_executable", + "glob_files", + "platform_machine", + "platform_system", + # Command execution (pyconf wrappers) + "cmd", + "cmd_output", + "cmd_status", + "run_program_output", + "shell", + # Pattern matching (pyconf wrapper) + "fnmatch", + "fnmatch_any", + "sed", + # Environment save/restore + "save_env", + # Init/output + "init_args", + "check_help", + "output", + "config_files", + # pkg-config + "pkg_config", + "pkg_config_check", + "pkg_check_modules", + # Emscripten + "check_emscripten_port", + # Module support + "stdlib_module", + "stdlib_module_simple", + "stdlib_module_set_na", + # Misc + "run", + "macro", + "is_defined", + } +) + +# Allowed OptionSpec method calls (WITH_FOO.method()). +ALLOWED_OPTION_METHODS = frozenset( + { + "value", + "given", + "is_yes", + "is_no", + "process_bool", + "process_value", + "value_or", + } +) + +# Allowed string methods that have shell equivalents. +ALLOWED_STR_METHODS = frozenset( + { + "startswith", + "endswith", + "strip", + "lstrip", + "rstrip", + "replace", + "split", + "splitlines", + "join", + "lower", + "upper", + "format", + } +) + +# Allowed builtin calls. +ALLOWED_BUILTINS = frozenset( + { + "bool", + "int", + "str", + "isinstance", + "len", + "print", + "list", + "tuple", + "range", + "sorted", + "reversed", + "enumerate", + "min", + "max", + "any", + "all", + "zip", + "map", + "filter", + } +) + + +@dataclass +class Violation: + file: str + line: int + col: int + msg: str + + def __str__(self): + return f"{self.file}:{self.line}:{self.col}: {self.msg}" + + +@dataclass +class LintResult: + violations: list[Violation] = field(default_factory=list) + + def add(self, file, node, msg): + self.violations.append( + Violation( + file=file, + line=getattr(node, "lineno", 0), + col=getattr(node, "col_offset", 0), + msg=msg, + ) + ) + + @property + def ok(self): + return len(self.violations) == 0 + + +class TranspilableLinter(ast.NodeVisitor): + """Walk a conf_*.py AST and flag constructs outside the transpilable subset.""" + + def __init__(self, filename: str, result: LintResult): + self.filename = filename + self.result = result + self._in_function = False + # Track module-level option variables for OptionSpec method validation + self._option_vars: set[str] = set() + + def _warn(self, node, msg): + self.result.add(self.filename, node, msg) + + # ── Module level ────────────────────────────────────────────────── + + def visit_Module(self, node): + for child in node.body: + if isinstance(child, ast.Import): + self._check_import(child) + elif isinstance(child, ast.ImportFrom): + self._check_import_from(child) + elif isinstance(child, ast.FunctionDef): + self._check_function_def(child) + elif isinstance(child, ast.Assign): + self._check_module_assign(child) + elif isinstance(child, ast.AnnAssign): + # Type annotations at module level are fine (constants) + pass + elif isinstance(child, ast.Expr): + # Module-level expressions (docstrings, pyconf calls) + if isinstance(child.value, ast.Constant) and isinstance( + child.value.value, str + ): + pass # docstring + else: + self._check_expr_value(child.value) + elif isinstance(child, ast.ClassDef): + self._warn(child, "class definitions are not transpilable") + else: + self._warn( + child, + f"unexpected module-level statement: {type(child).__name__}", + ) + + # ── Imports ─────────────────────────────────────────────────────── + + def _check_import(self, node): + for alias in node.names: + name = alias.name + if name in DISALLOWED_IMPORTS: + self._warn( + node, + f"import {name}: must be replaced with pyconf wrapper", + ) + elif name.startswith("conf_") or name in ALLOWED_IMPORTS: + pass # ok + elif name == "pyconf": + pass # ok + else: + self._warn( + node, + f"import {name}: not in allowed imports", + ) + + def _check_import_from(self, node): + mod = node.module or "" + if ( + mod in DISALLOWED_IMPORTS + or mod.split(".")[0] in DISALLOWED_IMPORTS + ): + self._warn( + node, + f"from {mod} import ...: must be replaced with pyconf wrapper", + ) + elif ( + mod.startswith("conf_") + or mod in ALLOWED_IMPORTS + or mod == "pyconf" + ): + pass # ok + else: + self._warn(node, f"from {mod} import ...: not in allowed imports") + + # ── Function definitions ────────────────────────────────────────── + + def _check_function_def(self, node): + if node.name.startswith("_"): + # Private helper functions are allowed but still linted + pass + + # Check for *args and **kwargs — not transpilable + if node.args.vararg: + self._warn( + node, + f"*{node.args.vararg.arg}: star-args are not transpilable" + " (pass a list instead)", + ) + if node.args.kwarg: + self._warn( + node, + f"**{node.args.kwarg.arg}: keyword star-args are not" + " transpilable", + ) + + # Check decorators + for dec in node.decorator_list: + self._warn(dec, "decorators are not transpilable") + + # Check for nested functions + old_in_function = self._in_function + self._in_function = True + for child in node.body: + self._check_stmt(child) + self._in_function = old_in_function + + # ── Statements (inside functions) ───────────────────────────────── + + def _check_stmt(self, node): + if isinstance(node, ast.Expr): + if isinstance(node.value, ast.Constant) and isinstance( + node.value.value, str + ): + pass # docstring + else: + self._check_expr_value(node.value) + + elif isinstance(node, ast.Assign): + self._check_assign(node) + + elif isinstance(node, ast.AugAssign): + self._check_expr(node.value) + + elif isinstance(node, ast.AnnAssign): + if node.value: + self._check_expr(node.value) + + elif isinstance(node, ast.If): + self._check_expr(node.test) + for child in node.body: + self._check_stmt(child) + for child in node.orelse: + self._check_stmt(child) + + elif isinstance(node, ast.For): + self._check_expr(node.iter) + for child in node.body: + self._check_stmt(child) + for child in node.orelse: + self._check_stmt(child) + + elif isinstance(node, ast.While): + self._warn(node, "while loops are not transpilable") + + elif isinstance(node, ast.Return): + if node.value: + self._check_expr(node.value) + + elif isinstance(node, ast.With): + self._check_with(node) + + elif isinstance(node, (ast.Try, ast.TryStar)): + self._warn(node, "try/except is not transpilable") + + elif isinstance(node, ast.FunctionDef): + self._warn( + node, "nested function definitions are not transpilable" + ) + + elif isinstance(node, ast.ClassDef): + self._warn(node, "class definitions are not transpilable") + + elif isinstance(node, ast.Delete): + self._warn(node, "del statements are not transpilable") + + elif isinstance(node, ast.Global): + self._warn(node, "global statements are not transpilable") + + elif isinstance(node, ast.Nonlocal): + self._warn(node, "nonlocal statements are not transpilable") + + elif isinstance(node, ast.Assert): + self._warn(node, "assert statements are not transpilable") + + elif isinstance(node, ast.Raise): + self._warn(node, "raise statements are not transpilable") + + elif isinstance(node, ast.Pass): + pass # ok + + elif isinstance(node, ast.Break): + pass # ok + + elif isinstance(node, ast.Continue): + pass # ok + + elif isinstance(node, ast.Match): + self._warn(node, "match statements are not transpilable") + + elif isinstance(node, ast.Import): + self._warn(node, "imports inside functions are not transpilable") + + elif isinstance(node, ast.ImportFrom): + self._warn(node, "imports inside functions are not transpilable") + + elif isinstance(node, ast.AsyncFunctionDef): + self._warn(node, "async functions are not transpilable") + + elif isinstance(node, ast.AsyncFor): + self._warn(node, "async for is not transpilable") + + elif isinstance(node, ast.AsyncWith): + self._warn(node, "async with is not transpilable") + + else: + self._warn( + node, + f"unexpected statement type: {type(node).__name__}", + ) + + # ── With statement ──────────────────────────────────────────────── + + def _check_with(self, node): + """Only `with pyconf.save_env():` is allowed.""" + allowed = False + for item in node.items: + ctx = item.context_expr + if ( + isinstance(ctx, ast.Call) + and isinstance(ctx.func, ast.Attribute) + and isinstance(ctx.func.value, ast.Name) + and ctx.func.value.id == "pyconf" + and ctx.func.attr == "save_env" + ): + allowed = True + else: + self._warn( + node, + "with statements are not transpilable " + "(only `with pyconf.save_env()` is allowed)", + ) + return + + if allowed: + for child in node.body: + self._check_stmt(child) + + # ── Assignments ─────────────────────────────────────────────────── + + def _check_module_assign(self, node): + """Check module-level assignments (constants, option declarations).""" + for target in node.targets: + if isinstance(target, ast.Name): + # Check if RHS is a pyconf.arg_with/arg_enable/env_var call + if isinstance( + node.value, ast.Call + ) and self._is_pyconf_option_call(node.value): + self._option_vars.add(target.id) + self._check_expr(node.value) + + def _check_assign(self, node): + self._check_expr(node.value) + # Warn if a list with multi-word string elements is assigned to a name. + # Such variables cannot be safely iterated with `for x in var:` because + # shell word-splits on spaces, breaking multi-word elements. + # Fix: use an inline literal list in the for loop instead. + if ( + isinstance(node.value, (ast.List, ast.Tuple)) + and len(node.targets) == 1 + and isinstance(node.targets[0], ast.Name) + ): + for elt in node.value.elts: + if ( + isinstance(elt, ast.Constant) + and isinstance(elt.value, str) + and " " in elt.value + ): + self._warn( + node, + "list assigned to variable contains a multi-word string element " + f"({elt.value!r}); use an inline literal list in the for loop " + "instead of a named variable to avoid shell word-splitting", + ) + break + + def _is_pyconf_option_call(self, node): + """Check if a call is pyconf.arg_with/arg_enable/env_var.""" + if isinstance(node, ast.Call) and isinstance(node.func, ast.Attribute): + if ( + isinstance(node.func.value, ast.Name) + and node.func.value.id == "pyconf" + and node.func.attr in ("arg_with", "arg_enable", "env_var") + ): + return True + return False + + # ── Expressions ─────────────────────────────────────────────────── + + def _check_expr_value(self, node): + """Check an expression used as a statement (bare call, etc.).""" + self._check_expr(node) + + def _check_expr(self, node): + """Recursively check an expression is within the transpilable subset.""" + if node is None: + return + + if isinstance(node, ast.Constant): + pass # ok: strings, ints, bools, None + + elif isinstance(node, ast.Name): + pass # ok: variable references + + elif isinstance(node, ast.Attribute): + self._check_attribute(node) + + elif isinstance(node, ast.Call): + self._check_call(node) + + elif isinstance(node, ast.BoolOp): + for val in node.values: + self._check_expr(val) + + elif isinstance(node, ast.BinOp): + self._check_expr(node.left) + self._check_expr(node.right) + + elif isinstance(node, ast.UnaryOp): + self._check_expr(node.operand) + + elif isinstance(node, ast.Compare): + self._check_expr(node.left) + for comp in node.comparators: + self._check_expr(comp) + + elif isinstance(node, ast.IfExp): + # Ternary: x if cond else y + self._check_expr(node.test) + self._check_expr(node.body) + self._check_expr(node.orelse) + + elif isinstance(node, ast.JoinedStr): + # f-strings + for val in node.values: + self._check_expr(val) + + elif isinstance(node, ast.FormattedValue): + self._check_expr(node.value) + + elif isinstance(node, ast.Subscript): + self._check_expr(node.value) + self._check_expr(node.slice) + + elif isinstance(node, ast.Starred): + self._warn( + node, + "*-unpacking in calls is not transpilable" + " (pass a list instead)", + ) + self._check_expr(node.value) + + elif isinstance(node, ast.List): + for elt in node.elts: + self._check_expr(elt) + + elif isinstance(node, ast.Tuple): + for elt in node.elts: + self._check_expr(elt) + + elif isinstance(node, ast.Dict): + for k in node.keys: + if k: + self._check_expr(k) + for val in node.values: + self._check_expr(val) + + elif isinstance(node, ast.Set): + for elt in node.elts: + self._check_expr(elt) + + elif isinstance(node, ast.Slice): + if node.lower: + self._check_expr(node.lower) + if node.upper: + self._check_expr(node.upper) + if node.step: + self._check_expr(node.step) + + elif isinstance(node, ast.ListComp): + self._warn(node, "list comprehensions are not transpilable") + + elif isinstance(node, ast.SetComp): + self._warn(node, "set comprehensions are not transpilable") + + elif isinstance(node, ast.DictComp): + self._warn(node, "dict comprehensions are not transpilable") + + elif isinstance(node, ast.GeneratorExp): + self._warn(node, "generator expressions are not transpilable") + + elif isinstance(node, ast.Lambda): + self._warn(node, "lambda expressions are not transpilable") + + elif isinstance(node, ast.NamedExpr): + self._warn(node, "walrus operator (:=) is not transpilable") + + elif isinstance(node, ast.Await): + self._warn(node, "await expressions are not transpilable") + + elif isinstance(node, ast.Yield): + self._warn(node, "yield expressions are not transpilable") + + elif isinstance(node, ast.YieldFrom): + self._warn(node, "yield from expressions are not transpilable") + + else: + self._warn( + node, + f"unexpected expression type: {type(node).__name__}", + ) + + # ── Attribute access ────────────────────────────────────────────── + + def _check_attribute(self, node): + """Check attribute access patterns.""" + # pyconf.attr — allowed for known attributes + if isinstance(node.value, ast.Name) and node.value.id == "pyconf": + # pyconf.something — we'll validate calls separately + return + + # os.path.* — not transpilable + if isinstance(node.value, ast.Attribute): + if ( + isinstance(node.value.value, ast.Name) + and node.value.value.id == "os" + and node.value.attr == "path" + ): + self._warn( + node, + f"os.path.{node.attr}(): must be replaced with pyconf wrapper", + ) + return + + # os.environ — allowed (limited) + if isinstance(node.value, ast.Name) and node.value.id == "os": + if node.attr not in ALLOWED_OS_ATTRS: + self._warn( + node, + f"os.{node.attr}: must be replaced with pyconf wrapper", + ) + return + + # v.FOO — always allowed (Vars object access) + # string.method — checked at call site + # other — recurse into value + self._check_expr(node.value) + + # ── Function calls ──────────────────────────────────────────────── + + def _check_call(self, node): + """Check function/method calls.""" + # Check for **kwargs unpacking in calls + for kw in node.keywords: + if kw.arg is None: + self._warn( + node, + "**-unpacking in calls is not transpilable", + ) + func = node.func + + # pyconf.method(...) + if isinstance(func, ast.Attribute) and isinstance( + func.value, ast.Name + ): + if func.value.id == "pyconf": + if func.attr not in ALLOWED_PYCONF_CALLS: + self._warn( + node, + f"pyconf.{func.attr}(): not in allowed pyconf calls", + ) + # Check arguments + for arg in node.args: + self._check_expr(arg) + for kw in node.keywords: + self._check_expr(kw.value) + return + + # OptionSpec method calls: WITH_FOO.method(...) + if isinstance(func, ast.Attribute) and isinstance( + func.value, ast.Name + ): + if func.value.id in self._option_vars: + if func.attr not in ALLOWED_OPTION_METHODS: + self._warn( + node, + f"{func.value.id}.{func.attr}(): " + f"not in allowed OptionSpec methods", + ) + for arg in node.args: + self._check_expr(arg) + for kw in node.keywords: + self._check_expr(kw.value) + return + + # String method calls: x.startswith(...), etc. + if isinstance(func, ast.Attribute): + if func.attr in ALLOWED_STR_METHODS: + self._check_expr(func.value) + for arg in node.args: + self._check_expr(arg) + for kw in node.keywords: + self._check_expr(kw.value) + return + + # Builtin calls + if isinstance(func, ast.Name): + if func.id in ALLOWED_BUILTINS: + for arg in node.args: + self._check_expr(arg) + for kw in node.keywords: + self._check_expr(kw.value) + return + elif func.id == "open": + self._warn( + node, "open(): must be replaced with pyconf wrapper" + ) + return + + # os.path.method(...) + if isinstance(func, ast.Attribute) and isinstance( + func.value, ast.Attribute + ): + if ( + isinstance(func.value.value, ast.Name) + and func.value.value.id == "os" + and func.value.attr == "path" + ): + self._warn( + node, + f"os.path.{func.attr}(): must be replaced with pyconf wrapper", + ) + for arg in node.args: + self._check_expr(arg) + for kw in node.keywords: + self._check_expr(kw.value) + return + + # os.method(...) + if isinstance(func, ast.Attribute) and isinstance( + func.value, ast.Name + ): + if func.value.id == "os": + if func.attr not in ALLOWED_OS_ATTRS: + self._warn( + node, + f"os.{func.attr}(): must be replaced with pyconf wrapper", + ) + for arg in node.args: + self._check_expr(arg) + for kw in node.keywords: + self._check_expr(kw.value) + return + + # v.export(...) and other Vars methods — allowed + if isinstance(func, ast.Attribute) and isinstance( + func.value, ast.Name + ): + if func.value.id == "v": + for arg in node.args: + self._check_expr(arg) + for kw in node.keywords: + self._check_expr(kw.value) + return + + # conf_module.function(...) — allowed + if isinstance(func, ast.Attribute) and isinstance( + func.value, ast.Name + ): + if func.value.id.startswith("conf_"): + for arg in node.args: + self._check_expr(arg) + for kw in node.keywords: + self._check_expr(kw.value) + return + + # Generic: check func expression and args + self._check_expr(func) + for arg in node.args: + self._check_expr(arg) + for kw in node.keywords: + self._check_expr(kw.value) + + +def lint_file(filepath: str) -> LintResult: + """Lint a single file and return the result.""" + result = LintResult() + with open(filepath) as f: + source = f.read() + try: + tree = ast.parse(source, filename=filepath) + except SyntaxError as e: + result.add( + filepath, + type("node", (), {"lineno": e.lineno or 0, "col_offset": 0})(), + f"syntax error: {e.msg}", + ) + return result + + linter = TranspilableLinter(filepath, result) + linter.visit(tree) + return result + + +def main(): + if len(sys.argv) > 1: + files = sys.argv[1:] + else: + # Find all conf_*.py in the same directory as this script + script_dir = os.path.dirname(os.path.abspath(__file__)) + files = sorted(glob.glob(os.path.join(script_dir, "conf_*.py"))) + + total_violations = 0 + for filepath in files: + result = lint_file(filepath) + for v in result.violations: + print(v) + total_violations += len(result.violations) + + if total_violations: + print(f"\n{total_violations} transpilability violation(s) found.") + sys.exit(1) + else: + print("All files pass transpilability checks.") + sys.exit(0) + + +if __name__ == "__main__": + main() diff --git a/Tools/configure/transpiler/py_to_pysh.py b/Tools/configure/transpiler/py_to_pysh.py new file mode 100644 index 00000000000000..f079362f74ee3a --- /dev/null +++ b/Tools/configure/transpiler/py_to_pysh.py @@ -0,0 +1,622 @@ +"""py_to_pysh.py — Transform 1: Python AST → pysh_ast. + +Simple structural walk. The only non-trivial decision made here is +resolving :class:`~pysh_ast.CallType` for each :class:`~pysh_ast.Call` +node; all semantic lowering is deferred to Transform 2 +(:mod:`pysh_to_awk`). + +Pipeline position:: + + Python AST --[this module]--> pysh_ast + --[pysh_to_awk]--> awk_ast + --[awk_emit]--> awk text +""" + +from __future__ import annotations + +import ast +import glob +import os + +from .pysh_ast import ( + Add, + Assign, + Attr, + AugAssign, + Block, + BoolOp, + Break, + Call, + CallType, + Cmp, + Const, + Continue, + Dict, + Expr, + ExprStmt, + FStr, + For, + FuncDef, + If, + In, + List, + ModuleConst, + ModuleInfo, + Not, + OPTION_BOOL_METHODS, + OPTION_BOOL_PROPS, + OPTION_RETVAL_METHODS, + OPTION_VALUE_METHODS, + OPTION_VALUE_PROPS, + OptionInfo, + Program, + PYCONF_BOOL_FUNCS, + PYCONF_RETVAL_FUNCS, + PYCONF_STDOUT_FUNCS, + Return, + Stmt, + Subscript, + Ternary, + Var, + With, +) + +# --------------------------------------------------------------------------- +# Module-level helpers +# --------------------------------------------------------------------------- + + +def _is_docstring(node: ast.stmt) -> bool: + match node: + case ast.Expr(value=ast.Constant(value=str())): + return True + case _: + return False + + +def _attr_str(node: ast.expr) -> str: + """Return a dotted-string representation of an attribute chain. + + E.g. ``ast.Attribute(Name("pyconf"), "check_header")`` + → ``"pyconf.check_header"``. + """ + match node: + case ast.Name(id=name): + return name + case ast.Attribute(value=value, attr=attr): + return f"{_attr_str(value)}.{attr}" + case _: + return "" + + +def _cmp_op_str(op: ast.cmpop) -> str: + """Map a Python AST comparison operator to a string.""" + match op: + case ast.Eq(): + return "==" + case ast.NotEq(): + return "!=" + case ast.Lt(): + return "<" + case ast.LtE(): + return "<=" + case ast.Gt(): + return ">" + case ast.GtE(): + return ">=" + case ast.Is(): + return "is" + case ast.IsNot(): + return "is not" + case _: + return "==" + + +# --------------------------------------------------------------------------- +# Main transform class +# --------------------------------------------------------------------------- + + +class PyToPysh: + """Transform Python function definitions into :class:`~pysh_ast.FuncDef`. + + Construct once per translation unit; reuse across functions in a module. + + This is Transform 1 in the two-stage pipeline. The only non-trivial + work done here is resolving :class:`~pysh_ast.CallType` for each + :class:`~pysh_ast.Call`. No shell lowering takes place. + """ + + def __init__( + self, + module: ModuleInfo, + all_option_vars: dict[str, OptionInfo], + ) -> None: + self.module = module + self.option_vars = all_option_vars + + # ------------------------------------------------------------------ + # Top-level entry points + # ------------------------------------------------------------------ + + def transform_func(self, func: ast.FunctionDef) -> FuncDef: + """Transform a Python function definition into a :class:`~pysh_ast.FuncDef`.""" + params = [arg.arg for arg in func.args.args if arg.arg != "v"] + + # Collect default values for parameters + defaults: dict[str, Expr] = {} + n_args = len(func.args.args) + n_defaults = len(func.args.defaults) + for i, default in enumerate(func.args.defaults): + arg_idx = n_args - n_defaults + i + arg_name = func.args.args[arg_idx].arg + if arg_name != "v": + defaults[arg_name] = self.expr(default) + + body_stmts = [s for s in func.body if not _is_docstring(s)] + return FuncDef( + name=func.name, + params=params, + defaults=defaults, + body=self.block(body_stmts), + ) + + def block(self, stmts: list[ast.stmt]) -> Block: + """Transform a list of Python statements into a :class:`~pysh_ast.Block`.""" + result: list[Stmt] = [] + for s in stmts: + if _is_docstring(s): + continue + translated = self.stmt(s) + if translated is not None: + result.append(translated) + return Block(result) + + # ------------------------------------------------------------------ + # Statement dispatch + # ------------------------------------------------------------------ + + def stmt(self, node: ast.stmt) -> Stmt | None: + """Translate one Python statement to a pysh_ast Stmt (or None to skip).""" + match node: + case ast.Expr(value=ast.Constant(value=str())): + return None # docstring — already filtered, but just in case + case ast.Expr(value=val): + return ExprStmt(self.expr(val)) + case ast.Assign(targets=[target], value=value): + return Assign(self.expr(target), self.expr(value)) + case ast.Assign(targets=targets, value=value): + # Multiple assignment targets: take the first + return Assign(self.expr(targets[0]), self.expr(value)) + case ast.AnnAssign(target=target, value=value) if ( + value is not None + ): + return Assign(self.expr(target), self.expr(value)) + case ast.AnnAssign(): + return None # bare declaration (no value) + case ast.AugAssign(target=target, op=op, value=value): + return AugAssign( + self.expr(target), type(op).__name__, self.expr(value) + ) + case ast.If(test=test, body=body, orelse=orelse): + return If( + self.expr(test), + self.block(body), + self.block(orelse) if orelse else None, + ) + case ast.For(target=target, iter=iter_, body=body): + var = target.id if isinstance(target, ast.Name) else "_iter" + return For(var, self.expr(iter_), self.block(body)) + case ast.With(items=items, body=body): + ctx = ( + self.expr(items[0].context_expr) if items else Const(None) + ) + return With(ctx, self.block(body)) + case ast.Return(value=value): + return Return(self.expr(value) if value is not None else None) + case ast.Pass(): + return None + case ast.Break(): + return Break() + case ast.Continue(): + return Continue() + case _: + # Unsupported statement — emit a no-op placeholder + return ExprStmt(Const(f"# TODO: {type(node).__name__}")) + + # ------------------------------------------------------------------ + # Expression dispatch + # ------------------------------------------------------------------ + + def expr(self, node: ast.expr | None) -> Expr: + """Translate a Python expression node to a pysh_ast Expr.""" + if node is None: + return Const(None) + match node: + case ast.Constant(value=value): + return Const(value) + case ast.Name(id=name): + return Var(name) + case ast.Attribute(): + return self._attr_expr(node) + case ast.JoinedStr(): + return self._fstr_expr(node) + case ast.BinOp(left=left, op=ast.Add(), right=right): + return Add(self.expr(left), self.expr(right)) + case ast.BinOp(left=left, op=ast.USub()) if False: + # USub handled below + pass + case ast.UnaryOp(op=ast.USub(), operand=operand): + # Negate: -x → Add("-", x) + return Add(Const("-"), self.expr(operand)) + case ast.BinOp(): + return Const("") # unsupported binary op + case ast.BoolOp(op=op, values=values): + op_str = "and" if isinstance(op, ast.And) else "or" + return BoolOp(op_str, [self.expr(v) for v in values]) + case ast.UnaryOp(op=ast.Not(), operand=operand): + return Not(self.expr(operand)) + case ast.Compare(): + return self._compare_expr(node) + case ast.IfExp(test=test, body=body, orelse=orelse): + return Ternary( + self.expr(test), self.expr(body), self.expr(orelse) + ) + case ast.Call(): + return self._call_expr(node) + case ast.Subscript(value=value, slice=slice_): + return Subscript(self.expr(value), self.expr(slice_)) + case ast.List(elts=elts) | ast.Tuple(elts=elts): + return List([self.expr(e) for e in elts]) + case ast.Set(elts=elts): + return List([self.expr(e) for e in elts]) + case ast.Dict(keys=keys, values=vals): + str_keys = [ + str(k.value) if isinstance(k, ast.Constant) else None + for k in keys + ] + return Dict( + keys=[k for k in str_keys if k is not None], + values=[ + self.expr(v) + for k, v in zip(str_keys, vals) + if k is not None + ], + ) + case ast.Starred(value=value): + return self.expr(value) + case ast.FormattedValue(value=value): + return self.expr(value) + case _: + return Const("") # unsupported expression + + def _attr_expr(self, node: ast.Attribute) -> Expr: + """Translate ``ast.Attribute`` → :class:`~pysh_ast.Attr`.""" + obj_str = _attr_str(node.value) + return Attr(obj_str, node.attr) + + def _fstr_expr(self, node: ast.JoinedStr) -> FStr: + """Translate ``ast.JoinedStr`` → :class:`~pysh_ast.FStr`.""" + parts: list = [] + for val in node.values: + match val: + case ast.Constant(value=str() as s): + parts.append(s) + case ast.FormattedValue(value=inner): + parts.append(self.expr(inner)) + case _: + parts.append(self.expr(val)) + return FStr(parts) + + def _compare_expr(self, node: ast.Compare) -> Expr: + """Translate ``ast.Compare`` → :class:`~pysh_ast.Cmp`, :class:`~pysh_ast.In`, or :class:`~pysh_ast.BoolOp`.""" + if len(node.ops) > 1: + # Chained comparison: a <= x <= b → BoolOp("and", [a<=x, x<=b]) + parts: list[Expr] = [] + prev: ast.expr = node.left + for op, right in zip(node.ops, node.comparators): + match op: + case ast.In(): + parts.append(In(self.expr(prev), self.expr(right))) + case ast.NotIn(): + parts.append( + In(self.expr(prev), self.expr(right), negated=True) + ) + case _: + parts.append( + Cmp( + self.expr(prev), + _cmp_op_str(op), + self.expr(right), + ) + ) + prev = right + return BoolOp("and", parts) + + op = node.ops[0] + right = node.comparators[0] + left = node.left + match op: + case ast.In(): + return In(self.expr(left), self.expr(right)) + case ast.NotIn(): + return In(self.expr(left), self.expr(right), negated=True) + case _: + return Cmp(self.expr(left), _cmp_op_str(op), self.expr(right)) + + def _call_expr(self, node: ast.Call) -> Call: + """Translate ``ast.Call`` → :class:`~pysh_ast.Call` with resolved :class:`~pysh_ast.CallType`.""" + func_str = _attr_str(node.func) + call_type = self._resolve_call_type(node.func) + + # Translate positional args. 'v' (the Vars object) is preserved here; + # Transform 2 decides whether to use or strip it. + args: list[Expr] = [] + + # For chained method calls where the receiver is a complex expression + # (e.g., x.replace("/", "").lower()), _attr_str can't flatten the chain + # and returns ".method". Inject the lowered receiver as args[0] + # so pysh_to_awk can recover it. + if func_str.startswith(".") and isinstance( + node.func, ast.Attribute + ): + args.append(self.expr(node.func.value)) + + for arg in node.args: + match arg: + case ast.Starred(value=val): + args.append(self.expr(val)) + case _: + args.append(self.expr(arg)) + + # Translate keyword args. + kwargs: dict[str, Expr] = {} + for kw in node.keywords: + if kw.arg is not None: + kwargs[kw.arg] = self.expr(kw.value) + + # Bool functions with a value= kwarg also produce stdout output; + # promote to STDOUT so the transpiler doesn't wrap in if/yes/no. + if call_type == CallType.BOOL and "value" in kwargs: + call_type = CallType.STDOUT + + return Call( + func=func_str, args=args, kwargs=kwargs, call_type=call_type + ) + + # ------------------------------------------------------------------ + # CallType resolution + # ------------------------------------------------------------------ + + def _resolve_call_type(self, func: ast.expr) -> CallType: + """Determine the :class:`~pysh_ast.CallType` for a call. + + Priority order: + + 1. ``pyconf.`` where name in ``PYCONF_BOOL_FUNCS`` → BOOL + 2. ``pyconf.`` where name in ``PYCONF_STDOUT_FUNCS`` → STDOUT + 3. ``pyconf.`` where name in ``PYCONF_RETVAL_FUNCS`` → RETVAL + 4. ``pyconf.pkg_check_modules`` → MULTI + 5. ``OPTION.`` where method in ``OPTION_BOOL_METHODS/PROPS`` → BOOL + 6. ``OPTION.`` where method in ``OPTION_RETVAL_METHODS`` → RETVAL + 7. ``OPTION.`` where method in ``OPTION_VALUE_METHODS/PROPS`` → STDOUT + 8. Everything else → VOID + """ + match func: + case ast.Attribute(value=ast.Name(id=obj), attr=attr): + pass + case _: + return CallType.VOID + + if obj == "pyconf": + if attr == "pkg_check_modules": + return CallType.MULTI + if attr in PYCONF_BOOL_FUNCS: + return CallType.BOOL + if attr in PYCONF_STDOUT_FUNCS: + return CallType.STDOUT + if attr in PYCONF_RETVAL_FUNCS: + return CallType.RETVAL + return CallType.VOID + + opt = self.option_vars.get(obj) + if opt is not None: + if attr in OPTION_BOOL_METHODS or attr in OPTION_BOOL_PROPS: + return CallType.BOOL + if attr in OPTION_RETVAL_METHODS: + return CallType.RETVAL + if attr in OPTION_VALUE_METHODS or attr in OPTION_VALUE_PROPS: + return CallType.STDOUT + + return CallType.VOID + + +# --------------------------------------------------------------------------- +# Option parsing helpers +# --------------------------------------------------------------------------- + + +def _normalize_opt_name(name: str) -> str: + return name.replace("-", "_") + + +def _extract_string_kwarg(node: ast.Call, name: str) -> str | None: + for kw in node.keywords: + if kw.arg == name and isinstance(kw.value, ast.Constant): + return str(kw.value.value) + return None + + +def _extract_kwarg_value(node: ast.Call, name: str) -> object | None: + for kw in node.keywords: + if kw.arg == name: + if isinstance(kw.value, ast.Constant): + return kw.value.value + return "" + return None + + +def parse_option_decl( + python_var: str, call_node: ast.Call +) -> OptionInfo | None: + """Parse a module-level pyconf.arg_with/arg_enable call.""" + func = call_node.func + if not ( + isinstance(func, ast.Attribute) + and isinstance(func.value, ast.Name) + and func.value.id == "pyconf" + ): + return None + if func.attr not in ("arg_with", "arg_enable"): + return None + + kind = "with" if func.attr == "arg_with" else "enable" + if not call_node.args or not isinstance(call_node.args[0], ast.Constant): + return None + name = _normalize_opt_name(str(call_node.args[0].value)) + key = f"{kind}_{name}" + + return OptionInfo( + python_var=python_var, + kind=kind, + name=name, + key=key, + var=_extract_string_kwarg(call_node, "var"), + default=_extract_kwarg_value(call_node, "default"), + help_text=_extract_string_kwarg(call_node, "help") or "", + metavar=_extract_string_kwarg(call_node, "metavar") or "", + false_is=_extract_string_kwarg(call_node, "false_is"), + display=_extract_string_kwarg(call_node, "display"), + ) + + +def _parse_module_options(filepath: str) -> ModuleInfo: + """Pass 1: parse a conf_*.py for options and constants (no function transform).""" + name = os.path.splitext(os.path.basename(filepath))[0] + with open(filepath) as f: + source = f.read() + tree = ast.parse(source, filename=filepath) + mod = ModuleInfo(name=name, filepath=filepath) + + for child in tree.body: + match child: + case ast.Assign(targets=targets, value=value): + for target in targets: + match target: + case ast.Name(id=var_name): + match value: + case ast.Call(): + opt = parse_option_decl(var_name, value) + if opt: + mod.options.append(opt) + mod.option_var_map[var_name] = opt + case ast.Constant(value=val) if ( + var_name not in mod.option_var_map + ): + if isinstance( + val, (str, int, float, bool) + ): + mod.constants.append( + ModuleConst(var_name, val) + ) + return mod + + +def parse_module( + filepath: str, all_option_vars: dict[str, OptionInfo] +) -> ModuleInfo: + """Pass 2: parse a conf_*.py file and transform functions with PyToPysh.""" + name = os.path.splitext(os.path.basename(filepath))[0] + with open(filepath) as f: + source = f.read() + tree = ast.parse(source, filename=filepath) + mod = ModuleInfo(name=name, filepath=filepath) + + for child in tree.body: + match child: + case ast.Assign(targets=targets, value=value): + for target in targets: + match target: + case ast.Name(id=var_name): + match value: + case ast.Call(): + opt = parse_option_decl(var_name, value) + if opt: + mod.options.append(opt) + mod.option_var_map[var_name] = opt + case ast.Constant(value=val) if ( + var_name not in mod.option_var_map + ): + if isinstance( + val, (str, int, float, bool) + ): + mod.constants.append( + ModuleConst(var_name, val) + ) + case ast.FunctionDef(): + transformer = PyToPysh(mod, all_option_vars) + mod.functions.append(transformer.transform_func(child)) + + return mod + + +def parse_run_order(configure_py: str) -> list[str]: + """Parse configure.py's _run() to get the ordered list of calls. + + Returns a list of "module.function" strings. + """ + with open(configure_py) as f: + source = f.read() + tree = ast.parse(source, filename=configure_py) + + for child in tree.body: + match child: + case ast.FunctionDef(name="_run", body=body): + calls = [] + for s in body: + match s: + case ast.Expr( + value=ast.Call( + func=ast.Attribute( + value=ast.Name(id=mod_name), attr=func_name + ) + ) + ): + calls.append(f"{mod_name}.{func_name}") + return calls + return [] + + +def parse_program(script_dir: str) -> Program: + """Parse all conf_*.py files and configure.py into a Program. + + Two-pass approach: + Pass 1: collect all OptionInfo across all modules. + Pass 2: transform functions (so cross-module option vars are resolved). + """ + pattern = os.path.join(script_dir, "conf_*.py") + filepaths = sorted(glob.glob(pattern)) + + # Pass 1: collect options from all modules + all_option_vars: dict[str, OptionInfo] = {} + for filepath in filepaths: + mod = _parse_module_options(filepath) + all_option_vars.update(mod.option_var_map) + + # Pass 2: parse modules with function transformation + modules = [] + for filepath in filepaths: + mod = parse_module(filepath, all_option_vars) + modules.append(mod) + + configure_py = os.path.join(script_dir, "configure.py") + run_order: list[str] = [] + if os.path.exists(configure_py): + run_order = parse_run_order(configure_py) + + return Program( + script_dir=script_dir, + modules=modules, + all_option_vars=all_option_vars, + run_order=run_order, + ) diff --git a/Tools/configure/transpiler/pyconf.awk b/Tools/configure/transpiler/pyconf.awk new file mode 100644 index 00000000000000..88f11066f8cf89 --- /dev/null +++ b/Tools/configure/transpiler/pyconf.awk @@ -0,0 +1,1895 @@ +# pyconf.awk — AWK runtime library for the configure transpiler. +# +# POSIX AWK equivalent of pyconf.sh. All configure logic runs inside +# a single AWK process, using associative arrays for state. +# +# Data structures: +# V[] - configuration variables (replaces flat shell namespace) +# ENV[] - shadow environment (init from ENVIRON[]) +# MODIFIED_ENV[] - tracks which env vars were modified +# DEFINES[] - pyconfig.h defines: name -> value +# DEFINE_DESC[] - pyconfig.h define descriptions +# DEFINE_QUOTED[]- whether define value needs quoting +# CACHE[] - probe cache (ac_cv_*) +# OPT_VAL[] - option values +# OPT_GIVEN[] - option given flags (0/1) +# OPT_KIND[] - option kind ("enable" or "with") +# OPT_DEFAULT[] - option defaults +# OPT_HELP[] - option help text +# OPT_METAVAR[] - option metavar +# OPT_VAR[] - option env variable binding +# OPT_FALSE_IS[] - option false_is value +# SUBST[] - Makefile substitution variables +# CONFIG_FILES[] - list of config files to process +# CONFIG_FILES_X[] - config files needing chmod +x + +# --------------------------------------------------------------------------- +# Initialization +# --------------------------------------------------------------------------- + +function pyconf_init( k) { + # Shadow ENVIRON into ENV[] + for (k in ENVIRON) + ENV[k] = ENVIRON[k] + _pyconf_tmpdir = "" + _pyconf_verbose = 0 + _pyconf_srcdir = "." + _pyconf_cross_compiling = "no" + _pyconf_config_file_count = 0 + _pyconf_config_file_x_count = 0 + SUBST["LIBOBJS"] = "" + _pyconf_opt_count = 0 + _pyconf_checking_msg = "" + _pyconf_deferred_result = "" + _pyconf_defines_order_n = 0 + # Create temp directory + pyconf_mktmpdir() +} + +function pyconf_mktmpdir( cmd, line) { + cmd = "mktemp -d /tmp/pyconf.XXXXXX 2>/dev/null || echo /tmp/pyconf.$$" + if ((cmd | getline line) > 0) + _pyconf_tmpdir = line + close(cmd) + if (_pyconf_tmpdir == "" || substr(_pyconf_tmpdir, 1, 1) != "/") { + cmd = "echo /tmp/pyconf.$$" + if ((cmd | getline line) > 0) + _pyconf_tmpdir = line + close(cmd) + } + system("mkdir -p " _pyconf_tmpdir) +} + +function pyconf_cleanup() { + if (_pyconf_tmpdir != "") + system("rm -rf " _pyconf_tmpdir) +} + +# --------------------------------------------------------------------------- +# Logging / messaging +# --------------------------------------------------------------------------- + +function pyconf_checking(msg) { + _pyconf_checking_msg = msg + printf "checking %s... ", msg +} + +function pyconf_result(val) { + printf "%s\n", val + _pyconf_checking_msg = "" +} + +function _pyconf_flush_result() { + if (_pyconf_deferred_result != "") { + pyconf_result(_pyconf_deferred_result) + _pyconf_deferred_result = "" + } +} + +function _pyconf_print_cached(val) { + printf "%s (cached)\n", val +} + +function pyconf_warn(msg) { + printf "WARNING: %s\n", msg > "/dev/stderr" +} + +function pyconf_notice(msg) { + printf "%s\n", msg +} + +function pyconf_error(msg) { + printf "configure: error: %s\n", msg > "/dev/stderr" + exit 1 +} + +function pyconf_fatal(msg) { + printf "configure: error: %s\n", msg > "/dev/stderr" + exit 1 +} + +# --------------------------------------------------------------------------- +# Defines (pyconfig.h) +# --------------------------------------------------------------------------- + +function _pyconf_init_defines() { + # Nothing needed — arrays are auto-initialized +} + +function pyconf_define(name, value, quoted, desc) { + if (!(name in DEFINES)) { + _pyconf_defines_order_n++ + _pyconf_defines_order[_pyconf_defines_order_n] = name + } + DEFINES[name] = value + if (desc != "") DEFINE_DESC[name] = desc + DEFINE_QUOTED[name] = quoted + 0 +} + +function pyconf_define_unquoted(name, value, desc) { + pyconf_define(name, value, 0, desc) +} + +function pyconf_define_template(name, desc) { + if (!(name in DEFINES)) { + _pyconf_defines_order_n++ + _pyconf_defines_order[_pyconf_defines_order_n] = name + } + if (desc != "") DEFINE_DESC[name] = desc + # Template only — no value set yet +} + +function _pyconf_define_remove(name) { + delete DEFINES[name] + delete DEFINE_DESC[name] + delete DEFINE_QUOTED[name] +} + +function _pyconf_define_get(name) { + if (name in DEFINES) + return DEFINES[name] + return "" +} + +function pyconf_is_defined(name) { + return (name in DEFINES) +} + +# --------------------------------------------------------------------------- +# Substitution variables +# --------------------------------------------------------------------------- + +function pyconf_subst_set(name, value) { + SUBST[name] = value +} + +function pyconf_subst_get(name) { + if (name in SUBST) + return SUBST[name] + return "" +} + +function pyconf_export(name, value) { + V[name] = value + ENV[name] = value + MODIFIED_ENV[name] = 1 +} + +function v_export(name) { + ENV[name] = V[name] + MODIFIED_ENV[name] = 1 +} + +# --------------------------------------------------------------------------- +# Cache +# --------------------------------------------------------------------------- + +function _pyconf_cache_set(key, value) { + CACHE[key] = value +} + +function _pyconf_cache_get(key) { + if (key in CACHE) + return CACHE[key] + return "" +} + +function _pyconf_cache_has(key) { + return (key in CACHE) +} + +# --------------------------------------------------------------------------- +# Command execution helpers +# --------------------------------------------------------------------------- + +function _arr_join(arr, sep, n, i, result) { + n = arr[0] + 0 + result = "" + for (i = 1; i <= n; i++) + result = result (i > 1 ? sep : "") arr[i] + return result +} + +function _arr_join_quoted(arr, sep, n, i, result) { + n = arr[0] + 0 + result = "" + for (i = 1; i <= n; i++) + result = result (i > 1 ? sep : "") _shell_quote(arr[i]) + return result +} + +# Expand $VAR and ${VAR} references in a command string from V[], falling +# back to ENVIRON[]. Mirrors what Python's pyconf.run() does with its +# vars= parameter: the command template contains shell-style variable +# references that must be resolved before execution. +function _expand_cmd_vars(cmd, result, i, n, c, varname, brace) { + result = "" + n = length(cmd) + i = 1 + while (i <= n) { + c = substr(cmd, i, 1) + if (c == "$" && i < n) { + # Check for ${VAR} or $VAR + if (substr(cmd, i + 1, 1) == "{") { + brace = 1 + i += 2 + varname = "" + while (i <= n && substr(cmd, i, 1) != "}") { + varname = varname substr(cmd, i, 1) + i++ + } + if (i <= n) i++ # skip closing } + } else { + brace = 0 + i++ + varname = "" + while (i <= n && substr(cmd, i, 1) ~ /[A-Za-z0-9_]/) { + varname = varname substr(cmd, i, 1) + i++ + } + } + if (varname == "") { + result = result "$" + if (brace) result = result "{" + } else if (varname in V) { + result = result V[varname] + } else if (varname in ENVIRON) { + result = result ENVIRON[varname] + } + # else: unknown var expands to empty (matches shell behaviour) + } else { + result = result c + i++ + } + } + return result +} + +function _cmd_output(cmd, line, result) { + result = "" + while ((cmd | getline line) > 0) + result = result (result != "" ? "\n" : "") line + close(cmd) + return result +} + +function _cmd_output_oneline(cmd, line) { + line = "" + cmd | getline line + close(cmd) + return line +} + +function _cmd_exit_code(cmd) { + return system(cmd " >/dev/null 2>&1") +} + +function _pyconf_env_prefix( k, prefix) { + prefix = "" + for (k in MODIFIED_ENV) { + prefix = prefix k "=" _shell_quote(ENV[k]) " " + } + return prefix +} + +function _shell_quote(s, r) { + r = s + gsub(/'/, "'\\''", r) + return "'" r "'" +} + +# --------------------------------------------------------------------------- +# Compiler checks +# --------------------------------------------------------------------------- + +function _pyconf_confdefs( result, k, i, name, val) { + result = "" + for (i = 1; i <= _pyconf_defines_order_n; i++) { + name = _pyconf_defines_order[i] + if (name in DEFINES) { + val = DEFINES[name] + if (DEFINE_QUOTED[name]) + result = result "#define " name " \"" val "\"\n" + else + result = result "#define " name " " val "\n" + } + } + return result +} + +function _split_cc_lib_flags(extra_flags, pre, post, n, arr, i) { + # Split extra_flags: -l/-L/-Wl, flags go into post (after source), + # everything else goes into pre (before source). + # This matches GNU ld ordering requirements. + pre[0] = "" + post[0] = "" + n = split(extra_flags, arr, " ") + for (i = 1; i <= n; i++) { + if (arr[i] == "") continue + if (substr(arr[i], 1, 2) == "-l" || substr(arr[i], 1, 2) == "-L" || substr(arr[i], 1, 4) == "-Wl,") + post[0] = post[0] (post[0] != "" ? " " : "") arr[i] + else + pre[0] = pre[0] (pre[0] != "" ? " " : "") arr[i] + } +} + +function _pyconf_run_cc(source, extra_flags, mode, conftest, cmd, rc, pre, post) { + conftest = _pyconf_tmpdir "/conftest.c" + printf "%s", source > conftest + close(conftest) + + cmd = _pyconf_env_prefix() + if (mode == "compile") + cmd = cmd V["CC"] " " V["CPPFLAGS"] " " V["CFLAGS"] " " extra_flags " -c " conftest " -o " _pyconf_tmpdir "/conftest.o 2>/dev/null" + else { + _split_cc_lib_flags(extra_flags, pre, post) + cmd = cmd V["CC"] " " V["CPPFLAGS"] " " V["CFLAGS"] " " V["LDFLAGS"] " " pre[0] " " conftest " -o " _pyconf_tmpdir "/conftest " post[0] " " V["LIBS"] " 2>/dev/null" + } + + rc = system(cmd) + system("rm -f " _pyconf_tmpdir "/conftest.c " _pyconf_tmpdir "/conftest.o " _pyconf_tmpdir "/conftest") + return rc +} + +function _pyconf_compile_test(source, extra_flags) { + return (_pyconf_run_cc(source, extra_flags, "compile") == 0) +} + +function _pyconf_link_test(source, extra_flags) { + return (_pyconf_run_cc(source, extra_flags, "link") == 0) +} + +function _pyconf_run_test(source, extra_flags, conftest, cmd, rc, line, result, outf, pre, post) { + conftest = _pyconf_tmpdir "/conftest.c" + printf "%s", source > conftest + close(conftest) + + cmd = _pyconf_env_prefix() + _split_cc_lib_flags(extra_flags, pre, post) + cmd = cmd V["CC"] " " V["CPPFLAGS"] " " V["CFLAGS"] " " V["LDFLAGS"] " " pre[0] " " conftest " -o " _pyconf_tmpdir "/conftest " post[0] " " V["LIBS"] " 2>/dev/null" + if (system(cmd) != 0) { + system("rm -f " conftest " " _pyconf_tmpdir "/conftest") + _pyconf_run_test_rc = 1 + return "" + } + + outf = _pyconf_tmpdir "/conftest_out" + rc = system(_pyconf_tmpdir "/conftest > " outf " 2>/dev/null") + _pyconf_run_test_rc = rc + result = "" + cmd = "cat " outf + while ((cmd | getline line) > 0) + result = result (result != "" ? "\n" : "") line + close(cmd) + system("rm -f " conftest " " _pyconf_tmpdir "/conftest " outf) + return result +} + +# --------------------------------------------------------------------------- +# High-level check functions +# --------------------------------------------------------------------------- + +function pyconf_compile_check(desc, source, extra_flags, compiler, rc, saved_cc) { + if (desc != "") pyconf_checking(desc) + if (compiler != "") { saved_cc = V["CC"]; V["CC"] = compiler } + rc = _pyconf_compile_test(_pyconf_confdefs() "\n" source, extra_flags) + if (compiler != "") V["CC"] = saved_cc + if (desc != "") pyconf_result(rc ? "yes" : "no") + return rc +} + +function pyconf_link_check(desc, source, extra_flags, compiler, rc, saved_cc) { + if (desc != "") pyconf_checking(desc) + if (compiler != "") { saved_cc = V["CC"]; V["CC"] = compiler } + rc = _pyconf_link_test(_pyconf_confdefs() "\n" source, extra_flags) + if (compiler != "") V["CC"] = saved_cc + if (desc != "") pyconf_result(rc ? "yes" : "no") + return rc +} + +function pyconf_try_link(desc, source, extra_flags) { + return pyconf_link_check(desc, source, extra_flags) +} + +function pyconf_compile_link_check(desc, source, extra_flags, compiler, rc, result, saved_cc) { + if (desc != "") pyconf_checking(desc) + if (compiler != "") { saved_cc = V["CC"]; V["CC"] = compiler } + rc = _pyconf_link_test(_pyconf_confdefs() "\n" source, extra_flags) + if (compiler != "") V["CC"] = saved_cc + if (rc) + result = "yes" + else + result = "no" + if (desc != "") pyconf_result(result) + return result +} + +function pyconf_run_check(desc, source, extra_cflags, extra_libs, rc, result) { + if (desc != "") pyconf_checking(desc) + result = _pyconf_run_test(_pyconf_confdefs() "\n" source, extra_cflags " " extra_libs) + rc = _pyconf_run_test_rc + if (desc != "") { + if (rc == 0) + pyconf_result(result != "" ? result : "yes") + else + pyconf_result("failed") + } + return (rc == 0) +} + +function pyconf_run_program_output(desc, source, extra_flags, result) { + if (desc != "") pyconf_checking(desc) + result = _pyconf_run_test(_pyconf_confdefs() "\n" source, extra_flags) + if (desc != "") pyconf_result(result != "" ? result : "failed") + return result +} + +function pyconf_check_compile_flag(flag, extra_flags, source, all_flags) { + source = "int main(void) { return 0; }" + all_flags = flag + if (extra_flags[0] + 0 > 0) + all_flags = all_flags " " _arr_join_quoted(extra_flags, " ") + return _pyconf_compile_test(source, all_flags) +} + +function pyconf_check_linker_flag(flag, value, source) { + source = "int main(void) { return 0; }" + if (_pyconf_link_test(source, flag)) { + if (value != "") + return value + return flag + } + return "" +} + +# --------------------------------------------------------------------------- +# Header checks +# --------------------------------------------------------------------------- + +function _pyconf_includes_from_list(hdr_list, n, arr, i, result) { + # Convert space-separated header list to #include lines. + result = "" + n = split(hdr_list, arr, " ") + for (i = 1; i <= n; i++) { + if (arr[i] != "") + result = result "#include <" arr[i] ">\n" + } + return result +} + +function _pyconf_header_to_define(header, d) { + d = "HAVE_" header + gsub(/[\/\.\+\-]/, "_", d) + d = toupper(d) + return d +} + +function _pyconf_ac_includes_default( result) { + result = "" + if ("HAVE_STDIO_H" in DEFINES) result = result "#include \n" + if ("HAVE_STDLIB_H" in DEFINES) result = result "#include \n" + if ("HAVE_STRING_H" in DEFINES) result = result "#include \n" + if ("HAVE_INTTYPES_H" in DEFINES) result = result "#include \n" + if ("HAVE_STDINT_H" in DEFINES) result = result "#include \n" + if ("HAVE_STRINGS_H" in DEFINES) result = result "#include \n" + if ("HAVE_SYS_TYPES_H" in DEFINES) result = result "#include \n" + if ("HAVE_SYS_STAT_H" in DEFINES) result = result "#include \n" + if ("HAVE_UNISTD_H" in DEFINES) result = result "#include \n" + if (result == "") + result = "#include \n#include \n#include \n" + return result +} + +function pyconf_check_header(header, prologue, default_inc, define, cache_key, source, cv, rc) { + if (define == "") define = _pyconf_header_to_define(header) + if (cache_key == "") cache_key = "ac_cv_header_" header + gsub(/[\/\.\+\-]/, "_", cache_key) + + if (cache_key in CACHE) { + rc = (CACHE[cache_key] == "yes") + } else { + pyconf_checking("for " header) + if (prologue != "") + source = _pyconf_confdefs() "\n" prologue "\n#include <" header ">\nint main(void) { return 0; }" + else if (default_inc != "") + source = _pyconf_confdefs() "\n" default_inc "\n#include <" header ">\nint main(void) { return 0; }" + else + source = _pyconf_confdefs() "\n" _pyconf_ac_includes_default() "#include <" header ">\nint main(void) { return 0; }" + rc = _pyconf_compile_test(source, "") + CACHE[cache_key] = rc ? "yes" : "no" + V[cache_key] = rc ? "yes" : "no" + pyconf_result(rc ? "yes" : "no") + } + + if (rc) + pyconf_define(define, 1, 0, "Define to 1 if you have the <" header "> header file.") + return rc +} + +function pyconf_check_headers(headers, n, i, all_found) { + all_found = 1 + n = headers[0] + 0 + for (i = 1; i <= n; i++) + if (headers[i] != "") { + if (!pyconf_check_header(headers[i])) + all_found = 0 + } + return all_found +} + +# --------------------------------------------------------------------------- +# Function checks +# --------------------------------------------------------------------------- + +function pyconf_check_func(fname, headers, define, source, inc, cv, rc, cache_key, n, arr, i, proto, call, has_headers) { + if (define == "") define = "HAVE_" toupper(fname) + cache_key = "ac_cv_func_" fname + + if (cache_key in CACHE) { + rc = (CACHE[cache_key] == "yes") + if (rc) pyconf_define(define, 1, 0, "Define to 1 if you have the `" fname "` function.") + return rc + } + + pyconf_checking("for " fname) + inc = "" + has_headers = 0 + if (headers != "") { + n = split(headers, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") { + inc = inc "#include <" arr[i] ">\n" + has_headers = 1 + } + } + + # Match Python pyconf.check_func behaviour: + # - With headers: compile-only, take address of func (PY_CHECK_FUNC style) + # Include default headers + user headers. + # - Without headers: link test with stub prototype (AC_CHECK_FUNC style) + # No headers at all — the stub prototype "char func();" would conflict + # with real declarations from standard headers (e.g. stdlib.h declares + # clearenv when _GNU_SOURCE is defined). + if (has_headers) { + proto = "" + call = "(void)(&" fname ")" + inc = _pyconf_ac_includes_default() inc + source = _pyconf_confdefs() "\n" inc "\n" proto "int main(void) { " call "; return 0; }" + rc = _pyconf_compile_test(source, "") + } else { + proto = "#ifdef __cplusplus\nextern \"C\"\n#endif\nchar " fname "();\n" + call = fname "()" + source = _pyconf_confdefs() "\n" proto "int main(void) { " call "; return 0; }" + rc = _pyconf_link_test(source, "") + } + CACHE[cache_key] = rc ? "yes" : "no" + V[cache_key] = rc ? "yes" : "no" + pyconf_result(rc ? "yes" : "no") + + if (rc) + pyconf_define(define, 1, 0, "Define to 1 if you have the `" fname "` function.") + return rc +} + +function pyconf_check_funcs(funcs, n, i) { + n = funcs[0] + 0 + for (i = 1; i <= n; i++) + if (funcs[i] != "") + pyconf_check_func(funcs[i]) +} + +function pyconf_replace_funcs(funcs, n, i) { + # AC_REPLACE_FUNCS — check each function; add missing ones to LIBOBJS. + n = funcs[0] + 0 + for (i = 1; i <= n; i++) { + if (funcs[i] != "") { + if (!pyconf_check_func(funcs[i])) { + if (SUBST["LIBOBJS"] != "") + SUBST["LIBOBJS"] = SUBST["LIBOBJS"] " " funcs[i] ".o" + else + SUBST["LIBOBJS"] = funcs[i] ".o" + } + } + } +} + +# --------------------------------------------------------------------------- +# Type / sizeof / alignof checks +# --------------------------------------------------------------------------- + +function _pyconf_type_to_define(type_name, d) { + d = type_name + gsub(/[ \*]/, "_", d) + return "HAVE_" toupper(d) +} + +function pyconf_check_sizeof(type_name, default_val, headers, source, inc, result, n, arr, i, cv, define) { + cv = "ac_cv_sizeof_" type_name + gsub(/ /, "_", cv) + gsub(/\*/, "p", cv) + + define = "SIZEOF_" toupper(type_name) + gsub(/ /, "_", define) + gsub(/\*/, "P", define) + + if (cv in CACHE) { + result = CACHE[cv] + pyconf_define(define, result, 0, "The size of `" type_name "`, as computed by sizeof.") + return result + } + + pyconf_checking("for sizeof " type_name) + inc = _pyconf_ac_includes_default() + if (headers != "") { + n = split(headers, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") + inc = inc "#include <" arr[i] ">\n" + } + + source = _pyconf_confdefs() "\n" inc "\n#include \nint main(void) { printf(\"%d\", (int)sizeof(" type_name ")); return 0; }" + result = _pyconf_run_test(source, "") + + if (result == "") { + if (default_val != "") + result = default_val + else + result = "0" + } + CACHE[cv] = result + V[cv] = result + pyconf_result(result) + pyconf_define(define, result, 0, "The size of `" type_name "`, as computed by sizeof.") + return result +} + +function pyconf_check_alignof(type_name, default_val, headers, source, inc, result, n, arr, i, cv, define) { + cv = "ac_cv_alignof_" type_name + gsub(/ /, "_", cv) + + define = "ALIGNOF_" toupper(type_name) + gsub(/ /, "_", define) + + if (cv in CACHE) { + result = CACHE[cv] + pyconf_define(define, result, 0, "") + return result + } + + pyconf_checking("for alignof " type_name) + inc = _pyconf_ac_includes_default() + if (headers != "") { + n = split(headers, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") + inc = inc "#include <" arr[i] ">\n" + } + + source = _pyconf_confdefs() "\n" inc "\n#include \n#include \nstruct _align_test { char c; " type_name " x; };\nint main(void) { printf(\"%d\", (int)offsetof(struct _align_test, x)); return 0; }" + result = _pyconf_run_test(source, "") + + if (result == "") result = (default_val != "" ? default_val : "0") + CACHE[cv] = result + V[cv] = result + pyconf_result(result) + pyconf_define(define, result, 0, "") + return result +} + +function pyconf_sizeof(type_name) { + return pyconf_check_sizeof(type_name) +} + +function pyconf_check_type(type_name, headers, source, inc, cv, rc, define, n, arr, i) { + define = _pyconf_type_to_define(type_name) + cv = "ac_cv_type_" type_name + gsub(/ /, "_", cv) + + if (cv in CACHE) + return (CACHE[cv] == "yes") + + pyconf_checking("for " type_name) + inc = _pyconf_ac_includes_default() + if (headers != "") { + n = split(headers, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") + inc = inc "#include <" arr[i] ">\n" + } + + source = _pyconf_confdefs() "\n" inc "\n" type_name " _test_var;\nint main(void) { return 0; }" + rc = _pyconf_compile_test(source, "") + CACHE[cv] = rc ? "yes" : "no" + V[cv] = rc ? "yes" : "no" + pyconf_result(rc ? "yes" : "no") + + if (rc) + pyconf_define(define, 1, 0, "Define to 1 if the system has the type `" type_name "`.") + return rc +} + +function pyconf_check_member(member, headers, define, struct_name, field, source, inc, cv, rc, n, arr, i) { + # member is like "struct stat.st_blksize" + split(member, arr, ".") + struct_name = arr[1] + field = arr[2] + if (define == "") define = "HAVE_" toupper(struct_name) "_" toupper(field) + gsub(/ /, "_", define) + + cv = "ac_cv_member_" member + gsub(/[. ]/, "_", cv) + + if (cv in CACHE) + return (CACHE[cv] == "yes") + + pyconf_checking("for " member) + inc = _pyconf_ac_includes_default() + if (headers != "") { + n = split(headers, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") + inc = inc "#include <" arr[i] ">\n" + } + + source = _pyconf_confdefs() "\n" inc "\nint main(void) { " struct_name " s; (void)s." field "; return 0; }" + rc = _pyconf_compile_test(source, "") + CACHE[cv] = rc ? "yes" : "no" + V[cv] = rc ? "yes" : "no" + pyconf_result(rc ? "yes" : "no") + + if (rc) + pyconf_define(define, 1, 0, "") + return rc +} + +function pyconf_check_members(members, n, arr, i) { + n = split(members, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") + pyconf_check_member(arr[i]) +} + +function pyconf_check_struct_tm() { + # AC_STRUCT_TM — check for tm_zone in struct tm + if (pyconf_check_member("struct tm.tm_zone", "time.h")) + pyconf_define("HAVE_TM_ZONE", 1, 0, "Define to 1 if your struct tm has tm_zone.") +} + +function pyconf_check_struct_timezone( source, rc) { + # Check for struct timezone + source = "#include \nint main(void) { struct timezone tz; (void)tz; return 0; }\n" + rc = _pyconf_compile_test(source, "") + if (rc) + pyconf_define("HAVE_STRUCT_TIMEZONE", 1, 0, "Define to 1 if struct timezone exists.") +} + +function pyconf_check_c_const( source) { + # AC_C_CONST — check for const keyword + source = "int main(void) {\n const int x = 0;\n (void)x;\n return 0;\n}\n" + if (!_pyconf_compile_test(source, "")) + pyconf_define("const", "", 1, "Define to empty if const does not conform to ANSI C.") +} + +function pyconf_check_define(macro, headers, source, inc, cv, rc, n, arr, i) { + cv = "ac_cv_define_" macro + if (cv in CACHE) + return (CACHE[cv] == "yes") + + pyconf_checking("for " macro) + inc = _pyconf_ac_includes_default() + if (headers != "") { + n = split(headers, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") + inc = inc "#include <" arr[i] ">\n" + } + source = _pyconf_confdefs() "\n" inc "\n#ifndef " macro "\n#error " macro " not defined\n#endif\nint main(void) { return 0; }" + rc = _pyconf_compile_test(source, "") + CACHE[cv] = rc ? "yes" : "no" + V[cv] = rc ? "yes" : "no" + pyconf_result(rc ? "yes" : "no") + return rc +} + +function pyconf_check_decl(name, includes, define, source, inc, cv, rc, _darr, _di, _dn) { + if (define == "") define = "HAVE_DECL_" toupper(name) + cv = "ac_cv_have_decl_" name + if (cv in CACHE) { + rc = (CACHE[cv] == "yes") + pyconf_define(define, rc ? 1 : 0, 0, "") + return rc + } + + pyconf_checking("whether " name " is declared") + inc = _pyconf_ac_includes_default() + if (includes != "") { + _dn = split(includes, _darr, " ") + for (_di = 1; _di <= _dn; _di++) + if (_darr[_di] != "") + inc = inc "#include <" _darr[_di] ">\n" + } + source = _pyconf_confdefs() "\n" inc "\nint main(void) {\n#ifndef " name "\n (void)" name ";\n#endif\n return 0;\n}" + rc = _pyconf_compile_test(source, "") + CACHE[cv] = rc ? "yes" : "no" + V[cv] = rc ? "yes" : "no" + pyconf_result(rc ? "yes" : "no") + pyconf_define(define, rc ? 1 : 0, 0, "") + return rc +} + +function pyconf_check_decls(decls, n, i, sep, headers) { + # decls[0]=count, decls[1..n]=decl names or "--" separator followed by headers + n = decls[0] + 0 + sep = 0 + headers = "" + # Find "--" separator; everything after it is headers + for (i = 1; i <= n; i++) { + if (decls[i] == "--") { + sep = i + break + } + } + if (sep > 0) { + for (i = sep + 1; i <= n; i++) + if (decls[i] != "") + headers = headers (headers != "" ? " " : "") decls[i] + n = sep - 1 + } + for (i = 1; i <= n; i++) + if (decls[i] != "") + pyconf_check_decl(decls[i], headers) +} + +# --------------------------------------------------------------------------- +# Library checks +# --------------------------------------------------------------------------- + +function pyconf_check_lib(lib, fname, extra_cflags, extra_libs, source, rc, flags, cache_key) { + pyconf_checking("for -l" lib) + if (fname == "") fname = "main" + source = "char " fname "();\nint main(void) { return " fname "(); }" + flags = extra_cflags " -l" lib " " extra_libs + rc = _pyconf_link_test(source, flags) + pyconf_result(rc ? "yes" : "no") + # Set ac_cv_lib__ cache variable (autoconf convention) + cache_key = "ac_cv_lib_" lib "_" fname + CACHE[cache_key] = rc ? "yes" : "no" + V[cache_key] = rc ? "yes" : "no" + return rc +} + +function pyconf_search_libs(fname, libs, n, arr, i, source, rc) { + pyconf_checking("for library containing " fname) + source = _pyconf_confdefs() "\nchar " fname "();\nint main(void) { return " fname "(); }" + + # Try without any library first + if (_pyconf_link_test(source, "")) { + pyconf_result("none required") + return "none required" + } + + n = split(libs, arr, " ") + for (i = 1; i <= n; i++) { + if (arr[i] != "" && _pyconf_link_test(source, "-l" arr[i])) { + V["LIBS"] = "-l" arr[i] " " V["LIBS"] + pyconf_result("-l" arr[i]) + return "-l" arr[i] + } + } + pyconf_result("no") + return "" +} + +# --------------------------------------------------------------------------- +# Program checks +# --------------------------------------------------------------------------- + +# Portable PATH search — avoids reliance on "command -v" which may not be +# available on all /bin/sh implementations. Splits $PATH and checks each +# directory for an executable file using "test -x". +function _find_in_path(prog, search_path, path, n, dirs, i, candidate) { + if (prog == "") return "" + # If prog already contains a slash, treat as a direct path + if (index(prog, "/") > 0) { + if (system("test -f " _shell_quote(prog) " && test -x " _shell_quote(prog) " 2>/dev/null") == 0) + return prog + return "" + } + path = (search_path != "") ? search_path : ENVIRON["PATH"] + n = split(path, dirs, ":") + for (i = 1; i <= n; i++) { + if (dirs[i] == "") dirs[i] = "." + candidate = dirs[i] "/" prog + if (system("test -f " _shell_quote(candidate) " && test -x " _shell_quote(candidate) " 2>/dev/null") == 0) + return candidate + } + return "" +} + +function pyconf_check_prog(prog, search_path, default_val, result) { + # Matches Python pyconf.check_prog(prog, path=None, default="") + # Returns found path or default_val. + result = _find_in_path(prog, search_path) + if (result != "") + return result + return default_val +} + +function pyconf_check_progs(progs, n, i) { + # AC_CHECK_PROGS — return the first program NAME found in PATH. + # Like the Python version (shutil.which(p) then return p), returns the + # basename, not the full path. + n = progs[0] + 0 + for (i = 1; i <= n; i++) { + if (progs[i] != "" && _find_in_path(progs[i]) != "") + return progs[i] + } + return "" +} + +function pyconf_check_tools(tools, default_val, result) { + result = pyconf_check_progs(tools) + if (result != "") + return result + return default_val +} + +function pyconf_find_prog(prog, result) { + result = _find_in_path(prog) + return result +} + +function pyconf_find_install( result) { + result = _find_in_path("ginstall") + if (result == "") + result = _find_in_path("install") + if (result != "") + SUBST["INSTALL"] = result " -c" + else + SUBST["INSTALL"] = "install -c" + if (!("INSTALL_PROGRAM" in SUBST)) + SUBST["INSTALL_PROGRAM"] = "${INSTALL}" + if (!("INSTALL_SCRIPT" in SUBST)) + SUBST["INSTALL_SCRIPT"] = "${INSTALL}" + if (!("INSTALL_DATA" in SUBST)) + SUBST["INSTALL_DATA"] = "${INSTALL} -m 644" + return result +} + +function pyconf_find_mkdir_p( result, ver, dirs, n, i, p, prog, progs, cmd) { + # Search PATH + /opt/sfw/bin for coreutils/BusyBox mkdir + result = "" + n = split(ENVIRON["PATH"] ":/opt/sfw/bin", dirs, ":") + for (i = 1; i <= n; i++) { + if (dirs[i] == "") continue + split("mkdir gmkdir", progs, " ") + for (prog in progs) { + p = dirs[i] "/" progs[prog] + cmd = p " --version 2>&1" + ver = _cmd_output_oneline(cmd) + if (index(ver, "coreutils)") > 0 || index(ver, "BusyBox ") > 0 || index(ver, "fileutils) 4.1") > 0) { + result = p + break + } + } + if (result != "") break + } + if (result != "") + SUBST["MKDIR_P"] = result " -p" + else + SUBST["MKDIR_P"] = "mkdir -p" + return SUBST["MKDIR_P"] +} + +# --------------------------------------------------------------------------- +# String / path utilities +# --------------------------------------------------------------------------- + +function pyconf_fnmatch(pattern, string) { + # Simple glob match using case + # For exact match patterns, use == comparison + # For patterns with *, use ~ with converted regex + return _glob_match(pattern, string) +} + +function pyconf_fnmatch_any(string, patterns, n, i) { + n = patterns[0] + 0 + for (i = 1; i <= n; i++) + if (_glob_match(patterns[i], string)) + return 1 + return 0 +} + +function _glob_match(pattern, string, regex) { + # Convert shell glob to awk regex + regex = pattern + gsub(/\./, "\\.", regex) + gsub(/\*/, ".*", regex) + gsub(/\?/, ".", regex) + return (string ~ ("^" regex "$")) +} + +function pyconf_str_remove(s, pat, result) { + result = s + gsub(pat, "", result) + return result +} + +function pyconf_sed(str, pattern, replacement, result) { + result = str + gsub(pattern, replacement, result) + return result +} + +function pyconf_abspath(path, result) { + if (substr(path, 1, 1) == "/") + return path + result = _cmd_output_oneline("cd " _shell_quote(path) " && pwd") + return (result != "" ? result : path) +} + +function pyconf_basename(path, n, arr) { + n = split(path, arr, "/") + return arr[n] +} + +function pyconf_getcwd() { + return _cmd_output_oneline("pwd") +} + +function pyconf_readlink(path) { + return _cmd_output_oneline("readlink " _shell_quote(path)) +} + +function pyconf_relpath(path, base, n_path, n_base, p, b, i, common, result) { + # Pure-AWK relative path computation (no external dependencies). + # Default base to current working directory + if (base == "") base = _cmd_output_oneline("pwd") + # Normalize: strip trailing slashes + gsub(/\/+$/, "", path) + gsub(/\/+$/, "", base) + # Split into components + n_path = split(path, p, "/") + n_base = split(base, b, "/") + # Find common prefix length + common = 0 + for (i = 1; i <= (n_path < n_base ? n_path : n_base); i++) { + if (p[i] != b[i]) break + common = i + } + # Build result: "../" for each remaining base component, then path tail + result = "" + for (i = common + 1; i <= n_base; i++) + result = result (result != "" ? "/" : "") ".." + for (i = common + 1; i <= n_path; i++) + result = result (result != "" ? "/" : "") p[i] + if (result == "") result = "." + return result +} + +function pyconf_path_join(parts, n, i, result) { + n = parts[0] + 0 + if (n == 0) return "" + result = parts[1] + for (i = 2; i <= n; i++) { + if (parts[i] == "") continue + if (substr(parts[i], 1, 1) == "/") { + result = parts[i] + } else if (result == "" || result == ".") { + result = parts[i] + } else { + result = result "/" parts[i] + } + } + return result +} + +function pyconf_path_parent(path, n, arr, i, result) { + n = split(path, arr, "/") + if (n <= 1) return "." + result = arr[1] + for (i = 2; i < n; i++) + result = result "/" arr[i] + return result +} + +function pyconf_path_exists(path) { + return (_cmd_exit_code("test -e " _shell_quote(path)) == 0) +} + +function pyconf_path_is_dir(path) { + return (_cmd_exit_code("test -d " _shell_quote(path)) == 0) +} + +function pyconf_path_is_file(path) { + return (_cmd_exit_code("test -f " _shell_quote(path)) == 0) +} + +function pyconf_path_is_symlink(path) { + return (_cmd_exit_code("test -L " _shell_quote(path)) == 0) +} + +function pyconf_is_executable(path) { + return (_cmd_exit_code("test -x " _shell_quote(path)) == 0) +} + +function pyconf_rm_f(path) { + system("rm -f " _shell_quote(path)) +} + +function pyconf_rmdir(path) { + system("rmdir " _shell_quote(path) " 2>/dev/null") +} + +function pyconf_mkdir_p(path) { + system("mkdir -p " _shell_quote(path)) +} + +function pyconf_rename_file(src, dst) { + system("mv " _shell_quote(src) " " _shell_quote(dst)) +} + +function pyconf_unlink(path) { + system("rm -f " _shell_quote(path)) +} + +function pyconf_write_file(path, content) { + printf "%s", content > path + close(path) +} + +function pyconf_read_file(path, line, result) { + result = "" + while ((getline line < path) > 0) + result = result (result != "" ? "\n" : "") line + close(path) + return result +} + +function pyconf_read_file_lines(path) { + return pyconf_read_file(path) +} + +function pyconf_glob_files(pattern) { + return _cmd_output("ls -d " pattern " 2>/dev/null") +} + +function pyconf_cmd(args, cmd) { + cmd = _arr_join_quoted(args, " ") + return (_cmd_exit_code(cmd) == 0) +} + +function pyconf_cmd_output(args, cmd) { + cmd = _arr_join_quoted(args, " ") + return _cmd_output(cmd) +} + +function pyconf_run_cmd(cmd, rc) { + rc = system(_expand_cmd_vars(cmd)) + return rc +} + +function pyconf_shell(args, cmd) { + cmd = _arr_join(args, " ") + return _cmd_output(cmd) +} + +function pyconf_shell_export(cmd, varname, full_cmd, output, n, lines, i, eq, k) { + # Run cmd then echo varname=${varname}; parse output for varname=value + full_cmd = cmd "\necho " varname "=${" varname "}" + output = _cmd_output(full_cmd) + n = split(output, lines, "\n") + for (i = n; i >= 1; i--) { + eq = index(lines[i], "=") + if (eq > 0) { + k = substr(lines[i], 1, eq - 1) + if (k == varname) + return substr(lines[i], eq + 1) + } + } + return "" +} + +function pyconf_platform_machine() { + return _cmd_output_oneline("uname -m") +} + +function pyconf_platform_system() { + return _cmd_output_oneline("uname -s") +} + +function pyconf_use_system_extensions() { + pyconf_define("_ALL_SOURCE", 1, 0, "Enable extensions on AIX 3, Interix.") + pyconf_define("_DARWIN_C_SOURCE", 1, 0, "Enable extensions on Mac OS X.") + pyconf_define("_GNU_SOURCE", 1, 0, "Enable GNU extensions on systems that have them.") + pyconf_define("_HPUX_ALT_XOPEN_SOCKET_API", 1, 0, "Enable extensions on HP-UX.") + pyconf_define("_NETBSD_SOURCE", 1, 0, "Enable extensions on NetBSD.") + pyconf_define("_OPENBSD_SOURCE", 1, 0, "Enable extensions on OpenBSD.") + pyconf_define("_POSIX_PTHREAD_SEMANTICS", 1, 0, "Enable threading extensions on Solaris.") + pyconf_define("__STDC_WANT_IEC_60559_ATTRIBS_EXT__", 1, 0, "Enable IEC 60559 attribs extensions.") + pyconf_define("__STDC_WANT_IEC_60559_BFP_EXT__", 1, 0, "Enable IEC 60559 BFP extensions.") + pyconf_define("__STDC_WANT_IEC_60559_DFP_EXT__", 1, 0, "Enable IEC 60559 DFP extensions.") + pyconf_define("__STDC_WANT_IEC_60559_EXT__", 1, 0, "Enable IEC 60559 extensions.") + pyconf_define("__STDC_WANT_IEC_60559_FUNCS_EXT__", 1, 0, "Enable IEC 60559 funcs extensions.") + pyconf_define("__STDC_WANT_IEC_60559_TYPES_EXT__", 1, 0, "Enable IEC 60559 types extensions.") + pyconf_define("__STDC_WANT_LIB_EXT2__", 1, 0, "Enable ISO C 2001 extensions.") + pyconf_define("__STDC_WANT_MATH_SPEC_FUNCS__", 1, 0, "Enable extensions specified in the standard.") + pyconf_define("_TANDEM_SOURCE", 1, 0, "Enable extensions on HP NonStop.") + pyconf_define("__EXTENSIONS__", 1, 0, "Enable general extensions on Solaris.") +} + +# --------------------------------------------------------------------------- +# Environment save/restore +# --------------------------------------------------------------------------- + +function pyconf_save_env( k) { + _saved_env_depth++ + for (k in V) + _saved_env_stack[_saved_env_depth, k] = V[k] + # Store the set of keys so we can restore exactly + _saved_env_keys[_saved_env_depth] = "" + for (k in V) + _saved_env_keys[_saved_env_depth] = _saved_env_keys[_saved_env_depth] k "\036" +} + +function pyconf_restore_env( k, n, keys, i) { + if (_saved_env_depth < 1) return + for (k in V) + delete V[k] + n = split(_saved_env_keys[_saved_env_depth], keys, "\036") + for (i = 1; i <= n; i++) { + if (keys[i] != "") + V[keys[i]] = _saved_env_stack[_saved_env_depth, keys[i]] + } + # Clean up this level + for (i = 1; i <= n; i++) { + if (keys[i] != "") + delete _saved_env_stack[_saved_env_depth, keys[i]] + } + delete _saved_env_keys[_saved_env_depth] + _saved_env_depth-- +} + +# --------------------------------------------------------------------------- +# Option handling +# --------------------------------------------------------------------------- + +function _pyconf_normalize_opt(name, result) { + result = name + gsub(/-/, "_", result) + return result +} + +function pyconf_arg_enable(name, default_val, help_text, metavar, var, false_is, key) { + key = "enable_" _pyconf_normalize_opt(name) + _pyconf_opt_count++ + _pyconf_opt_names[_pyconf_opt_count] = key + OPT_KIND[key] = "enable" + OPT_DEFAULT[key] = default_val + OPT_HELP[key] = help_text + OPT_METAVAR[key] = metavar + OPT_VAR[key] = var + OPT_FALSE_IS[key] = false_is + if (!(key in OPT_GIVEN)) + OPT_GIVEN[key] = 0 + if (!(key in OPT_VAL)) + OPT_VAL[key] = default_val +} + +function pyconf_arg_with(name, default_val, help_text, metavar, var, false_is, key) { + key = "with_" _pyconf_normalize_opt(name) + _pyconf_opt_count++ + _pyconf_opt_names[_pyconf_opt_count] = key + OPT_KIND[key] = "with" + OPT_DEFAULT[key] = default_val + OPT_HELP[key] = help_text + OPT_METAVAR[key] = metavar + OPT_VAR[key] = var + OPT_FALSE_IS[key] = false_is + if (!(key in OPT_GIVEN)) + OPT_GIVEN[key] = 0 + if (!(key in OPT_VAL)) + OPT_VAL[key] = default_val +} + +function pyconf_env_var(name, help_text) { + # Record environment variable documentation +} + +function pyconf_option_value(key) { + if (key in OPT_VAL) + return OPT_VAL[key] + if (key in OPT_DEFAULT) + return OPT_DEFAULT[key] + return "" +} + +function pyconf_option_given(key) { + return (key in OPT_GIVEN && OPT_GIVEN[key]) +} + +function pyconf_option_is_yes(key, val) { + val = pyconf_option_value(key) + return (val == "yes") +} + +function pyconf_option_is_no(key, val) { + val = pyconf_option_value(key) + return (val == "no") +} + +function pyconf_option_value_or(key, default_val, val) { + val = pyconf_option_value(key) + if (val == "") return default_val + return val +} + +function pyconf_option_process_bool(key, val, false_is) { + val = pyconf_option_value(key) + false_is = OPT_FALSE_IS[key] + if (val == "yes") return "yes" + if (val == "no") return (false_is != "" ? false_is : "no") + return val +} + +function pyconf_option_process_value(key) { + return pyconf_option_value(key) +} + +# --------------------------------------------------------------------------- +# pkg-config +# --------------------------------------------------------------------------- + +function pyconf_pkg_check_modules(pkg, spec, cmd, rc) { + cmd = "pkg-config --exists " _shell_quote(spec) " 2>/dev/null" + rc = (system(cmd) == 0) + if (rc) { + V[pkg "_CFLAGS"] = _cmd_output_oneline("pkg-config --cflags " _shell_quote(spec)) + V[pkg "_LIBS"] = _cmd_output_oneline("pkg-config --libs " _shell_quote(spec)) + } + return rc +} + +function pyconf_pkg_config(args) { + return _cmd_output_oneline("pkg-config " args " 2>/dev/null") +} + +function pyconf_pkg_config_check(spec) { + return (_cmd_exit_code("pkg-config --exists " _shell_quote(spec) " 2>/dev/null") == 0) +} + +# --------------------------------------------------------------------------- +# stdlib module handling +# --------------------------------------------------------------------------- + +function pyconf_stdlib_module(name, supported, enabled, cflags, ldflags, has_cflags, has_ldflags, key, state, uname, prev_na) { + uname = toupper(name) + gsub(/-/, "_", uname) + key = "MODULE_" uname + # Check if this module was previously marked N/A via stdlib_module_set_na + prev_na = (_stdlib_mod_na[uname] + 0) + if (prev_na) { + supported = "no" + } + if (prev_na) + state = "n/a" + else if (supported == "yes" && enabled == "yes") + state = "yes" + else if (supported != "yes" && enabled == "yes") + state = "missing" + else if (supported != "yes") + state = "n/a" + else if (enabled != "yes") + state = "disabled" + else + state = "n/a" + SUBST[key "_STATE"] = state + SUBST[key "_TRUE"] = (state == "yes") ? "" : "#" + if (has_cflags == "yes") + SUBST[key "_CFLAGS"] = cflags + if (has_ldflags == "yes") + SUBST[key "_LDFLAGS"] = ldflags + _stdlib_mod_count++ + _stdlib_mod_names[_stdlib_mod_count] = uname + _stdlib_mod_has_cflags[uname] = has_cflags + _stdlib_mod_has_ldflags[uname] = has_ldflags +} + +function pyconf_stdlib_module_simple(name, cflags, ldflags, has_cflags, has_ldflags) { + pyconf_stdlib_module(name, "yes", "yes", cflags, ldflags, has_cflags, has_ldflags) +} + +function pyconf_stdlib_module_set_na(names, n, i, key, uname) { + n = names[0] + 0 + for (i = 1; i <= n; i++) { + uname = toupper(names[i]) + key = "MODULE_" uname + SUBST[key "_STATE"] = "n/a" + SUBST[key "_TRUE"] = "#" + _stdlib_mod_na[uname] = 1 + } +} + +# --------------------------------------------------------------------------- +# Argument parsing +# --------------------------------------------------------------------------- + +function pyconf_parse_args( i, arg, key, val, opt_key, eq_pos, config_args) { + config_args = "" + for (i = 1; i < ARGC; i++) { + arg = ARGV[i] + if (arg == "--") break + + if (substr(arg, 1, 2) == "--") { + # Record in CONFIG_ARGS (skip --srcdir which is internal) + if (substr(arg, 3, 6) != "srcdir") + config_args = config_args (config_args != "" ? " " : "") _shell_quote(arg) + + arg = substr(arg, 3) + eq_pos = index(arg, "=") + if (eq_pos > 0) { + key = substr(arg, 1, eq_pos - 1) + val = substr(arg, eq_pos + 1) + } else { + key = arg + val = "yes" + } + + # --enable-X / --disable-X + if (substr(key, 1, 7) == "enable-") { + opt_key = "enable_" _pyconf_normalize_opt(substr(key, 8)) + OPT_VAL[opt_key] = val + OPT_GIVEN[opt_key] = 1 + } else if (substr(key, 1, 8) == "disable-") { + opt_key = "enable_" _pyconf_normalize_opt(substr(key, 9)) + OPT_VAL[opt_key] = "no" + OPT_GIVEN[opt_key] = 1 + # --with-X / --without-X + } else if (substr(key, 1, 5) == "with-") { + opt_key = "with_" _pyconf_normalize_opt(substr(key, 6)) + OPT_VAL[opt_key] = val + OPT_GIVEN[opt_key] = 1 + } else if (substr(key, 1, 8) == "without-") { + opt_key = "with_" _pyconf_normalize_opt(substr(key, 9)) + OPT_VAL[opt_key] = "no" + OPT_GIVEN[opt_key] = 1 + # --prefix, --exec-prefix, --bindir, etc. + } else if (key == "srcdir") { + _pyconf_srcdir = val + } else if (key == "help" || key == "h") { + _pyconf_help_requested = 1 + } else { + # Store as a dir arg or general option + V[_pyconf_normalize_opt(key)] = val + } + } else { + # Positional args (e.g. VAR=value) — record in CONFIG_ARGS + config_args = config_args (config_args != "" ? " " : "") _shell_quote(arg) + } + # Clear ARGV so awk doesn't try to read as files + ARGV[i] = "" + } + _pyconf_config_args = config_args +} + +function pyconf_check_help() { + if (_pyconf_help_requested) { + pyconf_print_help() + return 1 + } + return 0 +} + +function pyconf_print_help( i, key, kind, name, help_text, metavar) { + print "Usage: configure [options]" + print "" + print "Options:" + print " --help display this help and exit" + print "" + + for (i = 1; i <= _pyconf_opt_count; i++) { + key = _pyconf_opt_names[i] + kind = OPT_KIND[key] + help_text = OPT_HELP[key] + metavar = OPT_METAVAR[key] + + # Extract the name from key (remove enable_/with_ prefix) + if (kind == "enable") + name = substr(key, 8) # skip "enable_" + else + name = substr(key, 6) # skip "with_" + gsub(/_/, "-", name) + + if (kind == "enable") { + if (metavar != "") + printf " --enable-%-20s %s\n", name "=" metavar, help_text + else + printf " --enable-%-20s %s\n", name, help_text + } else { + if (metavar != "") + printf " --with-%-22s %s\n", name "=" metavar, help_text + else + printf " --with-%-22s %s\n", name, help_text + } + } +} + +function pyconf_get_dir_arg(name, default, key) { + key = _pyconf_normalize_opt(name) + if ((key in V) && V[key] != "") + return V[key] + return default +} + +# --------------------------------------------------------------------------- +# Config file output +# --------------------------------------------------------------------------- + +function pyconf_config_files(files, n, i) { + n = files[0] + 0 + for (i = 1; i <= n; i++) { + if (files[i] != "") { + _pyconf_config_file_count++ + CONFIG_FILES[_pyconf_config_file_count] = files[i] + } + } +} + +function pyconf_config_files_x(files, n, i) { + n = files[0] + 0 + for (i = 1; i <= n; i++) { + if (files[i] != "") { + _pyconf_config_file_count++ + CONFIG_FILES[_pyconf_config_file_count] = files[i] + _pyconf_config_file_x_count++ + CONFIG_FILES_X[_pyconf_config_file_x_count] = files[i] + } + } +} + +function pyconf_output( i) { + _pyconf_build_module_block() + _pyconf_resolve_exports() + _pyconf_write_pyconfig_h() + _pyconf_process_config_files() + pyconf_cleanup() +} + +function _pyconf_build_module_block( i, key, uname, state, block, sep) { + block = "" + sep = "" + for (i = 1; i <= _stdlib_mod_count; i++) { + uname = _stdlib_mod_names[i] + key = "MODULE_" uname + state = SUBST[key "_STATE"] + block = block sep key "_STATE=" state + sep = "\n" + if (_stdlib_mod_has_cflags[uname] == "yes" && state != "disabled" && state != "n/a" && state != "missing") { + block = block sep key "_CFLAGS=" SUBST[key "_CFLAGS"] + } + if (_stdlib_mod_has_ldflags[uname] == "yes" && state != "disabled" && state != "n/a" && state != "missing") { + block = block sep key "_LDFLAGS=" SUBST[key "_LDFLAGS"] + } + } + SUBST["MODULE_BLOCK"] = block +} + +function _pyconf_resolve_exports( k) { + # Finalize CONFIG_ARGS from parsed command-line arguments + if (_pyconf_config_args != "") + V["CONFIG_ARGS"] = _pyconf_config_args + for (k in V) { + if (!(k in SUBST)) + SUBST[k] = V[k] + } +} + +function _pyconf_write_pyconfig_h( f, inf, line, name, val, indent, rest, outf) { + outf = "pyconfig.h" + inf = _pyconf_srcdir "/pyconfig.h.in" + + # Try template-based approach (matches autoconf config.status behaviour) + if ((getline line < inf) > 0) { + # First line was read successfully — process the template + printf "/* pyconfig.h. Generated from pyconfig.h.in by configure. */\n" > outf + do { + if (match(line, /^[ \t]*#[ \t]*undef[ \t]+[A-Za-z_][A-Za-z_0-9]*[ \t]*$/)) { + # Extract indent: everything before the '#' + indent = "" + rest = line + if (match(line, /^[ \t]+/)) + indent = substr(line, 1, RLENGTH) + # Extract the define name: last word on the line + name = line + sub(/^[ \t]*#[ \t]*undef[ \t]+/, "", name) + sub(/[ \t]*$/, "", name) + if (name in DEFINES) { + val = DEFINES[name] + if (DEFINE_QUOTED[name] && val != "" && val !~ /^-?[0-9]+$/) + rest = "#define " name " \"" val "\"" + else + rest = "#define " name " " val + if (indent != "") + printf "%s# %s\n", indent, substr(rest, 2) >> outf + else + printf "%s\n", rest >> outf + } else { + if (indent != "") + printf "%s/* #undef %s */\n", indent, name >> outf + else + printf "/* #undef %s */\n", name >> outf + } + } else { + print line >> outf + } + } while ((getline line < inf) > 0) + close(inf) + close(outf) + return + } + close(inf) + + # Fallback: write from scratch (no template available) + printf "/* Generated by configure (awk) */\n" > outf + printf "#ifndef Py_PYCONFIG_H\n" >> outf + printf "#define Py_PYCONFIG_H\n\n" >> outf + + for (f = 1; f <= _pyconf_defines_order_n; f++) { + name = _pyconf_defines_order[f] + if (name in DEFINES) { + val = DEFINES[name] + if (name in DEFINE_DESC && DEFINE_DESC[name] != "") + printf "/* %s */\n", DEFINE_DESC[name] >> outf + if (DEFINE_QUOTED[name] && val != "" && val !~ /^-?[0-9]+$/) + printf "#define %s \"%s\"\n", name, val >> outf + else + printf "#define %s %s\n", name, val >> outf + printf "\n" >> outf + } + } + + printf "#endif /* Py_PYCONFIG_H */\n" >> outf + close(outf) +} + +function _pyconf_process_config_files( i, inf, outf, outdir, saved_abs_srcdir, saved_abs_builddir, slash_pos) { + for (i = 1; i <= _pyconf_config_file_count; i++) { + outf = CONFIG_FILES[i] + inf = outf ".in" + if (inf == "") + continue + # Compute per-file abs_srcdir/abs_builddir like autoconf does: + # ac_abs_srcdir = abs_top_srcdir + dir-suffix-of-outfile + outdir = "" + slash_pos = _last_index(outf, "/") + if (slash_pos > 0) + outdir = substr(outf, 1, slash_pos - 1) + saved_abs_srcdir = SUBST["abs_srcdir"] + saved_abs_builddir = SUBST["abs_builddir"] + if (outdir != "") { + SUBST["abs_srcdir"] = saved_abs_srcdir "/" outdir + SUBST["abs_builddir"] = saved_abs_builddir "/" outdir + system("mkdir -p " _shell_quote(outdir)) + } + _pyconf_subst_file(inf, outf) + SUBST["abs_srcdir"] = saved_abs_srcdir + SUBST["abs_builddir"] = saved_abs_builddir + } + for (i = 1; i <= _pyconf_config_file_x_count; i++) { + system("chmod +x " _shell_quote(CONFIG_FILES_X[i])) + } +} + +function _last_index(s, ch, i, last) { + last = 0 + for (i = 1; i <= length(s); i++) + if (substr(s, i, 1) == ch) + last = i + return last +} + +function _pyconf_subst_file(inf, outf, line, k, pat, val, pos, before, after, skip) { + while ((getline line < inf) > 0) { + skip = 0 + # Replace @VAR@ patterns with SUBST values + for (k in SUBST) { + pat = "@" k "@" + while (index(line, pat) > 0) { + val = SUBST[k] + pos = index(line, pat) + before = substr(line, 1, pos - 1) + after = substr(line, pos + length(pat)) + # If the value contains newlines, emit directly and skip normal print + if (index(val, "\n") > 0) { + printf "%s%s%s\n", before, val, after > outf + skip = 1 + break + } else { + line = before val after + } + } + if (skip) break + } + if (!skip) { + # Neutralise VPATH when srcdir == "." (in-tree build): + # blank out lines like "VPATH= ." or "VPATH= $(srcdir)" + if (SUBST["srcdir"] == "." && _is_vpath_srcdir_line(line)) + print "" > outf + else + print line > outf + } + } + close(inf) + close(outf) +} + +function _is_vpath_srcdir_line(line, val) { + # Match lines like: VPATH= + # where value is ".", "$(srcdir)", or "${srcdir}" + if (!match(line, /^[ \t]*VPATH[ \t]*=[ \t]*/)) + return 0 + val = substr(line, RSTART + RLENGTH) + # Strip leading/trailing whitespace + gsub(/^[ \t]+|[ \t]+$/, "", val) + if (val == "." || val == "$(srcdir)" || val == "${srcdir}") + return 1 + return 0 +} + +# --------------------------------------------------------------------------- +# Run helpers +# --------------------------------------------------------------------------- + +function pyconf_run(cmd) { + system(_expand_cmd_vars(cmd)) +} + +function pyconf_run_capture(cmd, ecmd, outf, rc) { + ecmd = _expand_cmd_vars(cmd) + outf = _pyconf_tmpdir "/stdout_capture" + rc = system(ecmd " > " outf " 2>/dev/null") + _pyconf_run_cmd_stdout = _cmd_output("cat " outf) + _pyconf_run_cmd_stderr = "" + system("rm -f " outf) + return rc +} + +function pyconf_run_capture_input(cmd, input_data, tmpf, outf, ecmd, rc) { + ecmd = _expand_cmd_vars(cmd) + tmpf = _pyconf_tmpdir "/stdin_input" + outf = _pyconf_tmpdir "/stdout_capture" + printf "%s", input_data > tmpf + close(tmpf) + rc = system(ecmd " < " tmpf " > " outf " 2>/dev/null") + _pyconf_run_cmd_stdout = _cmd_output("cat " outf) + _pyconf_run_cmd_stderr = "" + system("rm -f " tmpf " " outf) + return rc +} + +function pyconf_format_yn(val) { + if (val == "yes" || val == 1 || val == "true") + return "yes" + return "no" +} + +function pyconf_run_check_with_cc_flag(desc, flag, source, saved, rc) { + saved = V["CFLAGS"] + V["CFLAGS"] = V["CFLAGS"] " " flag + rc = pyconf_run_check(desc, source, "", "") + V["CFLAGS"] = saved + return rc +} + +function pyconf_macro(name, result) { + # Placeholder for macro expansion + return "" +} + +function pyconf_cmd_status(args, result_arr, cmd) { + cmd = _arr_join_quoted(args, " ") + result_arr[0] = system(cmd " > " _pyconf_tmpdir "/cmd_out 2>&1") + result_arr[1] = _cmd_output("cat " _pyconf_tmpdir "/cmd_out") + system("rm -f " _pyconf_tmpdir "/cmd_out") +} + +function pyconf_canonical_host( result, guess, csub, parts, n) { + guess = _pyconf_srcdir "/config.guess" + csub = _pyconf_srcdir "/config.sub" + result = _cmd_output_oneline(guess " 2>/dev/null") + if (result != "") { + # Canonicalize through config.sub if available + result = _cmd_output_oneline(csub " " result " 2>/dev/null") + } + if (result == "") { + # Fallback: uname-based triplet + result = _cmd_output_oneline("uname -m") "-pc-" tolower(_cmd_output_oneline("uname -s")) "-gnu" + } + pyconf_build = result + pyconf_host = result + n = split(result, parts, "-") + pyconf_host_cpu = parts[1] + pyconf_cross_compiling = "no" +} + +function pyconf_find_compiler(user_cc, user_cpp, cc, cpp, ver) { + # Find C compiler — match AC_PROG_CC search order: gcc, cc + if (user_cc != "") { + cc = user_cc + } else if (ENVIRON["CC"] != "") { + cc = ENVIRON["CC"] + } else { + # Try gcc first, then cc (short names, not full paths) + if (_cmd_exit_code("gcc -c -o /dev/null /dev/null 2>/dev/null") == 0) + cc = "gcc" + else if (_cmd_exit_code("cc -c -o /dev/null /dev/null 2>/dev/null") == 0) + cc = "cc" + else + cc = "cc" + } + pyconf_CC = cc + # Find C preprocessor + if (user_cpp != "") { + cpp = user_cpp + } else if (ENVIRON["CPP"] != "") { + cpp = ENVIRON["CPP"] + } else { + cpp = cc " -E" + } + pyconf_CPP = cpp + # Identify compiler via --version output + ver = _cmd_output(cc " --version 2>/dev/null") + if (tolower(ver) ~ /clang/) { + pyconf_ac_cv_cc_name = "clang" + pyconf_ac_cv_gcc_compat = "yes" + pyconf_GCC = "yes" + } else if (ver ~ /GCC/ || ver ~ /Free Software Foundation/) { + pyconf_ac_cv_cc_name = "gcc" + pyconf_ac_cv_gcc_compat = "yes" + pyconf_GCC = "yes" + } else { + pyconf_ac_cv_cc_name = "unknown" + pyconf_ac_cv_gcc_compat = "no" + pyconf_GCC = "no" + } + pyconf_ac_cv_prog_cc_g = "yes" +} + +function pyconf_check_emscripten_port(port, name) { + # Stub for emscripten port checks + return 0 +} + +function pyconf_ax_c_float_words_bigendian(on_big, on_little, on_unknown, src, result) { + src = "#include \nint main(void) {\n double d = 1.0;\n unsigned char *p = (unsigned char *)&d;\n if (p[0] == 0x3f) { printf(\"big\\n\"); }\n else if (p[7] == 0x3f) { printf(\"little\\n\"); }\n else { printf(\"unknown\\n\"); }\n return 0;\n}\n" + result = _pyconf_run_test(_pyconf_confdefs() "\n" src, "") + # Store result for caller to dispatch callbacks + _pyconf_retval = result +} + +function pyconf_check_c_bigendian( source, result) { + source = _pyconf_confdefs() "\n#include \nint main(void) {\n union { long l; char c[sizeof(long)]; } u;\n u.l = 1;\n return u.c[0] == 1 ? 0 : 1;\n}" + result = _pyconf_run_test(source, "") + return result +} + diff --git a/Tools/configure/transpiler/pysh_ast.py b/Tools/configure/transpiler/pysh_ast.py new file mode 100644 index 00000000000000..53e3e1e33a19c2 --- /dev/null +++ b/Tools/configure/transpiler/pysh_ast.py @@ -0,0 +1,490 @@ +"""pysh_ast.py — Intermediate Python-shaped AST (AST1) for the transpiler. + +Pipeline position: + + Python AST --[py_to_pysh]--> pysh_ast (this module) + --[pysh_to_awk]--> awk_ast + --[awk_emit]--> awk text + +Nodes are nearly 1-to-1 with Python's ``ast`` module. The one annotation is: +every :class:`Call` carries a :class:`CallType` tag recording how the callee +communicates its return value. +""" + +from __future__ import annotations + +from dataclasses import dataclass, field +from enum import Enum, auto + + +class CallType(Enum): + """How a function communicates its return value to the caller.""" + + VOID = auto() # side-effecting call; return value ignored + BOOL = auto() # returns bool via exit code (0 = true) + RETVAL = auto() # returns string via $pyconf_retval + MULTI = auto() # returns N strings via $_retval_0 … $_retval_N-1 + STDOUT = auto() # returns string captured with $(...) + + +# --------------------------------------------------------------------------- +# Abstract bases +# --------------------------------------------------------------------------- + + +@dataclass +class Expr: + """Base class for pysh_ast expressions (produce a value).""" + + +@dataclass +class Stmt: + """Base class for pysh_ast statements (executable).""" + + +# --------------------------------------------------------------------------- +# Expressions +# --------------------------------------------------------------------------- + + +@dataclass +class Const(Expr): + """A constant value: string, int, bool, or None. + + Mirrors ``ast.Constant``. + """ + + value: str | int | bool | None + + +@dataclass +class Var(Expr): + """A variable reference by name. + + Mirrors ``ast.Name``. + """ + + name: str + + +@dataclass +class Attr(Expr): + """Attribute access: ``obj.attr``. + + ``obj`` is a dotted string already flattened from the Python AST, e.g. + ``"v"``, ``"pyconf"``, ``"os.environ"``, ``"os"``. + + Mirrors ``ast.Attribute``. + """ + + obj: str + attr: str + + +@dataclass +class Subscript(Expr): + """Subscript expression: ``obj[key]``. + + Mirrors ``ast.Subscript``. + """ + + obj: Expr + key: Expr + + +@dataclass +class FStr(Expr): + """F-string (JoinedStr). + + ``parts`` is a list where each element is either: + + - a ``str`` — a literal text segment, or + - an :class:`Expr` — an interpolated sub-expression. + + Mirrors ``ast.JoinedStr``. + """ + + parts: list = field(default_factory=list) # list[Expr | str] + + +@dataclass +class Add(Expr): + """Binary string concatenation (``+``). + + Mirrors ``ast.BinOp`` with ``ast.Add``. + """ + + left: Expr + right: Expr + + +@dataclass +class BoolOp(Expr): + """Boolean operator over a list of operands. + + ``op`` is ``"and"`` or ``"or"``. + + Mirrors ``ast.BoolOp``. + """ + + op: str # "and" | "or" + values: list = field(default_factory=list) # list[Expr] + + +@dataclass +class Not(Expr): + """Logical negation. + + Mirrors ``ast.UnaryOp`` with ``ast.Not``. + """ + + operand: Expr + + +@dataclass +class Cmp(Expr): + """Single comparison: ``left op right``. + + ``op`` is one of ``"=="``, ``"!="``, ``"<"``, ``"<="``, ``">"``, + ``">="``, ``"is"``, ``"is not"``. + + Mirrors a single-operator ``ast.Compare``. + """ + + left: Expr + op: str + right: Expr + + +@dataclass +class Ternary(Expr): + """Conditional expression: ``body if test else orelse``. + + Mirrors ``ast.IfExp``. + """ + + test: Expr + body: Expr + orelse: Expr + + +@dataclass +class Call(Expr): + """Function call with pre-computed :class:`CallType`. + + ``func`` is a dotted-name string, e.g. ``"pyconf.check_header"``, + ``"find_prog"``, ``"OPTION.is_yes"``. + + ``args`` includes ``Var("v")`` if the Python call passed the ``v`` + argument; Transform 2 decides whether to use or strip it. + + Mirrors ``ast.Call``. + """ + + func: str + args: list = field(default_factory=list) # list[Expr] + kwargs: dict = field(default_factory=dict) # dict[str, Expr] + call_type: CallType = CallType.VOID + + +@dataclass +class In(Expr): + """Membership test: ``item in container`` (or ``item not in container``). + + Mirrors ``ast.Compare`` with ``ast.In`` / ``ast.NotIn``. + """ + + item: Expr + container: Expr + negated: bool = False + + +@dataclass +class List(Expr): + """A list or tuple literal. + + Mirrors ``ast.List`` / ``ast.Tuple`` / ``ast.Set``. + """ + + elts: list = field(default_factory=list) # list[Expr] + + +@dataclass +class Dict(Expr): + """A dict literal with constant string keys. + + ``keys`` is a list of string key names. + ``values`` is a parallel list of :class:`Expr` values. + + Mirrors ``ast.Dict`` (constant-key subset only). + """ + + keys: list = field(default_factory=list) # list[str] + values: list = field(default_factory=list) # list[Expr] + + +# --------------------------------------------------------------------------- +# Statements +# --------------------------------------------------------------------------- + + +@dataclass +class Block(Stmt): + """An ordered sequence of statements. + + Used as the body of compound statements (if, for, with, funcdef). + """ + + stmts: list = field(default_factory=list) # list[Stmt] + + +@dataclass +class Assign(Stmt): + """Assignment statement: ``target = value``. + + Mirrors ``ast.Assign`` / ``ast.AnnAssign``. + """ + + target: Expr + value: Expr + + +@dataclass +class AugAssign(Stmt): + """Augmented assignment: ``target op= value``. + + ``op`` is the operator name, e.g. ``"Add"``. + + Mirrors ``ast.AugAssign``. + """ + + target: Expr + op: str + value: Expr + + +@dataclass +class If(Stmt): + """``if / elif / else`` statement. + + ``orelse`` is ``None`` for no else clause. + + Mirrors ``ast.If``. + """ + + test: Expr + body: Block + orelse: Block | None = None + + +@dataclass +class For(Stmt): + """``for var in iter: body`` loop. + + Mirrors ``ast.For``. + """ + + var: str + iter: Expr + body: Block + + +@dataclass +class With(Stmt): + """``with ctx: body`` statement. + + Mirrors ``ast.With`` (single context manager only). + """ + + ctx: Expr + body: Block + + +@dataclass +class Return(Stmt): + """``return [value]`` statement. + + Mirrors ``ast.Return``. + """ + + value: Expr | None = None + + +@dataclass +class Break(Stmt): + """``break`` statement.""" + + +@dataclass +class Continue(Stmt): + """``continue`` statement.""" + + +@dataclass +class ExprStmt(Stmt): + """An expression used as a statement (typically a call). + + Mirrors ``ast.Expr``. + """ + + expr: Expr + + +# --------------------------------------------------------------------------- +# Top-level +# --------------------------------------------------------------------------- + + +@dataclass +class FuncDef: + """A function definition at the pysh_ast level. + + ``params`` lists the Python-side parameter names, excluding ``"v"``. + ``defaults`` maps parameter names to their default expressions. + """ + + name: str + params: list = field(default_factory=list) # list[str] + defaults: dict = field(default_factory=dict) # dict[str, Expr] + body: Block = field(default_factory=Block) + + +@dataclass +class OptionInfo: + """Metadata for a pyconf.arg_with / pyconf.arg_enable declaration.""" + + python_var: str # e.g. "DISABLE_GIL" + kind: str # "enable" or "with" + name: str # e.g. "gil" + key: str # e.g. "enable_gil" + var: str | None = None + default: object = None + help_text: str = "" + metavar: str = "" + false_is: str | None = None + display: str | None = None + + +@dataclass +class ModuleConst: + """A module-level constant assignment (non-option).""" + + name: str + value: str | int | float | bool + + +@dataclass +class ModuleInfo: + """Parsed representation of a single conf_*.py module.""" + + name: str + filepath: str + options: list = field(default_factory=list) # list[OptionInfo] + option_var_map: dict = field(default_factory=dict) # dict[str, OptionInfo] + constants: list = field(default_factory=list) # list[ModuleConst] + functions: list = field(default_factory=list) # list[FuncDef] + # Optional raw AST (used by test helpers that build ModuleInfo from source) + tree: object = None + + +@dataclass +class Program: + """The full parsed program ready for code generation.""" + + script_dir: str + modules: list = field(default_factory=list) # list[ModuleInfo] + all_option_vars: dict = field( + default_factory=dict + ) # dict[str, OptionInfo] + run_order: list = field(default_factory=list) # list[str] + + +# --------------------------------------------------------------------------- +# Call-type classification constants (shared by py_to_pysh and pysh_to_awk) +# --------------------------------------------------------------------------- + +# pyconf.* functions returning 0/1 exit code. +PYCONF_BOOL_FUNCS: frozenset[str] = frozenset( + { + "check_header", + "check_headers", + "check_func", + "check_funcs", + "compile_check", + "link_check", + "try_link", + "check_compile_flag", + "check_linker_flag", + "check_lib", + "check_type", + "check_member", + "check_decl", + "check_define", + "run_check", + "fnmatch", + "fnmatch_any", + "path_exists", + "path_is_dir", + "path_is_file", + "path_is_symlink", + "is_executable", + "pkg_config_check", + "run_check_with_cc_flag", + "is_defined", + "cmd", + } +) + +# pyconf.* functions returning a value via stdout. +PYCONF_STDOUT_FUNCS: frozenset[str] = frozenset( + { + "find_prog", + "cmd_output", + "check_prog", + "check_progs", + "check_tools", + "search_libs", + "sizeof", + "abspath", + "basename", + "getcwd", + "readlink", + "relpath", + "path_join", + "path_parent", + "read_file", + "read_file_lines", + "glob_files", + "str_remove", + "sed", + "find_install", + "find_mkdir_p", + "platform_machine", + "platform_system", + "compile_link_check", + "pkg_config", + "run_program_output", + "get_dir_arg", + } +) + +# pyconf.* functions setting pyconf_retval. +PYCONF_RETVAL_FUNCS: frozenset[str] = frozenset( + { + "check_sizeof", + "check_alignof", + } +) + +# OPTION.* methods returning 0/1 exit code. +OPTION_BOOL_METHODS: frozenset[str] = frozenset({"is_yes", "is_no"}) +OPTION_BOOL_PROPS: frozenset[str] = frozenset({"given"}) + +# OPTION.* methods returning value via stdout. +OPTION_VALUE_METHODS: frozenset[str] = frozenset({"value_or"}) +OPTION_VALUE_PROPS: frozenset[str] = frozenset({"value"}) + +# OPTION.* methods setting pyconf_retval. +OPTION_RETVAL_METHODS: frozenset[str] = frozenset( + {"process_bool", "process_value"} +) diff --git a/Tools/configure/transpiler/pysh_to_awk.py b/Tools/configure/transpiler/pysh_to_awk.py new file mode 100644 index 00000000000000..46944cc4d3f0d9 --- /dev/null +++ b/Tools/configure/transpiler/pysh_to_awk.py @@ -0,0 +1,3325 @@ +"""pysh_to_awk.py — Transform pysh_ast → awk_ast. + +Semantic lowering from the Python-shaped AST (with CallType annotations) +to an AWK AST. Simpler than a shell backend would be because +AWK has native return values, associative arrays, and rich string builtins. + +Pipeline position:: + + pysh_ast --[this module]--> awk_ast + --[awk_emit]--> awk text +""" + +from __future__ import annotations + +from .pysh_ast import ( + Add, + Assign as PyshAssign, + Attr, + AugAssign, + Block as PyshBlock, + BoolOp, + Break as PyshBreak, + Call, + CallType, + Cmp, + Const, + Continue as PyshContinue, + Dict as PyshDict, + Expr as PyshExpr, + ExprStmt, + FStr, + For as PyshFor, + FuncDef as PyshFuncDef, + If as PyshIf, + In, + List as PyshList, + ModuleInfo, + Not, + OPTION_BOOL_METHODS, + OPTION_BOOL_PROPS, + OPTION_VALUE_METHODS, + OPTION_VALUE_PROPS, + OptionInfo, + Program as PyshProgram, + Return as PyshReturn, + Stmt as PyshStmt, + Subscript, + Ternary, + Var, + With as PyshWith, +) +from . import awk_ast as A + +# --------------------------------------------------------------------------- +# Transpile-time precomputation helpers +# --------------------------------------------------------------------------- + + +def _precompute_func_define(func: str) -> str: + return "HAVE_" + func.upper() + + +def _precompute_header_define(header: str) -> str: + return "HAVE_" + header.upper().replace("/", "_").replace( + ".", "_" + ).replace("+", "_").replace("-", "_") + + +def _precompute_header_cache_key(header: str) -> str: + return "ac_cv_header_" + header.replace("/", "_").replace( + ".", "_" + ).replace("+", "_").replace("-", "_") + + +def _precompute_member_define(member: str) -> str: + struct, _, field = member.partition(".") + return "HAVE_" + struct.upper().replace(" ", "_") + "_" + field.upper() + + +def _precompute_decl_define(decl: str) -> str: + return "HAVE_DECL_" + decl.upper() + + +_KNOWN_HEADER_DIRS = { + "sys", + "linux", + "netinet", + "netpacket", + "net", + "arpa", + "machine", + "asm", + "bluetooth", + "readline", + "editline", + "openssl", + "db", + "gdbm", + "uuid", + "pthread", +} + + +def _define_to_header(define: str) -> str: + raw = define.removeprefix("HAVE_").lower() + if raw.endswith("_h"): + raw = raw[:-2] + parts = raw.split("_", 1) + if len(parts) == 2 and parts[0] in _KNOWN_HEADER_DIRS: + return parts[0] + "/" + parts[1] + ".h" + return raw + ".h" + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + + +def _has_v_arg(call: Call) -> bool: + return any(isinstance(a, Var) and a.name == "v" for a in call.args) + + +def _is_int_expr(e: PyshExpr) -> bool: + match e: + case Const(value=int()): + return True + case Call(func="int"): + return True + case _: + return False + + +def _looks_like_full_source(e: PyshExpr) -> bool: + match e: + case Const(value=str() as s): + return s.lstrip().startswith("#") or "main" in s + case _: + return False + + +def _is_complete_program(e: PyshExpr) -> bool: + match e: + case Const(value=str() as s): + return "int main" in s or "return 0;" in s + case _: + return False + + +def _is_pyconf_attr(func: str) -> bool: + return func.startswith("pyconf.") + + +# AWK reserved words and builtin function names that cannot be used as +# variable/parameter names. +_AWK_RESERVED = frozenset( + { + "BEGIN", + "END", + "break", + "close", + "continue", + "delete", + "do", + "else", + "exit", + "for", + "func", + "function", + "getline", + "gsub", + "if", + "in", + "length", + "match", + "next", + "print", + "printf", + "return", + "split", + "sub", + "substr", + "system", + "tolower", + "toupper", + "while", + "sprintf", + "index", + "atan2", + "cos", + "exp", + "int", + "log", + "rand", + "sin", + "sqrt", + "srand", + } +) + + +def _safe_awk_name(name: str) -> str: + """Rename an identifier if it clashes with an AWK reserved word.""" + if name in _AWK_RESERVED: + return f"_{name}_" + return name + + +# Prefix for all user-defined (transpiled) function names, to avoid +# collisions with AWK builtins and pyconf runtime functions. +_USER_FUNC_PREFIX = "u_" + + +# --------------------------------------------------------------------------- +# Main transform class +# --------------------------------------------------------------------------- + + +class PyshToAwk: + """Transform pysh_ast.FuncDef into awk_ast.FuncDef. + + This is Transform 2 for the AWK backend. Construct once per module; + reuse across functions. + """ + + # Class-level counter so array local names are globally unique across + # all functions. Avoids gawk 5.2 bug with same-named array locals + # in caller and callee. + _global_arr_counter: int = 0 + + def __init__( + self, + module: ModuleInfo, + all_option_vars: dict[str, OptionInfo], + known_funcs: set[str] | None = None, + global_constants: set[str] | None = None, + ) -> None: + self.module = module + self.option_vars = all_option_vars + self._known_funcs: set[str] = known_funcs or set() + self._global_constants: set[str] = global_constants or set() + self._pkg_var_map: dict[str, str] = {} + self._locals: set[str] = set() + self._array_locals: set[str] = set() # locals used as arrays + self._pre_stmts: list = [] # statements to emit before current if/while + + # ------------------------------------------------------------------ + # Pre-scan for array variables + # ------------------------------------------------------------------ + + def _pre_scan_arrays(self, block: PyshBlock) -> None: + """Walk the function body to find variables that are used as arrays. + + This must run before lowering so that assignments like + ``var = "...".split()`` can be converted to AWK split() into an array + instead of a scalar assignment. + """ + for stmt in block.stmts: + self._pre_scan_stmt(stmt) + # Promote split-assigned variables to array_locals when they are + # passed as arguments to varargs functions (e.g. check_funcs). + self._promote_split_vars_used_as_arrays(block) + + def _pre_scan_stmt(self, node: PyshStmt) -> None: + match node: + case ExprStmt(expr=Call(func=f)) if f.endswith(".append"): + obj = f.rpartition(".")[0] + if obj and "." not in obj: + self._array_locals.add(obj) + case PyshAssign(target=Var(name=var), value=PyshDict()): + self._array_locals.add(var) + case PyshAssign(target=Subscript(obj=Var(name=var))): + self._array_locals.add(var) + case PyshAssign(target=Var(name=var), value=Call(func=f)) if ( + f.endswith(".split") + ): + self._split_assigned_vars.add(var) + case PyshAssign(target=Var(name=var), value=PyshList()): + self._split_assigned_vars.add(var) + case PyshIf(body=body, orelse=orelse): + self._pre_scan_arrays(body) + if orelse: + self._pre_scan_arrays(orelse) + case PyshFor(body=body): + self._pre_scan_arrays(body) + case _: + pass + + def _promote_split_vars_used_as_arrays(self, block: PyshBlock) -> None: + """Promote split-assigned vars to _array_locals when used as args + to varargs functions.""" + if not self._split_assigned_vars: + return + for stmt in block.stmts: + self._scan_for_array_usage(stmt) + + def _scan_for_array_usage(self, node: PyshStmt) -> None: + """Find calls that pass split-assigned vars to varargs functions.""" + calls: list[Call] = [] + match node: + case ExprStmt(expr=Call() as call): + calls.append(call) + case PyshAssign(value=Call() as call): + calls.append(call) + case PyshIf(test=test, body=body, orelse=orelse): + # Also scan the condition expression for varargs calls + self._collect_calls_from_expr(test, calls) + for s in body.stmts: + self._scan_for_array_usage(s) + if orelse: + for s in orelse.stmts: + self._scan_for_array_usage(s) + case PyshFor(body=body): + for s in body.stmts: + self._scan_for_array_usage(s) + for call in calls: + method = call.func.rpartition(".")[2] + if method in self._VARARGS_CALL_NAMES: + for arg in call.args: + if ( + isinstance(arg, Var) + and arg.name in self._split_assigned_vars + ): + self._array_locals.add(arg.name) + + def _collect_calls_from_expr( + self, expr: PyshExpr, calls: list[Call] + ) -> None: + """Recursively collect Call nodes from an expression.""" + match expr: + case Call(): + calls.append(expr) + case Not(operand=operand): + self._collect_calls_from_expr(operand, calls) + case BoolOp(values=values): + for v in values: + self._collect_calls_from_expr(v, calls) + case _: + pass + + # ------------------------------------------------------------------ + # Top-level + # ------------------------------------------------------------------ + + def transform_func(self, func: PyshFuncDef) -> A.FuncDef: + self._locals = set() + self._array_locals = set() + self._split_assigned_vars: set[str] = set() + self._has_multi_return = False + # Pre-scan to identify variables used as arrays (via .append(), + # dict literal assignment, subscript assignment, etc.) so that + # assignments like var = "...".split() can be handled correctly. + self._pre_scan_arrays(func.body) + # Build rename map for params that clash with AWK reserved words + self._rename_map: dict[str, str] = {} + for p in func.params: + safe = _safe_awk_name(p) + if safe != p: + self._rename_map[p] = safe + body = self._lower_block(func.body) + # Remove params from locals (they are already parameters) + param_set = set(func.params) + # Scalar locals: exclude params, arrays, and global constants + scalar_names = sorted( + self._locals + - param_set + - self._array_locals + - self._global_constants + ) + # Array locals: exclude params + array_names = sorted(self._array_locals - param_set) + # Apply renaming to locals too + safe_locals = [_safe_awk_name(n) for n in scalar_names] + safe_params = [_safe_awk_name(p) for p in func.params] + # If the function has multi-value returns, _result must be an + # explicit parameter (last) so callers can pass their result + # array there. + if self._has_multi_return: + safe_params.append("_result") + # Array locals go into the locals list too (AWK needs them + # declared) but we also emit delete statements at function entry. + all_locals = safe_locals + array_names + # Prepend delete statements for each array local + delete_stmts: list[A.Stmt] = [] + for arr in array_names: + delete_stmts.append(A.DeleteArray(arr)) + if delete_stmts: + body = A.Block(delete_stmts + body.stmts) + return A.FuncDef( + name=_USER_FUNC_PREFIX + func.name, + params=safe_params, + locals=all_locals, + body=body, + ) + + def _new_array_local(self, prefix: str = "_arr") -> str: + """Generate a unique array local variable name.""" + PyshToAwk._global_arr_counter += 1 + name = f"{prefix}_{PyshToAwk._global_arr_counter}" + self._array_locals.add(name) + return name + + def _var_name(self, name: str) -> str: + """Map a Python variable name to its AWK equivalent, handling renames.""" + return _safe_awk_name(self._rename_map.get(name, name)) + + def _func_name(self, name: str) -> str: + """Prefix a user-defined function name.""" + return _USER_FUNC_PREFIX + name + + def _lower_block(self, block: PyshBlock) -> A.Block: + stmts: list[A.Stmt] = [] + for node in block.stmts: + stmts.extend(self._lower_stmt(node)) + return A.Block(stmts) + + # ------------------------------------------------------------------ + # Statement lowering + # ------------------------------------------------------------------ + + def _lower_stmt(self, node: PyshStmt) -> list[A.Stmt]: + match node: + case ExprStmt(expr=Call() as call): + return self._call_stmt(call) + case ExprStmt(expr=expr): + raise ValueError( + f"unsupported bare expression: {type(expr).__name__}" + ) + case PyshAssign(): + return self._stmt_assign(node) + case AugAssign(): + return self._stmt_aug_assign(node) + case PyshIf(): + return self._stmt_if(node) + case PyshFor(): + return self._stmt_for(node) + case PyshWith(): + return self._stmt_with(node) + case PyshReturn(): + return self._stmt_return(node) + case PyshBreak(): + return [A.Break()] + case PyshContinue(): + return [A.Continue()] + case _: + raise ValueError( + f"unsupported statement: {type(node).__name__}" + ) + + # ------------------------------------------------------------------ + # Call as statement + # ------------------------------------------------------------------ + + def _call_stmt(self, call: Call) -> list[A.Stmt]: + func = call.func + + # pyconf.method(...) + if _is_pyconf_attr(func): + return self._pyconf_call_stmt(func.removeprefix("pyconf."), call) + + # v.method(...) + if func.startswith("v."): + method = func.removeprefix("v.") + return [ + A.ExprStmt(A.FuncCall(f"v_{method}", self._awk_args(call))) + ] + + # OPTION.method(...) + opt = self._option_from_call(call) + if opt is not None: + attr = func.rpartition(".")[2] + return self._option_method_stmt(opt, attr, call) + + # conf_module.function(...) + if "." in func: + obj, _, attr = func.rpartition(".") + if obj.startswith("conf_"): + return [ + A.ExprStmt( + A.FuncCall(self._func_name(attr), self._awk_args(call)) + ) + ] + # warnings.warn → print to stderr + if obj == "warnings" and attr == "warn": + if call.args: + return [ + A.Print( + [self._expr(call.args[0])], + dest=A.StringLit("/dev/stderr"), + ) + ] + return [] + # list.append(val) + if attr == "append": + return self._append_stmt(call) + # Python print() → AWK print + if func == "print": + args = [self._expr(a) for a in call.args] if call.args else [] + return [A.Print(args)] + + # Plain function call + return [ + A.ExprStmt(A.FuncCall(self._func_name(func), self._awk_args(call))) + ] + + def _append_stmt(self, call: Call) -> list[A.Stmt]: + obj_name = call.func.rpartition(".")[0] + if not call.args: + raise ValueError("append call with no args") + arg = call.args[0] + # Use array-based list: OBJ[++OBJ_len] = val; OBJ[0] = OBJ_len + len_var = f"{obj_name}_len" + self._locals.add(len_var) + self._array_locals.add(obj_name) + match arg: + case Call(call_type=CallType.BOOL): + val_expr = self._bool_call_as_value(arg) + case _: + val_expr = self._expr(arg) + new_len = A.BinOp(A.Var(len_var), "+", A.NumLit(1)) + return [ + A.Assign(A.ArrayRef(obj_name, new_len), val_expr), + A.Assign(A.Var(len_var), new_len), + # Keep arr[0] = count for iteration by _any/_all + # Use Var(len_var) here since len_var was already incremented above + A.Assign(A.ArrayRef(obj_name, A.NumLit(0)), A.Var(len_var)), + ] + + def _pyconf_call_stmt(self, method: str, call: Call) -> list[A.Stmt]: + match method: + case "define": + return [A.ExprStmt(self._build_define_call(call))] + case "run": + if call.args: + return [ + A.ExprStmt( + A.FuncCall( + "pyconf_run", [self._expr(call.args[0])] + ) + ) + ] + return [] + case "check_headers" | "check_header": + return self._check_headers_stmts(method, call) + case "check_sizeof": + return [A.ExprStmt(self._build_check_sizeof_call(call))] + case "check_func": + return self._check_func_stmts(call) + case "check_decl": + return self._check_decl_stmts(call) + case "check_decls": + return [A.ExprStmt(self._build_check_decls_call(call))] + case "check_member": + member = ( + self._expr(call.args[0]) if call.args else A.StringLit("") + ) + headers = self._extract_includes_expr(call) + return [ + A.ExprStmt( + A.FuncCall("pyconf_check_member", [member, headers]) + ) + ] + case "check_members": + return self._check_members_stmts(call) + case "check_type": + return self._check_type_stmts(call) + case "link_check" | "compile_check" | "compile_link_check": + return [A.ExprStmt(self._build_link_check_call(method, call))] + case "run_check": + return [A.ExprStmt(self._build_run_check_call(call))] + case "stdlib_module": + return [A.ExprStmt(self._build_stdlib_module_call(call))] + case "stdlib_module_simple": + return [ + A.ExprStmt(self._build_stdlib_module_simple_call(call)) + ] + case "search_libs": + return [A.ExprStmt(self._build_search_libs_call(call))] + case "find_compiler": + args: list[A.Expr] = [] + cc = call.kwargs.get("cc") + cpp = call.kwargs.get("cpp") + args.append(self._expr(cc) if cc else A.StringLit("")) + args.append(self._expr(cpp) if cpp else A.StringLit("")) + return [A.ExprStmt(A.FuncCall("pyconf_find_compiler", args))] + case "ax_c_float_words_bigendian": + return self._build_ax_float_bigendian(call) + case "config_files" if "chmod_x" in call.kwargs: + return [ + A.ExprStmt( + A.FuncCall( + "pyconf_config_files_x", self._awk_args(call) + ) + ) + ] + case _: + dropped = [ + k for k in call.kwargs if k not in self._SKIP_KWARGS + ] + if dropped: + raise ValueError( + f"pyconf.{method}() stmt call has unhandled " + f"kwargs {dropped} — add a transpiler handler" + ) + return [ + A.ExprStmt( + A.FuncCall(f"pyconf_{method}", self._awk_args(call)) + ) + ] + + def _option_method_stmt( + self, opt: OptionInfo, method: str, call: Call + ) -> list[A.Stmt]: + match method: + case "process_bool": + stmts: list[A.Stmt] = [] + result_var = "_opt_result" + self._locals.add(result_var) + stmts.append( + A.Assign( + A.Var(result_var), + A.FuncCall( + "pyconf_option_process_bool", + [A.StringLit(opt.key)], + ), + ) + ) + if opt.var and _has_v_arg(call): + stmts.append( + A.Assign( + A.ArrayRef("V", A.StringLit(opt.var)), + A.Var(result_var), + ) + ) + return stmts + case "process_value": + stmts = [] + result_var = "_opt_result" + self._locals.add(result_var) + stmts.append( + A.Assign( + A.Var(result_var), + A.FuncCall( + "pyconf_option_process_value", + [A.StringLit(opt.key)], + ), + ) + ) + if opt.var and _has_v_arg(call): + stmts.append( + A.Assign( + A.ArrayRef("V", A.StringLit(opt.var)), + A.Var(result_var), + ) + ) + return stmts + case _: + return [ + A.ExprStmt( + A.FuncCall( + f"pyconf_option_{method}", + [A.StringLit(opt.key)] + self._awk_args(call), + ) + ) + ] + + # ------------------------------------------------------------------ + # Assignment lowering + # ------------------------------------------------------------------ + + def _stmt_assign(self, node: PyshAssign) -> list[A.Stmt]: + target = node.target + value = node.value + + match target: + # v.NAME = expr → V["NAME"] = expr + case Attr(obj="v", attr=attr): + return self._assign_to_var(attr, value, node) + + # plain name = expr + case Var(name=var): + self._locals.add(var) + return self._var_assign(var, value, node) + + # Tuple unpacking + case PyshList(): + return self._tuple_assign(target, value) + + # x["key"] = val + case Subscript(): + return self._subscript_assign(target, value) + + # pyconf.attr = val / obj.attr = val + case Attr(obj=obj, attr=attr): + rhs = self._expr(value) + match obj: + case "pyconf": + return [A.Assign(A.Var(f"pyconf_{attr}"), rhs)] + case "os": + return [ + A.Assign( + A.ArrayRef("ENV", A.StringLit(attr)), rhs + ), + A.Assign( + A.ArrayRef("MODIFIED_ENV", A.StringLit(attr)), + A.NumLit(1), + ), + ] + case _: + return [A.Assign(A.Var(f"{obj}_{attr}"), rhs)] + + case _: + raise ValueError( + f"unsupported assign target: {type(target).__name__}" + ) + + def _var_assign( + self, var: str, value: PyshExpr, node: PyshAssign + ) -> list[A.Stmt]: + match value: + # pyconf.shell() with exports= — capture exported variables + case Call(func="pyconf.shell") if "exports" in value.kwargs: + exports_node = value.kwargs["exports"] + cmd_expr = ( + self._expr(value.args[0]) + if value.args + else A.StringLit("") + ) + stmts: list[A.Stmt] = [] + if isinstance(exports_node, PyshList): + for elt in exports_node.elts: + if isinstance(elt, Const) and isinstance( + elt.value, str + ): + export_name = elt.value + local = f"{var}_{export_name}" + self._locals.add(local) + stmts.append( + A.Assign( + A.Var(local), + A.FuncCall( + "pyconf_shell_export", + [cmd_expr, A.StringLit(export_name)], + ), + ) + ) + return stmts if stmts else [A.Assign(A.Var(var), cmd_expr)] + + # pkg_check_modules + case Call(func="pyconf.pkg_check_modules"): + match value.args: + case [Const(value=prefix), *_]: + self._pkg_var_map[var] = str(prefix) + case _: + pass + args = self._awk_args(value) + return [ + A.Assign( + A.Var(var), + A.Ternary( + A.FuncCall("pyconf_pkg_check_modules", args), + A.StringLit("yes"), + A.StringLit("no"), + ), + ) + ] + # pyconf.run(cmd, capture_output=True) + case Call(func="pyconf.run"): + cmd_arg = ( + self._expr(value.args[0]) + if value.args + else A.StringLit("") + ) + input_arg = value.kwargs.get("input") + if input_arg is not None: + func_name = "pyconf_run_capture_input" + args = [cmd_arg, self._expr(input_arg)] + else: + func_name = "pyconf_run_capture" + args = [cmd_arg] + rc_var = f"{var}_returncode" + stdout_var = f"{var}_stdout" + stderr_var = f"{var}_stderr" + self._locals.update([rc_var, stdout_var, stderr_var]) + return [ + A.Assign(A.Var(rc_var), A.FuncCall(func_name, args)), + A.Assign( + A.Var(stdout_var), A.Var("_pyconf_run_cmd_stdout") + ), + A.Assign( + A.Var(stderr_var), A.Var("_pyconf_run_cmd_stderr") + ), + ] + # .split() assigned to an array variable → split into array + case Call(func=f) if ( + f.endswith(".split") and var in self._array_locals + ): + obj_name = f.rpartition(".")[0] + if obj_name == "" and value.args: + obj_expr = self._expr(value.args[0]) + split_args = value.args[1:] + else: + obj_expr = self._expr_from_name(obj_name) + split_args = value.args + match split_args: + case [Const(value=sep), *_]: + sep_expr = A.StringLit(str(sep)) + case _: + sep_expr = A.StringLit(" ") + len_var = f"{var}_len" + self._locals.add(len_var) + return [ + A.Assign( + A.Var(len_var), + A.Split(obj_expr, var, sep_expr), + ), + A.Assign(A.ArrayRef(var, A.NumLit(0)), A.Var(len_var)), + ] + # List literal assigned to array variable → AWK array init + case PyshList(elts=elts) if elts and var in self._array_locals: + stmts: list[A.Stmt] = [A.DeleteArray(var)] + for idx, elt in enumerate(elts, 1): + stmts.append( + A.Assign( + A.ArrayRef(var, A.NumLit(idx)), + self._expr(elt), + ) + ) + stmts.append( + A.Assign( + A.ArrayRef(var, A.NumLit(0)), + A.NumLit(len(elts)), + ) + ) + return stmts + # Dict literal + case PyshDict(): + self._array_locals.add(var) + stmts2: list[A.Stmt] = [] + for k, v_expr in zip(value.keys, value.values): + safe_key = k.replace("-", "_") + stmts2.append( + A.Assign( + A.ArrayRef(var, A.StringLit(safe_key)), + self._expr(v_expr), + ) + ) + return stmts2 + # option retval + case Call(call_type=CallType.RETVAL): + opt = self._option_from_call(value) + if opt is not None: + return self._assign_option_retval(var, opt, value) + case _: + pass + return self._assign_to_var(var, value, node) + + def _tuple_assign(self, target: PyshList, value: PyshExpr) -> list[A.Stmt]: + match value: + case Call(func="pyconf.cmd_status"): + args = self._awk_args(value) + names = self._tuple_target_names(target) + for n in names: + self._locals.add(n) + result_arr = self._new_array_local("_ar") + return [ + A.ExprStmt( + A.FuncCall( + "pyconf_cmd_status", args + [A.Var(result_arr)] + ) + ), + A.Assign( + A.Var(names[0]), A.ArrayRef(result_arr, A.NumLit(0)) + ), + A.Assign( + A.Var(names[1]), A.ArrayRef(result_arr, A.NumLit(1)) + ), + ] + case Call(func=func) if "." not in func: + result_arr = self._new_array_local("_ar") + args = self._awk_args(value) + stmts: list[A.Stmt] = [ + A.ExprStmt( + A.FuncCall( + self._func_name(func), + args + [A.Var(result_arr)], + ) + ) + ] + for i, t in enumerate(target.elts): + match t: + case Attr(obj="v", attr=dest): + stmts.append( + A.Assign( + A.ArrayRef("V", A.StringLit(dest)), + A.ArrayRef(result_arr, A.NumLit(i)), + ) + ) + case Var(name=dest): + self._locals.add(dest) + stmts.append( + A.Assign( + A.Var(self._var_name(dest)), + A.ArrayRef(result_arr, A.NumLit(i)), + ) + ) + case _: + raise ValueError(f"complex tuple target: {t}") + return stmts + case PyshList(): + stmts = [] + for t, v in zip(target.elts, value.elts): + match t: + case Var(name=name): + self._locals.add(name) + stmts.append( + A.Assign( + A.Var(self._var_name(name)), self._expr(v) + ) + ) + case _: + raise ValueError(f"complex tuple target: {t}") + return stmts + case _: + raise ValueError(f"unsupported tuple unpacking: {value}") + + @staticmethod + def _tuple_target_names(target: PyshList) -> list[str]: + names: list[str] = [] + for t in target.elts: + match t: + case Attr(obj="v", attr=dest): + names.append(dest) + case Var(name=dest): + names.append(dest) + case _: + raise ValueError(f"complex tuple target: {t}") + return names + + def _assign_to_var( + self, var: str, value: PyshExpr, _node: object + ) -> list[A.Stmt]: + """Generate assignment for var = .""" + + _is_config_var = ( + isinstance(_node, PyshAssign) + and isinstance(_node.target, Attr) + and _node.target.obj == "v" + ) + + def _target() -> A.Expr: + """Build the correct assignment target.""" + if _is_config_var: + return A.ArrayRef("V", A.StringLit(var)) + return A.Var(var) + + match value: + case Ternary(): + return self._ternary_assign(var, value, _target) + + case Not(operand=Call(call_type=CallType.BOOL) as operand): + # Use the raw function call as condition (returns 0/1), + # then invert: !call ? "yes" : "no" + fc = self._call_cond(operand) + return [ + A.Assign( + _target(), + A.Ternary( + A.UnaryOp("!", fc), + A.StringLit("yes"), + A.StringLit("no"), + ), + ) + ] + + # Option value/bool check + case Attr() | Call() if ( + opt := self._option_from_expr(value) + ) is not None: + match value: + case Attr(attr=attr): + pass + case Call(func=func): + attr = func.rpartition(".")[2] + case _: + attr = "" + if attr in OPTION_VALUE_PROPS or attr in OPTION_VALUE_METHODS: + return self._assign_option_value(var, opt, value, _target) + if attr in OPTION_BOOL_PROPS or attr in OPTION_BOOL_METHODS: + return self._assign_option_bool(var, opt, value, _target) + return self._assign_to_var_general(var, value, _target) + + # Boolean-returning method (startswith/endswith) assigned to + # config variable — emit ternary to produce "yes"/"no". + case Call(func=func) if _is_config_var and func.endswith( + (".startswith", ".endswith") + ): + cond = self._cond_expr(value) + return [ + A.Assign( + _target(), + A.Ternary( + cond, + A.StringLit("yes"), + A.StringLit("no"), + ), + ) + ] + + case _: + return self._assign_to_var_general(var, value, _target) + + def _assign_to_var_general( + self, var: str, value: PyshExpr, target_fn: object + ) -> list[A.Stmt]: + target = target_fn() + match value: + # Bool call: x = pyconf.check_header(...) + case Call(call_type=CallType.BOOL): + result = self._bool_call_as_value(value) + return [A.Assign(target, result)] + + # STDOUT call: x = pyconf.find_prog(...) + case Call(call_type=CallType.STDOUT): + return [A.Assign(target, self._pyconf_func_call(value))] + + # RETVAL call: x = pyconf.check_sizeof(...) + case Call(call_type=CallType.RETVAL): + return [A.Assign(target, self._pyconf_func_call(value))] + + # List literal + case PyshList(elts=elts) if elts: + parts = [self._expr(elt) for elt in elts] + val: A.Expr = self._concat_with_sep(parts, " ") + return [A.Assign(target, val)] + + # Empty list: AWK arrays start empty, skip initialization. + # The _len counter is also a local and defaults to 0. + case PyshList(elts=[]): + return [] + + case _: + return [A.Assign(target, self._expr(value))] + + def _bool_call_as_value(self, call: Call) -> A.Expr: + """Lower a BOOL call to an AWK expression producing "yes"/"no".""" + success_val = "yes" + failure_val = "no" + for k, v in call.kwargs.items(): + match k: + case "on_success_return" | "success": + match v: + case Const(value=val): + success_val = "yes" if val else "no" + case "on_failure_return" | "failure": + match v: + case Const(value=val): + failure_val = "yes" if val else "no" + fc = self._pyconf_func_call(call) + return A.Ternary( + fc, A.StringLit(success_val), A.StringLit(failure_val) + ) + + def _assign_option_retval( + self, var: str, opt: OptionInfo, call: Call + ) -> list[A.Stmt]: + method = call.func.rpartition(".")[2] + result_var = "_opt_result" + self._locals.add(result_var) + stmts: list[A.Stmt] = [ + A.Assign( + A.Var(result_var), + A.FuncCall(f"pyconf_option_{method}", [A.StringLit(opt.key)]), + ) + ] + if opt.var and _has_v_arg(call): + stmts.append( + A.Assign( + A.ArrayRef("V", A.StringLit(opt.var)), + A.Var(result_var), + ) + ) + self._locals.add(var) + stmts.append(A.Assign(A.Var(var), A.Var(result_var))) + return stmts + + def _assign_option_value( + self, var: str, opt: OptionInfo, value: PyshExpr, target_fn: object + ) -> list[A.Stmt]: + target = target_fn() + match value: + case Attr(): + return [ + A.Assign( + target, + A.FuncCall( + "pyconf_option_value", [A.StringLit(opt.key)] + ), + ) + ] + case Call(func=func): + method = func.rpartition(".")[2] + args = [A.StringLit(opt.key)] + self._awk_args(value) + return [ + A.Assign( + target, + A.FuncCall(f"pyconf_option_{method}", args), + ) + ] + case _: + raise ValueError(f"unsupported option value assign: {value}") + + def _assign_option_bool( + self, var: str, opt: OptionInfo, value: PyshExpr, target_fn: object + ) -> list[A.Stmt]: + target = target_fn() + match value: + case Attr(attr="given"): + fc = A.FuncCall("pyconf_option_given", [A.StringLit(opt.key)]) + case Call(func=func): + fc = A.FuncCall( + f"pyconf_option_{func.rpartition('.')[2]}", + [A.StringLit(opt.key)], + ) + case _: + raise ValueError(f"unsupported option bool assign: {value}") + return [ + A.Assign( + target, + A.Ternary(fc, A.StringLit("yes"), A.StringLit("no")), + ) + ] + + def _ternary_assign( + self, var: str, node: Ternary, target_fn: object + ) -> list[A.Stmt]: + cond = self._cond_expr(node.test) + body_val = self._expr(node.body) + else_val = self._expr(node.orelse) + return [A.Assign(target_fn(), A.Ternary(cond, body_val, else_val))] + + def _subscript_assign( + self, target: Subscript, value: PyshExpr + ) -> list[A.Stmt]: + rhs = self._expr(value) + obj = target.obj + key = target.key + + match obj: + # os.environ["KEY"] / pyconf.env["KEY"] + case Attr(obj="os" | "pyconf", attr="environ" | "env"): + key_expr = self._expr(key) + return [ + A.Assign(A.ArrayRef("ENV", key_expr), rhs), + A.Assign( + A.ArrayRef("MODIFIED_ENV", key_expr), A.NumLit(1) + ), + ] + # pyconf.cache["key"] + case Attr(obj="pyconf", attr="cache"): + key_expr = self._expr(key) + return [A.Assign(A.ArrayRef("CACHE", key_expr), rhs)] + # x["key"] = val → use x as associative array + case Var(name=dict_name): + self._array_locals.add(dict_name) + key_expr = self._expr(key) + return [A.Assign(A.ArrayRef(dict_name, key_expr), rhs)] + case _: + raise ValueError(f"unsupported subscript assignment: {target}") + + def _stmt_aug_assign(self, node: AugAssign) -> list[A.Stmt]: + if node.op != "Add": + raise ValueError(f"unsupported aug-assign op: {node.op}") + match node.target: + case Attr(obj="v", attr=var): + target: A.Expr = A.ArrayRef("V", A.StringLit(var)) + current: A.Expr = A.ArrayRef("V", A.StringLit(var)) + case Var(name=var): + target = A.Var(var) + current = A.Var(var) + case _: + raise ValueError( + f"unsupported aug-assign target: {node.target}" + ) + rhs = self._expr(node.value) + return [A.Assign(target, A.Concat([current, rhs]))] + + # ------------------------------------------------------------------ + # If / For / With / Return + # ------------------------------------------------------------------ + + def _stmt_if(self, node: PyshIf) -> list[A.Stmt]: + result: list[A.Stmt] = [] + self._pre_stmts.clear() + cond = self._cond_expr(node.test) + result.extend(self._pre_stmts) + self._pre_stmts.clear() + body = self._lower_block(node.body) + branches = [A.IfBranch(cond=cond, body=body)] + else_body: A.Block | None = None + + orelse = node.orelse + while orelse and orelse.stmts: + if len(orelse.stmts) == 1 and isinstance(orelse.stmts[0], PyshIf): + elif_node = orelse.stmts[0] + self._pre_stmts.clear() + elif_cond = self._cond_expr(elif_node.test) + # pre_stmts from elif conditions go into a wrapper block + if self._pre_stmts: + # Close the current if chain, emit pre-stmts, start new if + else_body_stmts: list[A.Stmt] = list(self._pre_stmts) + self._pre_stmts.clear() + elif_body = self._lower_block(elif_node.body) + elif_branches = [ + A.IfBranch(cond=elif_cond, body=elif_body) + ] + # Continue processing remaining elif/else on the inner if + inner_orelse = elif_node.orelse + while inner_orelse and inner_orelse.stmts: + if len(inner_orelse.stmts) == 1 and isinstance( + inner_orelse.stmts[0], PyshIf + ): + inner_elif = inner_orelse.stmts[0] + inner_cond = self._cond_expr(inner_elif.test) + inner_body = self._lower_block(inner_elif.body) + elif_branches.append( + A.IfBranch(cond=inner_cond, body=inner_body) + ) + inner_orelse = inner_elif.orelse + else: + inner_else = self._lower_block(inner_orelse) + else_body_stmts.append( + A.If( + branches=elif_branches, + else_body=inner_else, + ) + ) + inner_orelse = None + break + else: + else_body_stmts.append( + A.If(branches=elif_branches, else_body=None) + ) + else_body = A.Block(else_body_stmts) + orelse = None + else: + elif_body = self._lower_block(elif_node.body) + branches.append(A.IfBranch(cond=elif_cond, body=elif_body)) + orelse = elif_node.orelse + else: + else_body = self._lower_block(orelse) + orelse = None + + result.append(A.If(branches=branches, else_body=else_body)) + return result + + def _stmt_for(self, node: PyshFor) -> list[A.Stmt]: + var = node.var + self._locals.add(var) + body = self._lower_block(node.body) + + match node.iter: + # .splitlines() → split on newlines + case Call(func=f, args=[], kwargs={}) if f.endswith(".splitlines"): + obj_name = f.rpartition(".")[0] + items = self._expr_from_name(obj_name) + arr_name = self._new_array_local("_as") + n_var = f"_n_{var}" + i_var = f"_i_{var}" + self._locals.update([n_var, i_var]) + return [ + A.Assign( + A.Var(n_var), + A.Split(items, arr_name, A.StringLit("\n")), + ), + A.For( + init=A.Assign(A.Var(i_var), A.NumLit(1)), + cond=A.BinOp(A.Var(i_var), "<=", A.Var(n_var)), + incr=A.Assign( + A.Var(i_var), + A.BinOp(A.Var(i_var), "+", A.NumLit(1)), + ), + body=A.Block( + [ + A.Assign( + A.Var(var), + A.ArrayRef(arr_name, A.Var(i_var)), + ), + *body.stmts, + ] + ), + ), + ] + + # List literal + case PyshList(elts=elts): + arr_name = self._new_array_local("_al") + i_var = f"_i_{var}" + self._locals.update([i_var]) + stmts: list[A.Stmt] = [] + for idx, elt in enumerate(elts): + stmts.append( + A.Assign( + A.ArrayRef(arr_name, A.NumLit(idx + 1)), + self._expr(elt), + ) + ) + stmts.append( + A.For( + init=A.Assign(A.Var(i_var), A.NumLit(1)), + cond=A.BinOp(A.Var(i_var), "<=", A.NumLit(len(elts))), + incr=A.Assign( + A.Var(i_var), + A.BinOp(A.Var(i_var), "+", A.NumLit(1)), + ), + body=A.Block( + [ + A.Assign( + A.Var(var), + A.ArrayRef(arr_name, A.Var(i_var)), + ), + *body.stmts, + ] + ), + ) + ) + return stmts + + # Iterate over an array local (e.g. list built via .append()) + case Var(name=arr_var) if arr_var in self._array_locals: + len_var = f"{arr_var}_len" + i_var = f"_i_{var}" + self._locals.update([i_var, len_var]) + return [ + A.For( + init=A.Assign(A.Var(i_var), A.NumLit(1)), + cond=A.BinOp(A.Var(i_var), "<=", A.Var(len_var)), + incr=A.Assign( + A.Var(i_var), + A.BinOp(A.Var(i_var), "+", A.NumLit(1)), + ), + body=A.Block( + [ + A.Assign( + A.Var(var), + A.ArrayRef(arr_var, A.Var(i_var)), + ), + *body.stmts, + ] + ), + ), + ] + + case _: + # Generic: split the expression on spaces + items = self._expr(node.iter) + arr_name = self._new_array_local("_as") + n_var = f"_n_{var}" + i_var = f"_i_{var}" + self._locals.update([n_var, i_var]) + return [ + A.Assign( + A.Var(n_var), + A.Split(items, arr_name, A.StringLit(" ")), + ), + A.For( + init=A.Assign(A.Var(i_var), A.NumLit(1)), + cond=A.BinOp(A.Var(i_var), "<=", A.Var(n_var)), + incr=A.Assign( + A.Var(i_var), + A.BinOp(A.Var(i_var), "+", A.NumLit(1)), + ), + body=A.Block( + [ + A.Assign( + A.Var(var), + A.ArrayRef(arr_name, A.Var(i_var)), + ), + *body.stmts, + ] + ), + ), + ] + + def _stmt_with(self, node: PyshWith) -> list[A.Stmt]: + match node.ctx: + case Call(func="pyconf.save_env"): + body = self._lower_block(node.body) + return [ + A.ExprStmt(A.FuncCall("pyconf_save_env", [])), + *body.stmts, + A.ExprStmt(A.FuncCall("pyconf_restore_env", [])), + ] + case _: + raise ValueError(f"unsupported 'with' context: {node.ctx}") + + def _stmt_return(self, node: PyshReturn) -> list[A.Stmt]: + match node.value: + case None: + return [A.Return()] + case PyshList(elts=elts): + # Multi-value return: store in _result array param + self._has_multi_return = True + stmts: list[A.Stmt] = [] + for i, elt in enumerate(elts): + stmts.append( + A.Assign( + A.ArrayRef("_result", A.NumLit(i)), + self._expr(elt), + ) + ) + stmts.append(A.Return()) + return stmts + case _: + val = self._expr(node.value) + return [A.Return(val)] + + # ------------------------------------------------------------------ + # Expression lowering: pysh_ast.Expr → awk_ast.Expr + # ------------------------------------------------------------------ + + def _expr(self, node: PyshExpr) -> A.Expr: + match node: + case Const(value=None): + return A.StringLit("") + case Const(value=True): + return A.StringLit("yes") + case Const(value=False): + return A.StringLit("no") + case Const(value=int() as v): + return A.NumLit(v) + case Const(value=str() as v): + return A.StringLit(v) + case Const(value=v): + return A.StringLit(str(v)) + case Var(name=name): + self._locals.add(name) + return A.Var(self._var_name(name)) + case Attr(): + return self._attr_expr(node) + case FStr(parts=parts): + return self._fstr_expr(parts) + case Add(left=left, right=right): + return A.Concat([self._expr(left), self._expr(right)]) + case BoolOp(op="or", values=values) if len(values) >= 2: + # x or y → x != "" ? x : y + result = self._expr(values[-1]) + for val in reversed(values[:-1]): + left_expr = self._expr(val) + result = A.Ternary( + A.BinOp(left_expr, "!=", A.StringLit("")), + left_expr, + result, + ) + return result + case BoolOp(op=op, values=values): + cond = self._boolop_cond(op, values) + return A.Ternary(cond, A.StringLit("yes"), A.StringLit("no")) + case Not(operand=operand): + cond = self._cond_expr(operand) + return A.Ternary(cond, A.StringLit("no"), A.StringLit("yes")) + case Call() as call: + return self._call_as_expr(call) + case Subscript(): + return self._subscript_expr(node) + case Cmp() as cmp_node: + cond = self._cond_expr(cmp_node) + return A.Ternary(cond, A.StringLit("yes"), A.StringLit("no")) + case Ternary(test=test, body=body, orelse=orelse): + cond = self._cond_expr(test) + return A.Ternary(cond, self._expr(body), self._expr(orelse)) + case PyshList(elts=elts): + parts = [self._expr(elt) for elt in elts] + return ( + self._concat_with_sep(parts, " ") + if parts + else A.StringLit("") + ) + case In(): + cond = self._cond_expr(node) + return A.Ternary(cond, A.StringLit("yes"), A.StringLit("no")) + case _: + return A.StringLit("") + + def _attr_expr(self, node: Attr) -> A.Expr: + obj = node.obj + attr = node.attr + + # v.NAME → V["NAME"] + if obj == "v": + return A.ArrayRef("V", A.StringLit(attr)) + + # Option variable access + opt = self.option_vars.get(obj) + if opt is not None: + if attr == "value": + return A.FuncCall( + "pyconf_option_value", [A.StringLit(opt.key)] + ) + if attr == "given": + return A.ArrayRef("OPT_GIVEN", A.StringLit(opt.key)) + + # pkg_check_modules result + if obj in self._pkg_var_map: + prefix = self._pkg_var_map[obj] + if attr == "cflags": + return A.ArrayRef("V", A.StringLit(f"{prefix}_CFLAGS")) + if attr == "libs": + return A.ArrayRef("V", A.StringLit(f"{prefix}_LIBS")) + + return A.Var(f"{obj}_{attr}") + + def _fstr_expr(self, parts: list) -> A.Expr: + awk_parts: list[A.Expr] = [] + for p in parts: + match p: + case str(): + awk_parts.append(A.StringLit(p)) + case _: + awk_parts.append(self._expr(p)) + if len(awk_parts) == 1: + return awk_parts[0] + return A.Concat(awk_parts) + + def _call_as_expr(self, call: Call) -> A.Expr: + func = call.func + + # Option value methods + opt = self._option_from_call(call) + if opt is not None: + attr = func.rpartition(".")[2] + if attr in OPTION_VALUE_METHODS: + args = [A.StringLit(opt.key)] + self._awk_args(call) + return A.FuncCall(f"pyconf_option_{attr}", args) + if attr in OPTION_VALUE_PROPS: + return A.FuncCall( + "pyconf_option_value", [A.StringLit(opt.key)] + ) + if attr in OPTION_BOOL_METHODS or attr in OPTION_BOOL_PROPS: + return A.Ternary( + A.FuncCall( + f"pyconf_option_{attr}", [A.StringLit(opt.key)] + ), + A.StringLit("yes"), + A.StringLit("no"), + ) + + # STDOUT / RETVAL: direct function call (AWK has return values) + if call.call_type in (CallType.STDOUT, CallType.RETVAL): + return self._pyconf_func_call(call) + + # BOOL as expression + if call.call_type == CallType.BOOL: + return self._bool_call_as_value(call) + + if "." not in func: + fid = func + if fid in ("str", "int") and call.args: + return self._expr(call.args[0]) + if fid == "sorted" and call.args: + return self._expr(call.args[0]) + if fid == "bool" and call.args: + inner = self._expr(call.args[0]) + return A.Ternary( + A.BinOp(inner, "!=", A.StringLit("")), + A.StringLit("yes"), + A.StringLit("no"), + ) + if fid == "len" and call.args: + inner = self._expr(call.args[0]) + return A.Length(inner) + if self._known_funcs and fid not in self._known_funcs: + raise ValueError( + f"plain function {fid}() used as expression but not " + f"handled by the transpiler: {call}" + ) + args = self._awk_args(call) + return A.FuncCall(self._func_name(fid), args) + + # String method calls + obj_str, _, method = func.rpartition(".") + if obj_str == "" and call.args: + obj_expr = self._expr(call.args[0]) + sub_call = Call( + func=func, + args=call.args[1:], + kwargs=call.kwargs, + call_type=call.call_type, + ) + return self._string_method_expr("", obj_expr, method, sub_call) + obj_expr = self._expr_from_name(obj_str) + return self._string_method_expr(obj_str, obj_expr, method, call) + + def _string_method_expr( + self, obj_str: str, obj: A.Expr, method: str, call: Call + ) -> A.Expr: + match method: + case "split": + # Return a space-separated string (AWK split is done at use site) + match call.args: + case [Const(value=sep), *_] if str(sep) != " ": + tmp = "_tmp_split" + self._locals.add(tmp) + # gsub needs in-place: copy, gsub, return + return A.FuncCall( + "_str_replace", + [obj, A.StringLit(str(sep)), A.StringLit(" ")], + ) + return obj + + case "strip": + return A.FuncCall("_str_strip", [obj]) + + case "lower": + return A.Tolower(obj) + + case "upper": + return A.Toupper(obj) + + case "splitlines": + return obj + + case "removeprefix" if call.args: + match call.args[0]: + case Const(value=v): + prefix = str(v) + return A.FuncCall( + "_str_removeprefix", [obj, A.StringLit(prefix)] + ) + + case "removesuffix" | "rstrip" if call.args: + match call.args[0]: + case Const(value=v): + suffix = str(v) + return A.FuncCall( + "_str_removesuffix", [obj, A.StringLit(suffix)] + ) + + case "rstrip" if not call.args: + return A.FuncCall("_str_rstrip", [obj]) + + case "replace" if len(call.args) >= 2: + old_arg = call.args[0] + new_arg = call.args[1] + old_expr = ( + self._expr(old_arg) + if isinstance(old_arg, Const) + else A.StringLit("") + ) + new_expr = ( + self._expr(new_arg) + if isinstance(new_arg, Const) + else A.StringLit("") + ) + return A.FuncCall("_str_replace", [obj, old_expr, new_expr]) + + case "join" if call.args: + items = self._expr(call.args[0]) + match obj: + case A.StringLit(value=sep): + pass + case _ if obj_str: + sep = obj_str + case _: + sep = "" + # Use _arr_join for variables that are AWK arrays + # (built via .append()), _str_join for strings. + match call.args[0]: + case Var(name=vname) if vname in self._array_locals: + return A.FuncCall( + "_arr_join", [items, A.StringLit(sep)] + ) + return A.FuncCall("_str_join", [A.StringLit(sep), items]) + + case "get" if call.args: + return self._dict_get_expr(obj_str, obj, call) + + case "startswith" if call.args: + match call.args[0]: + case Const(value=v): + prefix = str(v) + return A.FuncCall( + "_str_startswith", [obj, A.StringLit(prefix)] + ) + + case "endswith" if call.args: + match call.args[0]: + case Const(value=v): + suffix = str(v) + return A.FuncCall( + "_str_endswith", [obj, A.StringLit(suffix)] + ) + + case _: + pass + return A.StringLit("") + + def _dict_get_expr(self, obj_str: str, obj: A.Expr, call: Call) -> A.Expr: + key_expr = self._expr(call.args[0]) if call.args else A.StringLit("") + default_expr = ( + self._expr(call.args[1]) if len(call.args) > 1 else A.StringLit("") + ) + match obj_str: + case "os.environ" | "os_environ": + return A.Ternary( + A.InArray(key_expr, "ENV"), + A.ArrayRef("ENV", key_expr), + default_expr, + ) + case "pyconf.cache" | "pyconf_cache": + return A.Ternary( + A.InArray(key_expr, "CACHE"), + A.ArrayRef("CACHE", key_expr), + default_expr, + ) + case _: + pass + match obj: + case A.Var(name=name): + return A.Ternary( + A.InArray(key_expr, name), + A.ArrayRef(name, key_expr), + default_expr, + ) + case _: + return default_expr + + def _subscript_expr(self, node: Subscript) -> A.Expr: + obj = node.obj + key = node.key + + # x.split("sep")[N] + match obj, key: + case ( + Call(func=f), + Const(value=int() as idx), + ) if f.endswith(".split"): + parent_name = f.rpartition(".")[0] + if parent_name == "" and obj.args: + parent = self._expr(obj.args[0]) + split_args = obj.args[1:] + else: + parent = self._expr_from_name(parent_name) + split_args = obj.args + arr_name = "_split_tmp" + self._array_locals.add(arr_name) + match split_args: + case [Const(value=sep), *_]: + return A.FuncCall( + "_split_index", + [parent, A.StringLit(str(sep)), A.NumLit(idx + 1)], + ) + case _: + return A.FuncCall( + "_split_index", + [parent, A.StringLit(" "), A.NumLit(idx + 1)], + ) + + # Constant int key (index into space-separated list) + case _, Const(value=int() as iv): + obj_expr = self._expr(obj) + arr_name = "_idx_tmp" + self._array_locals.add(arr_name) + return A.FuncCall( + "_split_index", + [obj_expr, A.StringLit(" "), A.NumLit(iv + 1)], + ) + + # Constant string key → array access + case _, Const(value=kv): + obj_expr = self._expr(obj) + match obj_expr: + case A.Var(name=name): + return A.ArrayRef(name, A.StringLit(str(kv))) + case A.ArrayRef(): + return A.StringLit("") + case _: + return A.StringLit("") + + # Variable key + case _, Var(name=key_name): + obj_expr = self._expr(obj) + self._locals.add(key_name) + match obj_expr: + case A.Var(name=name): + return A.ArrayRef(name, A.Var(key_name)) + case _: + return A.StringLit("") + + case _, _: + return A.StringLit("") + + def _expr_from_name(self, name: str) -> A.Expr: + """Recover the object expression from a dotted name.""" + if "." not in name: + self._locals.add(name) + return A.Var(name) + if name.startswith("v.") and "." not in name[2:]: + return A.ArrayRef("V", A.StringLit(name[2:])) + return A.Var(name.replace(".", "_")) + + # ------------------------------------------------------------------ + # Condition expression lowering + # ------------------------------------------------------------------ + + def _cond_expr(self, node: PyshExpr) -> A.Expr: + """Lower a pysh_ast expression to an AWK condition expression (0/1).""" + match node: + case BoolOp(op=op, values=values): + return self._boolop_cond(op, values) + case Not(operand=operand): + return A.UnaryOp("!", self._cond_expr(operand)) + case Cmp(): + return self._compare_cond(node) + case Call() as call: + return self._call_cond(call) + case Var(name=name): + self._locals.add(name) + vn = self._var_name(name) + # Truthy: non-empty and != "no" + return A.BinOp( + A.BinOp(A.Var(vn), "!=", A.StringLit("")), + "&&", + A.BinOp(A.Var(vn), "!=", A.StringLit("no")), + ) + case Attr() as attr_node: + return self._attr_cond(attr_node) + case Const(value=True): + return A.NumLit(1) + case Const(value=False | None): + return A.NumLit(0) + case Const(value=v): + return A.BinOp(A.StringLit(str(v)), "!=", A.StringLit("")) + case In() as in_node: + return self._in_cond(in_node) + case _: + return A.NumLit(1) # fallback + + def _boolop_cond(self, op: str, values: list) -> A.Expr: + exprs = [self._cond_expr(val) for val in values] + awk_op = "&&" if op == "and" else "||" + result = exprs[0] + for e in exprs[1:]: + result = A.BinOp(result, awk_op, e) + return result + + def _compare_cond(self, node: Cmp) -> A.Expr: + left = node.left + op = node.op + right = node.right + + match right: + case Const(value=None): + if op == "is": + return A.BinOp(self._expr(left), "==", A.StringLit("")) + return A.BinOp(self._expr(left), "!=", A.StringLit("")) + case Const(value=True): + awk_op = "==" if op == "is" else "!=" + return A.BinOp(self._expr(left), awk_op, A.StringLit("yes")) + case Const(value=False): + awk_op = "==" if op == "is" else "!=" + return A.BinOp(self._expr(left), awk_op, A.StringLit("no")) + case _: + pass + + match op: + case "==" | "!=": + return A.BinOp(self._expr(left), op, self._expr(right)) + case "<" | ">" | "<=" | ">=": + return A.BinOp(self._expr(left), op, self._expr(right)) + case _: + return A.NumLit(1) + + def _in_cond(self, node: In) -> A.Expr: + container = node.container + item = node.item + + match container, item: + # x in ("a", "b", "c") — membership test + case PyshList(elts=elts), _: + val = self._expr(item) + # Build OR chain: val == "a" || val == "b" || ... + parts = [] + for elt in elts: + if isinstance(elt, Const): + cval = "" if elt.value is None else str(elt.value) + parts.append(A.BinOp(val, "==", A.StringLit(cval))) + if not parts: + result: A.Expr = A.NumLit(0) + elif len(parts) == 1: + result = parts[0] + else: + result = parts[0] + for p in parts[1:]: + result = A.BinOp(result, "||", p) + if node.negated: + result = A.UnaryOp("!", result) + return result + + # "sub" in string — containment + case _, Const(value=str() as sub): + val = self._expr(container) + result = A.BinOp( + A.Index(val, A.StringLit(sub)), + ">", + A.NumLit(0), + ) + if node.negated: + result = A.UnaryOp("!", result) + return result + + # key in dict_var — AWK array membership + case Var(name=name), _ if name in self._array_locals: + result = A.InArray(self._expr(item), name) + if node.negated: + result = A.UnaryOp("!", result) + return result + + case _, _: + val = self._expr(container) + return A.BinOp( + A.Index(val, self._expr(item)), + ">", + A.NumLit(0), + ) + + def _call_cond(self, call: Call) -> A.Expr: + func = call.func + + # pyconf.method() as condition + if _is_pyconf_attr(func): + fc = self._pyconf_func_call(call) + if call.call_type == CallType.STDOUT: + return A.BinOp(fc, "!=", A.StringLit("")) + # Check for on_success_return=False + negate = any( + k in ("on_success_return", "success") + and isinstance(v, Const) + and not v.value + for k, v in call.kwargs.items() + ) + if negate: + return A.UnaryOp("!", fc) + return fc + + # OPTION.method() as boolean + opt = self._option_from_call(call) + if opt is not None: + attr = func.rpartition(".")[2] + if attr in OPTION_BOOL_METHODS: + return A.FuncCall( + f"pyconf_option_{attr}", [A.StringLit(opt.key)] + ) + if attr in ("process_bool", "process_value"): + # process_bool/process_value returns a value; in boolean + # context test truthy (non-empty and != "no"). + # The assignment is emitted by _stmt_if via _pre_stmts. + result_var = "_opt_result" + self._locals.add(result_var) + fc = A.FuncCall( + f"pyconf_option_{attr}", [A.StringLit(opt.key)] + ) + self._pre_stmts.append(A.Assign(A.Var(result_var), fc)) + if opt.var and _has_v_arg(call): + self._pre_stmts.append( + A.Assign( + A.ArrayRef("V", A.StringLit(opt.var)), + A.Var(result_var), + ) + ) + return A.BinOp( + A.BinOp(A.Var(result_var), "!=", A.StringLit("")), + "&&", + A.BinOp(A.Var(result_var), "!=", A.StringLit("no")), + ) + + # v.is_set("name") + match call: + case Call(func="v.is_set", args=[Const(value=var_name), *_]): + return A.InArray(A.StringLit(str(var_name)), "V") + case _: + pass + + # .startswith / .endswith + if "." in func: + attr = func.rpartition(".")[2] + obj_str = func.rpartition(".")[0] + if obj_str == "" and call.args: + obj_e = self._expr(call.args[0]) + method_args = call.args[1:] + else: + obj_e = self._expr_from_name(obj_str) + method_args = call.args + match attr: + case "startswith" if method_args: + arg = method_args[0] + match arg: + case Const(value=v): + return A.FuncCall( + "_str_startswith", [obj_e, A.StringLit(str(v))] + ) + case PyshList(elts=elts): + parts = [] + for elt in elts: + if isinstance(elt, Const): + parts.append( + A.FuncCall( + "_str_startswith", + [ + obj_e, + A.StringLit(str(elt.value)), + ], + ) + ) + if not parts: + return A.NumLit(0) + result = parts[0] + for p in parts[1:]: + result = A.BinOp(result, "||", p) + return result + case "endswith" if method_args: + arg = method_args[0] + match arg: + case Const(value=v): + return A.FuncCall( + "_str_endswith", [obj_e, A.StringLit(str(v))] + ) + case PyshList(elts=elts): + parts = [] + for elt in elts: + if isinstance(elt, Const): + parts.append( + A.FuncCall( + "_str_endswith", + [ + obj_e, + A.StringLit(str(elt.value)), + ], + ) + ) + if not parts: + return A.NumLit(0) + result = parts[0] + for p in parts[1:]: + result = A.BinOp(result, "||", p) + return result + + # isinstance → always true + if func == "isinstance": + return A.NumLit(1) + + # any(items) / all(items) + if func == "any" and call.args: + return A.FuncCall("_any", [self._expr(call.args[0])]) + if func == "all" and call.args: + return A.FuncCall("_all", [self._expr(call.args[0])]) + + # .get() on dicts/environ/cache — use _call_as_expr for truthiness + if "." in func and func.rpartition(".")[2] == "get": + val = self._call_as_expr(call) + return A.BinOp(val, "!=", A.StringLit("")) + + # Generic: use return value as boolean + fc = self._pyconf_func_call(call) + return fc + + def _attr_cond(self, node: Attr) -> A.Expr: + if node.obj == "v": + v = A.ArrayRef("V", A.StringLit(node.attr)) + return A.BinOp( + A.BinOp(v, "!=", A.StringLit("")), + "&&", + A.BinOp(v, "!=", A.StringLit("no")), + ) + opt = self.option_vars.get(node.obj) + if opt is not None: + if node.attr == "given": + return A.FuncCall( + "pyconf_option_given", [A.StringLit(opt.key)] + ) + if node.attr == "value": + return A.BinOp( + A.FuncCall("pyconf_option_value", [A.StringLit(opt.key)]), + "!=", + A.StringLit(""), + ) + expr = self._attr_expr(node) + return A.BinOp( + A.BinOp(expr, "!=", A.StringLit("")), + "&&", + A.BinOp(expr, "!=", A.StringLit("no")), + ) + + # ------------------------------------------------------------------ + # Command/call builders + # ------------------------------------------------------------------ + + def _pyconf_func_call(self, call: Call) -> A.FuncCall: + """Build an AWK function call for a pyconf.method() or user call.""" + func = call.func + if _is_pyconf_attr(func): + method = func.removeprefix("pyconf.") + if method == "config_files" and "chmod_x" in call.kwargs: + method = "config_files_x" + match method: + case "link_check" | "compile_check" | "compile_link_check": + return self._build_link_check_call(method, call) + case "run_check": + return self._build_run_check_call(call) + case "check_func": + return self._build_check_func_call(call) + case "search_libs": + return self._build_search_libs_call(call) + case "define": + return self._build_define_call(call) + case "check_sizeof": + return self._build_check_sizeof_call(call) + case "check_prog": + return self._build_check_prog_call(call) + case "check_decl": + return self._build_check_decl_expr(call) + case "check_type": + return self._build_check_type_expr(call) + case "check_lib": + return self._build_check_lib_expr(call) + case "check_header": + return self._build_check_header_expr(call) + case "try_link": + return self._build_try_link_expr(call) + case "check_linker_flag": + return self._build_check_linker_flag_expr(call) + case "check_compile_flag": + return self._build_check_compile_flag_expr(call) + case _: + dropped = [ + k for k in call.kwargs if k not in self._SKIP_KWARGS + ] + if dropped: + raise ValueError( + f"pyconf.{method}() expr call has unhandled " + f"kwargs {dropped} — add a transpiler handler" + ) + return A.FuncCall(f"pyconf_{method}", self._awk_args(call)) + # Option method call (e.g. ENABLE_SHARED.is_no()) + if "." in func: + obj, _, attr = func.rpartition(".") + opt = self.option_vars.get(obj) + if opt is not None: + return A.FuncCall( + f"pyconf_option_{attr}", [A.StringLit(opt.key)] + ) + + # User-defined or plain function + if "." not in func: + return A.FuncCall(self._func_name(func), self._awk_args(call)) + attr = func.rpartition(".")[2] + return A.FuncCall(self._func_name(attr), self._awk_args(call)) + + def _build_ax_float_bigendian(self, call: Call) -> list[A.Stmt]: + """Emit ax_c_float_words_bigendian with inline callback dispatch.""" + stmts: list[A.Stmt] = [ + A.ExprStmt(A.FuncCall("pyconf_ax_c_float_words_bigendian", [])) + ] + # Extract callback names from kwargs + callbacks: dict[str, str] = {} + for k, v in call.kwargs.items(): + if k.startswith("on_") and isinstance(v, Var): + callbacks[k] = v.name + # Build if/elif chain to dispatch + branches: list[A.IfBranch] = [] + for check, kwname in [ + ("big", "on_big"), + ("little", "on_little"), + ("unknown", "on_unknown"), + ]: + if kwname in callbacks: + fname = callbacks[kwname] + branches.append( + A.IfBranch( + A.BinOp( + A.Var("_pyconf_retval"), + "==", + A.StringLit(check), + ), + A.Block( + [ + A.ExprStmt( + A.FuncCall(self._func_name(fname), []) + ) + ] + ), + ) + ) + if branches: + stmts.append(A.If(branches=branches)) + return stmts + + def _build_check_prog_call(self, call: Call) -> A.FuncCall: + """Build pyconf_check_prog(prog, search_path, default_val).""" + args = self._awk_args(call) + # prog is first positional arg + prog = args[0] if args else A.StringLit("") + # path is second positional arg (kwargs 'path' handled by _awk_args) + search_path = args[1] if len(args) > 1 else A.StringLit("") + # default kwarg (skipped by _awk_args, handle explicitly) + default_val = A.StringLit("") + if "default" in call.kwargs: + default_val = self._expr(call.kwargs["default"]) + return A.FuncCall( + "pyconf_check_prog", [prog, search_path, default_val] + ) + + def _build_define_call(self, call: Call) -> A.FuncCall: + args = call.args + name = self._expr(args[0]) if args else A.StringLit("") + value = self._expr(args[1]) if len(args) > 1 else A.NumLit(1) + desc = self._expr(args[2]) if len(args) > 2 else A.StringLit("") + if len(args) <= 2: + desc_kw = call.kwargs.get("description") + if desc_kw is not None: + desc = self._expr(desc_kw) + quoted = 0 + if len(args) > 1 and not _is_int_expr(args[1]): + quoted = 1 + return A.FuncCall( + "pyconf_define", [name, value, A.NumLit(quoted), desc] + ) + + def _check_headers_stmts(self, method: str, call: Call) -> list[A.Stmt]: + prologue_kw = call.kwargs.get("prologue") + prologue = self._expr(prologue_kw) if prologue_kw is not None else None + header_args = list(call.args) + if prologue is not None: + return [ + A.ExprStmt( + A.FuncCall( + "pyconf_check_header", + [self._expr(h), A.StringLit(""), prologue], + ) + ) + for h in header_args + ] + result: list[A.Stmt] = [] + for arg in header_args: + h = self._expr(arg) + if isinstance(arg, Const) and isinstance(arg.value, str): + define = A.StringLit(_precompute_header_define(arg.value)) + ckey = A.StringLit(_precompute_header_cache_key(arg.value)) + result.append( + A.ExprStmt( + A.FuncCall( + "pyconf_check_header", + [ + h, + A.StringLit(""), + A.StringLit(""), + define, + ckey, + ], + ) + ) + ) + else: + result.append(A.ExprStmt(A.FuncCall(f"pyconf_{method}", [h]))) + return result + + def _build_check_sizeof_call(self, call: Call) -> A.FuncCall: + type_arg = self._expr(call.args[0]) if call.args else A.StringLit("") + default: A.Expr = A.StringLit("") + headers: A.Expr = A.StringLit("") + for k, v in call.kwargs.items(): + if k == "default": + default = self._expr(v) + elif k in ("headers", "includes"): + if isinstance(v, PyshList): + joined = " ".join( + str(elt.value) if isinstance(elt, Const) else "..." + for elt in v.elts + ) + headers = A.StringLit(joined) + else: + headers = self._expr(v) + return A.FuncCall("pyconf_check_sizeof", [type_arg, default, headers]) + + def _build_check_func_call(self, call: Call) -> A.FuncCall: + func_arg = call.args[0] if call.args else Const("") + func_name = self._expr(func_arg) + headers_parts: list[str] = [] + define: A.Expr = A.StringLit("") + for k, v in call.kwargs.items(): + if k in ("headers", "includes"): + if isinstance(v, PyshList): + headers_parts.extend( + str(elt.value) if isinstance(elt, Const) else "..." + for elt in v.elts + ) + elif k == "define": + define = self._expr(v) + if ( + isinstance(define, A.StringLit) + and not define.value + and isinstance(func_arg, Const) + and isinstance(func_arg.value, str) + ): + define = A.StringLit(_precompute_func_define(func_arg.value)) + headers: A.Expr = ( + A.StringLit(" ".join(headers_parts)) + if headers_parts + else A.StringLit("") + ) + return A.FuncCall("pyconf_check_func", [func_name, headers, define]) + + def _check_func_stmts(self, call: Call) -> list[A.Stmt]: + func_arg = call.args[0] if call.args else Const("") + func_name = self._expr(func_arg) + headers_parts: list[str] = [] + define: A.Expr = A.StringLit("") + cond_headers: list[str] = [] + raw_headers: list[str] = [] + for k, v in call.kwargs.items(): + if k in ("headers", "includes"): + if isinstance(v, PyshList): + for elt in v.elts: + h = str(elt.value) if isinstance(elt, Const) else "..." + headers_parts.append(h) + raw_headers.append(h) + elif k == "define": + define = self._expr(v) + elif k == "conditional_headers": + if isinstance(v, PyshList): + for elt in v.elts: + if isinstance(elt, Const) and isinstance( + elt.value, str + ): + cond_headers.append(elt.value) + + define_to_header: dict[str, str] = {} + for h in raw_headers: + define_to_header[_precompute_header_define(h)] = h + + cond_vars: list[str] = [] + stmts: list[A.Stmt] = [] + for cond_define in cond_headers: + header = define_to_header.get( + cond_define, _define_to_header(cond_define) + ) + if header in headers_parts: + headers_parts.remove(header) + cache_var = _precompute_header_cache_key(header) + norm = header.replace("/", "_").replace(".", "_").replace("-", "_") + var = f"_pyconf_cond_{norm}" + cond_vars.append(var) + self._locals.add(var) + stmts.append(A.Assign(A.Var(var), A.StringLit(""))) + stmts.append( + A.If( + branches=[ + A.IfBranch( + A.BinOp( + A.ArrayRef("CACHE", A.StringLit(cache_var)), + "==", + A.StringLit("yes"), + ), + A.Block( + [A.Assign(A.Var(var), A.StringLit(header))] + ), + ) + ], + ) + ) + + if ( + isinstance(define, A.StringLit) + and not define.value + and isinstance(func_arg, Const) + and isinstance(func_arg.value, str) + ): + define = A.StringLit(_precompute_func_define(func_arg.value)) + + header_parts_expr: list[A.Expr] = [] + if headers_parts: + header_parts_expr.append(A.StringLit(" ".join(headers_parts))) + for cv in cond_vars: + header_parts_expr.append(A.Concat([A.StringLit(" "), A.Var(cv)])) + if not header_parts_expr: + headers: A.Expr = A.StringLit("") + elif len(header_parts_expr) == 1: + headers = header_parts_expr[0] + else: + headers = A.Concat(header_parts_expr) + + stmts.append( + A.ExprStmt( + A.FuncCall("pyconf_check_func", [func_name, headers, define]) + ) + ) + return stmts + + def _check_decl_stmts(self, call: Call) -> list[A.Stmt]: + decl_arg = call.args[0] if call.args else Const("") + decl = self._expr(decl_arg) + includes_parts: list[str] = [] + includes_var_expr: A.Expr | None = None + on_found = None + on_notfound = None + for k, v in call.kwargs.items(): + if k in ("includes", "extra_includes"): + if isinstance(v, PyshList): + includes_parts.extend( + str(elt.value) if isinstance(elt, Const) else "..." + for elt in v.elts + ) + else: + includes_var_expr = self._expr(v) + elif k == "on_found" and isinstance(v, Var): + on_found = v.name + elif k == "on_notfound" and isinstance(v, Var): + on_notfound = v.name + includes: A.Expr + if includes_parts: + includes = A.StringLit(" ".join(includes_parts)) + elif includes_var_expr is not None: + includes = includes_var_expr + else: + includes = A.StringLit("") + define_args: list[A.Expr] = [] + if isinstance(decl_arg, Const) and isinstance(decl_arg.value, str): + define_args = [ + A.StringLit(_precompute_decl_define(decl_arg.value)) + ] + fc = A.FuncCall("pyconf_check_decl", [decl, includes] + define_args) + if on_found or on_notfound: + return [ + A.If( + branches=[ + A.IfBranch( + fc, + A.Block( + [ + A.ExprStmt( + A.FuncCall( + self._func_name(on_found), [] + ) + ) + ] + if on_found + else [] + ), + ) + ], + else_body=A.Block( + [ + A.ExprStmt( + A.FuncCall(self._func_name(on_notfound), []) + ) + ] + ) + if on_notfound + else None, + ) + ] + return [A.ExprStmt(fc)] + + def _build_check_decl_expr(self, call: Call) -> A.FuncCall: + """Build pyconf_check_decl() call for use as an expression.""" + decl_arg = call.args[0] if call.args else Const("") + decl = self._expr(decl_arg) + includes = self._extract_includes_expr(call) + define_args: list[A.Expr] = [] + if isinstance(decl_arg, Const) and isinstance(decl_arg.value, str): + define_args = [ + A.StringLit(_precompute_decl_define(decl_arg.value)) + ] + return A.FuncCall("pyconf_check_decl", [decl, includes] + define_args) + + def _build_check_type_expr(self, call: Call) -> A.FuncCall: + """Build pyconf_check_type() call for use as an expression.""" + name = self._expr(call.args[0]) if call.args else A.StringLit("") + headers = self._extract_includes_expr(call) + return A.FuncCall("pyconf_check_type", [name, headers]) + + def _extract_includes_expr(self, call: Call) -> A.Expr: + """Extract includes/extra_includes/headers kwarg as an AWK expr.""" + for k, v in call.kwargs.items(): + if k in ("includes", "extra_includes", "headers"): + if isinstance(v, PyshList): + parts = [ + str(elt.value) if isinstance(elt, Const) else "..." + for elt in v.elts + ] + return A.StringLit(" ".join(parts)) + return self._expr(v) + return A.StringLit("") + + def _extract_kwarg(self, call: Call, name: str) -> A.Expr: + """Extract a kwarg value as an AWK expression, or empty string.""" + v = call.kwargs.get(name) + if v is None: + return A.StringLit("") + return self._expr(v) + + def _build_check_lib_expr(self, call: Call) -> A.FuncCall: + """Build pyconf_check_lib(lib, func, extra_cflags, extra_libs).""" + args: list[A.Expr] = [self._expr(a) for a in call.args] + # Pad to at least 2 positional args (lib, func) + while len(args) < 2: + args.append(A.StringLit("")) + extra_cflags = self._extract_kwarg(call, "extra_cflags") + extra_libs = self._extract_kwarg(call, "extra_libs") + return A.FuncCall( + "pyconf_check_lib", args + [extra_cflags, extra_libs] + ) + + def _build_check_header_expr(self, call: Call) -> A.FuncCall: + """Build pyconf_check_header(header, prologue, default_inc).""" + args: list[A.Expr] = [self._expr(a) for a in call.args] + extra_cflags = call.kwargs.get("extra_cflags") + if extra_cflags is not None: + # Append extra_cflags to CPPFLAGS-like position — use prologue + while len(args) < 2: + args.append(A.StringLit("")) + return A.FuncCall("pyconf_check_header", args) + + def _build_try_link_expr(self, call: Call) -> A.FuncCall: + """Build pyconf_try_link(desc, source, extra_flags).""" + args: list[A.Expr] = [self._expr(a) for a in call.args] + extra_flags = call.kwargs.get("extra_flags") + if extra_flags is not None: + while len(args) < 2: + args.append(A.StringLit("")) + args.append(self._expr(extra_flags)) + return A.FuncCall("pyconf_try_link", args) + + def _build_check_linker_flag_expr(self, call: Call) -> A.FuncCall: + """Build pyconf_check_linker_flag(flag, value).""" + args: list[A.Expr] = [self._expr(a) for a in call.args] + value = call.kwargs.get("value") + if value is not None: + args.append(self._expr(value)) + return A.FuncCall("pyconf_check_linker_flag", args) + + def _build_check_compile_flag_expr(self, call: Call) -> A.FuncCall: + """Build pyconf_check_compile_flag(flag, extra_flags_array). + + extra_flags (list) and extra_cflags (str) are emitted as variadic + args after the flag; the emitter packs them into an AWK array and + the runtime shell-quotes each element via _arr_join_quoted(). + """ + args: list[A.Expr] = [self._expr(a) for a in call.args] + extra_flags = call.kwargs.get("extra_flags") + if extra_flags is not None: + if isinstance(extra_flags, PyshList): + for elt in extra_flags.elts: + args.append(self._expr(elt)) + else: + args.append(self._expr(extra_flags)) + extra_cflags = call.kwargs.get("extra_cflags") + if extra_cflags is not None: + args.append(self._expr(extra_cflags)) + return A.FuncCall("pyconf_check_compile_flag", args) + + def _build_check_decls_call(self, call: Call) -> A.FuncCall: + decl_args: list[A.Expr] = [] + if call.args: + arg = call.args[0] + if isinstance(arg, PyshList): + decl_args = [self._expr(elt) for elt in arg.elts] + else: + decl_args = [self._expr(arg)] + includes_parts: list[str] = [] + for k, v in call.kwargs.items(): + if k in ("includes", "extra_includes"): + if isinstance(v, PyshList): + includes_parts.extend( + str(elt.value) if isinstance(elt, Const) else "..." + for elt in v.elts + ) + if includes_parts: + decl_args.append(A.StringLit("--")) + decl_args.extend(A.StringLit(h) for h in includes_parts) + return A.FuncCall("pyconf_check_decls", decl_args) + + def _check_members_stmts(self, call: Call) -> list[A.Stmt]: + members: list[PyshExpr] = [] + includes_parts: list[str] = [] + if call.args: + arg = call.args[0] + if isinstance(arg, PyshList): + members = arg.elts + else: + members = [arg] + for k, v in call.kwargs.items(): + if k in ("includes", "headers"): + if isinstance(v, PyshList): + includes_parts.extend( + str(elt.value) if isinstance(elt, Const) else "..." + for elt in v.elts + ) + includes: A.Expr | None = ( + A.StringLit(" ".join(includes_parts)) if includes_parts else None + ) + stmts: list[A.Stmt] = [] + for m_expr in members: + m = self._expr(m_expr) + if isinstance(m_expr, Const) and isinstance(m_expr.value, str): + define = A.StringLit(_precompute_member_define(m_expr.value)) + stmts.append( + A.ExprStmt( + A.FuncCall( + "pyconf_check_member", + [m, includes, define] + if includes + else [m, A.StringLit(""), define], + ) + ) + ) + elif includes: + stmts.append( + A.ExprStmt( + A.FuncCall("pyconf_check_member", [m, includes]) + ) + ) + else: + stmts.append( + A.ExprStmt(A.FuncCall("pyconf_check_member", [m])) + ) + return stmts + + def _check_type_stmts(self, call: Call) -> list[A.Stmt]: + name = self._expr(call.args[0]) if call.args else A.StringLit("") + headers_parts: list[str] = [] + headers_var_expr: A.Expr | None = None + fallback = None + for k, v in call.kwargs.items(): + if k in ("headers", "includes", "extra_includes"): + if isinstance(v, PyshList): + headers_parts.extend( + str(elt.value) if isinstance(elt, Const) else "..." + for elt in v.elts + ) + else: + headers_var_expr = self._expr(v) + elif k == "fallback_define": + if isinstance(v, PyshList) and len(v.elts) >= 3: + fallback = ( + self._expr(v.elts[0]), + self._expr(v.elts[1]), + self._expr(v.elts[2]), + ) + headers_args: list[A.Expr] = [] + if headers_parts: + headers_args = [A.StringLit(" ".join(headers_parts))] + elif headers_var_expr is not None: + headers_args = [headers_var_expr] + fc = A.FuncCall("pyconf_check_type", [name] + headers_args) + if fallback: + alias, base_type, desc = fallback + return [ + A.If( + branches=[ + A.IfBranch( + A.UnaryOp("!", fc), + A.Block( + [ + A.ExprStmt( + A.FuncCall( + "pyconf_define", + [ + alias, + base_type, + A.NumLit(1), + desc, + ], + ) + ) + ] + ), + ) + ], + ) + ] + return [A.ExprStmt(fc)] + + def _build_link_check_call(self, method: str, call: Call) -> A.FuncCall: + extra_cflags: A.Expr | None = None + extra_libs: A.Expr | None = None + checking_kw: A.Expr | None = None + preamble_kw: PyshExpr | None = None + body_kw: PyshExpr | None = None + includes_parts: list[str] = [] + includes_expr: A.Expr | None = None # for variable includes + program_kw: PyshExpr | None = None + compiler_kw: A.Expr | None = None + + for k, v in call.kwargs.items(): + if k == "extra_cflags": + extra_cflags = self._expr(v) + elif k == "extra_libs": + extra_libs = self._expr(v) + elif k == "checking": + checking_kw = self._expr(v) + elif k == "preamble": + preamble_kw = v + elif k == "body": + body_kw = v + elif k in ("program", "source"): + program_kw = v + elif k == "compiler": + compiler_kw = self._expr(v) + elif k in ("includes", "headers"): + if isinstance(v, PyshList): + includes_parts.extend( + str(elt.value) if isinstance(elt, Const) else "..." + for elt in v.elts + ) + else: + # Variable reference — generate runtime includes + includes_expr = A.FuncCall( + "_pyconf_includes_from_list", [self._expr(v)] + ) + + inc_lines = "".join(f"#include <{h}>\n" for h in includes_parts) + positional = call.args + desc: A.Expr = checking_kw or A.StringLit("") + source: A.Expr = A.StringLit("") + + if program_kw is not None: + source = self._expr(program_kw) + # When source/program is a kwarg, the first positional is the desc + if len(positional) >= 1 and not checking_kw: + desc = self._expr(positional[0]) + elif preamble_kw is not None or body_kw is not None: + source = self._build_check_source( + inc_lines, + self._expr(preamble_kw) if preamble_kw else None, + self._expr(body_kw) if body_kw else None, + ) + elif len(positional) == 2: + if _looks_like_full_source(positional[1]): + desc = self._expr(positional[0]) + source = self._expr(positional[1]) + else: + source = self._build_check_source( + inc_lines, + self._expr(positional[0]), + self._expr(positional[1]), + ) + if checking_kw: + desc = checking_kw + elif len(positional) == 1: + if _is_complete_program(positional[0]): + source = self._expr(positional[0]) + else: + source = self._build_check_source( + inc_lines, self._expr(positional[0]), None + ) + + # If includes was a variable, prepend runtime-generated #include lines + if includes_expr is not None: + source = A.Concat([includes_expr, source]) + + args: list[A.Expr] = [desc, source] + extra_parts = [e for e in (extra_cflags, extra_libs) if e is not None] + if extra_parts: + if len(extra_parts) == 1: + args.append(extra_parts[0]) + else: + # Insert a literal space between cflags and libs + args.append( + A.Concat([extra_parts[0], A.StringLit(" "), extra_parts[1]]) + ) + if compiler_kw is not None: + # Pad extra_flags if not already present + if not extra_parts: + args.append(A.StringLit("")) + args.append(compiler_kw) + return A.FuncCall(f"pyconf_{method}", args) + + def _build_check_source( + self, + inc_lines: str, + pre_expr: A.Expr | None, + body_expr: A.Expr | None, + ) -> A.Expr: + if body_expr is not None and isinstance(body_expr, A.StringLit): + body_s = body_expr.value.rstrip() + if ( + body_s + and not body_s.endswith(";") + and not body_s.endswith("}") + ): + body_s += ";" + body_expr = None + else: + body_s = None + + if body_s is not None or body_expr is None: + bs = body_s or "" + suffix = f"\nint main(void) {{ {bs} return 0; }}" + if pre_expr is None or isinstance(pre_expr, A.StringLit): + pre = ( + pre_expr.value if isinstance(pre_expr, A.StringLit) else "" + ) + return A.StringLit(f"{inc_lines}{pre}{suffix}") + return A.Concat( + [ + A.StringLit(inc_lines) if inc_lines else pre_expr, + *([] if not inc_lines else [pre_expr]), + A.StringLit(suffix), + ] + ) + + parts: list[A.Expr] = [] + prefix = inc_lines + if pre_expr is not None: + if isinstance(pre_expr, A.StringLit): + prefix += pre_expr.value + else: + if prefix: + parts.append(A.StringLit(prefix)) + prefix = "" + parts.append(pre_expr) + if prefix: + parts.append(A.StringLit(prefix)) + parts.append(A.StringLit("\\nint main(void) { ")) + parts.append(body_expr) + parts.append(A.StringLit(" return 0; }")) + return A.Concat(parts) + + def _build_run_check_call(self, call: Call) -> A.FuncCall: + checking_kw: A.Expr | None = None + extra_cflags: A.Expr | None = None + extra_libs: A.Expr | None = None + for k, v in call.kwargs.items(): + if k == "checking": + checking_kw = self._expr(v) + elif k == "extra_cflags": + extra_cflags = self._expr(v) + elif k == "extra_libs": + extra_libs = self._expr(v) + positional = call.args + if len(positional) >= 2: + desc = self._expr(positional[0]) + source = self._expr(positional[1]) + elif len(positional) == 1: + desc = checking_kw or A.StringLit("") + source = self._expr(positional[0]) + else: + desc = checking_kw or A.StringLit("") + source = A.StringLit("") + args: list[A.Expr] = [desc, source] + if extra_cflags is not None: + args.append(extra_cflags) + if extra_libs is not None: + args.append(extra_libs) + return A.FuncCall("pyconf_run_check", args) + + def _build_stdlib_module_call(self, call: Call) -> A.FuncCall: + name = self._expr(call.args[0]) if call.args else A.StringLit("") + kw_map: dict[str, A.Expr] = {} + for k, v in call.kwargs.items(): + if k in ("supported", "enabled", "cflags", "ldflags"): + kw_map[k] = self._expr(v) + return A.FuncCall( + "pyconf_stdlib_module", + [ + name, + kw_map.get("supported", A.StringLit("yes")), + kw_map.get("enabled", A.StringLit("yes")), + kw_map.get("cflags", A.StringLit("")), + kw_map.get("ldflags", A.StringLit("")), + A.StringLit("yes" if "cflags" in kw_map else "no"), + A.StringLit("yes" if "ldflags" in kw_map else "no"), + ], + ) + + def _build_stdlib_module_simple_call(self, call: Call) -> A.FuncCall: + name = self._expr(call.args[0]) if call.args else A.StringLit("") + kw_map: dict[str, A.Expr] = {} + for k, v in call.kwargs.items(): + if k in ("cflags", "ldflags"): + kw_map[k] = self._expr(v) + if kw_map: + args = [ + name, + kw_map.get("cflags", A.StringLit("")), + kw_map.get("ldflags", A.StringLit("")), + A.StringLit("yes" if "cflags" in kw_map else "no"), + A.StringLit("yes" if "ldflags" in kw_map else "no"), + ] + else: + args = [name] + return A.FuncCall("pyconf_stdlib_module_simple", args) + + def _build_search_libs_call(self, call: Call) -> A.FuncCall: + func_arg = self._expr(call.args[0]) if call.args else A.StringLit("") + if len(call.args) >= 2 and isinstance(call.args[1], PyshList): + libs = " ".join( + str(elt.value) if isinstance(elt, Const) else "..." + for elt in call.args[1].elts + ) + lib_arg: A.Expr = A.StringLit(libs) + elif len(call.args) >= 2: + lib_arg = self._expr(call.args[1]) + else: + lib_arg = A.StringLit("") + return A.FuncCall("pyconf_search_libs", [func_arg, lib_arg]) + + # ------------------------------------------------------------------ + # AWK argument list builder + # ------------------------------------------------------------------ + + _SKIP_KWARGS = frozenset( + { + "v", + "vars", + "capture_output", + "text", + "input", + "prologue", + "defines", + "required", + "cross_default", + "default", + "cross_compiling_default", + "cross_compiling_result", + "success", + "failure", + "on_success_return", + "on_failure_return", + "cache_var", + "preamble", + "body", + "chmod_x", + "fallback_define", + "extra_includes", + "conditional_headers", + "autodefine", + "define", + "checking", + "extra_cflags", + "extra_libs", + "on_found", + "on_notfound", + "program", + "exports", + # compiler and source are handled by _build_link_check_call + } + ) + + # Functions whose AWK counterparts accept varargs packed into an array. + # Split-assigned variables passed to these functions should be emitted as + # ArrayVar so the emitter passes the array directly. + _VARARGS_CALL_NAMES = frozenset( + { + "check_progs", + "check_tools", + "cmd", + "cmd_output", + "cmd_status", + "fnmatch_any", + "stdlib_module_set_na", + "path_join", + "check_funcs", + "check_headers", + "replace_funcs", + "check_decls", + "config_files", + "config_files_x", + "shell", + } + ) + + def _awk_args(self, call: Call) -> list[A.Expr]: + parts: list[A.Expr] = [] + # Check whether the target function is a varargs function so we know + # to pass split-assigned variables as arrays rather than scalars. + method = call.func.rpartition(".")[2] + _is_varargs = method in self._VARARGS_CALL_NAMES + + for arg in call.args: + if isinstance(arg, Var) and arg.name == "v": + continue + if isinstance(arg, PyshList): + for elt in arg.elts: + parts.append(self._expr(elt)) + elif isinstance(arg, Add) and self._is_list_concat(arg): + # List concatenation: [a, b] + q.split() → expand both sides + self._expand_add_arg(arg, parts) + elif ( + _is_varargs + and isinstance(arg, Var) + and arg.name + in (self._array_locals | self._split_assigned_vars) + ): + parts.append(A.ArrayVar(self._var_name(arg.name))) + else: + parts.append(self._expr(arg)) + + for k, v in call.kwargs.items(): + if k in self._SKIP_KWARGS: + continue + if k in ("headers", "includes"): + if isinstance(v, PyshList): + joined = " ".join( + str(elt.value) if isinstance(elt, Const) else "..." + for elt in v.elts + ) + parts.append(A.StringLit(joined)) + else: + parts.append(self._expr(v)) + continue + if isinstance(v, Var) and k.startswith("on_"): + parts.append(A.StringLit(v.name)) + continue + parts.append(self._expr(v)) + + return parts + + # ------------------------------------------------------------------ + # Helpers + # ------------------------------------------------------------------ + + @staticmethod + def _is_list_concat(node: Add) -> bool: + """Return True if the Add represents list concatenation (has a PyshList on either side).""" + if isinstance(node.left, PyshList) or isinstance(node.right, PyshList): + return True + if isinstance(node.left, Add) and PyshToAwk._is_list_concat(node.left): + return True + if isinstance(node.right, Add) and PyshToAwk._is_list_concat( + node.right + ): + return True + return False + + def _expand_add_arg(self, node: Add, parts: list[A.Expr]) -> None: + """Expand Add (list concatenation) into separate varargs elements. + + Handles patterns like [a, b] + q.split() by expanding the list + elements and the split result as separate parts. + """ + match node.left: + case PyshList(elts=elts): + for elt in elts: + parts.append(self._expr(elt)) + case Add(): + self._expand_add_arg(node.left, parts) + case _: + parts.append(self._expr(node.left)) + match node.right: + case PyshList(elts=elts): + for elt in elts: + parts.append(self._expr(elt)) + case Add(): + self._expand_add_arg(node.right, parts) + case _: + parts.append(self._expr(node.right)) + + def _concat_with_sep(self, parts: list[A.Expr], sep: str) -> A.Expr: + """Concatenate expressions with a separator.""" + if not parts: + return A.StringLit("") + if len(parts) == 1: + return parts[0] + result: list[A.Expr] = [parts[0]] + for p in parts[1:]: + result.append(A.StringLit(sep)) + result.append(p) + return A.Concat(result) + + def _option_from_call(self, call: Call) -> OptionInfo | None: + if "." not in call.func: + return None + obj = call.func.rpartition(".")[0] + return self.option_vars.get(obj) + + def _option_from_expr(self, e: PyshExpr) -> OptionInfo | None: + match e: + case Attr(obj=obj): + return self.option_vars.get(obj) + case Call(): + return self._option_from_call(e) + case _: + return None + + +# string helper functions +_STRING_HELPERS = r""" + +function _str_strip(s, tmp) { + tmp = s + gsub(/^[ \t\n]+/, "", tmp) + gsub(/[ \t\n]+$/, "", tmp) + return tmp +} + +function _str_rstrip(s, tmp) { + tmp = s + gsub(/[ \t\n]+$/, "", tmp) + return tmp +} + +function _regex_escape(s, tmp) { + tmp = s + gsub(/[\\.*+?[\](){}|^$]/, "\\\\&", tmp) + return tmp +} + +function _gsub_escape_replacement(s, tmp) { + tmp = s + gsub(/\\/, "\\\\", tmp) + gsub(/&/, "\\&", tmp) + return tmp +} + +function _str_replace(s, old, new, tmp, escaped, safe_new) { + tmp = s + escaped = _regex_escape(old) + safe_new = _gsub_escape_replacement(new) + gsub(escaped, safe_new, tmp) + return tmp +} + +function _str_removeprefix(s, prefix, plen) { + plen = length(prefix) + if (substr(s, 1, plen) == prefix) + return substr(s, plen + 1) + return s +} + +function _str_removesuffix(s, suffix, slen, total) { + slen = length(suffix) + total = length(s) + if (total >= slen && substr(s, total - slen + 1) == suffix) + return substr(s, 1, total - slen) + return s +} + +function _str_startswith(s, prefix) { + return (substr(s, 1, length(prefix)) == prefix) +} + +function _str_endswith(s, suffix, slen, total) { + slen = length(suffix) + total = length(s) + return (total >= slen && substr(s, total - slen + 1) == suffix) +} + +function _str_join(sep, s, n, arr, i, result) { + n = split(s, arr, "\n") + result = "" + for (i = 1; i <= n; i++) { + if (i > 1) result = result sep + result = result arr[i] + } + return result +} + +function _split_index(s, sep, idx, n, arr) { + n = split(s, arr, sep) + if (idx >= 1 && idx <= n) + return arr[idx] + return "" +} + +function _any(arr, i) { + for (i = 1; i <= arr[0]; i++) + if (arr[i] == "yes") return 1 + return 0 +} + +function _all(arr, i) { + for (i = 1; i <= arr[0]; i++) + if (arr[i] == "no") return 0 + return 1 +} +""" + + +# --------------------------------------------------------------------------- +# Program-level transform +# --------------------------------------------------------------------------- + + +def transform_program(program: PyshProgram) -> A.Program: + """Transform a pysh_ast.Program into an awk_ast.Program.""" + import os + + parts: list[A.FuncDef | A.BeginBlock | A.VerbatimBlock | A.Comment] = [] + + # Embed pyconf.awk runtime + parts.append(A.Comment("=== pyconf.awk runtime ===")) + runtime_path = os.path.join(os.path.dirname(__file__), "pyconf.awk") + if not os.path.exists(runtime_path): + raise RuntimeError("cannot find pyconf.awk") + with open(runtime_path) as f: + content = f.read() + parts.append(A.VerbatimBlock(content)) + parts.append(A.Comment("=== end pyconf.awk runtime ===")) + parts.append(A.VerbatimBlock(_STRING_HELPERS)) + + # Option registration function + parts.append(A.Comment("=== Option declarations ===")) + reg_body: list[A.Stmt] = [] + for mod in program.modules: + for opt in mod.options: + func = f"pyconf_arg_{opt.kind}" + if opt.default is None: + default = "" + elif opt.default is True: + default = "yes" + elif opt.default is False: + default = "no" + else: + default = str(opt.default) + reg_body.append( + A.ExprStmt( + A.FuncCall( + func, + [ + A.StringLit(opt.name), + A.StringLit(default), + A.StringLit(opt.help_text), + A.StringLit(opt.metavar or ""), + A.StringLit(opt.var or ""), + A.StringLit(opt.false_is or ""), + ], + ) + ) + ) + parts.append( + A.FuncDef( + name="_pyconf_register_options", + params=[], + locals=[], + body=A.Block(reg_body), + ) + ) + + # Module-level constants (function that sets them) + parts.append(A.Comment("=== Module-level constants ===")) + const_stmts: list[A.Stmt] = [] + for mod in program.modules: + for const in mod.constants: + match const.value: + case str() as val: + const_stmts.append( + A.Assign(A.Var(const.name), A.StringLit(val)) + ) + case bool() as val: + const_stmts.append( + A.Assign( + A.Var(const.name), + A.StringLit("yes" if val else "no"), + ) + ) + case int() | float() as val: + const_stmts.append( + A.Assign(A.Var(const.name), A.StringLit(str(val))) + ) + if const_stmts: + parts.append( + A.FuncDef( + name="_pyconf_init_constants", + params=[], + locals=[], + body=A.Block(const_stmts), + ) + ) + + # Transpiled functions + parts.append(A.Comment("=== Configuration functions ===")) + all_func_names = { + func.name for mod in program.modules for func in mod.functions + } + all_global_constants = { + const.name for mod in program.modules for const in mod.constants + } + for mod in program.modules: + if mod.functions: + parts.append(A.Comment(f"--- {mod.name} ---")) + for func in mod.functions: + transformer = PyshToAwk( + mod, + program.all_option_vars, + all_func_names, + all_global_constants, + ) + parts.append(transformer.transform_func(func)) + + # BEGIN block: init → register → parse args → run → output + parts.append(A.Comment("=== Main ===")) + begin_stmts: list[A.Stmt] = [ + A.ExprStmt(A.FuncCall("pyconf_init", [])), + A.ExprStmt(A.FuncCall("_pyconf_register_options", [])), + ] + if const_stmts: + begin_stmts.append( + A.ExprStmt(A.FuncCall("_pyconf_init_constants", [])) + ) + # Parse args + begin_stmts.append(A.ExprStmt(A.FuncCall("pyconf_parse_args", []))) + # Check --help + begin_stmts.append( + A.If( + branches=[ + A.IfBranch( + A.FuncCall("pyconf_check_help", []), + A.Block([A.Exit(A.NumLit(0))]), + ) + ], + ) + ) + # Run functions in order + for call in program.run_order: + func_parts = call.split(".") + func_name = func_parts[-1] if len(func_parts) > 1 else call + begin_stmts.append( + A.ExprStmt(A.FuncCall(_USER_FUNC_PREFIX + func_name, [])) + ) + begin_stmts.append(A.ExprStmt(A.FuncCall("pyconf_output", []))) + begin_stmts.append(A.Exit(A.NumLit(0))) + parts.append(A.BeginBlock(A.Block(begin_stmts))) + + return A.Program(parts=parts) diff --git a/Tools/configure/transpiler/transpile.py b/Tools/configure/transpiler/transpile.py new file mode 100644 index 00000000000000..82340160bc39f8 --- /dev/null +++ b/Tools/configure/transpiler/transpile.py @@ -0,0 +1,97 @@ +"""transpile.py — Python → POSIX AWK transpiler for configure.py. + +Parses configure.py and all conf_*.py files, then generates a self-contained +POSIX AWK script that is functionally equivalent to running configure.py +with Python. + +Usage: + python transpile.py [-o OUTPUT] +""" + +import os +import sys + +from . import py_to_pysh +from .pysh_ast import ModuleInfo, OptionInfo +from .py_to_pysh import parse_option_decl + +from . import pysh_to_awk +from . import awk_emit + +__all__ = [ + "ModuleInfo", + "OptionInfo", + "parse_option_decl", + "transpile_configure", +] + + +_SHELL_WRAPPER = """\ +#!/bin/sh +# Generated by transpile.py -- do not edit. +# This is a POSIX shell wrapper around an embedded AWK program. +# Run: /bin/sh configure [options] + +_tmpf=$(mktemp "${TMPDIR:-/tmp}/configure.XXXXXXXXXX") || exit 1 +trap 'rm -f "$_tmpf"' EXIT +sed '1,/^#---AWK-START---$/d' "$0" > "$_tmpf" +exec awk -f "$_tmpf" -- "$@" +#---AWK-START--- +""" + + +def transpile_configure(script_dir: str) -> str: + # Parse Python source, produce Python AST, transform to pysh AST + program = py_to_pysh.parse_program(script_dir) + # Transform pysh AST → AWK AST + awk_program = pysh_to_awk.transform_program(program) + # Generate AWK code, wrap in shell script + awk_code = awk_emit.generate_code(awk_program) + return _SHELL_WRAPPER + awk_code + + +# --------------------------------------------------------------------------- +# CLI +# --------------------------------------------------------------------------- + + +def main(): + import argparse + + parser = argparse.ArgumentParser( + description="Transpile configure.py to POSIX AWK" + ) + parser.add_argument( + "-o", "--output", default="-", help="output file (default: stdout)" + ) + parser.add_argument( + "--dir", + default=None, + help="directory containing configure.py and conf_*.py", + ) + args = parser.parse_args() + + script_dir = args.dir or os.path.dirname( + os.path.dirname(os.path.abspath(__file__)) + ) + + try: + output = transpile_configure(script_dir) + except Exception as e: + print(f"transpile error: {e}", file=sys.stderr) + import traceback + + traceback.print_exc() + sys.exit(1) + + if args.output == "-": + sys.stdout.write(output) + else: + with open(args.output, "w") as f: + f.write(output) + os.chmod(args.output, 0o755) + print(f"wrote {args.output}", file=sys.stderr) + + +if __name__ == "__main__": + main() diff --git a/compare-conf.sh b/compare-conf.sh new file mode 100755 index 00000000000000..6b441646096e9b --- /dev/null +++ b/compare-conf.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +# compare-conf.sh — run ./configure and ./configure-old, diff their outputs. +# +# Usage: ./compare-conf.sh [configure args...] +# Extra args are passed to both configure scripts. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +cd "$SCRIPT_DIR" + +NEW_DIR=$(mktemp -d /tmp/conf-new.XXXXXX) +OLD_DIR=$(mktemp -d /tmp/conf-old.XXXXXX) + +cleanup() { rm -rf "$NEW_DIR" "$OLD_DIR"; } +trap cleanup EXIT + +FILES=( + Misc/python.pc + Misc/python-embed.pc + Misc/python-config.sh + Modules/config.c + Modules/Setup.bootstrap + Modules/Setup.stdlib + Modules/ld_so_aix + Makefile.pre + pyconfig.h + ) + +echo "=== Running ./configure $* ===" +rm -f config.cache +./configure "$@" > "$NEW_DIR/stdout" 2> "$NEW_DIR/stderr" || true +for f in "${FILES[@]}"; do + mkdir -p "$NEW_DIR/$(dirname "$f")" + [ -f "$f" ] && cp "$f" "$NEW_DIR/$f" || touch "$NEW_DIR/$f" +done + +echo "=== Running ./configure-old $* ===" +rm -f config.cache +./configure-old "$@" > "$OLD_DIR/stdout" 2> "$OLD_DIR/stderr" || true +for f in "${FILES[@]}"; do + mkdir -p "$OLD_DIR/$(dirname "$f")" + [ -f "$f" ] && cp "$f" "$OLD_DIR/$f" || touch "$OLD_DIR/$f" +done + +echo "" +DIFFS=0 +for f in "${FILES[@]}"; do + echo "=== diff $f ===" + if diff -u -wbB "$OLD_DIR/$f" "$NEW_DIR/$f"; then + echo "(no differences)" + else + DIFFS=$((DIFFS + 1)) + fi + echo "" +done + +if [ "$DIFFS" -eq 0 ]; then + echo "All outputs match." +else + echo "$DIFFS file(s) differ." + exit 1 +fi diff --git a/compare-transpile.sh b/compare-transpile.sh new file mode 100755 index 00000000000000..b6b64b5781419e --- /dev/null +++ b/compare-transpile.sh @@ -0,0 +1,95 @@ +#!/bin/sh +# compare-transpile.sh — transpile configure.py to shell, run it, run +# configure-old, and diff their outputs. +# +# Usage: ./compare-transpile.sh [configure args...] +# Extra args are passed to both configure scripts. + +set -e + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +cd "$SCRIPT_DIR" + +NEW_DIR=$(mktemp -d /tmp/conf-transpile.XXXXXX) +OLD_DIR=$(mktemp -d /tmp/conf-old.XXXXXX) +TRANSPILED="$NEW_DIR/configure" + +cleanup() { rm -rf "$NEW_DIR" "$OLD_DIR"; } +trap cleanup EXIT + +FILES=" + Misc/python.pc + Misc/python-embed.pc + Misc/python-config.sh + Modules/config.c + Modules/Setup.bootstrap + Modules/Setup.stdlib + Modules/ld_so_aix + Makefile.pre + pyconfig.h +" + +# --- Step 1: Transpile --- +echo "=== Transpiling configure.py -> shell ===" +uv run Tools/configure/transpile.py -o "$TRANSPILED" +echo " wrote $TRANSPILED ($(wc -l < "$TRANSPILED") lines)" + +# --- Step 2: Run transpiled configure --- +#TEST_SHELL=$(command -v dash 2>/dev/null || true) +#if [ -z "$TEST_SHELL" ]; then +# echo "warning: dash not found, using /bin/sh" >&2 +# TEST_SHELL=/bin/sh +#fi +if test -e /bin/bash; then + TEST_SHELL=/bin/bash +else + TEST_SHELL=/bin/sh +fi + +echo "=== Running transpiled configure ($TEST_SHELL) $* ===" +rm -f config.cache +if ! "$TEST_SHELL" "$TRANSPILED" "$@" > "$NEW_DIR/stdout" 2> "$NEW_DIR/stderr"; then + echo "New configure script crashed, aborting compare." + cat < "$NEW_DIR/stderr" + exit 1 +fi +for f in $FILES; do + mkdir -p "$NEW_DIR/$(dirname "$f")" + if [ -f "$f" ]; then cp "$f" "$NEW_DIR/$f"; else touch "$NEW_DIR/$f"; fi +done + +# --- Step 3: Run configure-old --- +echo "=== Running ./configure-old $* ===" +rm -f config.cache +"$TEST_SHELL" ./configure-old "$@" > "$OLD_DIR/stdout" 2> "$OLD_DIR/stderr" +for f in $FILES; do + mkdir -p "$OLD_DIR/$(dirname "$f")" + if [ -f "$f" ]; then cp "$f" "$OLD_DIR/$f"; else touch "$OLD_DIR/$f"; fi +done + +# --- Step 4: Compare --- +echo "" +DIFFS=0 +for f in $FILES; do + echo "=== diff $f ===" + if diff -u -wbB "$OLD_DIR/$f" "$NEW_DIR/$f"; then + echo "(no differences)" + else + DIFFS=$((DIFFS + 1)) + fi + echo "" +done + +# Show stderr from the transpiled run (warnings/errors are useful for debugging) +if [ -s "$NEW_DIR/stderr" ]; then + echo "=== transpiled configure stderr ===" + cat "$NEW_DIR/stderr" + echo "" +fi + +if [ "$DIFFS" -eq 0 ]; then + echo "All outputs match." +else + echo "$DIFFS file(s) differ." + exit 1 +fi diff --git a/configure b/configure index cd8983683333cd..bcdbf339f3542a 100755 --- a/configure +++ b/configure @@ -1,36170 +1,16 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for python 3.15. +#!/bin/sh # -# Report bugs to . -# -# -# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, -# Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac ;; -esac -fi - - - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. -as_nl=' -' -export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi - -# The user is always right. -if ${PATH_SEPARATOR+false} :; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - test -r "$as_dir$0" && as_myself=$as_dir$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed 'exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else case e in #( - e) case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ) -then : - -else case e in #( - e) exitcode=1; echo positional parameters were not saved. ;; -esac -fi -test x\$exitcode = x0 || exit 1 -blah=\$(echo \$(echo blah)) -test x\"\$blah\" = xblah || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null -then : - as_have_required=yes -else case e in #( - e) as_have_required=no ;; -esac -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null -then : - -else case e in #( - e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : - CONFIG_SHELL=$as_shell as_have_required=yes - if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null -then : - break 2 -fi -fi - done;; - esac - as_found=false -done -IFS=$as_save_IFS -if $as_found -then : - -else case e in #( - e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi ;; -esac -fi - - - if test "x$CONFIG_SHELL" != x -then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed 'exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno -then : - printf "%s\n" "$0: This script requires a shell more modern than all" - printf "%s\n" "$0: the shells that I found on your system." - if test ${ZSH_VERSION+y} ; then - printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" - printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." - else - printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and -$0: https://github.com/python/cpython/issues/ about your -$0: system, including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi ;; -esac -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else case e in #( - e) as_fn_append () - { - eval $1=\$$1\$2 - } ;; -esac -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else case e in #( - e) as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } ;; -esac -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - printf "%s\n" "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - t clear - :clear - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated - -# Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='python' -PACKAGE_TARNAME='python' -PACKAGE_VERSION='3.15' -PACKAGE_STRING='python 3.15' -PACKAGE_BUGREPORT='https://github.com/python/cpython/issues/' -PACKAGE_URL='' - -ac_unique_file="Include/object.h" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_STDIO_H -# include -#endif -#ifdef HAVE_STDLIB_H -# include -#endif -#ifdef HAVE_STRING_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_header_c_list= -ac_subst_vars='LTLIBOBJS -MODULE_BLOCK -JIT_STENCILS_H -MODULE_XXLIMITED_35_FALSE -MODULE_XXLIMITED_35_TRUE -MODULE_XXLIMITED_FALSE -MODULE_XXLIMITED_TRUE -MODULE__CTYPES_TEST_FALSE -MODULE__CTYPES_TEST_TRUE -MODULE__XXTESTFUZZ_FALSE -MODULE__XXTESTFUZZ_TRUE -MODULE_XXSUBTYPE_FALSE -MODULE_XXSUBTYPE_TRUE -MODULE__TESTSINGLEPHASE_FALSE -MODULE__TESTSINGLEPHASE_TRUE -MODULE__TESTMULTIPHASE_FALSE -MODULE__TESTMULTIPHASE_TRUE -MODULE__TESTIMPORTMULTIPLE_FALSE -MODULE__TESTIMPORTMULTIPLE_TRUE -MODULE__TESTBUFFER_FALSE -MODULE__TESTBUFFER_TRUE -MODULE__TESTINTERNALCAPI_FALSE -MODULE__TESTINTERNALCAPI_TRUE -MODULE__TESTLIMITEDCAPI_FALSE -MODULE__TESTLIMITEDCAPI_TRUE -MODULE__TESTCLINIC_LIMITED_FALSE -MODULE__TESTCLINIC_LIMITED_TRUE -MODULE__TESTCLINIC_FALSE -MODULE__TESTCLINIC_TRUE -MODULE__TESTCAPI_FALSE -MODULE__TESTCAPI_TRUE -MODULE__HASHLIB_FALSE -MODULE__HASHLIB_TRUE -MODULE__SSL_FALSE -MODULE__SSL_TRUE -MODULE__ZSTD_FALSE -MODULE__ZSTD_TRUE -MODULE__LZMA_FALSE -MODULE__LZMA_TRUE -MODULE__BZ2_FALSE -MODULE__BZ2_TRUE -MODULE_BINASCII_FALSE -MODULE_BINASCII_TRUE -MODULE_ZLIB_FALSE -MODULE_ZLIB_TRUE -MODULE__UUID_FALSE -MODULE__UUID_TRUE -MODULE__TKINTER_FALSE -MODULE__TKINTER_TRUE -MODULE__SQLITE3_FALSE -MODULE__SQLITE3_TRUE -MODULE_READLINE_FALSE -MODULE_READLINE_TRUE -MODULE__GDBM_FALSE -MODULE__GDBM_TRUE -MODULE__DBM_FALSE -MODULE__DBM_TRUE -MODULE__DECIMAL_FALSE -MODULE__DECIMAL_TRUE -MODULE__CURSES_PANEL_FALSE -MODULE__CURSES_PANEL_TRUE -MODULE__CURSES_FALSE -MODULE__CURSES_TRUE -MODULE__CTYPES_FALSE -MODULE__CTYPES_TRUE -MODULE__HMAC_FALSE -MODULE__HMAC_TRUE -MODULE__BLAKE2_FALSE -MODULE__BLAKE2_TRUE -MODULE__SHA3_FALSE -MODULE__SHA3_TRUE -MODULE__SHA2_FALSE -MODULE__SHA2_TRUE -MODULE__SHA1_FALSE -MODULE__SHA1_TRUE -MODULE__MD5_FALSE -MODULE__MD5_TRUE -LIBHACL_LDEPS_LIBTYPE -LIBHACL_BLAKE2_SIMD256_OBJS -LIBHACL_SIMD256_FLAGS -LIBHACL_BLAKE2_SIMD128_OBJS -LIBHACL_SIMD128_FLAGS -LIBHACL_LDFLAGS -LIBHACL_CFLAGS -MODULE_UNICODEDATA_FALSE -MODULE_UNICODEDATA_TRUE -MODULE__MULTIBYTECODEC_FALSE -MODULE__MULTIBYTECODEC_TRUE -MODULE__CODECS_TW_FALSE -MODULE__CODECS_TW_TRUE -MODULE__CODECS_KR_FALSE -MODULE__CODECS_KR_TRUE -MODULE__CODECS_JP_FALSE -MODULE__CODECS_JP_TRUE -MODULE__CODECS_ISO2022_FALSE -MODULE__CODECS_ISO2022_TRUE -MODULE__CODECS_HK_FALSE -MODULE__CODECS_HK_TRUE -MODULE__CODECS_CN_FALSE -MODULE__CODECS_CN_TRUE -MODULE__ELEMENTTREE_FALSE -MODULE__ELEMENTTREE_TRUE -MODULE_PYEXPAT_FALSE -MODULE_PYEXPAT_TRUE -MODULE_TERMIOS_FALSE -MODULE_TERMIOS_TRUE -MODULE_SYSLOG_FALSE -MODULE_SYSLOG_TRUE -MODULE__SCPROXY_FALSE -MODULE__SCPROXY_TRUE -MODULE_RESOURCE_FALSE -MODULE_RESOURCE_TRUE -MODULE_PWD_FALSE -MODULE_PWD_TRUE -MODULE_GRP_FALSE -MODULE_GRP_TRUE -MODULE__SOCKET_FALSE -MODULE__SOCKET_TRUE -MODULE_MMAP_FALSE -MODULE_MMAP_TRUE -MODULE_FCNTL_FALSE -MODULE_FCNTL_TRUE -MODULE__DATETIME_FALSE -MODULE__DATETIME_TRUE -MODULE_MATH_FALSE -MODULE_MATH_TRUE -MODULE_CMATH_FALSE -MODULE_CMATH_TRUE -MODULE__STATISTICS_FALSE -MODULE__STATISTICS_TRUE -MODULE__POSIXSHMEM_FALSE -MODULE__POSIXSHMEM_TRUE -MODULE__MULTIPROCESSING_FALSE -MODULE__MULTIPROCESSING_TRUE -MODULE__ZONEINFO_FALSE -MODULE__ZONEINFO_TRUE -MODULE__INTERPQUEUES_FALSE -MODULE__INTERPQUEUES_TRUE -MODULE__INTERPCHANNELS_FALSE -MODULE__INTERPCHANNELS_TRUE -MODULE__INTERPRETERS_FALSE -MODULE__INTERPRETERS_TRUE -MODULE__TYPING_FALSE -MODULE__TYPING_TRUE -MODULE__TYPES_FALSE -MODULE__TYPES_TRUE -MODULE__STRUCT_FALSE -MODULE__STRUCT_TRUE -MODULE_SELECT_FALSE -MODULE_SELECT_TRUE -MODULE__REMOTE_DEBUGGING_FALSE -MODULE__REMOTE_DEBUGGING_TRUE -MODULE__RANDOM_FALSE -MODULE__RANDOM_TRUE -MODULE__QUEUE_FALSE -MODULE__QUEUE_TRUE -MODULE__POSIXSUBPROCESS_FALSE -MODULE__POSIXSUBPROCESS_TRUE -MODULE__PICKLE_FALSE -MODULE__PICKLE_TRUE -MODULE__LSPROF_FALSE -MODULE__LSPROF_TRUE -MODULE__JSON_FALSE -MODULE__JSON_TRUE -MODULE__HEAPQ_FALSE -MODULE__HEAPQ_TRUE -MODULE__CSV_FALSE -MODULE__CSV_TRUE -MODULE__BISECT_FALSE -MODULE__BISECT_TRUE -MODULE__ASYNCIO_FALSE -MODULE__ASYNCIO_TRUE -MODULE__MATH_INTEGER_FALSE -MODULE__MATH_INTEGER_TRUE -MODULE_ARRAY_FALSE -MODULE_ARRAY_TRUE -MODULE_TIME_FALSE -MODULE_TIME_TRUE -MODULE__IO_FALSE -MODULE__IO_TRUE -MODULE_BUILDTYPE -_PYTHREAD_NAME_MAXLEN -TEST_MODULES -OPENSSL_LDFLAGS -OPENSSL_LIBS -OPENSSL_INCLUDES -ENSUREPIP -SRCDIRS -THREADHEADERS -PANEL_LIBS -PANEL_CFLAGS -CURSES_LIBS -CURSES_CFLAGS -LIBEDIT_LIBS -LIBEDIT_CFLAGS -LIBREADLINE_LIBS -LIBREADLINE_CFLAGS -WHEEL_PKG_DIR -LIBPL -PY_ENABLE_SHARED -BINLIBDEST -LIBDEST -PLATLIBDIR -LIBPYTHON -MODULE_DEPS_SHARED -EXT_SUFFIX -ALT_SOABI -SOABI -LIBC -LIBM -HAVE_GETHOSTBYNAME -HAVE_GETHOSTBYNAME_R -HAVE_GETHOSTBYNAME_R_3_ARG -HAVE_GETHOSTBYNAME_R_5_ARG -HAVE_GETHOSTBYNAME_R_6_ARG -LIBOBJS -REMOTE_DEBUGGING_LIBS -REMOTE_DEBUGGING_CFLAGS -LIBZSTD_LIBS -LIBZSTD_CFLAGS -LIBLZMA_LIBS -LIBLZMA_CFLAGS -BZIP2_LIBS -BZIP2_CFLAGS -ZLIB_LIBS -ZLIB_CFLAGS -TRUE -MACHDEP_OBJS -DYNLOADFILE -DLINCLDIR -PLATFORM_OBJS -PLATFORM_HEADERS -DTRACE_OBJS -DTRACE_HEADERS -DFLAGS -DTRACE -INSTALL_MIMALLOC -MIMALLOC_HEADERS -GDBM_LIBS -GDBM_CFLAGS -X11_LIBS -X11_CFLAGS -TCLTK_LIBS -TCLTK_CFLAGS -LIBSQLITE3_LIBS -LIBSQLITE3_CFLAGS -LIBMPDEC_INTERNAL -LIBMPDEC_LIBS -LIBMPDEC_CFLAGS -MODULE__CTYPES_MALLOC_CLOSURE -LIBFFI_LIBS -LIBFFI_CFLAGS -LIBEXPAT_INTERNAL -LIBEXPAT_CFLAGS -TZPATH -LIBUUID_LIBS -LIBUUID_CFLAGS -PERF_TRAMPOLINE_OBJ -SHLIBS -CFLAGSFORSHARED -LINKFORSHARED -CCSHARED -BLDSHARED -LDCXXSHARED -LDSHARED -SHLIB_SUFFIX -DSYMUTIL_PATH -DSYMUTIL -REGEN_JIT_COMMAND -UNIVERSAL_ARCH_FLAGS -WASM_STDLIB -WASM_ASSETS_DIR -LDFLAGS_NOLTO -LDFLAGS_NODIST -CFLAGS_NODIST -BASECFLAGS -CFLAGS_ALIASING -OPT -BOLT_APPLY_FLAGS -BOLT_INSTRUMENT_FLAGS -BOLT_COMMON_FLAGS -BOLT_BINARIES -MERGE_FDATA -LLVM_BOLT -PREBOLT_RULE -LLVM_PROF_FOUND -LLVM_PROFDATA -LLVM_PROF_ERR -LLVM_PROF_FILE -LLVM_PROF_MERGER -PGO_PROF_USE_FLAG -PGO_PROF_GEN_FLAG -LLVM_AR_FOUND -LLVM_AR -PROFILE_TASK -DEF_MAKE_RULE -DEF_MAKE_ALL_RULE -ABI_THREAD -ABIFLAGS -LN -MKDIR_P -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -ARFLAGS -ac_ct_AR -AR -LINK_PYTHON_OBJS -LINK_PYTHON_DEPS -LIBRARY_DEPS -HOSTRUNNER -NODE -STATIC_LIBPYTHON -GNULD -EXPORTSFROM -EXPORTSYMS -LINKCC -LDVERSION -RUNSHARED -INSTSONAME -LDLIBRARYDIR -PY3LIBRARY -BLDLIBRARY -DLLLIBRARY -LDLIBRARY -LIBRARY -BUILDEXEEXT -NO_AS_NEEDED -_Py_STACK_GROWS_DOWN -MULTIARCH_CPPFLAGS -PLATFORM_TRIPLET -MULTIARCH -ac_ct_CXX -CXX -EGREP -SED -GREP -CPP -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -HAS_XCRUN -IPHONEOS_DEPLOYMENT_TARGET -EXPORT_MACOSX_DEPLOYMENT_TARGET -CONFIGURE_MACOSX_DEPLOYMENT_TARGET -_PYTHON_HOST_PLATFORM -APP_STORE_COMPLIANCE_PATCH -INSTALLTARGETS -FRAMEWORKINSTALLAPPSPREFIX -FRAMEWORKUNIXTOOLSPREFIX -FRAMEWORKPYTHONW -FRAMEWORKALTINSTALLLAST -FRAMEWORKALTINSTALLFIRST -FRAMEWORKINSTALLLAST -FRAMEWORKINSTALLFIRST -RESSRCDIR -PYTHONFRAMEWORKINSTALLNAMEPREFIX -PYTHONFRAMEWORKINSTALLDIR -PYTHONFRAMEWORKPREFIX -PYTHONFRAMEWORKDIR -PYTHONFRAMEWORKIDENTIFIER -PYTHONFRAMEWORK -LIPO_INTEL64_FLAGS -LIPO_32BIT_FLAGS -ARCH_RUN_32BIT -UNIVERSALSDK -host_exec_prefix -host_prefix -MACHDEP -MISSING_STDLIB_CONFIG -PKG_CONFIG_LIBDIR -PKG_CONFIG_PATH -PKG_CONFIG -CONFIG_ARGS -SOVERSION -VERSION -PYTHON_FOR_REGEN -PYTHON_FOR_BUILD_DEPS -FREEZE_MODULE_DEPS -FREEZE_MODULE -FREEZE_MODULE_BOOTSTRAP_DEPS -FREEZE_MODULE_BOOTSTRAP -PYTHON_FOR_FREEZE -PYTHON_FOR_BUILD -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -HAS_GIT -GITBRANCH -GITTAG -GITVERSION -BASECPPFLAGS -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -runstatedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -with_build_python -with_pkg_config -with_missing_stdlib_config -enable_universalsdk -with_universal_archs -with_framework_name -enable_framework -with_app_store_compliance -enable_wasm_dynamic_linking -enable_wasm_pthreads -with_suffix -enable_shared -with_static_libpython -enable_profiling -enable_gil -with_pydebug -with_trace_refs -enable_pystats -with_assertions -enable_optimizations -with_lto -enable_bolt -with_strict_overflow -enable_safety -enable_slower_safety -enable_experimental_jit -with_dsymutil -with_address_sanitizer -with_memory_sanitizer -with_undefined_behavior_sanitizer -with_thread_sanitizer -with_hash_algorithm -with_tzpath -with_libs -with_system_expat -with_system_libmpdec -with_decimal_contextvar -enable_loadable_sqlite_extensions -with_dbmliborder -enable_ipv6 -with_doc_strings -with_mimalloc -with_pymalloc -with_pymalloc_hugepages -with_c_locale_coercion -with_valgrind -with_dtrace -with_libm -with_libc -enable_big_digits -with_platlibdir -with_wheel_pkg_dir -with_readline -with_computed_gotos -with_tail_call_interp -with_remote_debug -with_ensurepip -with_openssl -with_openssl_rpath -with_ssl_default_suites -with_builtin_hashlib_hashes -enable_test_modules -' - ac_precious_vars='build_alias -host_alias -target_alias -PKG_CONFIG -PKG_CONFIG_PATH -PKG_CONFIG_LIBDIR -MACHDEP -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP -PROFILE_TASK -BOLT_COMMON_FLAGS -BOLT_INSTRUMENT_FLAGS -BOLT_APPLY_FLAGS -LIBUUID_CFLAGS -LIBUUID_LIBS -LIBFFI_CFLAGS -LIBFFI_LIBS -LIBMPDEC_CFLAGS -LIBMPDEC_LIBS -LIBSQLITE3_CFLAGS -LIBSQLITE3_LIBS -TCLTK_CFLAGS -TCLTK_LIBS -X11_CFLAGS -X11_LIBS -GDBM_CFLAGS -GDBM_LIBS -ZLIB_CFLAGS -ZLIB_LIBS -BZIP2_CFLAGS -BZIP2_LIBS -LIBLZMA_CFLAGS -LIBLZMA_LIBS -LIBZSTD_CFLAGS -LIBZSTD_LIBS -LIBREADLINE_CFLAGS -LIBREADLINE_LIBS -LIBEDIT_CFLAGS -LIBEDIT_LIBS -CURSES_CFLAGS -CURSES_LIBS -PANEL_CFLAGS -PANEL_LIBS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: '$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: '$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: '$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: '$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: '$ac_option' -Try '$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: '$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: '$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -'configure' configures python 3.15 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print 'checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for '--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or '..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, 'make install' will install all the files in -'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify -an installation prefix other than '$ac_default_prefix' using '--prefix', -for instance '--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/python] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of python 3.15:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-universalsdk[=SDKDIR] - create a universal binary build. SDKDIR specifies - which macOS SDK should be used to perform the build, - see Mac/README.rst. (default is no) - --enable-framework[=INSTALLDIR] - create a Python.framework rather than a traditional - Unix install. optional INSTALLDIR specifies the - installation path. see Mac/README.rst (default is - no) - --enable-wasm-dynamic-linking - Enable dynamic linking support for WebAssembly - (default is no); WASI requires an external dynamic - loader to handle imports - --enable-wasm-pthreads Enable pthread emulation for WebAssembly (default is - no) - --enable-shared enable building a shared Python library (default is - no) - --enable-profiling enable C-level code profiling with gprof (default is - no) - --disable-gil enable support for running without the GIL (default - is no) - --enable-pystats enable internal statistics gathering (default is no) - --enable-optimizations enable expensive, stable optimizations (PGO, etc.) - (default is no) - --enable-bolt enable usage of the llvm-bolt post-link optimizer - (default is no) - --enable-safety enable usage of the security compiler options with - no performance overhead - --enable-slower-safety enable usage of the security compiler options with - performance overhead - --enable-experimental-jit[=no|yes|yes-off|interpreter] - build the experimental just-in-time compiler - (default is no) - --enable-loadable-sqlite-extensions - support loadable extensions in the sqlite3 module, - see Doc/library/sqlite3.rst (default is no) - --enable-ipv6 enable ipv6 (with ipv4) support, see - Doc/library/socket.rst (default is yes if supported) - --enable-big-digits[=15|30] - use big digits (30 or 15 bits) for Python longs - (default is 30)] - --disable-test-modules don't build nor install test modules - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-build-python=python3.15 - path to build python binary for cross compiling - (default: _bootstrap_python or python3.15) - --with-pkg-config=[yes|no|check] - use pkg-config to detect build options (default is - check) - --with-missing-stdlib-config=FILE - File with custom module error messages for missing - stdlib modules - --with-universal-archs=ARCH - specify the kind of macOS universal binary that - should be created. This option is only valid when - --enable-universalsdk is set; options are: - ("universal2", "intel-64", "intel-32", "intel", - "32-bit", "64-bit", "3-way", or "all") see - Mac/README.rst - --with-framework-name=FRAMEWORK - specify the name for the python framework on macOS - only valid when --enable-framework is set. see - Mac/README.rst (default is 'Python') - --with-app-store-compliance=[PATCH-FILE] - Enable any patches required for compiliance with app - stores. Optional PATCH-FILE specifies the custom - patch to apply. - --with-suffix=SUFFIX set executable suffix to SUFFIX (default is empty, - yes is mapped to '.exe') - --without-static-libpython - do not build libpythonMAJOR.MINOR.a and do not - install python.o (default is yes) - --with-pydebug build with Py_DEBUG defined (default is no) - --with-trace-refs enable tracing references for debugging purpose - (default is no) - --with-assertions build with C assertions enabled (default is no) - --with-lto=[full|thin|no|yes] - enable Link-Time-Optimization in any build (default - is no) - --with-strict-overflow if 'yes', add -fstrict-overflow to CFLAGS, else add - -fno-strict-overflow (default is no) - --with-dsymutil link debug information into final executable with - dsymutil in macOS (default is no) - --with-address-sanitizer - enable AddressSanitizer memory error detector, - 'asan' (default is no) - --with-memory-sanitizer enable MemorySanitizer allocation error detector, - 'msan' (default is no) - --with-undefined-behavior-sanitizer - enable UndefinedBehaviorSanitizer undefined - behaviour detector, 'ubsan' (default is no) - --with-thread-sanitizer enable ThreadSanitizer data race detector, 'tsan' - (default is no) - --with-hash-algorithm=[fnv|siphash13|siphash24] - select hash algorithm for use in Python/pyhash.c - (default is SipHash13) - --with-tzpath= - Select the default time zone search path for - zoneinfo.TZPATH - --with-libs='lib1 ...' link against additional libs (default is no) - --with-system-expat build pyexpat module using an installed expat - library, see Doc/library/pyexpat.rst (default is no) - --with-system-libmpdec build _decimal module using an installed mpdecimal - library, see Doc/library/decimal.rst (default is - yes) - --with-decimal-contextvar - build _decimal module using a coroutine-local rather - than a thread-local context (default is yes) - --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'. - --with-doc-strings enable documentation strings (default is yes) - --with-mimalloc build with mimalloc memory allocator (default is yes - if C11 stdatomic.h is available.) - --with-pymalloc enable specialized mallocs (default is yes) - --with-pymalloc-hugepages - enable huge page support for pymalloc arenas - (default is no) - --with-c-locale-coercion - enable C locale coercion to a UTF-8 based locale - (default is yes) - --with-valgrind enable Valgrind support (default is no) - --with-dtrace enable DTrace support (default is no) - --with-libm=STRING override libm math library to STRING (default is - system-dependent) - --with-libc=STRING override libc C library to STRING (default is - system-dependent) - --with-platlibdir=DIRNAME - Python library directory name (default is "lib") - --with-wheel-pkg-dir=PATH - Directory of wheel packages used by ensurepip - (default: none) - --with(out)-readline[=editline|readline|no] - use libedit for backend or disable readline module - --with-computed-gotos enable computed gotos in evaluation loop (enabled by - default on supported compilers) - --with-tail-call-interp enable tail-calling interpreter in evaluation loop - and rest of CPython - --with-remote-debug enable remote debugging support (default is yes) - --with-ensurepip[=install|upgrade|no] - "install" or "upgrade" using bundled pip (default is - upgrade) - --with-openssl=DIR root of the OpenSSL directory - --with-openssl-rpath=[DIR|auto|no] - Set runtime library directory (rpath) for OpenSSL - libraries, no (default): don't set rpath, auto: - auto-detect rpath from --with-openssl and - pkg-config, DIR: set an explicit rpath - --with-ssl-default-suites=[python|openssl|STRING] - override default cipher suites string, python: use - Python's preferred selection (default), openssl: - leave OpenSSL's defaults untouched, STRING: use a - custom string, python and STRING also set TLS 1.2 as - minimum TLS version - --with-builtin-hashlib-hashes=md5,sha1,sha2,sha3,blake2 - builtin hash modules, md5, sha1, sha2, sha3 (with - shake), blake2 - -Some influential environment variables: - PKG_CONFIG path to pkg-config utility - PKG_CONFIG_PATH - directories to add to pkg-config's search path - PKG_CONFIG_LIBDIR - path overriding pkg-config's built-in search path - MACHDEP name for machine-dependent library files - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - PROFILE_TASK - Python args for PGO generation task - BOLT_COMMON_FLAGS - Common arguments to llvm-bolt when instrumenting and applying - BOLT_INSTRUMENT_FLAGS - Arguments to llvm-bolt when instrumenting binaries - BOLT_APPLY_FLAGS - Arguments to llvm-bolt when creating a BOLT optimized binary - LIBUUID_CFLAGS - C compiler flags for LIBUUID, overriding pkg-config - LIBUUID_LIBS - linker flags for LIBUUID, overriding pkg-config - LIBFFI_CFLAGS - C compiler flags for LIBFFI, overriding pkg-config - LIBFFI_LIBS linker flags for LIBFFI, overriding pkg-config - LIBMPDEC_CFLAGS - C compiler flags for LIBMPDEC, overriding pkg-config - LIBMPDEC_LIBS - linker flags for LIBMPDEC, overriding pkg-config - LIBSQLITE3_CFLAGS - C compiler flags for LIBSQLITE3, overriding pkg-config - LIBSQLITE3_LIBS - linker flags for LIBSQLITE3, overriding pkg-config - TCLTK_CFLAGS - C compiler flags for TCLTK, overriding pkg-config - TCLTK_LIBS linker flags for TCLTK, overriding pkg-config - X11_CFLAGS C compiler flags for X11, overriding pkg-config - X11_LIBS linker flags for X11, overriding pkg-config - GDBM_CFLAGS C compiler flags for gdbm - GDBM_LIBS additional linker flags for gdbm - ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config - ZLIB_LIBS linker flags for ZLIB, overriding pkg-config - BZIP2_CFLAGS - C compiler flags for BZIP2, overriding pkg-config - BZIP2_LIBS linker flags for BZIP2, overriding pkg-config - LIBLZMA_CFLAGS - C compiler flags for LIBLZMA, overriding pkg-config - LIBLZMA_LIBS - linker flags for LIBLZMA, overriding pkg-config - LIBZSTD_CFLAGS - C compiler flags for LIBZSTD, overriding pkg-config - LIBZSTD_LIBS - linker flags for LIBZSTD, overriding pkg-config - LIBREADLINE_CFLAGS - C compiler flags for LIBREADLINE, overriding pkg-config - LIBREADLINE_LIBS - linker flags for LIBREADLINE, overriding pkg-config - LIBEDIT_CFLAGS - C compiler flags for LIBEDIT, overriding pkg-config - LIBEDIT_LIBS - linker flags for LIBEDIT, overriding pkg-config - CURSES_CFLAGS - C compiler flags for CURSES, overriding pkg-config - CURSES_LIBS linker flags for CURSES, overriding pkg-config - PANEL_CFLAGS - C compiler flags for PANEL, overriding pkg-config - PANEL_LIBS linker flags for PANEL, overriding pkg-config - -Use these variables to override the choices made by 'configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for configure.gnu first; this name is used for a wrapper for - # Metaconfig's "Configure" on case-insensitive file systems. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -python configure 3.15 -generated by GNU Autoconf 2.72 - -Copyright (C) 2023 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext -then : - ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 ;; -esac -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - } -then : - ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 ;; -esac -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$3=yes" -else case e in #( - e) eval "$3=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - } -then : - ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 ;; -esac -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that -# executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; } -then : - ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5 - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status ;; -esac -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main (void) -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main (void) -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else case e in #( - e) eval "$3=yes" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type - -# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -# -------------------------------------------- -# Tries to find the compile-time value of EXPR in a program that includes -# INCLUDES, setting VAR accordingly. Returns whether the value could be -# computed -ac_fn_c_compute_int () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main (void) -{ -static int test_array [1 - 2 * !(($2) >= 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_lo=0 ac_mid=0 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main (void) -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_hi=$ac_mid; break -else case e in #( - e) as_fn_arith $ac_mid + 1 && ac_lo=$as_val - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - done -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main (void) -{ -static int test_array [1 - 2 * !(($2) < 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_hi=-1 ac_mid=-1 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main (void) -{ -static int test_array [1 - 2 * !(($2) >= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_lo=$ac_mid; break -else case e in #( - e) as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - done -else case e in #( - e) ac_lo= ac_hi= ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main (void) -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_hi=$ac_mid -else case e in #( - e) as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -done -case $ac_lo in #(( -?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -'') ac_retval=1 ;; -esac - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -static long int longval (void) { return $2; } -static unsigned long int ulongval (void) { return $2; } -#include -#include -int -main (void) -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (($2) < 0) - { - long int i = longval (); - if (i != ($2)) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ($2)) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - echo >>conftest.val; read $3 &5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (void); below. */ - -#include -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (void); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main (void) -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - eval "$3=yes" -else case e in #( - e) eval "$3=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext ;; -esac -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR -# ------------------------------------------------------------------ -# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. -ac_fn_check_decl () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - as_decl_name=`echo $2|sed 's/ *(.*//'` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -printf %s "checking whether $as_decl_name is declared... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - eval ac_save_FLAGS=\$$6 - as_fn_append $6 " $5" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main (void) -{ -#ifndef $as_decl_name -#ifdef __cplusplus - (void) $as_decl_use; -#else - (void) $as_decl_name; -#endif -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$3=yes" -else case e in #( - e) eval "$3=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - eval $6=\$ac_save_FLAGS - ;; -esac -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_check_decl - -# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES -# ---------------------------------------------------- -# Tries to find if the field MEMBER exists in type AGGR, after including -# INCLUDES, setting cache variable VAR accordingly. -ac_fn_c_check_member () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -printf %s "checking for $2.$3... " >&6; } -if eval test \${$4+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int -main (void) -{ -static $2 ac_aggr; -if (ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$4=yes" -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int -main (void) -{ -static $2 ac_aggr; -if (sizeof ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$4=yes" -else case e in #( - e) eval "$4=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -eval ac_res=\$$4 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_member -ac_configure_args_raw= -for ac_arg -do - case $ac_arg in - *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append ac_configure_args_raw " '$ac_arg'" -done - -case $ac_configure_args_raw in - *$as_nl*) - ac_safe_unquote= ;; - *) - ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. - ac_unsafe_a="$ac_unsafe_z#~" - ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" - ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; -esac - -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by python $as_me 3.15, which was -generated by GNU Autoconf 2.72. Invocation command line was - - $ $0$ac_configure_args_raw - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - printf "%s\n" "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Sanitize IFS. - IFS=" "" $as_nl" - # Save into config.log some information that might help in debugging. - { - echo - - printf "%s\n" "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - printf "%s\n" "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - printf "%s\n" "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - printf "%s\n" "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - printf "%s\n" "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - printf "%s\n" "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - printf "%s\n" "$as_me: caught signal $ac_signal" - printf "%s\n" "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -printf "%s\n" "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -if test -n "$CONFIG_SITE"; then - ac_site_files="$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - ac_site_files="$prefix/share/config.site $prefix/etc/config.site" -else - ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" -fi - -for ac_site_file in $ac_site_files -do - case $ac_site_file in #( - */*) : - ;; #( - *) : - ac_site_file=./$ac_site_file ;; -esac - if test -f "$ac_site_file" && test -r "$ac_site_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See 'config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -printf "%s\n" "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -printf "%s\n" "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Test code for whether the C compiler supports C89 (global declarations) -ac_c_conftest_c89_globals=' -/* Does the compiler advertise C89 conformance? - Do not test the value of __STDC__, because some compilers set it to 0 - while being otherwise adequately conformant. */ -#if !defined __STDC__ -# error "Compiler does not advertise C89 conformance" -#endif - -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ -struct buf { int x; }; -struct buf * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (char **p, int i) -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* C89 style stringification. */ -#define noexpand_stringify(a) #a -const char *stringified = noexpand_stringify(arbitrary+token=sequence); - -/* C89 style token pasting. Exercises some of the corner cases that - e.g. old MSVC gets wrong, but not very hard. */ -#define noexpand_concat(a,b) a##b -#define expand_concat(a,b) noexpand_concat(a,b) -extern int vA; -extern int vbee; -#define aye A -#define bee B -int *pvA = &expand_concat(v,aye); -int *pvbee = &noexpand_concat(v,bee); - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not \xHH hex character constants. - These do not provoke an error unfortunately, instead are silently treated - as an "x". The following induces an error, until -std is added to get - proper ANSI mode. Curiously \x00 != x always comes out true, for an - array size at least. It is necessary to write \x00 == 0 to get something - that is true only with -std. */ -int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) '\''x'\'' -int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), - int, int);' - -# Test code for whether the C compiler supports C89 (body of main). -ac_c_conftest_c89_main=' -ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); -' - -# Test code for whether the C compiler supports C99 (global declarations) -ac_c_conftest_c99_globals=' -/* Does the compiler advertise C99 conformance? */ -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L -# error "Compiler does not advertise C99 conformance" -#endif - -// See if C++-style comments work. - -#include -extern int puts (const char *); -extern int printf (const char *, ...); -extern int dprintf (int, const char *, ...); -extern void *malloc (size_t); -extern void free (void *); - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -// dprintf is used instead of fprintf to avoid needing to declare -// FILE and stderr. -#define debug(...) dprintf (2, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - #error "your preprocessor is broken" -#endif -#if BIG_OK -#else - #error "your preprocessor is broken" -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static bool -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str = ""; - int number = 0; - float fnumber = 0; - - while (*format) - { - switch (*format++) - { - case '\''s'\'': // string - str = va_arg (args_copy, const char *); - break; - case '\''d'\'': // int - number = va_arg (args_copy, int); - break; - case '\''f'\'': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); - - return *str && number && fnumber; -} -' - -# Test code for whether the C compiler supports C99 (body of main). -ac_c_conftest_c99_main=' - // Check bool. - _Bool success = false; - success |= (argc != 0); - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - // Work around memory leak warnings. - free (ia); - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[0] = argv[0][0]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' - || dynamic_array[ni.number - 1] != 543); -' - -# Test code for whether the C compiler supports C11 (global declarations) -ac_c_conftest_c11_globals=' -/* Does the compiler advertise C11 conformance? */ -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L -# error "Compiler does not advertise C11 conformance" -#endif - -// Check _Alignas. -char _Alignas (double) aligned_as_double; -char _Alignas (0) no_special_alignment; -extern char aligned_as_int; -char _Alignas (0) _Alignas (int) aligned_as_int; - -// Check _Alignof. -enum -{ - int_alignment = _Alignof (int), - int_array_alignment = _Alignof (int[100]), - char_alignment = _Alignof (char) -}; -_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); - -// Check _Noreturn. -int _Noreturn does_not_return (void) { for (;;) continue; } - -// Check _Static_assert. -struct test_static_assert -{ - int x; - _Static_assert (sizeof (int) <= sizeof (long int), - "_Static_assert does not work in struct"); - long int y; -}; - -// Check UTF-8 literals. -#define u8 syntax error! -char const utf8_literal[] = u8"happens to be ASCII" "another string"; - -// Check duplicate typedefs. -typedef long *long_ptr; -typedef long int *long_ptr; -typedef long_ptr long_ptr; - -// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. -struct anonymous -{ - union { - struct { int i; int j; }; - struct { int k; long int l; } w; - }; - int m; -} v1; -' - -# Test code for whether the C compiler supports C11 (body of main). -ac_c_conftest_c11_main=' - _Static_assert ((offsetof (struct anonymous, i) - == offsetof (struct anonymous, w.k)), - "Anonymous union alignment botch"); - v1.i = 2; - v1.w.k = 5; - ok |= v1.i != 5; -' - -# Test code for whether the C compiler supports C11 (complete). -ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} -${ac_c_conftest_c99_globals} -${ac_c_conftest_c11_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - ${ac_c_conftest_c99_main} - ${ac_c_conftest_c11_main} - return ok; -} -" - -# Test code for whether the C compiler supports C99 (complete). -ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} -${ac_c_conftest_c99_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - ${ac_c_conftest_c99_main} - return ok; -} -" - -# Test code for whether the C compiler supports C89 (complete). -ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - return ok; -} -" - -as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" -as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" -as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" -as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" -as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" -as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" -as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" -as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" -as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" -as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" -as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" - -# Auxiliary files required by this configure script. -ac_aux_files="install-sh config.guess config.sub" - -# Locations in which to look for auxiliary files. -ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." - -# Search for a directory containing all of the required auxiliary files, -# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. -# If we don't find one directory that contains all the files we need, -# we report the set of missing files from the *first* directory in -# $ac_aux_dir_candidates and give up. -ac_missing_aux_files="" -ac_first_candidate=: -printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in $ac_aux_dir_candidates -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - as_found=: - - printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 - ac_aux_dir_found=yes - ac_install_sh= - for ac_aux in $ac_aux_files - do - # As a special case, if "install-sh" is required, that requirement - # can be satisfied by any of "install-sh", "install.sh", or "shtool", - # and $ac_install_sh is set appropriately for whichever one is found. - if test x"$ac_aux" = x"install-sh" - then - if test -f "${as_dir}install-sh"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 - ac_install_sh="${as_dir}install-sh -c" - elif test -f "${as_dir}install.sh"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 - ac_install_sh="${as_dir}install.sh -c" - elif test -f "${as_dir}shtool"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 - ac_install_sh="${as_dir}shtool install -c" - else - ac_aux_dir_found=no - if $ac_first_candidate; then - ac_missing_aux_files="${ac_missing_aux_files} install-sh" - else - break - fi - fi - else - if test -f "${as_dir}${ac_aux}"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 - else - ac_aux_dir_found=no - if $ac_first_candidate; then - ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" - else - break - fi - fi - fi - done - if test "$ac_aux_dir_found" = yes; then - ac_aux_dir="$as_dir" - break - fi - ac_first_candidate=false - - as_found=false -done -IFS=$as_save_IFS -if $as_found -then : - -else case e in #( - e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; -esac -fi - - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -if test -f "${ac_aux_dir}config.guess"; then - ac_config_guess="$SHELL ${ac_aux_dir}config.guess" -fi -if test -f "${ac_aux_dir}config.sub"; then - ac_config_sub="$SHELL ${ac_aux_dir}config.sub" -fi -if test -f "$ac_aux_dir/configure"; then - ac_configure="$SHELL ${ac_aux_dir}configure" -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 -printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 -printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 -printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 -printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 -printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 -printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' - and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - -if test "$srcdir" != . -a "$srcdir" != "$(pwd)"; then - # If we're building out-of-tree, we need to make sure the following - # resources get picked up before their $srcdir counterparts. - # Objects/ -> typeslots.inc - # Include/ -> Python.h - # (A side effect of this is that these resources will automatically be - # regenerated when building out-of-tree, regardless of whether or not - # the $srcdir counterpart is up-to-date. This is an acceptable trade - # off.) - BASECPPFLAGS="-IObjects -IInclude -IPython" -else - BASECPPFLAGS="" -fi - - - - - -if test -e $srcdir/.git -then -# Extract the first word of "git", so it can be a program name with args. -set dummy git; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_HAS_GIT+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$HAS_GIT"; then - ac_cv_prog_HAS_GIT="$HAS_GIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_HAS_GIT="found" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_prog_HAS_GIT" && ac_cv_prog_HAS_GIT="not-found" -fi ;; -esac -fi -HAS_GIT=$ac_cv_prog_HAS_GIT -if test -n "$HAS_GIT"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAS_GIT" >&5 -printf "%s\n" "$HAS_GIT" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -else -HAS_GIT=no-repository -fi -if test $HAS_GIT = found -then - GITVERSION="git --git-dir \$(srcdir)/.git rev-parse --short HEAD" - GITTAG="git --git-dir \$(srcdir)/.git describe --all --always --dirty" - GITBRANCH="git --git-dir \$(srcdir)/.git name-rev --name-only HEAD" -else - GITVERSION="" - GITTAG="" - GITBRANCH="" -fi - - -ac_config_headers="$ac_config_headers pyconfig.h" - - - - - - # Make sure we can run config.sub. -$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -printf %s "checking build system type... " >&6; } -if test ${ac_cv_build+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -printf "%s\n" "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -printf %s "checking host system type... " >&6; } -if test ${ac_cv_host+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || - as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -printf "%s\n" "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - - - -if test "x$cross_compiling" = xmaybe -then : - as_fn_error $? "Cross compiling required --host=HOST-TUPLE and --build=ARCH" "$LINENO" 5 - -fi - -# pybuilddir.txt will be created by --generate-posix-vars in the Makefile -rm -f pybuilddir.txt - - -# Check whether --with-build-python was given. -if test ${with_build_python+y} -then : - withval=$with_build_python; - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-build-python" >&5 -printf %s "checking for --with-build-python... " >&6; } - - if test "x$with_build_python" = xyes -then : - with_build_python=python$PACKAGE_VERSION -fi - if test "x$with_build_python" = xno -then : - as_fn_error $? "invalid --with-build-python option: expected path or \"yes\", not \"no\"" "$LINENO" 5 -fi - - if ! $(command -v "$with_build_python" >/dev/null 2>&1); then - as_fn_error $? "invalid or missing build python binary \"$with_build_python\"" "$LINENO" 5 - fi - build_python_ver=$($with_build_python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')") - if test "$build_python_ver" != "$PACKAGE_VERSION"; then - as_fn_error $? "\"$with_build_python\" has incompatible version $build_python_ver (expected: $PACKAGE_VERSION)" "$LINENO" 5 - fi - ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python - PYTHON_FOR_FREEZE="$with_build_python" - PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) _PYTHON_SYSCONFIGDATA_PATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`) '$with_build_python - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_build_python" >&5 -printf "%s\n" "$with_build_python" >&6; } - -else case e in #( - e) - if test "x$cross_compiling" = xyes -then : - as_fn_error $? "Cross compiling requires --with-build-python" "$LINENO" 5 - -fi - PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E' - PYTHON_FOR_FREEZE="./_bootstrap_python" - - ;; -esac -fi - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python interpreter freezing" >&5 -printf %s "checking for Python interpreter freezing... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_FOR_FREEZE" >&5 -printf "%s\n" "$PYTHON_FOR_FREEZE" >&6; } - - -if test "x$cross_compiling" = xyes -then : - - FREEZE_MODULE_BOOTSTRAP='$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py' - FREEZE_MODULE_BOOTSTRAP_DEPS='$(srcdir)/Programs/_freeze_module.py' - FREEZE_MODULE='$(FREEZE_MODULE_BOOTSTRAP)' - FREEZE_MODULE_DEPS='$(FREEZE_MODULE_BOOTSTRAP_DEPS)' - PYTHON_FOR_BUILD_DEPS='' - -else case e in #( - e) - FREEZE_MODULE_BOOTSTRAP='./Programs/_freeze_module' - FREEZE_MODULE_BOOTSTRAP_DEPS="Programs/_freeze_module" - FREEZE_MODULE='$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py' - FREEZE_MODULE_DEPS="_bootstrap_python \$(srcdir)/Programs/_freeze_module.py" - PYTHON_FOR_BUILD_DEPS='$(BUILDPYTHON)' - - ;; -esac -fi - - - - - - -for ac_prog in python$PACKAGE_VERSION python3.15 python3.14 python3.13 python3.12 python3.11 python3.10 python3 python -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_PYTHON_FOR_REGEN+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$PYTHON_FOR_REGEN"; then - ac_cv_prog_PYTHON_FOR_REGEN="$PYTHON_FOR_REGEN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_PYTHON_FOR_REGEN="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -PYTHON_FOR_REGEN=$ac_cv_prog_PYTHON_FOR_REGEN -if test -n "$PYTHON_FOR_REGEN"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_FOR_REGEN" >&5 -printf "%s\n" "$PYTHON_FOR_REGEN" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$PYTHON_FOR_REGEN" && break -done -test -n "$PYTHON_FOR_REGEN" || PYTHON_FOR_REGEN="python3" - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python for regen version" >&5 -printf %s "checking Python for regen version... " >&6; } -if command -v "$PYTHON_FOR_REGEN" >/dev/null 2>&1; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $($PYTHON_FOR_REGEN -V 2>/dev/null)" >&5 -printf "%s\n" "$($PYTHON_FOR_REGEN -V 2>/dev/null)" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: missing" >&5 -printf "%s\n" "missing" >&6; } -fi - - -if test "$prefix" != "/"; then - prefix=`echo "$prefix" | sed -e 's/\/$//g'` -fi - - - - -# We don't use PACKAGE_ variables, and they cause conflicts -# with other autoconf-based packages that include Python.h -grep -v 'define PACKAGE_' confdefs.h.new -rm confdefs.h -mv confdefs.h.new confdefs.h - - -VERSION=3.15 - -# Version number of Python's own shared library file. - -SOVERSION=1.0 - -# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables -# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable -# them. - -printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h - - -# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables -# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable -# them. - -printf "%s\n" "#define __BSD_VISIBLE 1" >>confdefs.h - - -# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables -# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable -# them. - -printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h - - - -define_xopen_source=yes - -# Arguments passed to configure. - -CONFIG_ARGS="$ac_configure_args" - - -# Check whether --with-pkg-config was given. -if test ${with_pkg_config+y} -then : - withval=$with_pkg_config; -else case e in #( - e) with_pkg_config=check - ;; -esac -fi - -case $with_pkg_config in #( - yes|check) : - - if test -z "$PKG_CONFIG"; then - { PKG_CONFIG=; unset PKG_CONFIG;} - { ac_cv_path_ac_pt_PKG_CONFIG=; unset ac_cv_path_ac_pt_PKG_CONFIG;} - { ac_cv_prog_ac_ct_PKG_CONFIG=; unset ac_cv_prog_ac_ct_PKG_CONFIG;} - fi - - - - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKG_CONFIG+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -printf "%s\n" "$PKG_CONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - PKG_CONFIG="" - fi -fi - ;; #( - no) : - - PKG_CONFIG='' - ac_cv_path_ac_pt_PKG_CONFIG='' - ac_cv_prog_ac_ct_PKG_CONFIG='' - ;; #( - *) : - as_fn_error $? "invalid argument --with-pkg-config=$with_pkg_config" "$LINENO" 5 - ;; -esac -if test "$with_pkg_config" = yes -a -z "$PKG_CONFIG"; then - as_fn_error $? "pkg-config is required" "$LINENO" 5] -fi - - -# Check whether --with-missing-stdlib-config was given. -if test ${with_missing_stdlib_config+y} -then : - withval=$with_missing_stdlib_config; MISSING_STDLIB_CONFIG="$withval" -else case e in #( - e) MISSING_STDLIB_CONFIG="" - ;; -esac -fi - - - -# Set name for machine-dependent library files - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking MACHDEP" >&5 -printf %s "checking MACHDEP... " >&6; } -if test -z "$MACHDEP" -then - # avoid using uname for cross builds - if test "$cross_compiling" = yes; then - # ac_sys_system and ac_sys_release are used for setting - # a lot of different things including 'define_xopen_source' - # in the case statement below. - case "$host" in - *-*-linux-android*) - ac_sys_system=Linux-android - ;; - *-*-linux*) - ac_sys_system=Linux - ;; - *-*-cygwin*) - ac_sys_system=Cygwin - ;; - *-apple-ios*) - ac_sys_system=iOS - ;; - *-*-darwin*) - ac_sys_system=Darwin - ;; - *-*-vxworks*) - ac_sys_system=VxWorks - ;; - *-*-emscripten) - ac_sys_system=Emscripten - ;; - *-*-wasi*) - ac_sys_system=WASI - ;; - *) - # for now, limit cross builds to known configurations - MACHDEP="unknown" - as_fn_error $? "cross build not supported for $host" "$LINENO" 5 - esac - ac_sys_release= - else - ac_sys_system=`uname -s` - if test "$ac_sys_system" = "AIX" \ - -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then - ac_sys_release=`uname -v` - else - ac_sys_release=`uname -r` - fi - fi - ac_md_system=`echo $ac_sys_system | - tr -d '/ ' | tr '[A-Z]' '[a-z]'` - ac_md_release=`echo $ac_sys_release | - tr -d '/ ' | sed 's/^[A-Z]\.//' | sed 's/\..*//'` - MACHDEP="$ac_md_system$ac_md_release" - - case $MACHDEP in - aix*) MACHDEP="aix";; - freebsd*) MACHDEP="freebsd";; - linux-android*) MACHDEP="android";; - linux*) MACHDEP="linux";; - cygwin*) MACHDEP="cygwin";; - darwin*) MACHDEP="darwin";; - '') MACHDEP="unknown";; - esac - - if test "$ac_sys_system" = "SunOS"; then - # For Solaris, there isn't an OS version specific macro defined - # in most compilers, so we define one here. - SUNOS_VERSION=`echo $ac_sys_release | sed -e 's!\.\(0-9\)$!.0\1!g' | tr -d '.'` - -printf "%s\n" "#define Py_SUNOS_VERSION $SUNOS_VERSION" >>confdefs.h - - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$MACHDEP\"" >&5 -printf "%s\n" "\"$MACHDEP\"" >&6; } - - -if test -z "$host_prefix"; then - case $ac_sys_system in #( - Emscripten) : - host_prefix=/ ;; #( - *) : - host_prefix='${prefix}' - ;; -esac -fi - - -if test -z "$host_exec_prefix"; then - case $ac_sys_system in #( - Emscripten) : - host_exec_prefix=$host_prefix ;; #( - *) : - host_exec_prefix='${exec_prefix}' - ;; -esac -fi - - -# On cross-compile builds, configure will look for a host-specific compiler by -# prepending the user-provided host triple to the required binary name. -# -# On iOS, this results in binaries like "arm64-apple-ios13.0-simulator-gcc", -# which isn't a binary that exists, and isn't very convenient, as it contains the -# iOS version. As the default cross-compiler name won't exist, configure falls -# back to gcc, which *definitely* won't work. We're providing wrapper scripts for -# these tools; the binary names of these scripts are better defaults than "gcc". -# This only requires that the user put the platform scripts folder (e.g., -# "iOS/Resources/bin") in their path, rather than defining platform-specific -# names/paths for AR, CC, CPP, and CXX explicitly; and if the user forgets to -# either put the platform scripts folder in the path, or specify CC etc, -# configure will fail. -if test -z "$AR"; then - case "$host" in - aarch64-apple-ios*-simulator) AR=arm64-apple-ios-simulator-ar ;; - aarch64-apple-ios*) AR=arm64-apple-ios-ar ;; - x86_64-apple-ios*-simulator) AR=x86_64-apple-ios-simulator-ar ;; - *) - esac -fi -if test -z "$CC"; then - case "$host" in - aarch64-apple-ios*-simulator) CC=arm64-apple-ios-simulator-clang ;; - aarch64-apple-ios*) CC=arm64-apple-ios-clang ;; - x86_64-apple-ios*-simulator) CC=x86_64-apple-ios-simulator-clang ;; - *) - esac -fi -if test -z "$CPP"; then - case "$host" in - aarch64-apple-ios*-simulator) CPP=arm64-apple-ios-simulator-cpp ;; - aarch64-apple-ios*) CPP=arm64-apple-ios-cpp ;; - x86_64-apple-ios*-simulator) CPP=x86_64-apple-ios-simulator-cpp ;; - *) - esac -fi -if test -z "$CXX"; then - case "$host" in - aarch64-apple-ios*-simulator) CXX=arm64-apple-ios-simulator-clang++ ;; - aarch64-apple-ios*) CXX=arm64-apple-ios-clang++ ;; - x86_64-apple-ios*-simulator) CXX=x86_64-apple-ios-simulator-clang++ ;; - *) - esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-universalsdk" >&5 -printf %s "checking for --enable-universalsdk... " >&6; } -# Check whether --enable-universalsdk was given. -if test ${enable_universalsdk+y} -then : - enableval=$enable_universalsdk; - case $enableval in - yes) - # Locate the best usable SDK, see Mac/README for more - # information - enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`" - if ! ( echo $enableval | grep -E '\.sdk' 1>/dev/null ) - then - enableval=/Developer/SDKs/MacOSX10.4u.sdk - if test ! -d "${enableval}" - then - enableval=/ - fi - fi - ;; - esac - case $enableval in - no) - UNIVERSALSDK= - enable_universalsdk= - ;; - *) - UNIVERSALSDK=$enableval - if test ! -d "${UNIVERSALSDK}" - then - as_fn_error $? "--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}" "$LINENO" 5 - fi - ;; - esac - - -else case e in #( - e) - UNIVERSALSDK= - enable_universalsdk= - ;; -esac -fi - -if test -n "${UNIVERSALSDK}" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${UNIVERSALSDK}" >&5 -printf "%s\n" "${UNIVERSALSDK}" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - -ARCH_RUN_32BIT="" - -# For backward compatibility reasons we prefer to select '32-bit' if available, -# otherwise use 'intel' -UNIVERSAL_ARCHS="32-bit" -if test "`uname -s`" = "Darwin" -then - if test -n "${UNIVERSALSDK}" - then - if test -z "`/usr/bin/file -L "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`" - then - UNIVERSAL_ARCHS="intel" - fi - fi -fi - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-universal-archs" >&5 -printf %s "checking for --with-universal-archs... " >&6; } - -# Check whether --with-universal-archs was given. -if test ${with_universal_archs+y} -then : - withval=$with_universal_archs; - UNIVERSAL_ARCHS="$withval" - -fi - -if test -n "${UNIVERSALSDK}" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${UNIVERSAL_ARCHS}" >&5 -printf "%s\n" "${UNIVERSAL_ARCHS}" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -# Check whether --with-framework-name was given. -if test ${with_framework_name+y} -then : - withval=$with_framework_name; - PYTHONFRAMEWORK=${withval} - PYTHONFRAMEWORKDIR=${withval}.framework - PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr 'A-Z' 'a-z'` - -else case e in #( - e) - PYTHONFRAMEWORK=Python - PYTHONFRAMEWORKDIR=Python.framework - PYTHONFRAMEWORKIDENTIFIER=org.python.python - ;; -esac -fi - -# Check whether --enable-framework was given. -if test ${enable_framework+y} -then : - enableval=$enable_framework; - case $enableval in - yes) - case $ac_sys_system in - Darwin) enableval=/Library/Frameworks ;; - iOS) enableval=Apple/iOS/Frameworks/\$\(MULTIARCH\) ;; - *) as_fn_error $? "Unknown platform for framework build" "$LINENO" 5 - esac - esac - - case $enableval in - no) - case $ac_sys_system in - iOS) as_fn_error $? "iOS builds must use --enable-framework" "$LINENO" 5 ;; - *) - PYTHONFRAMEWORK= - PYTHONFRAMEWORKDIR=no-framework - PYTHONFRAMEWORKPREFIX= - PYTHONFRAMEWORKINSTALLDIR= - PYTHONFRAMEWORKINSTALLNAMEPREFIX= - RESSRCDIR= - FRAMEWORKINSTALLFIRST= - FRAMEWORKINSTALLLAST= - FRAMEWORKALTINSTALLFIRST= - FRAMEWORKALTINSTALLLAST= - FRAMEWORKPYTHONW= - INSTALLTARGETS="commoninstall bininstall maninstall" - - if test "x${prefix}" = "xNONE"; then - FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" - else - FRAMEWORKUNIXTOOLSPREFIX="${prefix}" - fi - enable_framework= - esac - ;; - *) - PYTHONFRAMEWORKPREFIX="${enableval}" - PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR - - case $ac_sys_system in #( - Darwin) : - FRAMEWORKINSTALLFIRST="frameworkinstallversionedstructure" - FRAMEWORKALTINSTALLFIRST="frameworkinstallversionedstructure " - FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools" - FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools" - FRAMEWORKPYTHONW="frameworkpythonw" - FRAMEWORKINSTALLAPPSPREFIX="/Applications" - INSTALLTARGETS="commoninstall bininstall maninstall" - - if test "x${prefix}" = "xNONE" ; then - FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" - - else - FRAMEWORKUNIXTOOLSPREFIX="${prefix}" - fi - - case "${enableval}" in - /System*) - FRAMEWORKINSTALLAPPSPREFIX="/Applications" - if test "${prefix}" = "NONE" ; then - # See below - FRAMEWORKUNIXTOOLSPREFIX="/usr" - fi - ;; - - /Library*) - FRAMEWORKINSTALLAPPSPREFIX="/Applications" - ;; - - */Library/Frameworks) - MDIR="`dirname "${enableval}"`" - MDIR="`dirname "${MDIR}"`" - FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications" - - if test "${prefix}" = "NONE"; then - # User hasn't specified the - # --prefix option, but wants to install - # the framework in a non-default location, - # ensure that the compatibility links get - # installed relative to that prefix as well - # instead of in /usr/local. - FRAMEWORKUNIXTOOLSPREFIX="${MDIR}" - fi - ;; - - *) - FRAMEWORKINSTALLAPPSPREFIX="/Applications" - ;; - esac - - prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION - PYTHONFRAMEWORKINSTALLNAMEPREFIX=${prefix} - RESSRCDIR=Mac/Resources/framework - - # Add files for Mac specific code to the list of output - # files: - ac_config_files="$ac_config_files Mac/Makefile" - - ac_config_files="$ac_config_files Mac/PythonLauncher/Makefile" - - ac_config_files="$ac_config_files Mac/Resources/framework/Info.plist" - - ac_config_files="$ac_config_files Mac/Resources/app/Info.plist" - - ;; - iOS) : - FRAMEWORKINSTALLFIRST="frameworkinstallunversionedstructure" - FRAMEWORKALTINSTALLFIRST="frameworkinstallunversionedstructure " - FRAMEWORKINSTALLLAST="frameworkinstallmobileheaders" - FRAMEWORKALTINSTALLLAST="frameworkinstallmobileheaders" - FRAMEWORKPYTHONW= - INSTALLTARGETS="libinstall inclinstall sharedinstall" - - prefix=$PYTHONFRAMEWORKPREFIX - PYTHONFRAMEWORKINSTALLNAMEPREFIX="@rpath/$PYTHONFRAMEWORKDIR" - RESSRCDIR=Apple/iOS/Resources - - ac_config_files="$ac_config_files Apple/iOS/Resources/Info.plist" - - ;; - *) - as_fn_error $? "Unknown platform for framework build" "$LINENO" 5 - ;; - esac - esac - -else case e in #( - e) - case $ac_sys_system in - iOS) as_fn_error $? "iOS builds must use --enable-framework" "$LINENO" 5 ;; - *) - PYTHONFRAMEWORK= - PYTHONFRAMEWORKDIR=no-framework - PYTHONFRAMEWORKPREFIX= - PYTHONFRAMEWORKINSTALLDIR= - PYTHONFRAMEWORKINSTALLNAMEPREFIX= - RESSRCDIR= - FRAMEWORKINSTALLFIRST= - FRAMEWORKINSTALLLAST= - FRAMEWORKALTINSTALLFIRST= - FRAMEWORKALTINSTALLLAST= - FRAMEWORKPYTHONW= - INSTALLTARGETS="commoninstall bininstall maninstall" - if test "x${prefix}" = "xNONE" ; then - FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" - else - FRAMEWORKUNIXTOOLSPREFIX="${prefix}" - fi - enable_framework= - esac - ;; -esac -fi - - - - - - - - - - - - - - - - - - -printf "%s\n" "#define _PYTHONFRAMEWORK \"${PYTHONFRAMEWORK}\"" >>confdefs.h - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-app-store-compliance" >&5 -printf %s "checking for --with-app-store-compliance... " >&6; } - -# Check whether --with-app_store_compliance was given. -if test ${with_app_store_compliance+y} -then : - withval=$with_app_store_compliance; - case "$withval" in - yes) - case $ac_sys_system in - Darwin|iOS) - # iOS is able to share the macOS patch - APP_STORE_COMPLIANCE_PATCH="Mac/Resources/app-store-compliance.patch" - ;; - *) as_fn_error $? "no default app store compliance patch available for $ac_sys_system" "$LINENO" 5 ;; - esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: applying default app store compliance patch" >&5 -printf "%s\n" "applying default app store compliance patch" >&6; } - ;; - *) - APP_STORE_COMPLIANCE_PATCH="${withval}" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: applying custom app store compliance patch" >&5 -printf "%s\n" "applying custom app store compliance patch" >&6; } - ;; - esac - -else case e in #( - e) - case $ac_sys_system in - iOS) - # Always apply the compliance patch on iOS; we can use the macOS patch - APP_STORE_COMPLIANCE_PATCH="Mac/Resources/app-store-compliance.patch" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: applying default app store compliance patch" >&5 -printf "%s\n" "applying default app store compliance patch" >&6; } - ;; - *) - # No default app compliance patching on any other platform - APP_STORE_COMPLIANCE_PATCH= - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not patching for app store compliance" >&5 -printf "%s\n" "not patching for app store compliance" >&6; } - ;; - esac - ;; -esac -fi - - - - -if test "$cross_compiling" = yes; then - case "$host" in - *-*-linux*) - case "$host_cpu" in - arm*) - _host_ident=arm - ;; - *) - _host_ident=$host_cpu - esac - ;; - *-*-cygwin*) - _host_ident= - ;; - *-apple-ios*) - _host_os=`echo $host | cut -d '-' -f3` - _host_device=`echo $host | cut -d '-' -f4` - _host_device=${_host_device:=os} - - # IPHONEOS_DEPLOYMENT_TARGET is the minimum supported iOS version - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking iOS deployment target" >&5 -printf %s "checking iOS deployment target... " >&6; } - IPHONEOS_DEPLOYMENT_TARGET=$(echo ${_host_os} | cut -c4-) - IPHONEOS_DEPLOYMENT_TARGET=${IPHONEOS_DEPLOYMENT_TARGET:=13.0} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $IPHONEOS_DEPLOYMENT_TARGET" >&5 -printf "%s\n" "$IPHONEOS_DEPLOYMENT_TARGET" >&6; } - - case "$host_cpu" in - aarch64) - _host_ident=${IPHONEOS_DEPLOYMENT_TARGET}-arm64-iphone${_host_device} - ;; - *) - _host_ident=${IPHONEOS_DEPLOYMENT_TARGET}-$host_cpu-iphone${_host_device} - ;; - esac - ;; - *-*-darwin*) - case "$host_cpu" in - arm*) - _host_ident=arm - ;; - *) - _host_ident=$host_cpu - esac - ;; - *-*-vxworks*) - _host_ident=$host_cpu - ;; - *-*-emscripten) - _host_ident=$(emcc -dumpversion | cut -f1 -d-)-$host_cpu - ;; - wasm32-*-* | wasm64-*-*) - _host_ident=$host_cpu - ;; - *) - # for now, limit cross builds to known configurations - MACHDEP="unknown" - as_fn_error $? "cross build not supported for $host" "$LINENO" 5 - esac - _PYTHON_HOST_PLATFORM="$MACHDEP${_host_ident:+-$_host_ident}" -fi - -# Some systems cannot stand _XOPEN_SOURCE being defined at all; they -# disable features if it is defined, without any means to access these -# features as extensions. For these systems, we skip the definition of -# _XOPEN_SOURCE. Before adding a system to the list to gain access to -# some feature, make sure there is no alternative way to access this -# feature. Also, when using wildcards, make sure you have verified the -# need for not defining _XOPEN_SOURCE on all systems matching the -# wildcard, and that the wildcard does not include future systems -# (which may remove their limitations). -case $ac_sys_system/$ac_sys_release in - # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined, - # even though select is a POSIX function. Reported by J. Ribbens. - # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish. - # In addition, Stefan Krah confirms that issue #1244610 exists through - # OpenBSD 4.6, but is fixed in 4.7. - OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.[0123456]) - define_xopen_source=no - # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is - # also defined. This can be overridden by defining _BSD_SOURCE - # As this has a different meaning on Linux, only define it on OpenBSD - -printf "%s\n" "#define _BSD_SOURCE 1" >>confdefs.h - - ;; - OpenBSD/*) - # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is - # also defined. This can be overridden by defining _BSD_SOURCE - # As this has a different meaning on Linux, only define it on OpenBSD - -printf "%s\n" "#define _BSD_SOURCE 1" >>confdefs.h - - ;; - # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of - # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by - # Marc Recht - NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6[A-S]) - define_xopen_source=no;; - # From the perspective of Solaris, _XOPEN_SOURCE is not so much a - # request to enable features supported by the standard as a request - # to disable features not supported by the standard. The best way - # for Python to use Solaris is simply to leave _XOPEN_SOURCE out - # entirely and define __EXTENSIONS__ instead. - SunOS/*) - define_xopen_source=no;; - # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE, - # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice. - # Reconfirmed for 7.1.4 by Martin v. Loewis. - OpenUNIX/8.0.0| UnixWare/7.1.[0-4]) - define_xopen_source=no;; - # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE, - # but used in struct sockaddr.sa_family. Reported by Tim Rice. - SCO_SV/3.2) - define_xopen_source=no;; - # On MacOS X 10.2, a bug in ncurses.h means that it craps out if - # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which - # identifies itself as Darwin/7.* - # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE - # disables platform specific features beyond repair. - # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE - # has no effect, don't bother defining them - Darwin/[6789].*) - define_xopen_source=no;; - Darwin/[12][0-9].*) - define_xopen_source=no;; - # On iOS, defining _POSIX_C_SOURCE also disables platform specific features. - iOS/*) - define_xopen_source=no;; - # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from - # defining NI_NUMERICHOST. - QNX/6.3.2) - define_xopen_source=no - ;; - # On VxWorks, defining _XOPEN_SOURCE causes compile failures - # in network headers still using system V types. - VxWorks/*) - define_xopen_source=no - ;; - - # On HP-UX, defining _XOPEN_SOURCE to 600 or greater hides - # chroot() and other functions - hp*|HP*) - define_xopen_source=no - ;; - -esac - -if test $define_xopen_source = yes -then - # X/Open 8, incorporating POSIX.1-2024 - -printf "%s\n" "#define _XOPEN_SOURCE 800" >>confdefs.h - - - # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires - # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else - # several APIs are not declared. Since this is also needed in some - # cases for HP-UX, we define it globally. - -printf "%s\n" "#define _XOPEN_SOURCE_EXTENDED 1" >>confdefs.h - - - -printf "%s\n" "#define _POSIX_C_SOURCE 202405L" >>confdefs.h - -fi - -# On HP-UX mbstate_t requires _INCLUDE__STDC_A1_SOURCE -case $ac_sys_system in - hp*|HP*) - define_stdc_a1=yes;; - *) - define_stdc_a1=no;; -esac - -if test $define_stdc_a1 = yes -then - -printf "%s\n" "#define _INCLUDE__STDC_A1_SOURCE 1" >>confdefs.h - -fi - -# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET, -# it may influence the way we can build extensions, so distutils -# needs to check it - - -CONFIGURE_MACOSX_DEPLOYMENT_TARGET= -EXPORT_MACOSX_DEPLOYMENT_TARGET='#' - -# Record the value of IPHONEOS_DEPLOYMENT_TARGET enforced by the selected host triple. - - -# checks for alternative programs - -# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just -# for debug/optimization stuff. BASECFLAGS is for flags that are required -# just to get things to compile and link. Users are free to override OPT -# when running configure or make. The build should not break if they do. -# BASECFLAGS should generally not be messed with, however. - -# If the user switches compilers, we can't believe the cache -if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC" -then - as_fn_error $? "cached CC is different -- throw away $cache_file -(it is also a good idea to do 'make clean' before compiling)" "$LINENO" 5 -fi - -# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2 -# when the compiler supports them, but we don't always want -O2, and -# we set -g later. -if test -z "$CFLAGS"; then - CFLAGS= -fi - -case $host in #( - wasm64-*-emscripten) : - - as_fn_append CFLAGS " -sMEMORY64=1" - as_fn_append LDFLAGS " -sMEMORY64=1" - ;; #( - *) : - ;; -esac - -case $ac_sys_system in #( - iOS) : - - as_fn_append CFLAGS " -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}" - as_fn_append LDFLAGS " -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}" - ;; #( - *) : - ;; -esac - -if test "$ac_sys_system" = "Darwin" -then - # Extract the first word of "xcrun", so it can be a program name with args. -set dummy xcrun; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_HAS_XCRUN+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$HAS_XCRUN"; then - ac_cv_prog_HAS_XCRUN="$HAS_XCRUN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_HAS_XCRUN="yes" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_prog_HAS_XCRUN" && ac_cv_prog_HAS_XCRUN="missing" -fi ;; -esac -fi -HAS_XCRUN=$ac_cv_prog_HAS_XCRUN -if test -n "$HAS_XCRUN"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAS_XCRUN" >&5 -printf "%s\n" "$HAS_XCRUN" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking macOS SDKROOT" >&5 -printf %s "checking macOS SDKROOT... " >&6; } - if test -z "$SDKROOT"; then - if test "$HAS_XCRUN" = "yes"; then - SDKROOT=$(xcrun --show-sdk-path) - else - SDKROOT="/" - fi - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SDKROOT" >&5 -printf "%s\n" "$SDKROOT" >&6; } - - # Compiler selection on MacOSX is more complicated than - # AC_PROG_CC can handle, see Mac/README for more - # information - if test -z "${CC}" - then - found_gcc= - found_clang= - as_save_IFS=$IFS; IFS=: - for as_dir in $PATH - do - IFS=$as_save_IFS - if test -x "${as_dir}/gcc"; then - if test -z "${found_gcc}"; then - found_gcc="${as_dir}/gcc" - fi - fi - if test -x "${as_dir}/clang"; then - if test -z "${found_clang}"; then - found_clang="${as_dir}/clang" - fi - fi - done - IFS=$as_save_IFS - - if test -n "$found_gcc" -a -n "$found_clang" - then - if test -n "`"$found_gcc" --version | grep llvm-gcc`" - then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Detected llvm-gcc, falling back to clang" >&5 -printf "%s\n" "$as_me: Detected llvm-gcc, falling back to clang" >&6;} - CC="$found_clang" - CXX="$found_clang++" - fi - - - elif test -z "$found_gcc" -a -n "$found_clang" - then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: No GCC found, use CLANG" >&5 -printf "%s\n" "$as_me: No GCC found, use CLANG" >&6;} - CC="$found_clang" - CXX="$found_clang++" - - elif test -z "$found_gcc" -a -z "$found_clang" - then - found_clang=`/usr/bin/xcrun -find clang 2>/dev/null` - if test -n "${found_clang}" - then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Using clang from Xcode.app" >&5 -printf "%s\n" "$as_me: Using clang from Xcode.app" >&6;} - CC="${found_clang}" - CXX="`/usr/bin/xcrun -find clang++`" - - # else: use default behaviour - fi - fi - fi -fi - - - - - - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" - fi -fi -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. -set dummy ${ac_tool_prefix}clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "clang", so it can be a program name with args. -set dummy clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -fi - - -test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See 'config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion -version; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -printf %s "checking whether the C compiler works... " >&6; } -ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. -# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an '-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else case e in #( - e) ac_file='' ;; -esac -fi -if test -z "$ac_file" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See 'config.log' for more details" "$LINENO" 5; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -printf %s "checking for C compiler default output file name... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -printf "%s\n" "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -printf %s "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) -# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will -# work properly (i.e., refer to 'conftest.exe'), while it won't with -# 'rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See 'config.log' for more details" "$LINENO" 5; } ;; -esac -fi -rm -f conftest conftest$ac_cv_exeext -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -printf "%s\n" "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -FILE *f = fopen ("conftest.out", "w"); - if (!f) - return 1; - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -printf %s "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot run C compiled programs. -If you meant to cross compile, use '--host'. -See 'config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -printf "%s\n" "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext \ - conftest.o conftest.obj conftest.out -ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -printf %s "checking for suffix of object files... " >&6; } -if test ${ac_cv_objext+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See 'config.log' for more details" "$LINENO" 5; } ;; -esac -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -printf "%s\n" "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 -printf %s "checking whether the compiler supports GNU C... " >&6; } -if test ${ac_cv_c_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_compiler_gnu=yes -else case e in #( - e) ac_compiler_gnu=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+y} -ac_save_CFLAGS=$CFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -printf %s "checking whether $CC accepts -g... " >&6; } -if test ${ac_cv_prog_cc_g+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -else case e in #( - e) CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else case e in #( - e) ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -printf "%s\n" "$ac_cv_prog_cc_g" >&6; } -if test $ac_test_CFLAGS; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -ac_prog_cc_stdc=no -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 -printf %s "checking for $CC option to enable C11 features... " >&6; } -if test ${ac_cv_prog_cc_c11+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c11=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c11_program -_ACEOF -for ac_arg in '' -std=gnu11 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c11" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi - -if test "x$ac_cv_prog_cc_c11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 -printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } - CC="$CC $ac_cv_prog_cc_c11" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 ;; -esac -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 -printf %s "checking for $CC option to enable C99 features... " >&6; } -if test ${ac_cv_prog_cc_c99+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c99_program -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi - -if test "x$ac_cv_prog_cc_c99" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c99" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } - CC="$CC $ac_cv_prog_cc_c99" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 ;; -esac -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 -printf %s "checking for $CC option to enable C89 features... " >&6; } -if test ${ac_cv_prog_cc_c89+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c89_program -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi - -if test "x$ac_cv_prog_cc_c89" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c89" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } - CC="$CC $ac_cv_prog_cc_c89" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 ;; -esac -fi -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -printf %s "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test ${ac_cv_prog_CPP+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) # Double quotes because $CC needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - -else case e in #( - e) # Broken: fails on valid input. -continue ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - # Broken: success on invalid input. -continue -else case e in #( - e) # Passes both tests. -ac_preproc_ok=: -break ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok -then : - break -fi - - done - ac_cv_prog_CPP=$CPP - ;; -esac -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -printf "%s\n" "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - -else case e in #( - e) # Broken: fails on valid input. -continue ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - # Broken: success on invalid input. -continue -else case e in #( - e) # Passes both tests. -ac_preproc_ok=: -break ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok -then : - -else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See 'config.log' for more details" "$LINENO" 5; } ;; -esac -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -printf %s "checking for grep that handles long lines and -e... " >&6; } -if test ${ac_cv_path_GREP+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in grep ggrep - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in #( -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -#( -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -printf "%s\n" "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -printf %s "checking for a sed that does not truncate output... " >&6; } -if test ${ac_cv_path_SED+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in sed gsed - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in #( -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -#( -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -printf "%s\n" "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -printf %s "checking for egrep... " >&6; } -if test ${ac_cv_path_EGREP+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in egrep - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in #( -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -#( -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -printf "%s\n" "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - EGREP_TRADITIONAL=$EGREP - ac_cv_path_EGREP_TRADITIONAL=$EGREP - - -CC_BASENAME=$(expr "//$CC" : '.*/\(.*\)') - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CC compiler name" >&5 -printf %s "checking for CC compiler name... " >&6; } -if test ${ac_cv_cc_name+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat > conftest.c <conftest.out 2>/dev/null; then - ac_cv_cc_name=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '` - if test "x$CC_BASENAME" = xmpicc -then : - ac_cv_cc_name=mpicc -fi -else - ac_cv_cc_name="unknown" -fi -rm -f conftest.c conftest.out - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_name" >&5 -printf "%s\n" "$ac_cv_cc_name" >&6; } - -# checks for UNIX variants that set C preprocessor variables -# may set _GNU_SOURCE, __EXTENSIONS__, _POSIX_PTHREAD_SEMANTICS, -# _POSIX_SOURCE, _POSIX_1_SOURCE, and more - -ac_header= ac_cache= -for ac_item in $ac_header_c_list -do - if test $ac_cache; then - ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" - if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then - printf "%s\n" "#define $ac_item 1" >> confdefs.h - fi - ac_header= ac_cache= - elif test $ac_header; then - ac_cache=$ac_item - else - ac_header=$ac_item - fi -done - - - - - - - - -if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes -then : - -printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h - -fi - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if test ${ac_cv_safe_to_define___extensions__+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_safe_to_define___extensions__=yes -else case e in #( - e) ac_cv_safe_to_define___extensions__=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 -printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } -if test ${ac_cv_should_define__xopen_source+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_should_define__xopen_source=no - if test $ac_cv_header_wchar_h = yes -then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - mbstate_t x; -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #define _XOPEN_SOURCE 500 - #include - mbstate_t x; -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_should_define__xopen_source=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 -printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } - - printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h - - printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h - - printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h - - printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h - - printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h - - printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h - - printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - - printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h - - printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h - - printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h - - printf "%s\n" "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h - - printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h - - printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h - - printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h - - printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h - - printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h - - if test $ac_cv_header_minix_config_h = yes -then : - MINIX=yes - printf "%s\n" "#define _MINIX 1" >>confdefs.h - - printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h - - printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h - -else case e in #( - e) MINIX= ;; -esac -fi - if test $ac_cv_safe_to_define___extensions__ = yes -then : - printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h - -fi - if test $ac_cv_should_define__xopen_source = yes -then : - printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h - -fi - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GCC compatible compiler" >&5 -printf %s "checking for GCC compatible compiler... " >&6; } -if test ${ac_cv_gcc_compat+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #if !defined(__GNUC__) - #error "not GCC compatible" - #else - /* GCC compatible! */ - #endif - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - ac_cv_gcc_compat=yes -else case e in #( - e) ac_cv_gcc_compat=no ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_compat" >&5 -printf "%s\n" "$ac_cv_gcc_compat" >&6; } - - - -preset_cxx="$CXX" -if test -z "$CXX" -then - case "$ac_cv_cc_name" in - gcc) if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}g++", so it can be a program name with args. -set dummy ${ac_tool_prefix}g++; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_CXX="$CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in notfound -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -CXX=$ac_cv_path_CXX -if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_CXX"; then - ac_pt_CXX=$CXX - # Extract the first word of "g++", so it can be a program name with args. -set dummy g++; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $ac_pt_CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in notfound -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -ac_pt_CXX=$ac_cv_path_ac_pt_CXX -if test -n "$ac_pt_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5 -printf "%s\n" "$ac_pt_CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_pt_CXX - fi -else - CXX="$ac_cv_path_CXX" -fi - ;; - cc) if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}c++", so it can be a program name with args. -set dummy ${ac_tool_prefix}c++; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_CXX="$CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in notfound -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -CXX=$ac_cv_path_CXX -if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_CXX"; then - ac_pt_CXX=$CXX - # Extract the first word of "c++", so it can be a program name with args. -set dummy c++; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $ac_pt_CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in notfound -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -ac_pt_CXX=$ac_cv_path_ac_pt_CXX -if test -n "$ac_pt_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5 -printf "%s\n" "$ac_pt_CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_CXX" = x; then - CXX="c++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_pt_CXX - fi -else - CXX="$ac_cv_path_CXX" -fi - ;; - clang) if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}clang++", so it can be a program name with args. -set dummy ${ac_tool_prefix}clang++; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_CXX="$CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in notfound -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -CXX=$ac_cv_path_CXX -if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_CXX"; then - ac_pt_CXX=$CXX - # Extract the first word of "clang++", so it can be a program name with args. -set dummy clang++; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $ac_pt_CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in notfound -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -ac_pt_CXX=$ac_cv_path_ac_pt_CXX -if test -n "$ac_pt_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5 -printf "%s\n" "$ac_pt_CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_CXX" = x; then - CXX="clang++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_pt_CXX - fi -else - CXX="$ac_cv_path_CXX" -fi - ;; - icc) if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}icpc", so it can be a program name with args. -set dummy ${ac_tool_prefix}icpc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_CXX="$CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in notfound -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -CXX=$ac_cv_path_CXX -if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_CXX"; then - ac_pt_CXX=$CXX - # Extract the first word of "icpc", so it can be a program name with args. -set dummy icpc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $ac_pt_CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in notfound -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -ac_pt_CXX=$ac_cv_path_ac_pt_CXX -if test -n "$ac_pt_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5 -printf "%s\n" "$ac_pt_CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_CXX" = x; then - CXX="icpc" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_pt_CXX - fi -else - CXX="$ac_cv_path_CXX" -fi - ;; - esac - if test "$CXX" = "notfound" - then - CXX="" - fi -fi -if test -z "$CXX" -then - if test -n "$ac_tool_prefix"; then - for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -printf "%s\n" "$ac_ct_CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="notfound" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - if test "$CXX" = "notfound" - then - CXX="" - fi -fi -if test "$preset_cxx" != "$CXX" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: - - By default, distutils will build C++ extension modules with \"$CXX\". - If this is not intended, then set CXX on the configure command line. - " >&5 -printf "%s\n" "$as_me: - - By default, distutils will build C++ extension modules with \"$CXX\". - If this is not intended, then set CXX on the configure command line. - " >&6;} -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the platform triplet based on compiler characteristics" >&5 -printf %s "checking for the platform triplet based on compiler characteristics... " >&6; } -if $CPP $CPPFLAGS $srcdir/Misc/platform_triplet.c >conftest.out 2>/dev/null; then - PLATFORM_TRIPLET=`grep '^PLATFORM_TRIPLET=' conftest.out | tr -d ' '` - PLATFORM_TRIPLET="${PLATFORM_TRIPLET#PLATFORM_TRIPLET=}" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PLATFORM_TRIPLET" >&5 -printf "%s\n" "$PLATFORM_TRIPLET" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 -printf "%s\n" "none" >&6; } -fi -rm -f conftest.out - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for multiarch" >&5 -printf %s "checking for multiarch... " >&6; } -case $ac_sys_system in #( - Darwin*) : - MULTIARCH="" ;; #( - iOS) : - MULTIARCH="" ;; #( - FreeBSD*) : - MULTIARCH="" ;; #( - *) : - MULTIARCH=$($CC --print-multiarch 2>/dev/null) - ;; -esac - - -if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then - if test x$PLATFORM_TRIPLET != x$MULTIARCH; then - as_fn_error $? "internal configure error for the platform triplet, please file a bug report" "$LINENO" 5 - fi -elif test x$PLATFORM_TRIPLET != x && test x$MULTIARCH = x; then - MULTIARCH=$PLATFORM_TRIPLET -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MULTIARCH" >&5 -printf "%s\n" "$MULTIARCH" >&6; } - -case $ac_sys_system in #( - iOS) : - SOABI_PLATFORM=`echo "$PLATFORM_TRIPLET" | cut -d '-' -f2` ;; #( - *) : - SOABI_PLATFORM=$PLATFORM_TRIPLET - ;; -esac - -if test x$MULTIARCH != x; then - MULTIARCH_CPPFLAGS="-DMULTIARCH=\\\"$MULTIARCH\\\"" -fi - - -# Guess C stack direction -case $host in #( - hppa*) : - _Py_STACK_GROWS_DOWN=0 ;; #( - *) : - _Py_STACK_GROWS_DOWN=1 ;; -esac - -printf "%s\n" "#define _Py_STACK_GROWS_DOWN $_Py_STACK_GROWS_DOWN" >>confdefs.h - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PEP 11 support tier" >&5 -printf %s "checking for PEP 11 support tier... " >&6; } -case $host/$ac_cv_cc_name in #( - x86_64-*-linux-gnu/gcc) : - PY_SUPPORT_TIER=1 ;; #( - x86_64-apple-darwin*/clang) : - PY_SUPPORT_TIER=1 ;; #( - aarch64-apple-darwin*/clang) : - PY_SUPPORT_TIER=1 ;; #( - i686-pc-windows-msvc/msvc) : - PY_SUPPORT_TIER=1 ;; #( - x86_64-pc-windows-msvc/msvc) : - PY_SUPPORT_TIER=1 ;; #( - - aarch64-*-linux-gnu/gcc) : - PY_SUPPORT_TIER=2 ;; #( - aarch64-*-linux-gnu/clang) : - PY_SUPPORT_TIER=2 ;; #( - powerpc64le-*-linux-gnu/gcc) : - PY_SUPPORT_TIER=2 ;; #( - wasm32-unknown-wasip1/clang) : - PY_SUPPORT_TIER=2 ;; #( - x86_64-*-linux-gnu/clang) : - PY_SUPPORT_TIER=2 ;; #( - - aarch64-pc-windows-msvc/msvc) : - PY_SUPPORT_TIER=3 ;; #( - armv7l-*-linux-gnueabihf/gcc) : - PY_SUPPORT_TIER=3 ;; #( - powerpc64le-*-linux-gnu/clang) : - PY_SUPPORT_TIER=3 ;; #( - s390x-*-linux-gnu/gcc) : - PY_SUPPORT_TIER=3 ;; #( - x86_64-*-freebsd*/clang) : - PY_SUPPORT_TIER=3 ;; #( - aarch64-apple-ios*-simulator/clang) : - PY_SUPPORT_TIER=3 ;; #( - aarch64-apple-ios*/clang) : - PY_SUPPORT_TIER=3 ;; #( - aarch64-*-linux-android/clang) : - PY_SUPPORT_TIER=3 ;; #( - x86_64-*-linux-android/clang) : - PY_SUPPORT_TIER=3 ;; #( - wasm32-*-emscripten/emcc) : - PY_SUPPORT_TIER=3 ;; #( - *) : - - PY_SUPPORT_TIER=0 - ;; -esac - -case $PY_SUPPORT_TIER in #( - 1) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $host/$ac_cv_cc_name has tier 1 (supported)" >&5 -printf "%s\n" "$host/$ac_cv_cc_name has tier 1 (supported)" >&6; } ;; #( - 2) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $host/$ac_cv_cc_name has tier 2 (supported)" >&5 -printf "%s\n" "$host/$ac_cv_cc_name has tier 2 (supported)" >&6; } ;; #( - 3) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $host/$ac_cv_cc_name has tier 3 (partially supported)" >&5 -printf "%s\n" "$host/$ac_cv_cc_name has tier 3 (partially supported)" >&6; } ;; #( - *) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $host/$ac_cv_cc_name is not supported" >&5 -printf "%s\n" "$as_me: WARNING: $host/$ac_cv_cc_name is not supported" >&2;} - ;; -esac - - -printf "%s\n" "#define PY_SUPPORT_TIER $PY_SUPPORT_TIER" >>confdefs.h - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -Wl,--no-as-needed" >&5 -printf %s "checking for -Wl,--no-as-needed... " >&6; } -if test ${ac_cv_wl_no_as_needed+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - save_LDFLAGS="$LDFLAGS" - as_fn_append LDFLAGS " -Wl,--no-as-needed" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - NO_AS_NEEDED="-Wl,--no-as-needed" - ac_cv_wl_no_as_needed=yes -else case e in #( - e) NO_AS_NEEDED="" - ac_cv_wl_no_as_needed=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_wl_no_as_needed" >&5 -printf "%s\n" "$ac_cv_wl_no_as_needed" >&6; } - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the Android API level" >&5 -printf %s "checking for the Android API level... " >&6; } -cat > conftest.c <conftest.out 2>/dev/null; then - ANDROID_API_LEVEL=`sed -n -e '/__ANDROID_API__/d' -e 's/^android_api = //p' conftest.out` - _arm_arch=`sed -n -e '/__ARM_ARCH/d' -e 's/^arm_arch = //p' conftest.out` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ANDROID_API_LEVEL" >&5 -printf "%s\n" "$ANDROID_API_LEVEL" >&6; } - if test -z "$ANDROID_API_LEVEL"; then - as_fn_error $? "Fatal: you must define __ANDROID_API__" "$LINENO" 5 - fi - -printf "%s\n" "#define ANDROID_API_LEVEL $ANDROID_API_LEVEL" >>confdefs.h - - - # For __android_log_write() in Python/pylifecycle.c. - LIBS="$LIBS -llog" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the Android arm ABI" >&5 -printf %s "checking for the Android arm ABI... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $_arm_arch" >&5 -printf "%s\n" "$_arm_arch" >&6; } - if test "$_arm_arch" = 7; then - BASECFLAGS="${BASECFLAGS} -mfloat-abi=softfp -mfpu=vfpv3-d16" - LDFLAGS="${LDFLAGS} -march=armv7-a -Wl,--fix-cortex-a8" - fi -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not Android" >&5 -printf "%s\n" "not Android" >&6; } -fi -rm -f conftest.c conftest.out - -# Check for unsupported systems -case $ac_sys_system/$ac_sys_release in #( - atheos*|Linux*/1*) : - - as_fn_error $? "This system \($ac_sys_system/$ac_sys_release\) is no longer supported. See README for details." "$LINENO" 5 - - ;; #( - *) : - ;; -esac - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-wasm-dynamic-linking" >&5 -printf %s "checking for --enable-wasm-dynamic-linking... " >&6; } -# Check whether --enable-wasm-dynamic-linking was given. -if test ${enable_wasm_dynamic_linking+y} -then : - enableval=$enable_wasm_dynamic_linking; - case $ac_sys_system in #( - Emscripten) : - ;; #( - WASI) : - ;; #( - *) : - as_fn_error $? "--enable-wasm-dynamic-linking only applies to Emscripten and WASI" "$LINENO" 5 - ;; -esac - -else case e in #( - e) - enable_wasm_dynamic_linking=missing - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_wasm_dynamic_linking" >&5 -printf "%s\n" "$enable_wasm_dynamic_linking" >&6; } - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-wasm-pthreads" >&5 -printf %s "checking for --enable-wasm-pthreads... " >&6; } -# Check whether --enable-wasm-pthreads was given. -if test ${enable_wasm_pthreads+y} -then : - enableval=$enable_wasm_pthreads; - case $ac_sys_system in #( - Emscripten) : - ;; #( - WASI) : - ;; #( - *) : - as_fn_error $? "--enable-wasm-pthreads only applies to Emscripten and WASI" "$LINENO" 5 - ;; -esac - -else case e in #( - e) - enable_wasm_pthreads=missing - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_wasm_pthreads" >&5 -printf "%s\n" "$enable_wasm_pthreads" >&6; } - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-suffix" >&5 -printf %s "checking for --with-suffix... " >&6; } - -# Check whether --with-suffix was given. -if test ${with_suffix+y} -then : - withval=$with_suffix; - case $with_suffix in #( - no) : - EXEEXT= ;; #( - yes) : - EXEEXT=.exe ;; #( - *) : - EXEEXT=$with_suffix - ;; -esac - -else case e in #( - e) - case $ac_sys_system in #( - Emscripten) : - EXEEXT=.mjs ;; #( - WASI) : - EXEEXT=.wasm ;; #( - *) : - EXEEXT= - ;; -esac - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EXEEXT" >&5 -printf "%s\n" "$EXEEXT" >&6; } - -# Make sure we keep EXEEXT and ac_exeext sync'ed. -ac_exeext=$EXEEXT - -# Test whether we're running on a non-case-sensitive system, in which -# case we give a warning if no ext is given - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for case-insensitive build directory" >&5 -printf %s "checking for case-insensitive build directory... " >&6; } -if test ! -d CaseSensitiveTestDir; then -mkdir CaseSensitiveTestDir -fi - -if test -d casesensitivetestdir && test -z "$EXEEXT" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - BUILDEXEEXT=.exe -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - BUILDEXEEXT=$EXEEXT -fi -rmdir CaseSensitiveTestDir - -case $ac_sys_system in -hp*|HP*) - case $ac_cv_cc_name in - cc|*/cc) CC="$CC -Ae";; - esac;; -esac - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LIBRARY" >&5 -printf %s "checking LIBRARY... " >&6; } -if test -z "$LIBRARY" -then - LIBRARY='libpython$(VERSION)$(ABIFLAGS).a' -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBRARY" >&5 -printf "%s\n" "$LIBRARY" >&6; } - -# LDLIBRARY is the name of the library to link against (as opposed to the -# name of the library into which to insert object files). BLDLIBRARY is also -# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY -# is blank as the main program is not linked directly against LDLIBRARY. -# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On -# systems without shared libraries, LDLIBRARY is the same as LIBRARY -# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library, -# DLLLIBRARY is the shared (i.e., DLL) library. -# -# RUNSHARED is used to run shared python without installed libraries -# -# INSTSONAME is the name of the shared library that will be use to install -# on the system - some systems like version suffix, others don't -# -# LDVERSION is the shared library version number, normally the Python version -# with the ABI build flags appended. - - - - - - - - -LDLIBRARY="$LIBRARY" -BLDLIBRARY='$(LDLIBRARY)' -INSTSONAME='$(LDLIBRARY)' -DLLLIBRARY='' -LDLIBRARYDIR='' -RUNSHARED='' -LDVERSION="$VERSION" - -# LINKCC is the command that links the python executable -- default is $(CC). -# If CXX is set, and if it is needed to link a main function that was -# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable: -# python might then depend on the C++ runtime - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LINKCC" >&5 -printf %s "checking LINKCC... " >&6; } -if test -z "$LINKCC" -then - LINKCC='$(PURIFY) $(CC)' - case $ac_sys_system in - QNX*) - # qcc must be used because the other compilers do not - # support -N. - LINKCC=qcc;; - esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LINKCC" >&5 -printf "%s\n" "$LINKCC" >&6; } - -# EXPORTSYMS holds the list of exported symbols for AIX. -# EXPORTSFROM holds the module name exporting symbols on AIX. -EXPORTSYMS= -EXPORTSFROM= - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking EXPORTSYMS" >&5 -printf %s "checking EXPORTSYMS... " >&6; } -case $ac_sys_system in -AIX*) - EXPORTSYMS="Modules/python.exp" - EXPORTSFROM=. # the main executable - ;; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EXPORTSYMS" >&5 -printf "%s\n" "$EXPORTSYMS" >&6; } - -# GNULD is set to "yes" if the GNU linker is used. If this goes wrong -# make sure we default having it set to "no": this is used by -# distutils.unixccompiler to know if it should add --enable-new-dtags -# to linker command lines, and failing to detect GNU ld simply results -# in the same behaviour as before. - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -printf %s "checking for GNU ld... " >&6; } -ac_prog=ld -if test "$ac_cv_cc_name" = "gcc"; then - ac_prog=`$CC -print-prog-name=ld` -fi -case `"$ac_prog" -V 2>&1 < /dev/null` in - *GNU*) - GNULD=yes;; - *) - GNULD=no;; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GNULD" >&5 -printf "%s\n" "$GNULD" >&6; } - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-shared" >&5 -printf %s "checking for --enable-shared... " >&6; } -# Check whether --enable-shared was given. -if test ${enable_shared+y} -then : - enableval=$enable_shared; -fi - - -if test -z "$enable_shared" -then - case $ac_sys_system in - CYGWIN*) - enable_shared="yes";; - *) - enable_shared="no";; - esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -printf "%s\n" "$enable_shared" >&6; } - -# --with-static-libpython -STATIC_LIBPYTHON=1 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-static-libpython" >&5 -printf %s "checking for --with-static-libpython... " >&6; } - -# Check whether --with-static-libpython was given. -if test ${with_static_libpython+y} -then : - withval=$with_static_libpython; -if test "$withval" = no -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; - STATIC_LIBPYTHON=0 -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; }; -fi -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } ;; -esac -fi - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-profiling" >&5 -printf %s "checking for --enable-profiling... " >&6; } -# Check whether --enable-profiling was given. -if test ${enable_profiling+y} -then : - enableval=$enable_profiling; -fi - -if test "x$enable_profiling" = xyes; then - ac_save_cc="$CC" - CC="$CC -pg" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int main(void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - -else case e in #( - e) enable_profiling=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - CC="$ac_save_cc" -else - enable_profiling=no -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_profiling" >&5 -printf "%s\n" "$enable_profiling" >&6; } - -if test "x$enable_profiling" = xyes; then - BASECFLAGS="-pg $BASECFLAGS" - LDFLAGS="-pg $LDFLAGS" -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LDLIBRARY" >&5 -printf %s "checking LDLIBRARY... " >&6; } - -# Apple framework builds need more magic. LDLIBRARY is the dynamic -# library that we build, but we do not want to link against it (we -# will find it with a -framework option). For this reason there is an -# extra variable BLDLIBRARY against which Python and the extension -# modules are linked, BLDLIBRARY. This is normally the same as -# LDLIBRARY, but empty for MacOSX framework builds. iOS does the same, -# but uses a non-versioned framework layout. -if test "$enable_framework" -then - case $ac_sys_system in - Darwin) - LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)';; - iOS) - LDLIBRARY='$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)';; - *) - as_fn_error $? "Unknown platform for framework build" "$LINENO" 5;; - esac - BLDLIBRARY='' - RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}} -else - BLDLIBRARY='$(LDLIBRARY)' -fi - -# Other platforms follow -if test $enable_shared = "yes"; then - PY_ENABLE_SHARED=1 - -printf "%s\n" "#define Py_ENABLE_SHARED 1" >>confdefs.h - - case $ac_sys_system in - CYGWIN*) - LDLIBRARY='libpython$(LDVERSION).dll.a' - BLDLIBRARY='-L. -lpython$(LDVERSION)' - DLLLIBRARY='libpython$(LDVERSION).dll' - ;; - SunOS*) - LDLIBRARY='libpython$(LDVERSION).so' - BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)' - RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} - INSTSONAME="$LDLIBRARY".$SOVERSION - if test "$with_pydebug" != yes - then - PY3LIBRARY=libpython3.so - fi - ;; - Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*) - LDLIBRARY='libpython$(LDVERSION).so' - BLDLIBRARY='-L. -lpython$(LDVERSION)' - RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} - - # The Android Gradle plugin will only package libraries whose names end - # with ".so". - if test "$ac_sys_system" != "Linux-android"; then - INSTSONAME="$LDLIBRARY".$SOVERSION - fi - - if test "$with_pydebug" != yes - then - PY3LIBRARY=libpython3.so - fi - ;; - hp*|HP*) - case `uname -m` in - ia64) - LDLIBRARY='libpython$(LDVERSION).so' - ;; - *) - LDLIBRARY='libpython$(LDVERSION).sl' - ;; - esac - BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)' - RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}} - ;; - Darwin*) - LDLIBRARY='libpython$(LDVERSION).dylib' - BLDLIBRARY='-L. -lpython$(LDVERSION)' - RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}} - ;; - iOS) - LDLIBRARY='libpython$(LDVERSION).dylib' - ;; - AIX*) - LDLIBRARY='libpython$(LDVERSION).so' - RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}} - ;; - - esac -else # shared is disabled - PY_ENABLE_SHARED=0 - case $ac_sys_system in - CYGWIN*) - BLDLIBRARY='$(LIBRARY)' - LDLIBRARY='libpython$(LDVERSION).dll.a' - ;; - esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LDLIBRARY" >&5 -printf "%s\n" "$LDLIBRARY" >&6; } - -# HOSTRUNNER - Program to run CPython for the host platform -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking HOSTRUNNER" >&5 -printf %s "checking HOSTRUNNER... " >&6; } -if test -z "$HOSTRUNNER" -then - case $ac_sys_system in #( - Emscripten) : - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}node", so it can be a program name with args. -set dummy ${ac_tool_prefix}node; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_NODE+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $NODE in - [\\/]* | ?:[\\/]*) - ac_cv_path_NODE="$NODE" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_NODE="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -NODE=$ac_cv_path_NODE -if test -n "$NODE"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NODE" >&5 -printf "%s\n" "$NODE" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_NODE"; then - ac_pt_NODE=$NODE - # Extract the first word of "node", so it can be a program name with args. -set dummy node; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_NODE+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $ac_pt_NODE in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_NODE="$ac_pt_NODE" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_NODE="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -ac_pt_NODE=$ac_cv_path_ac_pt_NODE -if test -n "$ac_pt_NODE"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_NODE" >&5 -printf "%s\n" "$ac_pt_NODE" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_NODE" = x; then - NODE="node" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NODE=$ac_pt_NODE - fi -else - NODE="$ac_cv_path_NODE" -fi - - HOSTRUNNER="$NODE" - if test "x$host_cpu" = xwasm64 -then : - as_fn_append HOSTRUNNER " --experimental-wasm-memory64" -fi - ;; #( - WASI) : - - as_fn_error $? "HOSTRUNNER must be set when cross-compiling to WASI" "$LINENO" 5 - ;; #( - *) : - HOSTRUNNER='' - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HOSTRUNNER" >&5 -printf "%s\n" "$HOSTRUNNER" >&6; } - -if test -n "$HOSTRUNNER"; then - PYTHON_FOR_BUILD="_PYTHON_HOSTRUNNER='$HOSTRUNNER' $PYTHON_FOR_BUILD" -fi - -# LIBRARY_DEPS, LINK_PYTHON_OBJS and LINK_PYTHON_DEPS variable -LIBRARY_DEPS='$(PY3LIBRARY) $(EXPORTSYMS)' - -LINK_PYTHON_DEPS='$(LIBRARY_DEPS)' -if test "$PY_ENABLE_SHARED" = 1 || test "$enable_framework" ; then - LIBRARY_DEPS="\$(LDLIBRARY) $LIBRARY_DEPS" - if test "$STATIC_LIBPYTHON" = 1; then - LIBRARY_DEPS="\$(LIBRARY) $LIBRARY_DEPS" - fi - # Link Python program to the shared library - LINK_PYTHON_OBJS='$(BLDLIBRARY)' -else - if test "$STATIC_LIBPYTHON" = 0; then - # Build Python needs object files but don't need to build - # Python static library - LINK_PYTHON_DEPS="$LIBRARY_DEPS \$(LIBRARY_OBJS)" - fi - LIBRARY_DEPS="\$(LIBRARY) $LIBRARY_DEPS" - # Link Python program to object files - LINK_PYTHON_OBJS='$(LIBRARY_OBJS)' -fi - - - - -# ar program - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar aal - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_AR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -printf "%s\n" "$AR" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar aal -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_AR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -printf "%s\n" "$ac_ct_AR" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="ar" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - - -# tweak ARFLAGS only if the user didn't set it on the command line - -if test -z "$ARFLAGS" -then - ARFLAGS="rcs" -fi - -case $MACHDEP in -hp*|HP*) - # install -d does not work on HP-UX - if test -z "$INSTALL" - then - INSTALL="${srcdir}/install-sh -c" - fi -esac - - # Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -printf %s "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if test ${ac_cv_path_install+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - # Account for fact that we put trailing slashes in our PATH walk. -case $as_dir in #(( - ./ | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - ;; -esac -fi - if test ${ac_cv_path_install+y}; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -printf "%s\n" "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 -printf %s "checking for a race-free mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if test ${ac_cv_path_mkdir+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue - case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir ('*'coreutils) '* | \ - *'BusyBox '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - ;; -esac -fi - - test -d ./--version && rmdir ./--version - if test ${ac_cv_path_mkdir+y}; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use plain mkdir -p, - # in the hope it doesn't have the bugs of ancient mkdir. - MKDIR_P='mkdir -p' - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -printf "%s\n" "$MKDIR_P" >&6; } - - -# Not every filesystem supports hard links - -if test -z "$LN" ; then - case $ac_sys_system in - CYGWIN*) LN="ln -s";; - *) LN=ln;; - esac -fi - -# For calculating the .so ABI tag. - - -ABIFLAGS="" -ABI_THREAD="" - -# Check for --disable-gil -# --disable-gil -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --disable-gil" >&5 -printf %s "checking for --disable-gil... " >&6; } -# Check whether --enable-gil was given. -if test ${enable_gil+y} -then : - enableval=$enable_gil; if test "x$enable_gil" = xyes -then : - disable_gil=no -else case e in #( - e) disable_gil=yes ;; -esac -fi -else case e in #( - e) disable_gil=no - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $disable_gil" >&5 -printf "%s\n" "$disable_gil" >&6; } - -if test "$disable_gil" = "yes" -then - -printf "%s\n" "#define Py_GIL_DISABLED 1" >>confdefs.h - - # Add "t" for "threaded" - ABIFLAGS="${ABIFLAGS}t" - ABI_THREAD="t" -fi - -# Check for --with-pydebug -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-pydebug" >&5 -printf %s "checking for --with-pydebug... " >&6; } - -# Check whether --with-pydebug was given. -if test ${with_pydebug+y} -then : - withval=$with_pydebug; -if test "$withval" != no -then - -printf "%s\n" "#define Py_DEBUG 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; }; - Py_DEBUG='true' - ABIFLAGS="${ABIFLAGS}d" -else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; Py_DEBUG='false' -fi -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac -fi - - -# Check for --with-trace-refs -# --with-trace-refs -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-trace-refs" >&5 -printf %s "checking for --with-trace-refs... " >&6; } - -# Check whether --with-trace-refs was given. -if test ${with_trace_refs+y} -then : - withval=$with_trace_refs; -else case e in #( - e) with_trace_refs=no - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_trace_refs" >&5 -printf "%s\n" "$with_trace_refs" >&6; } - -if test "$with_trace_refs" = "yes" -then - -printf "%s\n" "#define Py_TRACE_REFS 1" >>confdefs.h - -fi - -if test "$disable_gil" = "yes" -a "$with_trace_refs" = "yes"; -then - as_fn_error $? "--disable-gil cannot be used with --with-trace-refs" "$LINENO" 5 -fi - -# Check for --enable-pystats -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-pystats" >&5 -printf %s "checking for --enable-pystats... " >&6; } -# Check whether --enable-pystats was given. -if test ${enable_pystats+y} -then : - enableval=$enable_pystats; -else case e in #( - e) enable_pystats=no - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_pystats" >&5 -printf "%s\n" "$enable_pystats" >&6; } - -if test "x$enable_pystats" = xyes -then : - - -printf "%s\n" "#define Py_STATS 1" >>confdefs.h - - -fi - -# Check for --with-assertions. -# This allows enabling assertions without Py_DEBUG. -assertions='false' -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-assertions" >&5 -printf %s "checking for --with-assertions... " >&6; } - -# Check whether --with-assertions was given. -if test ${with_assertions+y} -then : - withval=$with_assertions; -if test "$withval" != no -then - assertions='true' -fi -fi - -if test "$assertions" = 'true'; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -elif test "$Py_DEBUG" = 'true'; then - assertions='true' - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: implied by --with-pydebug" >&5 -printf "%s\n" "implied by --with-pydebug" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - -# Enable optimization flags - - -Py_OPT='false' -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-optimizations" >&5 -printf %s "checking for --enable-optimizations... " >&6; } -# Check whether --enable-optimizations was given. -if test ${enable_optimizations+y} -then : - enableval=$enable_optimizations; -if test "$enableval" != no -then - Py_OPT='true' - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; }; -else - Py_OPT='false' - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; -fi -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac -fi - - -if test "$Py_OPT" = 'true' ; then - # Check for conflicting CFLAGS=-O0 and --enable-optimizations - case "$CFLAGS" in - *-O0*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: CFLAGS contains -O0 which may conflict with --enable-optimizations. Consider removing -O0 from CFLAGS for optimal performance." >&5 -printf "%s\n" "$as_me: WARNING: CFLAGS contains -O0 which may conflict with --enable-optimizations. Consider removing -O0 from CFLAGS for optimal performance." >&2;} - ;; - esac - # Intentionally not forcing Py_LTO='true' here. Too many toolchains do not - # compile working code using it and both test_distutils and test_gdb are - # broken when you do manage to get a toolchain that works with it. People - # who want LTO need to use --with-lto themselves. - DEF_MAKE_ALL_RULE="profile-opt" - REQUIRE_PGO="yes" - DEF_MAKE_RULE="build_all" - if test "x$ac_cv_gcc_compat" = xyes -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-semantic-interposition" >&5 -printf %s "checking whether C compiler accepts -fno-semantic-interposition... " >&6; } -if test ${ax_cv_check_cflags__Werror__fno_semantic_interposition+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Werror -fno-semantic-interposition" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags__Werror__fno_semantic_interposition=yes -else case e in #( - e) ax_cv_check_cflags__Werror__fno_semantic_interposition=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__fno_semantic_interposition" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__fno_semantic_interposition" >&6; } -if test "x$ax_cv_check_cflags__Werror__fno_semantic_interposition" = xyes -then : - - CFLAGS_NODIST="$CFLAGS_NODIST -fno-semantic-interposition" - LDFLAGS_NODIST="$LDFLAGS_NODIST -fno-semantic-interposition" - -else case e in #( - e) : ;; -esac -fi - - -fi -elif test "$ac_sys_system" = "Emscripten"; then - DEF_MAKE_ALL_RULE="build_emscripten" - REQUIRE_PGO="no" - DEF_MAKE_RULE="all" -elif test "$ac_sys_system" = "WASI"; then - DEF_MAKE_ALL_RULE="build_wasm" - REQUIRE_PGO="no" - DEF_MAKE_RULE="all" -else - DEF_MAKE_ALL_RULE="build_all" - REQUIRE_PGO="no" - DEF_MAKE_RULE="all" -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking PROFILE_TASK" >&5 -printf %s "checking PROFILE_TASK... " >&6; } -if test -z "$PROFILE_TASK" -then - PROFILE_TASK='-m test --pgo --timeout=$(TESTTIMEOUT)' -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PROFILE_TASK" >&5 -printf "%s\n" "$PROFILE_TASK" >&6; } - -# Make llvm-related checks work on systems where llvm tools are not installed with their -# normal names in the default $PATH (ie: Ubuntu). They exist under the -# non-suffixed name in their versioned llvm directory. - -llvm_bin_dir='' -llvm_path="${PATH}" -if test "${ac_cv_cc_name}" = "clang" -then - clang_bin=`which clang` - # Some systems install clang elsewhere as a symlink to the real path - # which is where the related llvm tools are located. - if test -L "${clang_bin}" - then - clang_dir=`dirname "${clang_bin}"` - clang_bin=`readlink "${clang_bin}"` - llvm_bin_dir="${clang_dir}/"`dirname "${clang_bin}"` - llvm_path="${llvm_path}${PATH_SEPARATOR}${llvm_bin_dir}" - fi -fi - -# Enable LTO flags -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-lto" >&5 -printf %s "checking for --with-lto... " >&6; } - -# Check whether --with-lto was given. -if test ${with_lto+y} -then : - withval=$with_lto; -case "$withval" in - full) - Py_LTO='true' - Py_LTO_POLICY='full' - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - thin) - Py_LTO='true' - Py_LTO_POLICY='thin' - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - yes) - Py_LTO='true' - Py_LTO_POLICY='default' - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - no) - Py_LTO='false' - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - *) - Py_LTO='false' - as_fn_error $? "unknown lto option: '$withval'" "$LINENO" 5 - ;; -esac - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac -fi - -if test "$Py_LTO" = 'true' ; then - case $ac_cv_cc_name in - clang) - LDFLAGS_NOLTO="-fno-lto" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=thin" >&5 -printf %s "checking whether C compiler accepts -flto=thin... " >&6; } -if test ${ax_cv_check_cflags___flto_thin+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -flto=thin" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags___flto_thin=yes -else case e in #( - e) ax_cv_check_cflags___flto_thin=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_thin" >&5 -printf "%s\n" "$ax_cv_check_cflags___flto_thin" >&6; } -if test "x$ax_cv_check_cflags___flto_thin" = xyes -then : - LDFLAGS_NOLTO="-flto=thin" -else case e in #( - e) LDFLAGS_NOLTO="-flto" ;; -esac -fi - - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}llvm-ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}llvm-ar; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_LLVM_AR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $LLVM_AR in - [\\/]* | ?:[\\/]*) - ac_cv_path_LLVM_AR="$LLVM_AR" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in ${llvm_path} -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_LLVM_AR="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -LLVM_AR=$ac_cv_path_LLVM_AR -if test -n "$LLVM_AR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_AR" >&5 -printf "%s\n" "$LLVM_AR" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_LLVM_AR"; then - ac_pt_LLVM_AR=$LLVM_AR - # Extract the first word of "llvm-ar", so it can be a program name with args. -set dummy llvm-ar; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_LLVM_AR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $ac_pt_LLVM_AR in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_LLVM_AR="$ac_pt_LLVM_AR" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in ${llvm_path} -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_LLVM_AR="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -ac_pt_LLVM_AR=$ac_cv_path_ac_pt_LLVM_AR -if test -n "$ac_pt_LLVM_AR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_AR" >&5 -printf "%s\n" "$ac_pt_LLVM_AR" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_LLVM_AR" = x; then - LLVM_AR="''" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LLVM_AR=$ac_pt_LLVM_AR - fi -else - LLVM_AR="$ac_cv_path_LLVM_AR" -fi - - - if test -n "${LLVM_AR}" -a -x "${LLVM_AR}" - then - LLVM_AR_FOUND="found" - else - LLVM_AR_FOUND="not-found" - fi - if test "$ac_sys_system" = "Darwin" -a "${LLVM_AR_FOUND}" = "not-found" - then - # The Apple-supplied ar in Xcode or the Command Line Tools is apparently sufficient - found_llvm_ar=`/usr/bin/xcrun -find ar 2>/dev/null` - if test -n "${found_llvm_ar}" - then - LLVM_AR='/usr/bin/xcrun ar' - LLVM_AR_FOUND=found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: llvm-ar found via xcrun: ${LLVM_AR}" >&5 -printf "%s\n" "$as_me: llvm-ar found via xcrun: ${LLVM_AR}" >&6;} - fi - fi - if test $LLVM_AR_FOUND = not-found - then - LLVM_PROFR_ERR=yes - as_fn_error $? "llvm-ar is required for a --with-lto build with clang but could not be found." "$LINENO" 5 - else - LLVM_AR_ERR=no - fi - AR="${LLVM_AR}" - case $ac_sys_system in - Darwin*) - # Any changes made here should be reflected in the GCC+Darwin case below - if test $Py_LTO_POLICY = default - then - # Check that ThinLTO is accepted. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=thin" >&5 -printf %s "checking whether C compiler accepts -flto=thin... " >&6; } -if test ${ax_cv_check_cflags___flto_thin+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -flto=thin" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags___flto_thin=yes -else case e in #( - e) ax_cv_check_cflags___flto_thin=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_thin" >&5 -printf "%s\n" "$ax_cv_check_cflags___flto_thin" >&6; } -if test "x$ax_cv_check_cflags___flto_thin" = xyes -then : - - LTOFLAGS="-flto=thin -Wl,-export_dynamic -Wl,-object_path_lto,\"\$@\".lto" - LTOCFLAGS="-flto=thin" - -else case e in #( - e) - LTOFLAGS="-flto -Wl,-export_dynamic -Wl,-object_path_lto,\"\$@\".lto" - LTOCFLAGS="-flto" - - ;; -esac -fi - - else - LTOFLAGS="-flto=${Py_LTO_POLICY} -Wl,-export_dynamic -Wl,-object_path_lto,\"\$@\".lto" - LTOCFLAGS="-flto=${Py_LTO_POLICY}" - fi - ;; - *) - if test $Py_LTO_POLICY = default - then - # Check that ThinLTO is accepted - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=thin" >&5 -printf %s "checking whether C compiler accepts -flto=thin... " >&6; } -if test ${ax_cv_check_cflags___flto_thin+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -flto=thin" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags___flto_thin=yes -else case e in #( - e) ax_cv_check_cflags___flto_thin=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_thin" >&5 -printf "%s\n" "$ax_cv_check_cflags___flto_thin" >&6; } -if test "x$ax_cv_check_cflags___flto_thin" = xyes -then : - LTOFLAGS="-flto=thin" -else case e in #( - e) LTOFLAGS="-flto" ;; -esac -fi - - else - LTOFLAGS="-flto=${Py_LTO_POLICY}" - fi - ;; - esac - ;; - emcc) - if test "$Py_LTO_POLICY" != "default"; then - as_fn_error $? "emcc supports only default lto." "$LINENO" 5 - fi - LTOFLAGS="-flto" - LTOCFLAGS="-flto" - ;; - gcc) - if test $Py_LTO_POLICY = thin - then - as_fn_error $? "thin lto is not supported under gcc compiler." "$LINENO" 5 - fi - LDFLAGS_NOLTO="-fno-lto" - case $ac_sys_system in - Darwin*) - LTOFLAGS="-flto -Wl,-export_dynamic -Wl,-object_path_lto,\"\$@\".lto" - LTOCFLAGS="-flto" - ;; - *) - LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" - ;; - esac - ;; - esac - - if test "$ac_cv_prog_cc_g" = "yes" - then - # bpo-30345: Add -g to LDFLAGS when compiling with LTO - # to get debug symbols. - LTOFLAGS="$LTOFLAGS -g" - fi - - CFLAGS_NODIST="$CFLAGS_NODIST ${LTOCFLAGS-$LTOFLAGS}" - LDFLAGS_NODIST="$LDFLAGS_NODIST $LTOFLAGS" -fi - -# Enable PGO flags. - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}llvm-profdata", so it can be a program name with args. -set dummy ${ac_tool_prefix}llvm-profdata; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_LLVM_PROFDATA+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $LLVM_PROFDATA in - [\\/]* | ?:[\\/]*) - ac_cv_path_LLVM_PROFDATA="$LLVM_PROFDATA" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in ${llvm_path} -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_LLVM_PROFDATA="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -LLVM_PROFDATA=$ac_cv_path_LLVM_PROFDATA -if test -n "$LLVM_PROFDATA"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_PROFDATA" >&5 -printf "%s\n" "$LLVM_PROFDATA" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_LLVM_PROFDATA"; then - ac_pt_LLVM_PROFDATA=$LLVM_PROFDATA - # Extract the first word of "llvm-profdata", so it can be a program name with args. -set dummy llvm-profdata; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_LLVM_PROFDATA+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $ac_pt_LLVM_PROFDATA in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_LLVM_PROFDATA="$ac_pt_LLVM_PROFDATA" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in ${llvm_path} -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_LLVM_PROFDATA="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -ac_pt_LLVM_PROFDATA=$ac_cv_path_ac_pt_LLVM_PROFDATA -if test -n "$ac_pt_LLVM_PROFDATA"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_PROFDATA" >&5 -printf "%s\n" "$ac_pt_LLVM_PROFDATA" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_LLVM_PROFDATA" = x; then - LLVM_PROFDATA="''" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LLVM_PROFDATA=$ac_pt_LLVM_PROFDATA - fi -else - LLVM_PROFDATA="$ac_cv_path_LLVM_PROFDATA" -fi - - -if test -n "${LLVM_PROFDATA}" -a -x "${LLVM_PROFDATA}" -then - LLVM_PROF_FOUND="found" -else - LLVM_PROF_FOUND="not-found" -fi -if test "$ac_sys_system" = "Darwin" -a "${LLVM_PROF_FOUND}" = "not-found" -then - found_llvm_profdata=`/usr/bin/xcrun -find llvm-profdata 2>/dev/null` - if test -n "${found_llvm_profdata}" - then - # llvm-profdata isn't directly in $PATH in some cases. - # https://apple.stackexchange.com/questions/197053/ - LLVM_PROFDATA='/usr/bin/xcrun llvm-profdata' - LLVM_PROF_FOUND=found - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: llvm-profdata found via xcrun: ${LLVM_PROFDATA}" >&5 -printf "%s\n" "$as_me: llvm-profdata found via xcrun: ${LLVM_PROFDATA}" >&6;} - fi -fi -LLVM_PROF_ERR=no - -case "$ac_cv_cc_name" in - clang) - # Any changes made here should be reflected in the GCC+Darwin case below - PGO_PROF_GEN_FLAG="-fprofile-instr-generate" - PGO_PROF_USE_FLAG="-fprofile-instr-use=\"\$(shell pwd)/code.profclangd\"" - LLVM_PROF_MERGER=" ${LLVM_PROFDATA} merge -output=\"\$(shell pwd)/code.profclangd\" \"\$(shell pwd)\"/*.profclangr " - LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"\$(shell pwd)/code-%p.profclangr\"" - if test $LLVM_PROF_FOUND = not-found - then - LLVM_PROF_ERR=yes - if test "${REQUIRE_PGO}" = "yes" - then - as_fn_error $? "llvm-profdata is required for a --enable-optimizations build but could not be found." "$LINENO" 5 - fi - fi - ;; - gcc) - PGO_PROF_GEN_FLAG="-fprofile-generate" - PGO_PROF_USE_FLAG="-fprofile-use -fprofile-correction" - LLVM_PROF_MERGER="true" - LLVM_PROF_FILE="" - ;; - icc) - PGO_PROF_GEN_FLAG="-prof-gen" - PGO_PROF_USE_FLAG="-prof-use" - LLVM_PROF_MERGER="true" - LLVM_PROF_FILE="" - ;; -esac - -# BOLT optimization. Always configured after PGO since it always runs after PGO. -Py_BOLT='false' -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-bolt" >&5 -printf %s "checking for --enable-bolt... " >&6; } -# Check whether --enable-bolt was given. -if test ${enable_bolt+y} -then : - enableval=$enable_bolt; -if test "$enableval" != no -then - Py_BOLT='true' - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; }; -else - Py_BOLT='false' - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; -fi -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac -fi - - - -if test "$Py_BOLT" = 'true' ; then - PREBOLT_RULE="${DEF_MAKE_ALL_RULE}" - DEF_MAKE_ALL_RULE="bolt-opt" - DEF_MAKE_RULE="build_all" - - # -fno-reorder-blocks-and-partition is required for bolt to work. - # Possibly GCC only. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-reorder-blocks-and-partition" >&5 -printf %s "checking whether C compiler accepts -fno-reorder-blocks-and-partition... " >&6; } -if test ${ax_cv_check_cflags___fno_reorder_blocks_and_partition+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -fno-reorder-blocks-and-partition" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags___fno_reorder_blocks_and_partition=yes -else case e in #( - e) ax_cv_check_cflags___fno_reorder_blocks_and_partition=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_reorder_blocks_and_partition" >&5 -printf "%s\n" "$ax_cv_check_cflags___fno_reorder_blocks_and_partition" >&6; } -if test "x$ax_cv_check_cflags___fno_reorder_blocks_and_partition" = xyes -then : - - CFLAGS_NODIST="$CFLAGS_NODIST -fno-reorder-blocks-and-partition" - -else case e in #( - e) : ;; -esac -fi - - - # These flags are required for bolt to work: - LDFLAGS_NODIST="$LDFLAGS_NODIST -Wl,--emit-relocs" - - # These flags are required to get good performance from bolt: - CFLAGS_NODIST="$CFLAGS_NODIST -fno-pie" - # We want to add these no-pie flags to linking executables but not shared libraries: - LINKCC="$LINKCC -fno-pie -no-pie" - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}llvm-bolt", so it can be a program name with args. -set dummy ${ac_tool_prefix}llvm-bolt; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_LLVM_BOLT+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $LLVM_BOLT in - [\\/]* | ?:[\\/]*) - ac_cv_path_LLVM_BOLT="$LLVM_BOLT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in ${llvm_path} -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_LLVM_BOLT="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -LLVM_BOLT=$ac_cv_path_LLVM_BOLT -if test -n "$LLVM_BOLT"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_BOLT" >&5 -printf "%s\n" "$LLVM_BOLT" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_LLVM_BOLT"; then - ac_pt_LLVM_BOLT=$LLVM_BOLT - # Extract the first word of "llvm-bolt", so it can be a program name with args. -set dummy llvm-bolt; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_LLVM_BOLT+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $ac_pt_LLVM_BOLT in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_LLVM_BOLT="$ac_pt_LLVM_BOLT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in ${llvm_path} -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_LLVM_BOLT="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -ac_pt_LLVM_BOLT=$ac_cv_path_ac_pt_LLVM_BOLT -if test -n "$ac_pt_LLVM_BOLT"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_BOLT" >&5 -printf "%s\n" "$ac_pt_LLVM_BOLT" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_LLVM_BOLT" = x; then - LLVM_BOLT="''" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LLVM_BOLT=$ac_pt_LLVM_BOLT - fi -else - LLVM_BOLT="$ac_cv_path_LLVM_BOLT" -fi - - if test -n "${LLVM_BOLT}" -a -x "${LLVM_BOLT}" - then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"Found llvm-bolt\"" >&5 -printf "%s\n" "\"Found llvm-bolt\"" >&6; } - else - as_fn_error $? "llvm-bolt is required for a --enable-bolt build but could not be found." "$LINENO" 5 - fi - - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}merge-fdata", so it can be a program name with args. -set dummy ${ac_tool_prefix}merge-fdata; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_MERGE_FDATA+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $MERGE_FDATA in - [\\/]* | ?:[\\/]*) - ac_cv_path_MERGE_FDATA="$MERGE_FDATA" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in ${llvm_path} -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_MERGE_FDATA="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -MERGE_FDATA=$ac_cv_path_MERGE_FDATA -if test -n "$MERGE_FDATA"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MERGE_FDATA" >&5 -printf "%s\n" "$MERGE_FDATA" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_MERGE_FDATA"; then - ac_pt_MERGE_FDATA=$MERGE_FDATA - # Extract the first word of "merge-fdata", so it can be a program name with args. -set dummy merge-fdata; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_MERGE_FDATA+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $ac_pt_MERGE_FDATA in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_MERGE_FDATA="$ac_pt_MERGE_FDATA" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in ${llvm_path} -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_MERGE_FDATA="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac ;; -esac -fi -ac_pt_MERGE_FDATA=$ac_cv_path_ac_pt_MERGE_FDATA -if test -n "$ac_pt_MERGE_FDATA"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_MERGE_FDATA" >&5 -printf "%s\n" "$ac_pt_MERGE_FDATA" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_MERGE_FDATA" = x; then - MERGE_FDATA="''" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MERGE_FDATA=$ac_pt_MERGE_FDATA - fi -else - MERGE_FDATA="$ac_cv_path_MERGE_FDATA" -fi - - if test -n "${MERGE_FDATA}" -a -x "${MERGE_FDATA}" - then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"Found merge-fdata\"" >&5 -printf "%s\n" "\"Found merge-fdata\"" >&6; } - else - as_fn_error $? "merge-fdata is required for a --enable-bolt build but could not be found." "$LINENO" 5 - fi -fi - - -BOLT_BINARIES='$(BUILDPYTHON)' -if test "x$enable_shared" = xyes -then : - - BOLT_BINARIES="${BOLT_BINARIES} \$(INSTSONAME)" - -fi - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking BOLT_COMMON_FLAGS" >&5 -printf %s "checking BOLT_COMMON_FLAGS... " >&6; } -if test -z "${BOLT_COMMON_FLAGS}" -then - BOLT_COMMON_FLAGS=" -update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1,sre_ucs1_match.lto_priv.0/1,sre_ucs2_match.lto_priv.0/1,sre_ucs4_match.lto_priv.0/1 " - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking BOLT_INSTRUMENT_FLAGS" >&5 -printf %s "checking BOLT_INSTRUMENT_FLAGS... " >&6; } -if test -z "${BOLT_INSTRUMENT_FLAGS}" -then - BOLT_INSTRUMENT_FLAGS="${BOLT_COMMON_FLAGS}" -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BOLT_INSTRUMENT_FLAGS" >&5 -printf "%s\n" "$BOLT_INSTRUMENT_FLAGS" >&6; } - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking BOLT_APPLY_FLAGS" >&5 -printf %s "checking BOLT_APPLY_FLAGS... " >&6; } -if test -z "${BOLT_APPLY_FLAGS}" -then - BOLT_APPLY_FLAGS=" ${BOLT_COMMON_FLAGS} -reorder-blocks=ext-tsp -reorder-functions=cdsort -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot " - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BOLT_APPLY_FLAGS" >&5 -printf "%s\n" "$BOLT_APPLY_FLAGS" >&6; } - -# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be -# merged with this chunk of code? - -# Optimizer/debugger flags -# ------------------------ -# (The following bit of code is complicated enough - please keep things -# indented properly. Just pretend you're editing Python code. ;-) - -# There are two parallel sets of case statements below, one that checks to -# see if OPT was set and one that does BASECFLAGS setting based upon -# compiler and platform. BASECFLAGS tweaks need to be made even if the -# user set OPT. - -save_CFLAGS=$CFLAGS -CFLAGS="-fstrict-overflow -fno-strict-overflow" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -fstrict-overflow and -fno-strict-overflow" >&5 -printf %s "checking if $CC supports -fstrict-overflow and -fno-strict-overflow... " >&6; } -if test ${ac_cv_cc_supports_fstrict_overflow+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_cc_supports_fstrict_overflow=yes -else case e in #( - e) ac_cv_cc_supports_fstrict_overflow=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_supports_fstrict_overflow" >&5 -printf "%s\n" "$ac_cv_cc_supports_fstrict_overflow" >&6; } -CFLAGS=$save_CFLAGS - -if test "x$ac_cv_cc_supports_fstrict_overflow" = xyes -then : - STRICT_OVERFLOW_CFLAGS="-fstrict-overflow" - NO_STRICT_OVERFLOW_CFLAGS="-fno-strict-overflow" -else case e in #( - e) STRICT_OVERFLOW_CFLAGS="" - NO_STRICT_OVERFLOW_CFLAGS="" ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-strict-overflow" >&5 -printf %s "checking for --with-strict-overflow... " >&6; } - -# Check whether --with-strict-overflow was given. -if test ${with_strict_overflow+y} -then : - withval=$with_strict_overflow; - if test "x$ac_cv_cc_supports_fstrict_overflow" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --with-strict-overflow=yes requires a compiler that supports -fstrict-overflow" >&5 -printf "%s\n" "$as_me: WARNING: --with-strict-overflow=yes requires a compiler that supports -fstrict-overflow" >&2;} -fi - -else case e in #( - e) with_strict_overflow=no - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_strict_overflow" >&5 -printf "%s\n" "$with_strict_overflow" >&6; } - -# Check if CC supports -Og optimization level -save_CFLAGS=$CFLAGS -CFLAGS="-Og" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Og optimization level" >&5 -printf %s "checking if $CC supports -Og optimization level... " >&6; } -if test ${ac_cv_cc_supports_og+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -int -main (void) -{ - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - ac_cv_cc_supports_og=yes - -else case e in #( - e) - ac_cv_cc_supports_og=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_supports_og" >&5 -printf "%s\n" "$ac_cv_cc_supports_og" >&6; } -CFLAGS=$save_CFLAGS - -# Optimization messes up debuggers, so turn it off for -# debug builds. -PYDEBUG_CFLAGS="-O0" -if test "x$ac_cv_cc_supports_og" = xyes -then : - PYDEBUG_CFLAGS="-Og" -fi - -# gh-120688: WASI uses -O3 in debug mode to support more recursive calls -if test "$ac_sys_system" = "WASI"; then - PYDEBUG_CFLAGS="-O3" -fi - -# tweak OPT based on compiler and platform, only if the user didn't set -# it on the command line - - -if test "${OPT-unset}" = "unset" -then - case $GCC in - yes) - if test "${ac_cv_cc_name}" != "clang" - then - # bpo-30104: disable strict aliasing to compile correctly dtoa.c, - # see Makefile.pre.in for more information - CFLAGS_ALIASING="-fno-strict-aliasing" - fi - - case $ac_cv_prog_cc_g in - yes) - if test "$Py_DEBUG" = 'true' ; then - OPT="-g $PYDEBUG_CFLAGS -Wall" - else - OPT="-g -O3 -Wall" - fi - ;; - *) - OPT="-O3 -Wall" - ;; - esac - - case $ac_sys_system in - SCO_SV*) OPT="$OPT -m486 -DSCO5" - ;; - esac - ;; - - *) - OPT="-O" - ;; - esac -fi - -# WASM flags -case $ac_sys_system in #( - Emscripten) : - - if test "x$Py_DEBUG" = xyes -then : - wasm_debug=yes -else case e in #( - e) wasm_debug=no ;; -esac -fi - - as_fn_append LINKFORSHARED " -sALLOW_MEMORY_GROWTH -sINITIAL_MEMORY=20971520" - - as_fn_append LDFLAGS_NODIST " -sWASM_BIGINT" - - as_fn_append LINKFORSHARED " -sFORCE_FILESYSTEM -lidbfs.js -lnodefs.js -lproxyfs.js -lworkerfs.js" - as_fn_append LINKFORSHARED " -sEXPORTED_RUNTIME_METHODS=FS,callMain,ENV,HEAPU32,TTY" - as_fn_append LINKFORSHARED " -sEXPORTED_FUNCTIONS=_main,_Py_Version,__PyRuntime,_PyGILState_GetThisThreadState,__Py_DumpTraceback" - as_fn_append LINKFORSHARED " -sSTACK_SIZE=5MB" - as_fn_append LINKFORSHARED " -sTEXTDECODER=2" - - if test "x$enable_wasm_dynamic_linking" = xyes -then : - - as_fn_append LINKFORSHARED " -sMAIN_MODULE" - -fi - - if test "x$enable_wasm_pthreads" = xyes -then : - - as_fn_append CFLAGS_NODIST " -pthread" - as_fn_append LDFLAGS_NODIST " -sUSE_PTHREADS" - as_fn_append LINKFORSHARED " -sPROXY_TO_PTHREAD" - -fi - as_fn_append LDFLAGS_NODIST " -sEXIT_RUNTIME" - WASM_LINKFORSHARED_DEBUG="-gseparate-dwarf --emit-symbol-map" - - if test "x$wasm_debug" = xyes -then : - - as_fn_append LDFLAGS_NODIST " -sASSERTIONS" - as_fn_append LINKFORSHARED " $WASM_LINKFORSHARED_DEBUG" - -else case e in #( - e) - as_fn_append LINKFORSHARED " -O2 -g0" - ;; -esac -fi - ;; #( - WASI) : - - -printf "%s\n" "#define _WASI_EMULATED_SIGNAL 1" >>confdefs.h - - -printf "%s\n" "#define _WASI_EMULATED_GETPID 1" >>confdefs.h - - -printf "%s\n" "#define _WASI_EMULATED_PROCESS_CLOCKS 1" >>confdefs.h - - LIBS="$LIBS -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks" - echo "#define _WASI_EMULATED_SIGNAL 1" >> confdefs.h - - if test "x$enable_wasm_pthreads" = xyes -then : - - # Note: update CFLAGS because ac_compile/ac_link needs this too. - # without this, configure fails to find pthread_create, sem_init, - # etc because they are only available in the sysroot for - # wasm32-wasi-threads. - # Note: wasi-threads requires --import-memory. - # Note: wasi requires --export-memory. - # Note: --export-memory is implicit unless --import-memory is given - # Note: this requires LLVM >= 16. - as_fn_append CFLAGS " -target wasm32-wasi-threads -pthread" - as_fn_append CFLAGS_NODIST " -target wasm32-wasi-threads -pthread" - as_fn_append LDFLAGS_NODIST " -target wasm32-wasi-threads -pthread" - as_fn_append LDFLAGS_NODIST " -Wl,--import-memory" - as_fn_append LDFLAGS_NODIST " -Wl,--export-memory" - as_fn_append LDFLAGS_NODIST " -Wl,--max-memory=10485760" - -fi - - as_fn_append LDFLAGS_NODIST " -z stack-size=16777216 -Wl,--stack-first -Wl,--initial-memory=41943040" - - ;; #( - *) : - ;; -esac - -case $enable_wasm_dynamic_linking in #( - yes) : - ac_cv_func_dlopen=yes ;; #( - no) : - ac_cv_func_dlopen=no ;; #( - missing) : - - ;; #( - *) : - ;; -esac - - - - - - - - -# The -arch flags for universal builds on macOS -UNIVERSAL_ARCH_FLAGS= - - - - -# tweak BASECFLAGS based on compiler and platform -if test "x$with_strict_overflow" = xyes -then : - BASECFLAGS="$BASECFLAGS $STRICT_OVERFLOW_CFLAGS" -else case e in #( - e) BASECFLAGS="$BASECFLAGS $NO_STRICT_OVERFLOW_CFLAGS" ;; -esac -fi - -# Enable flags that warn and protect for potential security vulnerabilities. -# These flags should be enabled by default for all builds. - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-safety" >&5 -printf %s "checking for --enable-safety... " >&6; } -# Check whether --enable-safety was given. -if test ${enable_safety+y} -then : - enableval=$enable_safety; if test "x$disable_safety" = xyes -then : - enable_safety=no -else case e in #( - e) enable_safety=yes ;; -esac -fi -else case e in #( - e) enable_safety=no ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_safety" >&5 -printf "%s\n" "$enable_safety" >&6; } - -if test "$enable_safety" = "yes" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstack-protector-strong" >&5 -printf %s "checking whether C compiler accepts -fstack-protector-strong... " >&6; } -if test ${ax_cv_check_cflags__Werror__fstack_protector_strong+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Werror -fstack-protector-strong" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags__Werror__fstack_protector_strong=yes -else case e in #( - e) ax_cv_check_cflags__Werror__fstack_protector_strong=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__fstack_protector_strong" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__fstack_protector_strong" >&6; } -if test "x$ax_cv_check_cflags__Werror__fstack_protector_strong" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -fstack-protector-strong" -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -fstack-protector-strong not supported" >&5 -printf "%s\n" "$as_me: WARNING: -fstack-protector-strong not supported" >&2;} ;; -esac -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wtrampolines" >&5 -printf %s "checking whether C compiler accepts -Wtrampolines... " >&6; } -if test ${ax_cv_check_cflags__Werror__Wtrampolines+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Werror -Wtrampolines" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags__Werror__Wtrampolines=yes -else case e in #( - e) ax_cv_check_cflags__Werror__Wtrampolines=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wtrampolines" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wtrampolines" >&6; } -if test "x$ax_cv_check_cflags__Werror__Wtrampolines" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -Wtrampolines" -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Wtrampolines not supported" >&5 -printf "%s\n" "$as_me: WARNING: -Wtrampolines not supported" >&2;} ;; -esac -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wimplicit-fallthrough" >&5 -printf %s "checking whether C compiler accepts -Wimplicit-fallthrough... " >&6; } -if test ${ax_cv_check_cflags__Werror__Wimplicit_fallthrough+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Werror -Wimplicit-fallthrough" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags__Werror__Wimplicit_fallthrough=yes -else case e in #( - e) ax_cv_check_cflags__Werror__Wimplicit_fallthrough=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wimplicit_fallthrough" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wimplicit_fallthrough" >&6; } -if test "x$ax_cv_check_cflags__Werror__Wimplicit_fallthrough" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -Wimplicit-fallthrough" -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Wimplicit-fallthrough not supported" >&5 -printf "%s\n" "$as_me: WARNING: -Wimplicit-fallthrough not supported" >&2;} ;; -esac -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Werror=format-security" >&5 -printf %s "checking whether C compiler accepts -Werror=format-security... " >&6; } -if test ${ax_cv_check_cflags__Werror__Werror_format_security+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Werror -Werror=format-security" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags__Werror__Werror_format_security=yes -else case e in #( - e) ax_cv_check_cflags__Werror__Werror_format_security=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Werror_format_security" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Werror_format_security" >&6; } -if test "x$ax_cv_check_cflags__Werror__Werror_format_security" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -Werror=format-security" -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Werror=format-security not supported" >&5 -printf "%s\n" "$as_me: WARNING: -Werror=format-security not supported" >&2;} ;; -esac -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wbidi-chars=any" >&5 -printf %s "checking whether C compiler accepts -Wbidi-chars=any... " >&6; } -if test ${ax_cv_check_cflags__Werror__Wbidi_chars_any+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Werror -Wbidi-chars=any" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags__Werror__Wbidi_chars_any=yes -else case e in #( - e) ax_cv_check_cflags__Werror__Wbidi_chars_any=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wbidi_chars_any" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wbidi_chars_any" >&6; } -if test "x$ax_cv_check_cflags__Werror__Wbidi_chars_any" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -Wbidi-chars=any" -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Wbidi-chars=any not supported" >&5 -printf "%s\n" "$as_me: WARNING: -Wbidi-chars=any not supported" >&2;} ;; -esac -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wall" >&5 -printf %s "checking whether C compiler accepts -Wall... " >&6; } -if test ${ax_cv_check_cflags__Werror__Wall+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Werror -Wall" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags__Werror__Wall=yes -else case e in #( - e) ax_cv_check_cflags__Werror__Wall=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wall" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wall" >&6; } -if test "x$ax_cv_check_cflags__Werror__Wall" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -Wall" -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Wall not supported" >&5 -printf "%s\n" "$as_me: WARNING: -Wall not supported" >&2;} ;; -esac -fi - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-slower-safety" >&5 -printf %s "checking for --enable-slower-safety... " >&6; } -# Check whether --enable-slower-safety was given. -if test ${enable_slower_safety+y} -then : - enableval=$enable_slower_safety; if test "x$disable_slower_safety" = xyes -then : - enable_slower_safety=no -else case e in #( - e) enable_slower_safety=yes ;; -esac -fi -else case e in #( - e) enable_slower_safety=no ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_slower_safety" >&5 -printf "%s\n" "$enable_slower_safety" >&6; } - -if test "$enable_slower_safety" = "yes" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -D_FORTIFY_SOURCE=3" >&5 -printf %s "checking whether C compiler accepts -D_FORTIFY_SOURCE=3... " >&6; } -if test ${ax_cv_check_cflags__Werror__D_FORTIFY_SOURCE_3+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Werror -D_FORTIFY_SOURCE=3" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags__Werror__D_FORTIFY_SOURCE_3=yes -else case e in #( - e) ax_cv_check_cflags__Werror__D_FORTIFY_SOURCE_3=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__D_FORTIFY_SOURCE_3" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__D_FORTIFY_SOURCE_3" >&6; } -if test "x$ax_cv_check_cflags__Werror__D_FORTIFY_SOURCE_3" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3" -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -D_FORTIFY_SOURCE=3 not supported" >&5 -printf "%s\n" "$as_me: WARNING: -D_FORTIFY_SOURCE=3 not supported" >&2;} ;; -esac -fi - -fi - -if test "x$ac_cv_gcc_compat" = xyes -then : - - CFLAGS_NODIST="$CFLAGS_NODIST -std=c11" - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can add -Wextra" >&5 -printf %s "checking if we can add -Wextra... " >&6; } -if test ${ac_cv_enable_extra_warning+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - py_cflags=$CFLAGS - as_fn_append CFLAGS " -Wextra -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_enable_extra_warning=yes -else case e in #( - e) ac_cv_enable_extra_warning=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$py_cflags - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_extra_warning" >&5 -printf "%s\n" "$ac_cv_enable_extra_warning" >&6; } - - - if test "x$ac_cv_enable_extra_warning" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -Wextra" -fi - - # Python doesn't violate C99 aliasing rules, but older versions of - # GCC produce warnings for legal Python code. Enable - # -fno-strict-aliasing on versions of GCC that support but produce - # warnings. See Issue3326 - ac_save_cc="$CC" - CC="$CC -fno-strict-aliasing" - save_CFLAGS="$CFLAGS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts and needs -fno-strict-aliasing" >&5 -printf %s "checking whether $CC accepts and needs -fno-strict-aliasing... " >&6; } -if test ${ac_cv_no_strict_aliasing+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -int -main (void) -{ - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - CC="$ac_save_cc -fstrict-aliasing" - CFLAGS="$CFLAGS -Werror -Wstrict-aliasing" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - void f(int **x) {} -int -main (void) -{ -double *x; f((int **) &x); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - ac_cv_no_strict_aliasing=no - -else case e in #( - e) - ac_cv_no_strict_aliasing=yes - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -else case e in #( - e) - ac_cv_no_strict_aliasing=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_no_strict_aliasing" >&5 -printf "%s\n" "$ac_cv_no_strict_aliasing" >&6; } - CFLAGS="$save_CFLAGS" - CC="$ac_save_cc" - if test "x$ac_cv_no_strict_aliasing" = xyes -then : - BASECFLAGS="$BASECFLAGS -fno-strict-aliasing" -fi - - # ICC doesn't recognize the option, but only emits a warning - ## XXX does it emit an unused result warning and can it be disabled? - case "$ac_cv_cc_name" in #( - icc) : - ac_cv_disable_unused_result_warning=no - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC unused-result warning" >&5 -printf %s "checking if we can disable $CC unused-result warning... " >&6; } -if test ${ac_cv_disable_unused_result_warning+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - py_cflags=$CFLAGS - as_fn_append CFLAGS " -Wunused-result -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_disable_unused_result_warning=yes -else case e in #( - e) ac_cv_disable_unused_result_warning=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$py_cflags - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_unused_result_warning" >&5 -printf "%s\n" "$ac_cv_disable_unused_result_warning" >&6; } - - ;; #( - *) : - ;; -esac - if test "x$ac_cv_disable_unused_result_warning" = xyes -then : - BASECFLAGS="$BASECFLAGS -Wno-unused-result" - CFLAGS_NODIST="$CFLAGS_NODIST -Wno-unused-result" -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC unused-parameter warning" >&5 -printf %s "checking if we can disable $CC unused-parameter warning... " >&6; } -if test ${ac_cv_disable_unused_parameter_warning+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - py_cflags=$CFLAGS - as_fn_append CFLAGS " -Wunused-parameter -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_disable_unused_parameter_warning=yes -else case e in #( - e) ac_cv_disable_unused_parameter_warning=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$py_cflags - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_unused_parameter_warning" >&5 -printf "%s\n" "$ac_cv_disable_unused_parameter_warning" >&6; } - - - if test "x$ac_cv_disable_unused_parameter_warning" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -Wno-unused-parameter" -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC int-conversion warning" >&5 -printf %s "checking if we can disable $CC int-conversion warning... " >&6; } -if test ${ac_cv_disable_int_conversion_warning+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - py_cflags=$CFLAGS - as_fn_append CFLAGS " -Wint-conversion -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_disable_int_conversion_warning=yes -else case e in #( - e) ac_cv_disable_int_conversion_warning=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$py_cflags - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_int_conversion_warning" >&5 -printf "%s\n" "$ac_cv_disable_int_conversion_warning" >&6; } - - - if test "x$ac_cv_disable_int_conversion" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -Wno-int-conversion" -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC missing-field-initializers warning" >&5 -printf %s "checking if we can disable $CC missing-field-initializers warning... " >&6; } -if test ${ac_cv_disable_missing_field_initializers_warning+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - py_cflags=$CFLAGS - as_fn_append CFLAGS " -Wmissing-field-initializers -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_disable_missing_field_initializers_warning=yes -else case e in #( - e) ac_cv_disable_missing_field_initializers_warning=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$py_cflags - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_missing_field_initializers_warning" >&5 -printf "%s\n" "$ac_cv_disable_missing_field_initializers_warning" >&6; } - - - if test "x$ac_cv_disable_missing_field_initializers_warning" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -Wno-missing-field-initializers" -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can enable $CC sign-compare warning" >&5 -printf %s "checking if we can enable $CC sign-compare warning... " >&6; } -if test ${ac_cv_enable_sign_compare_warning+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - py_cflags=$CFLAGS - as_fn_append CFLAGS " -Wsign-compare -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_enable_sign_compare_warning=yes -else case e in #( - e) ac_cv_enable_sign_compare_warning=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$py_cflags - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_sign_compare_warning" >&5 -printf "%s\n" "$ac_cv_enable_sign_compare_warning" >&6; } - - - if test "x$ac_cv_enable_sign_compare_warning" = xyes -then : - BASECFLAGS="$BASECFLAGS -Wsign-compare" -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can enable $CC unreachable-code warning" >&5 -printf %s "checking if we can enable $CC unreachable-code warning... " >&6; } -if test ${ac_cv_enable_unreachable_code_warning+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - py_cflags=$CFLAGS - as_fn_append CFLAGS " -Wunreachable-code -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_enable_unreachable_code_warning=yes -else case e in #( - e) ac_cv_enable_unreachable_code_warning=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$py_cflags - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_unreachable_code_warning" >&5 -printf "%s\n" "$ac_cv_enable_unreachable_code_warning" >&6; } - - - # Don't enable unreachable code warning in debug mode, since it usually - # results in non-standard code paths. - # Issue #24324: Unfortunately, the unreachable code warning does not work - # correctly on gcc and has been silently removed from the compiler. - # It is supported on clang but on OS X systems gcc may be an alias - # for clang. Try to determine if the compiler is not really gcc and, - # if so, only then enable the warning. - if test $ac_cv_enable_unreachable_code_warning = yes && \ - test "$Py_DEBUG" != "true" && \ - test -z "`$CC --version 2>/dev/null | grep 'Free Software Foundation'`" - then - BASECFLAGS="$BASECFLAGS -Wunreachable-code" - else - ac_cv_enable_unreachable_code_warning=no - fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can enable $CC strict-prototypes warning" >&5 -printf %s "checking if we can enable $CC strict-prototypes warning... " >&6; } -if test ${ac_cv_enable_strict_prototypes_warning+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - py_cflags=$CFLAGS - as_fn_append CFLAGS " -Wstrict-prototypes -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_enable_strict_prototypes_warning=yes -else case e in #( - e) ac_cv_enable_strict_prototypes_warning=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$py_cflags - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_strict_prototypes_warning" >&5 -printf "%s\n" "$ac_cv_enable_strict_prototypes_warning" >&6; } - - - if test "x$ac_cv_enable_strict_prototypes_warning" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -Wstrict-prototypes" -fi - - ac_save_cc="$CC" - CC="$CC -Werror=implicit-function-declaration" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can make implicit function declaration an error in $CC" >&5 -printf %s "checking if we can make implicit function declaration an error in $CC... " >&6; } -if test ${ac_cv_enable_implicit_function_declaration_error+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -int -main (void) -{ - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - ac_cv_enable_implicit_function_declaration_error=yes - -else case e in #( - e) - ac_cv_enable_implicit_function_declaration_error=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_implicit_function_declaration_error" >&5 -printf "%s\n" "$ac_cv_enable_implicit_function_declaration_error" >&6; } - CC="$ac_save_cc" - - if test "x$ac_cv_enable_implicit_function_declaration_error" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -Werror=implicit-function-declaration" -fi - - ac_save_cc="$CC" - CC="$CC -fvisibility=hidden" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can use visibility in $CC" >&5 -printf %s "checking if we can use visibility in $CC... " >&6; } -if test ${ac_cv_enable_visibility+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -int -main (void) -{ - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - ac_cv_enable_visibility=yes - -else case e in #( - e) - ac_cv_enable_visibility=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_visibility" >&5 -printf "%s\n" "$ac_cv_enable_visibility" >&6; } - CC="$ac_save_cc" - - if test "x$ac_cv_enable_visibility" = xyes -then : - CFLAGS_NODIST="$CFLAGS_NODIST -fvisibility=hidden" -fi - - # if using gcc on alpha, use -mieee to get (near) full IEEE 754 - # support. Without this, treatment of subnormals doesn't follow - # the standard. - case $host in - alpha*) - BASECFLAGS="$BASECFLAGS -mieee" - ;; - esac - - case $ac_sys_system in - SCO_SV*) - BASECFLAGS="$BASECFLAGS -m486 -DSCO5" - ;; - - Darwin*) - # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd - # used to be here, but non-Apple gcc doesn't accept them. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which compiler should be used" >&5 -printf %s "checking which compiler should be used... " >&6; } - case "${UNIVERSALSDK}" in - */MacOSX10.4u.sdk) - # Build using 10.4 SDK, force usage of gcc when the - # compiler is gcc, otherwise the user will get very - # confusing error messages when building on OSX 10.6 - CC=gcc-4.0 - CPP=cpp-4.0 - ;; - esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } - - # Error on unguarded use of new symbols, which will fail at runtime for - # users on older versions of macOS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wunguarded-availability" >&5 -printf %s "checking whether C compiler accepts -Wunguarded-availability... " >&6; } -if test ${ax_cv_check_cflags__Werror__Wunguarded_availability+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Werror -Wunguarded-availability" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags__Werror__Wunguarded_availability=yes -else case e in #( - e) ax_cv_check_cflags__Werror__Wunguarded_availability=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wunguarded_availability" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__Wunguarded_availability" >&6; } -if test "x$ax_cv_check_cflags__Werror__Wunguarded_availability" = xyes -then : - as_fn_append CFLAGS_NODIST " -Werror=unguarded-availability" -else case e in #( - e) : ;; -esac -fi - - - LIPO_INTEL64_FLAGS="" - if test "${enable_universalsdk}" - then - case "$UNIVERSAL_ARCHS" in - 32-bit) - UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386" - LIPO_32BIT_FLAGS="" - ARCH_RUN_32BIT="" - ARCH_TRIPLES=`echo {ppc,i386}-apple-darwin` - ;; - 64-bit) - UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64" - LIPO_32BIT_FLAGS="" - ARCH_RUN_32BIT="true" - ARCH_TRIPLES=`echo {ppc64,x86_64}-apple-darwin` - ;; - all) - UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64" - LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" - ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" - ARCH_TRIPLES=`echo {i386,ppc,ppc64,x86_64}-apple-darwin` - ;; - universal2) - UNIVERSAL_ARCH_FLAGS="-arch arm64 -arch x86_64" - LIPO_32BIT_FLAGS="" - LIPO_INTEL64_FLAGS="-extract x86_64" - ARCH_RUN_32BIT="true" - ARCH_TRIPLES=`echo {aarch64,x86_64}-apple-darwin` - ;; - intel) - UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64" - LIPO_32BIT_FLAGS="-extract i386" - ARCH_RUN_32BIT="/usr/bin/arch -i386" - ARCH_TRIPLES=`echo {i386,x86_64}-apple-darwin` - ;; - intel-32) - UNIVERSAL_ARCH_FLAGS="-arch i386" - LIPO_32BIT_FLAGS="" - ARCH_RUN_32BIT="" - ARCH_TRIPLES=i386-apple-darwin - ;; - intel-64) - UNIVERSAL_ARCH_FLAGS="-arch x86_64" - LIPO_32BIT_FLAGS="" - ARCH_RUN_32BIT="true" - ARCH_TRIPLES=x86_64-apple-darwin - ;; - 3-way) - UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64" - LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" - ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" - ARCH_TRIPLES=`echo {i386,ppc,x86_64}-apple-darwin` - ;; - *) - as_fn_error $? "proper usage is --with-universal-arch=universal2|32-bit|64-bit|all|intel|3-way" "$LINENO" 5 - ;; - esac - - if test "${UNIVERSALSDK}" != "/" - then - CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}" - LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}" - CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}" - else - CFLAGS="${UNIVERSAL_ARCH_FLAGS} ${CFLAGS}" - LDFLAGS="${UNIVERSAL_ARCH_FLAGS} ${LDFLAGS}" - fi - fi - - # Calculate an appropriate deployment target for this build: - # The deployment target value is used explicitly to enable certain - # features are enabled (such as builtin libedit support for readline) - # through the use of Apple's Availability Macros and is used as a - # component of the string returned by distutils.get_platform(). - # - # Use the value from: - # 1. the MACOSX_DEPLOYMENT_TARGET environment variable if specified - # 2. the operating system version of the build machine if >= 10.6 - # 3. If running on OS X 10.3 through 10.5, use the legacy tests - # below to pick either 10.3, 10.4, or 10.5 as the target. - # 4. If we are running on OS X 10.2 or earlier, good luck! - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which MACOSX_DEPLOYMENT_TARGET to use" >&5 -printf %s "checking which MACOSX_DEPLOYMENT_TARGET to use... " >&6; } - cur_target_major=`sw_vers -productVersion | \ - sed 's/\([0-9]*\)\.\([0-9]*\).*/\1/'` - cur_target_minor=`sw_vers -productVersion | \ - sed 's/\([0-9]*\)\.\([0-9]*\).*/\2/'` - cur_target="${cur_target_major}.${cur_target_minor}" - if test ${cur_target_major} -eq 10 && \ - test ${cur_target_minor} -ge 3 && \ - test ${cur_target_minor} -le 5 - then - # OS X 10.3 through 10.5 - cur_target=10.3 - if test ${enable_universalsdk} - then - case "$UNIVERSAL_ARCHS" in - all|3-way|intel|64-bit) - # These configurations were first supported in 10.5 - cur_target='10.5' - ;; - esac - else - if test `/usr/bin/arch` = "i386" - then - # 10.4 was the first release to support Intel archs - cur_target="10.4" - fi - fi - fi - CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} - - # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the - # environment with a value that is the same as what we'll use - # in the Makefile to ensure that we'll get the same compiler - # environment during configure and build time. - MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" - export MACOSX_DEPLOYMENT_TARGET - EXPORT_MACOSX_DEPLOYMENT_TARGET='' - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MACOSX_DEPLOYMENT_TARGET" >&5 -printf "%s\n" "$MACOSX_DEPLOYMENT_TARGET" >&6; } - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if specified universal architectures work" >&5 -printf %s "checking if specified universal architectures work... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -printf("%d", 42); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - as_fn_error $? "check config.log and use the '--with-universal-archs' option" "$LINENO" 5 - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - - # end of Darwin* tests - ;; - esac - -else case e in #( - e) - case $ac_sys_system in - OpenUNIX*|UnixWare*) - BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca " - ;; - SCO_SV*) - BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5" - ;; - esac - ;; -esac -fi - -# Check for --enable-experimental-jit: -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-experimental-jit" >&5 -printf %s "checking for --enable-experimental-jit... " >&6; } -# Check whether --enable-experimental-jit was given. -if test ${enable_experimental_jit+y} -then : - enableval=$enable_experimental_jit; -else case e in #( - e) enable_experimental_jit=no ;; -esac -fi - -case $enable_experimental_jit in - no) jit_flags=""; tier2_flags="" ;; - yes) jit_flags="-D_Py_JIT"; tier2_flags="-D_Py_TIER2=1" ;; - yes-off) jit_flags="-D_Py_JIT"; tier2_flags="-D_Py_TIER2=3" ;; - interpreter) jit_flags=""; tier2_flags="-D_Py_TIER2=4" ;; - interpreter-off) jit_flags=""; tier2_flags="-D_Py_TIER2=6" ;; # Secret option - *) as_fn_error $? "invalid argument: --enable-experimental-jit=$enable_experimental_jit; expected no|yes|yes-off|interpreter" "$LINENO" 5 ;; -esac -if ${tier2_flags:+false} : -then : - -else case e in #( - e) as_fn_append CFLAGS_NODIST " $tier2_flags" ;; -esac -fi -if ${jit_flags:+false} : -then : - -else case e in #( - e) as_fn_append CFLAGS_NODIST " $jit_flags" - REGEN_JIT_COMMAND="\$(PYTHON_FOR_REGEN) \$(srcdir)/Tools/jit/build.py ${ARCH_TRIPLES:-$host} --output-dir . --pyconfig-dir . --cflags=\"$CFLAGS_JIT\" --llvm-version=\"$LLVM_VERSION\"" - if test "x$Py_DEBUG" = xtrue -then : - as_fn_append REGEN_JIT_COMMAND " --debug" -fi ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tier2_flags $jit_flags" >&5 -printf "%s\n" "$tier2_flags $jit_flags" >&6; } - -if test "$disable_gil" = "yes" -a "$enable_experimental_jit" != "no"; then - # GH-133171: This configuration builds the JIT but never actually uses it, - # which is surprising (and strictly worse than not building it at all): - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --enable-experimental-jit does not work correctly with --disable-gil." >&5 -printf "%s\n" "$as_me: WARNING: --enable-experimental-jit does not work correctly with --disable-gil." >&2;} -fi - -case "$ac_cv_cc_name" in -mpicc) - CFLAGS_NODIST="$CFLAGS_NODIST" - ;; -icc) - # ICC needs -fp-model strict or floats behave badly - CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict" - ;; -xlc) - CFLAGS_NODIST="$CFLAGS_NODIST -qalias=noansi -qmaxmem=-1" - ;; -esac - -if test "$assertions" = 'true'; then - : -else - OPT="-DNDEBUG $OPT" -fi - -if test "$ac_arch_flags" -then - BASECFLAGS="$BASECFLAGS $ac_arch_flags" -fi - -# On some compilers, pthreads are available without further options -# (e.g. MacOS X). On some of these systems, the compiler will not -# complain if unaccepted options are passed (e.g. gcc on Mac OS X). -# So we have to see first whether pthreads are available without -# options before we can check whether -Kpthread improves anything. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads are available without options" >&5 -printf %s "checking whether pthreads are available without options... " >&6; } -if test ${ac_cv_pthread_is_default+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "$cross_compiling" = yes -then : - ac_cv_pthread_is_default=no -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -void* routine(void* p){return NULL;} - -int main(void){ - pthread_t p; - if(pthread_create(&p,NULL,routine,NULL)!=0) - return 1; - (void)pthread_detach(p); - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - - ac_cv_pthread_is_default=yes - ac_cv_kthread=no - ac_cv_pthread=no - -else case e in #( - e) ac_cv_pthread_is_default=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_is_default" >&5 -printf "%s\n" "$ac_cv_pthread_is_default" >&6; } - - -if test $ac_cv_pthread_is_default = yes -then - ac_cv_kpthread=no -else -# -Kpthread, if available, provides the right #defines -# and linker options to make pthread_create available -# Some compilers won't report that they do not support -Kpthread, -# so we need to run a program to see whether it really made the -# function available. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Kpthread" >&5 -printf %s "checking whether $CC accepts -Kpthread... " >&6; } -if test ${ac_cv_kpthread+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_save_cc="$CC" -CC="$CC -Kpthread" -if test "$cross_compiling" = yes -then : - ac_cv_kpthread=no -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -void* routine(void* p){return NULL;} - -int main(void){ - pthread_t p; - if(pthread_create(&p,NULL,routine,NULL)!=0) - return 1; - (void)pthread_detach(p); - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_kpthread=yes -else case e in #( - e) ac_cv_kpthread=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - -CC="$ac_save_cc" ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_kpthread" >&5 -printf "%s\n" "$ac_cv_kpthread" >&6; } -fi - -if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no -then -# -Kthread, if available, provides the right #defines -# and linker options to make pthread_create available -# Some compilers won't report that they do not support -Kthread, -# so we need to run a program to see whether it really made the -# function available. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Kthread" >&5 -printf %s "checking whether $CC accepts -Kthread... " >&6; } -if test ${ac_cv_kthread+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_save_cc="$CC" -CC="$CC -Kthread" -if test "$cross_compiling" = yes -then : - ac_cv_kthread=no -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -void* routine(void* p){return NULL;} - -int main(void){ - pthread_t p; - if(pthread_create(&p,NULL,routine,NULL)!=0) - return 1; - (void)pthread_detach(p); - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_kthread=yes -else case e in #( - e) ac_cv_kthread=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - -CC="$ac_save_cc" ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_kthread" >&5 -printf "%s\n" "$ac_cv_kthread" >&6; } -fi - -if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no -then -# -pthread, if available, provides the right #defines -# and linker options to make pthread_create available -# Some compilers won't report that they do not support -pthread, -# so we need to run a program to see whether it really made the -# function available. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -pthread" >&5 -printf %s "checking whether $CC accepts -pthread... " >&6; } -if test ${ac_cv_pthread+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_save_cc="$CC" -CC="$CC -pthread" -if test "$cross_compiling" = yes -then : - ac_cv_pthread=no -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -void* routine(void* p){return NULL;} - -int main(void){ - pthread_t p; - if(pthread_create(&p,NULL,routine,NULL)!=0) - return 1; - (void)pthread_detach(p); - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_pthread=yes -else case e in #( - e) ac_cv_pthread=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - -CC="$ac_save_cc" ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread" >&5 -printf "%s\n" "$ac_cv_pthread" >&6; } -fi - -# If we have set a CC compiler flag for thread support then -# check if it works for CXX, too. -if test ! -z "$CXX" -then -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX also accepts flags for thread support" >&5 -printf %s "checking whether $CXX also accepts flags for thread support... " >&6; } -if test ${ac_cv_cxx_thread+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_save_cxx="$CXX" - -if test "$ac_cv_kpthread" = "yes" -then - CXX="$CXX -Kpthread" - ac_cv_cxx_thread=yes -elif test "$ac_cv_kthread" = "yes" -then - CXX="$CXX -Kthread" - ac_cv_cxx_thread=yes -elif test "$ac_cv_pthread" = "yes" -then - CXX="$CXX -pthread" - ac_cv_cxx_thread=yes -else - ac_cv_cxx_thread=no -fi - -if test $ac_cv_cxx_thread = yes -then - echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext - $CXX -c conftest.$ac_ext 2>&5 - if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \ - && test -s conftest$ac_exeext && ./conftest$ac_exeext - then - ac_cv_cxx_thread=yes - else - ac_cv_cxx_thread=no - fi - rm -fr conftest* -fi -CXX="$ac_save_cxx" ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_thread" >&5 -printf "%s\n" "$ac_cv_cxx_thread" >&6; } -else - ac_cv_cxx_thread=no -fi - - - -printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h - - -# checks for header files -ac_fn_c_check_header_compile "$LINENO" "alloca.h" "ac_cv_header_alloca_h" "$ac_includes_default" -if test "x$ac_cv_header_alloca_h" = xyes -then : - printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "asm/types.h" "ac_cv_header_asm_types_h" "$ac_includes_default" -if test "x$ac_cv_header_asm_types_h" = xyes -then : - printf "%s\n" "#define HAVE_ASM_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "bluetooth.h" "ac_cv_header_bluetooth_h" "$ac_includes_default" -if test "x$ac_cv_header_bluetooth_h" = xyes -then : - printf "%s\n" "#define HAVE_BLUETOOTH_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "conio.h" "ac_cv_header_conio_h" "$ac_includes_default" -if test "x$ac_cv_header_conio_h" = xyes -then : - printf "%s\n" "#define HAVE_CONIO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "direct.h" "ac_cv_header_direct_h" "$ac_includes_default" -if test "x$ac_cv_header_direct_h" = xyes -then : - printf "%s\n" "#define HAVE_DIRECT_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" -if test "x$ac_cv_header_dlfcn_h" = xyes -then : - printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "endian.h" "ac_cv_header_endian_h" "$ac_includes_default" -if test "x$ac_cv_header_endian_h" = xyes -then : - printf "%s\n" "#define HAVE_ENDIAN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default" -if test "x$ac_cv_header_errno_h" = xyes -then : - printf "%s\n" "#define HAVE_ERRNO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" -if test "x$ac_cv_header_fcntl_h" = xyes -then : - printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "grp.h" "ac_cv_header_grp_h" "$ac_includes_default" -if test "x$ac_cv_header_grp_h" = xyes -then : - printf "%s\n" "#define HAVE_GRP_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "io.h" "ac_cv_header_io_h" "$ac_includes_default" -if test "x$ac_cv_header_io_h" = xyes -then : - printf "%s\n" "#define HAVE_IO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default" -if test "x$ac_cv_header_langinfo_h" = xyes -then : - printf "%s\n" "#define HAVE_LANGINFO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" -if test "x$ac_cv_header_libintl_h" = xyes -then : - printf "%s\n" "#define HAVE_LIBINTL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "libutil.h" "ac_cv_header_libutil_h" "$ac_includes_default" -if test "x$ac_cv_header_libutil_h" = xyes -then : - printf "%s\n" "#define HAVE_LIBUTIL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/auxvec.h" "ac_cv_header_linux_auxvec_h" "$ac_includes_default" -if test "x$ac_cv_header_linux_auxvec_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_AUXVEC_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/auxv.h" "ac_cv_header_sys_auxv_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_auxv_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_AUXV_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/fs.h" "ac_cv_header_linux_fs_h" "$ac_includes_default" -if test "x$ac_cv_header_linux_fs_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_FS_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/limits.h" "ac_cv_header_linux_limits_h" "$ac_includes_default" -if test "x$ac_cv_header_linux_limits_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_LIMITS_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/memfd.h" "ac_cv_header_linux_memfd_h" "$ac_includes_default" -if test "x$ac_cv_header_linux_memfd_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_MEMFD_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/netfilter_ipv4.h" "ac_cv_header_linux_netfilter_ipv4_h" "$ac_includes_default" -if test "x$ac_cv_header_linux_netfilter_ipv4_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_NETFILTER_IPV4_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/random.h" "ac_cv_header_linux_random_h" "$ac_includes_default" -if test "x$ac_cv_header_linux_random_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_RANDOM_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/soundcard.h" "ac_cv_header_linux_soundcard_h" "$ac_includes_default" -if test "x$ac_cv_header_linux_soundcard_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_SOUNDCARD_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/sched.h" "ac_cv_header_linux_sched_h" "$ac_includes_default" -if test "x$ac_cv_header_linux_sched_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_SCHED_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/tipc.h" "ac_cv_header_linux_tipc_h" "$ac_includes_default" -if test "x$ac_cv_header_linux_tipc_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_TIPC_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/wait.h" "ac_cv_header_linux_wait_h" "$ac_includes_default" -if test "x$ac_cv_header_linux_wait_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_WAIT_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default" -if test "x$ac_cv_header_netdb_h" = xyes -then : - printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "net/ethernet.h" "ac_cv_header_net_ethernet_h" "$ac_includes_default" -if test "x$ac_cv_header_net_ethernet_h" = xyes -then : - printf "%s\n" "#define HAVE_NET_ETHERNET_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default" -if test "x$ac_cv_header_netinet_in_h" = xyes -then : - printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netpacket/packet.h" "ac_cv_header_netpacket_packet_h" "$ac_includes_default" -if test "x$ac_cv_header_netpacket_packet_h" = xyes -then : - printf "%s\n" "#define HAVE_NETPACKET_PACKET_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "poll.h" "ac_cv_header_poll_h" "$ac_includes_default" -if test "x$ac_cv_header_poll_h" = xyes -then : - printf "%s\n" "#define HAVE_POLL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "process.h" "ac_cv_header_process_h" "$ac_includes_default" -if test "x$ac_cv_header_process_h" = xyes -then : - printf "%s\n" "#define HAVE_PROCESS_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" -if test "x$ac_cv_header_pthread_h" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "pty.h" "ac_cv_header_pty_h" "$ac_includes_default" -if test "x$ac_cv_header_pty_h" = xyes -then : - printf "%s\n" "#define HAVE_PTY_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sched.h" "ac_cv_header_sched_h" "$ac_includes_default" -if test "x$ac_cv_header_sched_h" = xyes -then : - printf "%s\n" "#define HAVE_SCHED_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "setjmp.h" "ac_cv_header_setjmp_h" "$ac_includes_default" -if test "x$ac_cv_header_setjmp_h" = xyes -then : - printf "%s\n" "#define HAVE_SETJMP_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "shadow.h" "ac_cv_header_shadow_h" "$ac_includes_default" -if test "x$ac_cv_header_shadow_h" = xyes -then : - printf "%s\n" "#define HAVE_SHADOW_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "signal.h" "ac_cv_header_signal_h" "$ac_includes_default" -if test "x$ac_cv_header_signal_h" = xyes -then : - printf "%s\n" "#define HAVE_SIGNAL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default" -if test "x$ac_cv_header_spawn_h" = xyes -then : - printf "%s\n" "#define HAVE_SPAWN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "stropts.h" "ac_cv_header_stropts_h" "$ac_includes_default" -if test "x$ac_cv_header_stropts_h" = xyes -then : - printf "%s\n" "#define HAVE_STROPTS_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/audioio.h" "ac_cv_header_sys_audioio_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_audioio_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_AUDIOIO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/bsdtty.h" "ac_cv_header_sys_bsdtty_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_bsdtty_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_BSDTTY_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/devpoll.h" "ac_cv_header_sys_devpoll_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_devpoll_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_DEVPOLL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/endian.h" "ac_cv_header_sys_endian_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_endian_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_ENDIAN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/epoll.h" "ac_cv_header_sys_epoll_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_epoll_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_EPOLL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/event.h" "ac_cv_header_sys_event_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_event_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_EVENT_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/eventfd.h" "ac_cv_header_sys_eventfd_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_eventfd_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_EVENTFD_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_file_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_ioctl_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/kern_control.h" "ac_cv_header_sys_kern_control_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_kern_control_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_KERN_CONTROL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_loadavg_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_LOADAVG_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/lock.h" "ac_cv_header_sys_lock_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_lock_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_LOCK_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/memfd.h" "ac_cv_header_sys_memfd_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_memfd_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_MEMFD_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_mkdev_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_MKDEV_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_mman_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_MMAN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/modem.h" "ac_cv_header_sys_modem_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_modem_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_MODEM_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_param_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/pidfd.h" "ac_cv_header_sys_pidfd_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_pidfd_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_PIDFD_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/poll.h" "ac_cv_header_sys_poll_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_poll_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_POLL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/random.h" "ac_cv_header_sys_random_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_random_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_RANDOM_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_resource_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_select_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/sendfile.h" "ac_cv_header_sys_sendfile_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_sendfile_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SENDFILE_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_socket_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/soundcard.h" "ac_cv_header_sys_soundcard_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_soundcard_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SOUNDCARD_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_stat_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/statvfs.h" "ac_cv_header_sys_statvfs_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_statvfs_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_STATVFS_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/sys_domain.h" "ac_cv_header_sys_sys_domain_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_sys_domain_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SYS_DOMAIN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/syscall.h" "ac_cv_header_sys_syscall_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_syscall_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SYSCALL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_sysmacros_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SYSMACROS_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/termio.h" "ac_cv_header_sys_termio_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_termio_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TERMIO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_time_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/times.h" "ac_cv_header_sys_times_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_times_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TIMES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/timerfd.h" "ac_cv_header_sys_timerfd_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_timerfd_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TIMERFD_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_uio_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_UIO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_un_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_UN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/utsname.h" "ac_cv_header_sys_utsname_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_utsname_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_UTSNAME_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_wait_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/xattr.h" "ac_cv_header_sys_xattr_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_xattr_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_XATTR_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sysexits.h" "ac_cv_header_sysexits_h" "$ac_includes_default" -if test "x$ac_cv_header_sysexits_h" = xyes -then : - printf "%s\n" "#define HAVE_SYSEXITS_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "syslog.h" "ac_cv_header_syslog_h" "$ac_includes_default" -if test "x$ac_cv_header_syslog_h" = xyes -then : - printf "%s\n" "#define HAVE_SYSLOG_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default" -if test "x$ac_cv_header_termios_h" = xyes -then : - printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "util.h" "ac_cv_header_util_h" "$ac_includes_default" -if test "x$ac_cv_header_util_h" = xyes -then : - printf "%s\n" "#define HAVE_UTIL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "utime.h" "ac_cv_header_utime_h" "$ac_includes_default" -if test "x$ac_cv_header_utime_h" = xyes -then : - printf "%s\n" "#define HAVE_UTIME_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "utmp.h" "ac_cv_header_utmp_h" "$ac_includes_default" -if test "x$ac_cv_header_utmp_h" = xyes -then : - printf "%s\n" "#define HAVE_UTMP_H 1" >>confdefs.h - -fi - -ac_header_dirent=no -for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 -printf %s "checking for $ac_hdr that defines DIR... " >&6; } -if eval test \${$as_ac_Header+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include <$ac_hdr> - -int -main (void) -{ -if ((DIR *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$as_ac_Header=yes" -else case e in #( - e) eval "$as_ac_Header=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -eval ac_res=\$$as_ac_Header - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Header"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 -_ACEOF - -ac_header_dirent=$ac_hdr; break -fi - -done -# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -if test $ac_header_dirent = dirent.h; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -printf %s "checking for library containing opendir... " >&6; } -if test ${ac_cv_search_opendir+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (void); -int -main (void) -{ -return opendir (); - ; - return 0; -} -_ACEOF -for ac_lib in '' dir -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_opendir=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_opendir+y} -then : - break -fi -done -if test ${ac_cv_search_opendir+y} -then : - -else case e in #( - e) ac_cv_search_opendir=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -printf "%s\n" "$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -printf %s "checking for library containing opendir... " >&6; } -if test ${ac_cv_search_opendir+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (void); -int -main (void) -{ -return opendir (); - ; - return 0; -} -_ACEOF -for ac_lib in '' x -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_opendir=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_opendir+y} -then : - break -fi -done -if test ${ac_cv_search_opendir+y} -then : - -else case e in #( - e) ac_cv_search_opendir=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -printf "%s\n" "$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -fi - - -ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_mkdev_h" = xyes -then : - -printf "%s\n" "#define MAJOR_IN_MKDEV 1" >>confdefs.h - -fi - -if test $ac_cv_header_sys_mkdev_h = no; then - ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_sysmacros_h" = xyes -then : - -printf "%s\n" "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h - -fi - -fi - - -# bluetooth/bluetooth.h has been known to not compile with -std=c99. -# http://permalink.gmane.org/gmane.linux.bluez.kernel/22294 -SAVE_CFLAGS=$CFLAGS -CFLAGS="-std=c99 $CFLAGS" -ac_fn_c_check_header_compile "$LINENO" "bluetooth/bluetooth.h" "ac_cv_header_bluetooth_bluetooth_h" "$ac_includes_default" -if test "x$ac_cv_header_bluetooth_bluetooth_h" = xyes -then : - printf "%s\n" "#define HAVE_BLUETOOTH_BLUETOOTH_H 1" >>confdefs.h - -fi - -CFLAGS=$SAVE_CFLAGS - -# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first. -ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" "#include -#include -#include -#ifdef HAVE_SYS_SOCKET_H -# include -#endif - -" -if test "x$ac_cv_header_net_if_h" = xyes -then : - printf "%s\n" "#define HAVE_NET_IF_H 1" >>confdefs.h - -fi - - -# On Linux, netlink.h requires asm/types.h -# On FreeBSD, netlink.h is located in netlink/netlink.h -ac_fn_c_check_header_compile "$LINENO" "linux/netlink.h" "ac_cv_header_linux_netlink_h" " -#ifdef HAVE_ASM_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_header_linux_netlink_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_NETLINK_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netlink/netlink.h" "ac_cv_header_netlink_netlink_h" " -#ifdef HAVE_ASM_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_header_netlink_netlink_h" = xyes -then : - printf "%s\n" "#define HAVE_NETLINK_NETLINK_H 1" >>confdefs.h - -fi - - -# On Linux, qrtr.h requires asm/types.h -ac_fn_c_check_header_compile "$LINENO" "linux/qrtr.h" "ac_cv_header_linux_qrtr_h" " -#ifdef HAVE_ASM_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_header_linux_qrtr_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_QRTR_H 1" >>confdefs.h - -fi - - -ac_fn_c_check_header_compile "$LINENO" "linux/vm_sockets.h" "ac_cv_header_linux_vm_sockets_h" " -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_header_linux_vm_sockets_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_VM_SOCKETS_H 1" >>confdefs.h - -fi - - -# On Linux, can.h, can/bcm.h, can/isotp.h, can/j1939.h, can/raw.h require sys/socket.h -# On NetBSD, netcan/can.h requires sys/socket.h -ac_fn_c_check_header_compile "$LINENO" "linux/can.h" "ac_cv_header_linux_can_h" " -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_header_linux_can_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_CAN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/can/bcm.h" "ac_cv_header_linux_can_bcm_h" " -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_header_linux_can_bcm_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_CAN_BCM_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/can/isotp.h" "ac_cv_header_linux_can_isotp_h" " -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_header_linux_can_isotp_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_CAN_ISOTP_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/can/j1939.h" "ac_cv_header_linux_can_j1939_h" " -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_header_linux_can_j1939_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_CAN_J1939_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/can/raw.h" "ac_cv_header_linux_can_raw_h" " -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_header_linux_can_raw_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_CAN_RAW_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netcan/can.h" "ac_cv_header_netcan_can_h" " -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_header_netcan_can_h" = xyes -then : - printf "%s\n" "#define HAVE_NETCAN_CAN_H 1" >>confdefs.h - -fi - - -# Check for clock_t in time.h. -ac_fn_c_check_type "$LINENO" "clock_t" "ac_cv_type_clock_t" "#include -" -if test "x$ac_cv_type_clock_t" = xyes -then : - -printf "%s\n" "#define HAVE_CLOCK_T 1" >>confdefs.h - - -else case e in #( - e) -printf "%s\n" "#define clock_t long" >>confdefs.h - ;; -esac -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for makedev" >&5 -printf %s "checking for makedev... " >&6; } -if test ${ac_cv_func_makedev+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if defined(MAJOR_IN_MKDEV) -#include -#elif defined(MAJOR_IN_SYSMACROS) -#include -#else -#include -#endif - -int -main (void) -{ - - makedev(0, 0) - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_func_makedev=yes -else case e in #( - e) ac_cv_func_makedev=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_makedev" >&5 -printf "%s\n" "$ac_cv_func_makedev" >&6; } - -if test "x$ac_cv_func_makedev" = xyes -then : - - -printf "%s\n" "#define HAVE_MAKEDEV 1" >>confdefs.h - - -fi - -# byte swapping -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for le64toh" >&5 -printf %s "checking for le64toh... " >&6; } -if test ${ac_cv_func_le64toh+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef HAVE_ENDIAN_H -#include -#elif defined(HAVE_SYS_ENDIAN_H) -#include -#endif - -int -main (void) -{ - - le64toh(1) - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_func_le64toh=yes -else case e in #( - e) ac_cv_func_le64toh=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_le64toh" >&5 -printf "%s\n" "$ac_cv_func_le64toh" >&6; } - -if test "x$ac_cv_func_le64toh" = xyes -then : - - -printf "%s\n" "#define HAVE_HTOLE64 1" >>confdefs.h - - -fi - -use_lfs=yes -# Don't use largefile support for GNU/Hurd -case $ac_sys_system in GNU*) - use_lfs=no -esac - -if test "$use_lfs" = "yes"; then -# Two defines needed to enable largefile support on various platforms -# These may affect some typedefs -case $ac_sys_system/$ac_sys_release in -AIX*) - -printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h - - ;; -esac - -printf "%s\n" "#define _LARGEFILE_SOURCE 1" >>confdefs.h - - -printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h - -fi - -# Add some code to confdefs.h so that the test for off_t works on SCO -cat >> confdefs.h <<\EOF -#if defined(SCO_DS) -#undef _OFF_T -#endif -EOF - -# Type availability checks -ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" -if test "x$ac_cv_type_mode_t" = xyes -then : - -else case e in #( - e) -printf "%s\n" "#define mode_t int" >>confdefs.h - ;; -esac -fi - -ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -if test "x$ac_cv_type_off_t" = xyes -then : - -else case e in #( - e) -printf "%s\n" "#define off_t long int" >>confdefs.h - ;; -esac -fi - - - ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default -" -if test "x$ac_cv_type_pid_t" = xyes -then : - -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #if defined _WIN64 && !defined __CYGWIN__ - LLP64 - #endif - -int -main (void) -{ - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_pid_type='int' -else case e in #( - e) ac_pid_type='__int64' ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h - - ;; -esac -fi - - - -printf "%s\n" "#define RETSIGTYPE void" >>confdefs.h - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes -then : - -else case e in #( - e) -printf "%s\n" "#define size_t unsigned int" >>confdefs.h - ;; -esac -fi - -ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" -if test "x$ac_cv_type_uid_t" = xyes -then : - -else case e in #( - e) -printf "%s\n" "#define uid_t int" >>confdefs.h - ;; -esac -fi - -ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" -if test "x$ac_cv_type_gid_t" = xyes -then : - -else case e in #( - e) -printf "%s\n" "#define gid_t int" >>confdefs.h - ;; -esac -fi - - -ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" -if test "x$ac_cv_type_ssize_t" = xyes -then : - -printf "%s\n" "#define HAVE_SSIZE_T 1" >>confdefs.h - - -fi - -ac_fn_c_check_type "$LINENO" "__uint128_t" "ac_cv_type___uint128_t" "$ac_includes_default" -if test "x$ac_cv_type___uint128_t" = xyes -then : - -printf "%s\n" "#define HAVE___UINT128_T 1" >>confdefs.h - - -printf "%s\n" "#define HAVE_GCC_UINT128_T 1" >>confdefs.h - -fi - - -# Sizes and alignments of various common basic types -# ANSI C requires sizeof(char) == 1, so no need to check it -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 -printf %s "checking size of int... " >&6; } -if test ${ac_cv_sizeof_int+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type_int" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (int) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_int=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 -printf "%s\n" "$ac_cv_sizeof_int" >&6; } - - - -printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 -printf %s "checking size of long... " >&6; } -if test ${ac_cv_sizeof_long+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -printf "%s\n" "$ac_cv_sizeof_long" >&6; } - - - -printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler, -# see AC_CHECK_SIZEOF for more information. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking alignment of long" >&5 -printf %s "checking alignment of long... " >&6; } -if test ${ac_cv_alignof_long+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_long" "$ac_includes_default -typedef struct { char x; long y; } ac__type_alignof_;" -then : - -else case e in #( - e) if test "$ac_cv_type_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute alignment of long -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_alignof_long=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_long" >&5 -printf "%s\n" "$ac_cv_alignof_long" >&6; } - - - -printf "%s\n" "#define ALIGNOF_LONG $ac_cv_alignof_long" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 -printf %s "checking size of long long... " >&6; } -if test ${ac_cv_sizeof_long_long+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type_long_long" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long long) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long_long=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 -printf "%s\n" "$ac_cv_sizeof_long_long" >&6; } - - - -printf "%s\n" "#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 -printf %s "checking size of void *... " >&6; } -if test ${ac_cv_sizeof_void_p+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type_void_p" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (void *) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_void_p=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 -printf "%s\n" "$ac_cv_sizeof_void_p" >&6; } - - - -printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 -printf %s "checking size of short... " >&6; } -if test ${ac_cv_sizeof_short+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type_short" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (short) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_short=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 -printf "%s\n" "$ac_cv_sizeof_short" >&6; } - - - -printf "%s\n" "#define SIZEOF_SHORT $ac_cv_sizeof_short" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of float" >&5 -printf %s "checking size of float... " >&6; } -if test ${ac_cv_sizeof_float+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type_float" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (float) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_float=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5 -printf "%s\n" "$ac_cv_sizeof_float" >&6; } - - - -printf "%s\n" "#define SIZEOF_FLOAT $ac_cv_sizeof_float" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 -printf %s "checking size of double... " >&6; } -if test ${ac_cv_sizeof_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type_double" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (double) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_double=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 -printf "%s\n" "$ac_cv_sizeof_double" >&6; } - - - -printf "%s\n" "#define SIZEOF_DOUBLE $ac_cv_sizeof_double" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of fpos_t" >&5 -printf %s "checking size of fpos_t... " >&6; } -if test ${ac_cv_sizeof_fpos_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (fpos_t))" "ac_cv_sizeof_fpos_t" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type_fpos_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (fpos_t) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_fpos_t=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_fpos_t" >&5 -printf "%s\n" "$ac_cv_sizeof_fpos_t" >&6; } - - - -printf "%s\n" "#define SIZEOF_FPOS_T $ac_cv_sizeof_fpos_t" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 -printf %s "checking size of size_t... " >&6; } -if test ${ac_cv_sizeof_size_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type_size_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (size_t) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_size_t=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 -printf "%s\n" "$ac_cv_sizeof_size_t" >&6; } - - - -printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler, -# see AC_CHECK_SIZEOF for more information. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking alignment of size_t" >&5 -printf %s "checking alignment of size_t... " >&6; } -if test ${ac_cv_alignof_size_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_size_t" "$ac_includes_default -typedef struct { char x; size_t y; } ac__type_alignof_;" -then : - -else case e in #( - e) if test "$ac_cv_type_size_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute alignment of size_t -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_alignof_size_t=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_size_t" >&5 -printf "%s\n" "$ac_cv_alignof_size_t" >&6; } - - - -printf "%s\n" "#define ALIGNOF_SIZE_T $ac_cv_alignof_size_t" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of pid_t" >&5 -printf %s "checking size of pid_t... " >&6; } -if test ${ac_cv_sizeof_pid_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pid_t))" "ac_cv_sizeof_pid_t" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type_pid_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (pid_t) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_pid_t=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pid_t" >&5 -printf "%s\n" "$ac_cv_sizeof_pid_t" >&6; } - - - -printf "%s\n" "#define SIZEOF_PID_T $ac_cv_sizeof_pid_t" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of uintptr_t" >&5 -printf %s "checking size of uintptr_t... " >&6; } -if test ${ac_cv_sizeof_uintptr_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (uintptr_t))" "ac_cv_sizeof_uintptr_t" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type_uintptr_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (uintptr_t) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_uintptr_t=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_uintptr_t" >&5 -printf "%s\n" "$ac_cv_sizeof_uintptr_t" >&6; } - - - -printf "%s\n" "#define SIZEOF_UINTPTR_T $ac_cv_sizeof_uintptr_t" >>confdefs.h - - -# The cast to long int works around a bug in the HP C Compiler, -# see AC_CHECK_SIZEOF for more information. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking alignment of max_align_t" >&5 -printf %s "checking alignment of max_align_t... " >&6; } -if test ${ac_cv_alignof_max_align_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_max_align_t" "$ac_includes_default -typedef struct { char x; max_align_t y; } ac__type_alignof_;" -then : - -else case e in #( - e) if test "$ac_cv_type_max_align_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute alignment of max_align_t -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_alignof_max_align_t=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_max_align_t" >&5 -printf "%s\n" "$ac_cv_alignof_max_align_t" >&6; } - - - -printf "%s\n" "#define ALIGNOF_MAX_ALIGN_T $ac_cv_alignof_max_align_t" >>confdefs.h - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long double" >&5 -printf %s "checking for long double... " >&6; } -if test ${ac_cv_type_long_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "$GCC" = yes; then - ac_cv_type_long_double=yes - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* The Stardent Vistra knows sizeof (long double), but does - not support it. */ - long double foo = 0.0L; -int -main (void) -{ -static int test_array [1 - 2 * !(/* On Ultrix 4.3 cc, long double is 4 and double is 8. */ - sizeof (double) <= sizeof (long double))]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_type_long_double=yes -else case e in #( - e) ac_cv_type_long_double=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double" >&5 -printf "%s\n" "$ac_cv_type_long_double" >&6; } - if test $ac_cv_type_long_double = yes; then - -printf "%s\n" "#define HAVE_LONG_DOUBLE 1" >>confdefs.h - - fi - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5 -printf %s "checking size of long double... " >&6; } -if test ${ac_cv_sizeof_long_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type_long_double" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long double) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long_double=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5 -printf "%s\n" "$ac_cv_sizeof_long_double" >&6; } - - - -printf "%s\n" "#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double" >>confdefs.h - - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of _Bool" >&5 -printf %s "checking size of _Bool... " >&6; } -if test ${ac_cv_sizeof__Bool+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (_Bool))" "ac_cv_sizeof__Bool" "$ac_includes_default" -then : - -else case e in #( - e) if test "$ac_cv_type__Bool" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (_Bool) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof__Bool=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof__Bool" >&5 -printf "%s\n" "$ac_cv_sizeof__Bool" >&6; } - - - -printf "%s\n" "#define SIZEOF__BOOL $ac_cv_sizeof__Bool" >>confdefs.h - - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 -printf %s "checking size of off_t... " >&6; } -if test ${ac_cv_sizeof_off_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif - -" -then : - -else case e in #( - e) if test "$ac_cv_type_off_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (off_t) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_off_t=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5 -printf "%s\n" "$ac_cv_sizeof_off_t" >&6; } - - - -printf "%s\n" "#define SIZEOF_OFF_T $ac_cv_sizeof_off_t" >>confdefs.h - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable large file support" >&5 -printf %s "checking whether to enable large file support... " >&6; } -if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \ - "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then - have_largefile_support="yes" -else - have_largefile_support="no" -fi -if test "x$have_largefile_support" = xyes -then : - - -printf "%s\n" "#define HAVE_LARGEFILE_SUPPORT 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac -fi - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5 -printf %s "checking size of time_t... " >&6; } -if test ${ac_cv_sizeof_time_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_TIME_H -#include -#endif - -" -then : - -else case e in #( - e) if test "$ac_cv_type_time_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (time_t) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_time_t=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5 -printf "%s\n" "$ac_cv_sizeof_time_t" >&6; } - - - -printf "%s\n" "#define SIZEOF_TIME_T $ac_cv_sizeof_time_t" >>confdefs.h - - - -# if have pthread_t then define SIZEOF_PTHREAD_T -ac_save_cc="$CC" -if test "$ac_cv_kpthread" = "yes" -then CC="$CC -Kpthread" -elif test "$ac_cv_kthread" = "yes" -then CC="$CC -Kthread" -elif test "$ac_cv_pthread" = "yes" -then CC="$CC -pthread" -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_t" >&5 -printf %s "checking for pthread_t... " >&6; } -if test ${ac_cv_have_pthread_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include -int -main (void) -{ -pthread_t x; x = *(pthread_t*)0; - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_have_pthread_t=yes -else case e in #( - e) ac_cv_have_pthread_t=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_pthread_t" >&5 -printf "%s\n" "$ac_cv_have_pthread_t" >&6; } -if test "x$ac_cv_have_pthread_t" = xyes -then : - - # The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of pthread_t" >&5 -printf %s "checking size of pthread_t... " >&6; } -if test ${ac_cv_sizeof_pthread_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pthread_t))" "ac_cv_sizeof_pthread_t" " -#ifdef HAVE_PTHREAD_H -#include -#endif - -" -then : - -else case e in #( - e) if test "$ac_cv_type_pthread_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (pthread_t) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_pthread_t=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pthread_t" >&5 -printf "%s\n" "$ac_cv_sizeof_pthread_t" >&6; } - - - -printf "%s\n" "#define SIZEOF_PTHREAD_T $ac_cv_sizeof_pthread_t" >>confdefs.h - - - -fi - -# Issue #25658: POSIX hasn't defined that pthread_key_t is compatible with int. -# This checking will be unnecessary after removing deprecated TLS API. -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of pthread_key_t" >&5 -printf %s "checking size of pthread_key_t... " >&6; } -if test ${ac_cv_sizeof_pthread_key_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pthread_key_t))" "ac_cv_sizeof_pthread_key_t" "#include -" -then : - -else case e in #( - e) if test "$ac_cv_type_pthread_key_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (pthread_key_t) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_pthread_key_t=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pthread_key_t" >&5 -printf "%s\n" "$ac_cv_sizeof_pthread_key_t" >&6; } - - - -printf "%s\n" "#define SIZEOF_PTHREAD_KEY_T $ac_cv_sizeof_pthread_key_t" >>confdefs.h - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthread_key_t is compatible with int" >&5 -printf %s "checking whether pthread_key_t is compatible with int... " >&6; } -if test ${ac_cv_pthread_key_t_is_arithmetic_type+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -if test "$ac_cv_sizeof_pthread_key_t" -eq "$ac_cv_sizeof_int" ; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -pthread_key_t k; k * 1; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_pthread_key_t_is_arithmetic_type=yes -else case e in #( - e) ac_cv_pthread_key_t_is_arithmetic_type=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -else - ac_cv_pthread_key_t_is_arithmetic_type=no -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_key_t_is_arithmetic_type" >&5 -printf "%s\n" "$ac_cv_pthread_key_t_is_arithmetic_type" >&6; } -if test "x$ac_cv_pthread_key_t_is_arithmetic_type" = xyes -then : - - -printf "%s\n" "#define PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT 1" >>confdefs.h - - -fi - -CC="$ac_save_cc" - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-framework" >&5 -printf %s "checking for --enable-framework... " >&6; } -if test "$enable_framework" -then - BASECFLAGS="$BASECFLAGS -fno-common -dynamic" - # -F. is needed to allow linking to the framework while - # in the build location. - -printf "%s\n" "#define WITH_NEXT_FRAMEWORK 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - if test $enable_shared = "yes" - then - as_fn_error $? "Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead" "$LINENO" 5 - fi -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - -# Check for --with-dsymutil - - -DSYMUTIL= -DSYMUTIL_PATH= -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-dsymutil" >&5 -printf %s "checking for --with-dsymutil... " >&6; } - -# Check whether --with-dsymutil was given. -if test ${with_dsymutil+y} -then : - withval=$with_dsymutil; -if test "$withval" != no -then - if test "$MACHDEP" != "darwin"; then - as_fn_error $? "dsymutil debug linking is only available in macOS." "$LINENO" 5 - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; }; - DSYMUTIL='true' -else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; DSYMUTIL= -fi -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac -fi - - -if test "$DSYMUTIL"; then - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_DSYMUTIL_PATH+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $DSYMUTIL_PATH in - [\\/]* | ?:[\\/]*) - ac_cv_path_DSYMUTIL_PATH="$DSYMUTIL_PATH" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_DSYMUTIL_PATH="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_DSYMUTIL_PATH" && ac_cv_path_DSYMUTIL_PATH="not found" - ;; -esac ;; -esac -fi -DSYMUTIL_PATH=$ac_cv_path_DSYMUTIL_PATH -if test -n "$DSYMUTIL_PATH"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL_PATH" >&5 -printf "%s\n" "$DSYMUTIL_PATH" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - if test "$DSYMUTIL_PATH" = "not found"; then - as_fn_error $? "dsymutil command not found on \$PATH" "$LINENO" 5 - fi -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dyld" >&5 -printf %s "checking for dyld... " >&6; } -case $ac_sys_system/$ac_sys_release in - Darwin/*) - -printf "%s\n" "#define WITH_DYLD 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: always on for Darwin" >&5 -printf "%s\n" "always on for Darwin" >&6; } - ;; - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-address-sanitizer" >&5 -printf %s "checking for --with-address-sanitizer... " >&6; } - -# Check whether --with-address_sanitizer was given. -if test ${with_address_sanitizer+y} -then : - withval=$with_address_sanitizer; -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -printf "%s\n" "$withval" >&6; } -BASECFLAGS="-fsanitize=address -fno-omit-frame-pointer $BASECFLAGS" -LDFLAGS="-fsanitize=address $LDFLAGS" -# ASan works by controlling memory allocation, our own malloc interferes. -with_pymalloc="no" - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-memory-sanitizer" >&5 -printf %s "checking for --with-memory-sanitizer... " >&6; } - -# Check whether --with-memory_sanitizer was given. -if test ${with_memory_sanitizer+y} -then : - withval=$with_memory_sanitizer; -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -printf "%s\n" "$withval" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fsanitize=memory" >&5 -printf %s "checking whether C compiler accepts -fsanitize=memory... " >&6; } -if test ${ax_cv_check_cflags___fsanitize_memory+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -fsanitize=memory" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags___fsanitize_memory=yes -else case e in #( - e) ax_cv_check_cflags___fsanitize_memory=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_memory" >&5 -printf "%s\n" "$ax_cv_check_cflags___fsanitize_memory" >&6; } -if test "x$ax_cv_check_cflags___fsanitize_memory" = xyes -then : - -BASECFLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer $BASECFLAGS" -LDFLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 $LDFLAGS" - -else case e in #( - e) as_fn_error $? "The selected compiler doesn't support memory sanitizer" "$LINENO" 5 ;; -esac -fi - -# MSan works by controlling memory allocation, our own malloc interferes. -with_pymalloc="no" - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-undefined-behavior-sanitizer" >&5 -printf %s "checking for --with-undefined-behavior-sanitizer... " >&6; } - -# Check whether --with-undefined_behavior_sanitizer was given. -if test ${with_undefined_behavior_sanitizer+y} -then : - withval=$with_undefined_behavior_sanitizer; -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -printf "%s\n" "$withval" >&6; } -BASECFLAGS="-fsanitize=undefined $BASECFLAGS" -LDFLAGS="-fsanitize=undefined $LDFLAGS" -with_ubsan="yes" - -else case e in #( - e) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -with_ubsan="no" - ;; -esac -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-thread-sanitizer" >&5 -printf %s "checking for --with-thread-sanitizer... " >&6; } - -# Check whether --with-thread_sanitizer was given. -if test ${with_thread_sanitizer+y} -then : - withval=$with_thread_sanitizer; -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -printf "%s\n" "$withval" >&6; } -BASECFLAGS="-fsanitize=thread $BASECFLAGS" -LDFLAGS="-fsanitize=thread $LDFLAGS" -with_tsan="yes" - -else case e in #( - e) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -with_tsan="no" - ;; -esac -fi - - -# Set info about shared libraries. - - - - - - - -# SHLIB_SUFFIX is the extension of shared libraries `(including the dot!) -# -- usually .so, .sl on HP-UX, .dll on Cygwin -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the extension of shared libraries" >&5 -printf %s "checking the extension of shared libraries... " >&6; } -if test -z "$SHLIB_SUFFIX"; then - case $ac_sys_system in - hp*|HP*) - case `uname -m` in - ia64) SHLIB_SUFFIX=.so;; - *) SHLIB_SUFFIX=.sl;; - esac - ;; - CYGWIN*) SHLIB_SUFFIX=.dll;; - *) SHLIB_SUFFIX=.so;; - esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHLIB_SUFFIX" >&5 -printf "%s\n" "$SHLIB_SUFFIX" >&6; } - -# LDSHARED is the ld *command* used to create shared library -# -- "cc -G" on SunOS 5.x. -# (Shared libraries in this instance are shared modules to be loaded into -# Python, as opposed to building Python itself as a shared library.) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LDSHARED" >&5 -printf %s "checking LDSHARED... " >&6; } -if test -z "$LDSHARED" -then - case $ac_sys_system/$ac_sys_release in - AIX*) - BLDSHARED="Modules/ld_so_aix \$(CC) -bI:Modules/python.exp" - LDSHARED="\$(LIBPL)/ld_so_aix \$(CC) -bI:\$(LIBPL)/python.exp" - ;; - SunOS/5*) - if test "$ac_cv_gcc_compat" = "yes" ; then - LDSHARED='$(CC) -shared' - LDCXXSHARED='$(CXX) -shared' - else - LDSHARED='$(CC) -G' - LDCXXSHARED='$(CXX) -G' - fi ;; - hp*|HP*) - if test "$ac_cv_gcc_compat" = "yes" ; then - LDSHARED='$(CC) -shared' - LDCXXSHARED='$(CXX) -shared' - else - LDSHARED='$(CC) -b' - LDCXXSHARED='$(CXX) -b' - fi ;; - Darwin/1.3*) - LDSHARED='$(CC) -bundle' - LDCXXSHARED='$(CXX) -bundle' - if test "$enable_framework" ; then - # Link against the framework. All externals should be defined. - BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - else - # No framework. Ignore undefined symbols, assuming they come from Python - LDSHARED="$LDSHARED -undefined suppress" - LDCXXSHARED="$LDCXXSHARED -undefined suppress" - fi ;; - Darwin/1.4*|Darwin/5.*|Darwin/6.*) - LDSHARED='$(CC) -bundle' - LDCXXSHARED='$(CXX) -bundle' - if test "$enable_framework" ; then - # Link against the framework. All externals should be defined. - BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - else - # No framework, use the Python app as bundle-loader - BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)' - LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' - LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' - fi ;; - Darwin/*) - # Use -undefined dynamic_lookup whenever possible (10.3 and later). - # This allows an extension to be used in any Python - - dep_target_major=`echo ${MACOSX_DEPLOYMENT_TARGET} | \ - sed 's/\([0-9]*\)\.\([0-9]*\).*/\1/'` - dep_target_minor=`echo ${MACOSX_DEPLOYMENT_TARGET} | \ - sed 's/\([0-9]*\)\.\([0-9]*\).*/\2/'` - if test ${dep_target_major} -eq 10 && \ - test ${dep_target_minor} -le 2 - then - # building for OS X 10.0 through 10.2 - as_fn_error $? "MACOSX_DEPLOYMENT_TARGET too old ($MACOSX_DEPLOYMENT_TARGET), only 10.3 or later is supported" "$LINENO" 5 - else - # building for OS X 10.3 and later - LDSHARED='$(CC) -bundle -undefined dynamic_lookup' - LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' - BLDSHARED="$LDSHARED" - fi - ;; - iOS/*) - LDSHARED='$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' - LDCXXSHARED='$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' - BLDSHARED="$LDSHARED" - ;; - Emscripten*|WASI*) - LDSHARED='$(CC) -shared' - LDCXXSHARED='$(CXX) -shared';; - Linux*|GNU*|QNX*|VxWorks*|Haiku*) - LDSHARED='$(CC) -shared' - LDCXXSHARED='$(CXX) -shared';; - FreeBSD*) - if [ "`$CC -dM -E - &5 -printf "%s\n" "$LDSHARED" >&6; } -LDCXXSHARED=${LDCXXSHARED-$LDSHARED} - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking BLDSHARED flags" >&5 -printf %s "checking BLDSHARED flags... " >&6; } -BLDSHARED=${BLDSHARED-$LDSHARED} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BLDSHARED" >&5 -printf "%s\n" "$BLDSHARED" >&6; } - -# CCSHARED are the C *flags* used to create objects to go into a shared -# library (module) -- this is only needed for a few systems -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CCSHARED" >&5 -printf %s "checking CCSHARED... " >&6; } -if test -z "$CCSHARED" -then - case $ac_sys_system/$ac_sys_release in - SunOS*) if test "$ac_cv_gcc_compat" = "yes"; - then CCSHARED="-fPIC"; - elif test `uname -p` = sparc; - then CCSHARED="-xcode=pic32"; - else CCSHARED="-Kpic"; - fi;; - hp*|HP*) if test "$ac_cv_gcc_compat" = "yes"; - then CCSHARED="-fPIC"; - else CCSHARED="+z"; - fi;; - Linux*|GNU*) CCSHARED="-fPIC";; - Emscripten*|WASI*) - if test "x$enable_wasm_dynamic_linking" = xyes -then : - - CCSHARED="-fPIC" - -fi;; - FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";; - Haiku*) CCSHARED="-fPIC";; - OpenUNIX*|UnixWare*) - if test "$ac_cv_gcc_compat" = "yes" - then CCSHARED="-fPIC" - else CCSHARED="-KPIC" - fi;; - SCO_SV*) - if test "$ac_cv_gcc_compat" = "yes" - then CCSHARED="-fPIC" - else CCSHARED="-Kpic -belf" - fi;; - VxWorks*) - CCSHARED="-fpic -D__SO_PICABILINUX__ -ftls-model=global-dynamic" - esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CCSHARED" >&5 -printf "%s\n" "$CCSHARED" >&6; } -# LINKFORSHARED are the flags passed to the $(CC) command that links -# the python executable -- this is only needed for a few systems -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LINKFORSHARED" >&5 -printf %s "checking LINKFORSHARED... " >&6; } -if test -z "$LINKFORSHARED" -then - case $ac_sys_system/$ac_sys_release in - AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';; - hp*|HP*) - LINKFORSHARED="-Wl,-E -Wl,+s";; -# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; - Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; - Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; - # -u libsys_s pulls in all symbols in libsys - Darwin/*|iOS/*) - LINKFORSHARED="$extra_undefs -framework CoreFoundation" - - # Issue #18075: the default maximum stack size (8MBytes) is too - # small for the default recursion limit. Increase the stack size - # to ensure that tests don't crash - stack_size="1000000" # 16 MB - if test "$with_ubsan" = "yes" - then - # Undefined behavior sanitizer requires an even deeper stack - stack_size="4000000" # 64 MB - fi - - -printf "%s\n" "#define THREAD_STACK_SIZE 0x$stack_size" >>confdefs.h - - - if test $ac_sys_system = "Darwin"; then - LINKFORSHARED="-Wl,-stack_size,$stack_size $LINKFORSHARED" - - if test "$enable_framework"; then - LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - fi - LINKFORSHARED="$LINKFORSHARED" - elif test $ac_sys_system = "iOS"; then - LINKFORSHARED="-Wl,-stack_size,$stack_size $LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)' - fi - ;; - OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";; - SCO_SV*) LINKFORSHARED="-Wl,-Bexport";; - ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";; - FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) - if [ "`$CC -dM -E - &1 | grep export-dynamic >/dev/null - then - LINKFORSHARED="-Xlinker --export-dynamic" - fi - fi - ;; - CYGWIN*) - if test $enable_shared = "no" - then - LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)' - fi;; - QNX*) - # -Wl,-E causes the symbols to be added to the dynamic - # symbol table so that they can be found when a module - # is loaded. -N 2048K causes the stack size to be set - # to 2048 kilobytes so that the stack doesn't overflow - # when running test_compile.py. - LINKFORSHARED='-Wl,-E -N 2048K';; - VxWorks*) - LINKFORSHARED='-Wl,-export-dynamic';; - esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LINKFORSHARED" >&5 -printf "%s\n" "$LINKFORSHARED" >&6; } - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CFLAGSFORSHARED" >&5 -printf %s "checking CFLAGSFORSHARED... " >&6; } -if test ! "$LIBRARY" = "$LDLIBRARY" -then - case $ac_sys_system in - CYGWIN*) - # Cygwin needs CCSHARED when building extension DLLs - # but not when building the interpreter DLL. - CFLAGSFORSHARED='';; - *) - CFLAGSFORSHARED='$(CCSHARED)' - esac -fi - -if test "x$enable_wasm_dynamic_linking" = xyes -then : - - CFLAGSFORSHARED='$(CCSHARED)' - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CFLAGSFORSHARED" >&5 -printf "%s\n" "$CFLAGSFORSHARED" >&6; } - -# SHLIBS are libraries (except -lc and -lm) to link to the python shared -# library (with --enable-shared). -# For platforms on which shared libraries are not allowed to have unresolved -# symbols, this must be set to $(LIBS) (expanded by make). We do this even -# if it is not required, since it creates a dependency of the shared library -# to LIBS. This, in turn, means that applications linking the shared libpython -# don't need to link LIBS explicitly. The default should be only changed -# on systems where this approach causes problems. - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking SHLIBS" >&5 -printf %s "checking SHLIBS... " >&6; } -case "$ac_sys_system" in - *) - SHLIBS='$(LIBS)';; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHLIBS" >&5 -printf "%s\n" "$SHLIBS" >&6; } - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking perf trampoline" >&5 -printf %s "checking perf trampoline... " >&6; } -case $PLATFORM_TRIPLET in #( - x86_64-linux-gnu) : - perf_trampoline=yes ;; #( - aarch64-linux-gnu) : - perf_trampoline=yes ;; #( - darwin) : - perf_trampoline=yes ;; #( - *) : - perf_trampoline=no - ;; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $perf_trampoline" >&5 -printf "%s\n" "$perf_trampoline" >&6; } - -if test "x$perf_trampoline" = xyes -then : - - -printf "%s\n" "#define PY_HAVE_PERF_TRAMPOLINE 1" >>confdefs.h - - PERF_TRAMPOLINE_OBJ=Python/asm_trampoline.o - - if test "x$Py_DEBUG" = xtrue -then : - - as_fn_append BASECFLAGS " -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" - -fi - -fi - - -# checks for libraries -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sendfile in -lsendfile" >&5 -printf %s "checking for sendfile in -lsendfile... " >&6; } -if test ${ac_cv_lib_sendfile_sendfile+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsendfile $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sendfile (void); -int -main (void) -{ -return sendfile (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sendfile_sendfile=yes -else case e in #( - e) ac_cv_lib_sendfile_sendfile=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sendfile_sendfile" >&5 -printf "%s\n" "$ac_cv_lib_sendfile_sendfile" >&6; } -if test "x$ac_cv_lib_sendfile_sendfile" = xyes -then : - printf "%s\n" "#define HAVE_LIBSENDFILE 1" >>confdefs.h - - LIBS="-lsendfile $LIBS" - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -printf %s "checking for dlopen in -ldl... " >&6; } -if test ${ac_cv_lib_dl_dlopen+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (void); -int -main (void) -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_dl_dlopen=yes -else case e in #( - e) ac_cv_lib_dl_dlopen=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes -then : - printf "%s\n" "#define HAVE_LIBDL 1" >>confdefs.h - - LIBS="-ldl $LIBS" - -fi - # Dynamic linking for SunOS/Solaris and SYSV -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -printf %s "checking for shl_load in -ldld... " >&6; } -if test ${ac_cv_lib_dld_shl_load+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (void); -int -main (void) -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_dld_shl_load=yes -else case e in #( - e) ac_cv_lib_dld_shl_load=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes -then : - printf "%s\n" "#define HAVE_LIBDLD 1" >>confdefs.h - - LIBS="-ldld $LIBS" - -fi - # Dynamic linking for HP-UX - - - for ac_header in execinfo.h link.h dlfcn.h -do : - as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_sh"` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1 -_ACEOF - - - for ac_func in backtrace dladdr1 -do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 -_ACEOF - - # dladdr1 requires -ldl - ac_cv_require_ldl=yes - -fi - -done - -fi - -done - -if test "x$ac_cv_require_ldl" = xyes -then : - - if test "x$ac_cv_lib_dl_dlopen" = xyes -then : - -else case e in #( - e) - as_fn_append LDFLAGS " -ldl" - ;; -esac -fi - -fi - - - - - - -have_uuid=missing - - for ac_header in uuid.h -do : - ac_fn_c_check_header_compile "$LINENO" "uuid.h" "ac_cv_header_uuid_h" "$ac_includes_default" -if test "x$ac_cv_header_uuid_h" = xyes -then : - printf "%s\n" "#define HAVE_UUID_H 1" >>confdefs.h - - - for ac_func in uuid_create uuid_enc_be -do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 -_ACEOF - - have_uuid=yes - ac_cv_have_uuid_h=yes - LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""} - LIBUUID_LIBS=${LIBUUID_LIBS-""} - -fi - -done - -fi - -done - -if test "x$have_uuid" = xmissing -then : - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid >= 2.20" >&5 -printf %s "checking for uuid >= 2.20... " >&6; } - -if test -n "$LIBUUID_CFLAGS"; then - pkg_cv_LIBUUID_CFLAGS="$LIBUUID_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"uuid >= 2.20\""; } >&5 - ($PKG_CONFIG --exists --print-errors "uuid >= 2.20") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBUUID_CFLAGS=`$PKG_CONFIG --cflags "uuid >= 2.20" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$LIBUUID_LIBS"; then - pkg_cv_LIBUUID_LIBS="$LIBUUID_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"uuid >= 2.20\""; } >&5 - ($PKG_CONFIG --exists --print-errors "uuid >= 2.20") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBUUID_LIBS=`$PKG_CONFIG --libs "uuid >= 2.20" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - LIBUUID_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "uuid >= 2.20" 2>&1` - else - LIBUUID_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "uuid >= 2.20" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$LIBUUID_PKG_ERRORS" >&5 - - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBUUID_CFLAGS" - LIBS="$LIBS $LIBUUID_LIBS" - for ac_header in uuid/uuid.h -do : - ac_fn_c_check_header_compile "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default" -if test "x$ac_cv_header_uuid_uuid_h" = xyes -then : - printf "%s\n" "#define HAVE_UUID_UUID_H 1" >>confdefs.h - - ac_cv_have_uuid_uuid_h=yes - py_check_lib_save_LIBS=$LIBS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time in -luuid" >&5 -printf %s "checking for uuid_generate_time in -luuid... " >&6; } -if test ${ac_cv_lib_uuid_uuid_generate_time+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-luuid $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char uuid_generate_time (void); -int -main (void) -{ -return uuid_generate_time (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_uuid_uuid_generate_time=yes -else case e in #( - e) ac_cv_lib_uuid_uuid_generate_time=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time" >&5 -printf "%s\n" "$ac_cv_lib_uuid_uuid_generate_time" >&6; } -if test "x$ac_cv_lib_uuid_uuid_generate_time" = xyes -then : - have_uuid=yes -fi - -LIBS=$py_check_lib_save_LIBS - - py_check_lib_save_LIBS=$LIBS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time_safe in -luuid" >&5 -printf %s "checking for uuid_generate_time_safe in -luuid... " >&6; } -if test ${ac_cv_lib_uuid_uuid_generate_time_safe+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-luuid $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char uuid_generate_time_safe (void); -int -main (void) -{ -return uuid_generate_time_safe (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_uuid_uuid_generate_time_safe=yes -else case e in #( - e) ac_cv_lib_uuid_uuid_generate_time_safe=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time_safe" >&5 -printf "%s\n" "$ac_cv_lib_uuid_uuid_generate_time_safe" >&6; } -if test "x$ac_cv_lib_uuid_uuid_generate_time_safe" = xyes -then : - - have_uuid=yes - ac_cv_have_uuid_generate_time_safe=yes - -fi - -LIBS=$py_check_lib_save_LIBS - -fi - -done - if test "x$have_uuid" = xyes -then : - - LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""} - LIBUUID_LIBS=${LIBUUID_LIBS-"-luuid"} - -fi - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - - -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBUUID_CFLAGS" - LIBS="$LIBS $LIBUUID_LIBS" - for ac_header in uuid/uuid.h -do : - ac_fn_c_check_header_compile "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default" -if test "x$ac_cv_header_uuid_uuid_h" = xyes -then : - printf "%s\n" "#define HAVE_UUID_UUID_H 1" >>confdefs.h - - ac_cv_have_uuid_uuid_h=yes - py_check_lib_save_LIBS=$LIBS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time in -luuid" >&5 -printf %s "checking for uuid_generate_time in -luuid... " >&6; } -if test ${ac_cv_lib_uuid_uuid_generate_time+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-luuid $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char uuid_generate_time (void); -int -main (void) -{ -return uuid_generate_time (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_uuid_uuid_generate_time=yes -else case e in #( - e) ac_cv_lib_uuid_uuid_generate_time=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time" >&5 -printf "%s\n" "$ac_cv_lib_uuid_uuid_generate_time" >&6; } -if test "x$ac_cv_lib_uuid_uuid_generate_time" = xyes -then : - have_uuid=yes -fi - -LIBS=$py_check_lib_save_LIBS - - py_check_lib_save_LIBS=$LIBS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time_safe in -luuid" >&5 -printf %s "checking for uuid_generate_time_safe in -luuid... " >&6; } -if test ${ac_cv_lib_uuid_uuid_generate_time_safe+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-luuid $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char uuid_generate_time_safe (void); -int -main (void) -{ -return uuid_generate_time_safe (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_uuid_uuid_generate_time_safe=yes -else case e in #( - e) ac_cv_lib_uuid_uuid_generate_time_safe=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time_safe" >&5 -printf "%s\n" "$ac_cv_lib_uuid_uuid_generate_time_safe" >&6; } -if test "x$ac_cv_lib_uuid_uuid_generate_time_safe" = xyes -then : - - have_uuid=yes - ac_cv_have_uuid_generate_time_safe=yes - -fi - -LIBS=$py_check_lib_save_LIBS - -fi - -done - if test "x$have_uuid" = xyes -then : - - LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""} - LIBUUID_LIBS=${LIBUUID_LIBS-"-luuid"} - -fi - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - - -else - LIBUUID_CFLAGS=$pkg_cv_LIBUUID_CFLAGS - LIBUUID_LIBS=$pkg_cv_LIBUUID_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - have_uuid=yes - ac_cv_have_uuid_generate_time_safe=yes - # The uuid.h file to include may be *or* . - # Since pkg-config --cflags uuid may return -I/usr/include/uuid, - # it's possible to write '#include ' in _uuidmodule.c, - # assuming that the compiler flags are properly updated. - # - # Ideally, we should have defined HAVE_UUID_H if and only if - # #include can be written, *without* assuming extra - # include path. - ac_cv_have_uuid_h=yes - -fi - -fi - -if test "x$have_uuid" = xmissing -then : - - for ac_header in uuid/uuid.h -do : - ac_fn_c_check_header_compile "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default" -if test "x$ac_cv_header_uuid_uuid_h" = xyes -then : - printf "%s\n" "#define HAVE_UUID_UUID_H 1" >>confdefs.h - - ac_fn_c_check_func "$LINENO" "uuid_generate_time" "ac_cv_func_uuid_generate_time" -if test "x$ac_cv_func_uuid_generate_time" = xyes -then : - - have_uuid=yes - ac_cv_have_uuid_uuid_h=yes - LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""} - LIBUUID_LIBS=${LIBUUID_LIBS-""} - -fi - - -fi - -done - -fi - -if test "x$ac_cv_have_uuid_h" = xyes -then : - printf "%s\n" "#define HAVE_UUID_H 1" >>confdefs.h - -fi -if test "x$ac_cv_have_uuid_uuid_h" = xyes -then : - printf "%s\n" "#define HAVE_UUID_UUID_H 1" >>confdefs.h - -fi -if test "x$ac_cv_have_uuid_generate_time_safe" = xyes -then : - - printf "%s\n" "#define HAVE_UUID_GENERATE_TIME_SAFE 1" >>confdefs.h - - -fi - -# gh-124228: While the libuuid library is available on NetBSD, it supports only UUID version 4. -# This restriction inhibits the proper generation of time-based UUIDs. -if test "$ac_sys_system" = "NetBSD"; then - have_uuid=missing - printf "%s\n" "#define HAVE_UUID_H 0" >>confdefs.h - -fi - -if test "x$have_uuid" = xmissing -then : - have_uuid=no -fi - -# gh-132710: The UUID node is fetched by using libuuid when possible -# and cached. While the node is constant within the same process, -# different interpreters may have different values as libuuid may -# randomize the node value if the latter cannot be deduced. -# -# Consumers may define HAVE_UUID_GENERATE_TIME_SAFE_STABLE_MAC -# to indicate that libuuid is unstable and should not be relied -# upon to deduce the MAC address. - - -if test "$have_uuid" = "yes" -a "$HAVE_UUID_GENERATE_TIME_SAFE" = "1" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if uuid_generate_time_safe() node value is stable" >&5 -printf %s "checking if uuid_generate_time_safe() node value is stable... " >&6; } - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - # Be sure to add the extra include path if we used pkg-config - # as HAVE_UUID_H may be set even though is only reachable - # by adding extra -I flags. - # - # If the following script does not compile, we simply assume that - # libuuid is missing. - CFLAGS="$CFLAGS $LIBUUID_CFLAGS" - LIBS="$LIBS $LIBUUID_LIBS" - if test "$cross_compiling" = yes -then : - - -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include // PRIu64 - #include // uint64_t - #include // fopen(), fclose() - - #ifdef HAVE_UUID_H - #include - #else - #include - #endif - - #define ERR 1 - int main(void) { - uuid_t uuid; // unsigned char[16] - (void)uuid_generate_time_safe(uuid); - uint64_t node = 0; - for (size_t i = 0; i < 6; i++) { - node |= (uint64_t)uuid[15 - i] << (8 * i); - } - FILE *fp = fopen("conftest.out", "w"); - if (fp == NULL) { - return ERR; - } - int rc = fprintf(fp, "%" PRIu64 "\n", node) >= 0; - rc |= fclose(fp); - return rc == 0 ? 0 : ERR; - } -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - - py_cv_uuid_node1=`cat conftest.out` - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - # Be sure to add the extra include path if we used pkg-config - # as HAVE_UUID_H may be set even though is only reachable - # by adding extra -I flags. - # - # If the following script does not compile, we simply assume that - # libuuid is missing. - CFLAGS="$CFLAGS $LIBUUID_CFLAGS" - LIBS="$LIBS $LIBUUID_LIBS" - if test "$cross_compiling" = yes -then : - - -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include // PRIu64 - #include // uint64_t - #include // fopen(), fclose() - - #ifdef HAVE_UUID_H - #include - #else - #include - #endif - - #define ERR 1 - int main(void) { - uuid_t uuid; // unsigned char[16] - (void)uuid_generate_time_safe(uuid); - uint64_t node = 0; - for (size_t i = 0; i < 6; i++) { - node |= (uint64_t)uuid[15 - i] << (8 * i); - } - FILE *fp = fopen("conftest.out", "w"); - if (fp == NULL) { - return ERR; - } - int rc = fprintf(fp, "%" PRIu64 "\n", node) >= 0; - rc |= fclose(fp); - return rc == 0 ? 0 : ERR; - } -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - - py_cv_uuid_node2=`cat conftest.out` - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - if test -n "$py_cv_uuid_node1" -a "$py_cv_uuid_node1" = "$py_cv_uuid_node2" - then - printf "%s\n" "#define HAVE_UUID_GENERATE_TIME_SAFE_STABLE_MAC 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: stable" >&5 -printf "%s\n" "stable" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unstable" >&5 -printf "%s\n" "unstable" >&6; } - fi -fi - -# 'Real Time' functions on Solaris -# posix4 on Solaris 2.6 -# pthread (first!) on Linux -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing sem_init" >&5 -printf %s "checking for library containing sem_init... " >&6; } -if test ${ac_cv_search_sem_init+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sem_init (void); -int -main (void) -{ -return sem_init (); - ; - return 0; -} -_ACEOF -for ac_lib in '' pthread rt posix4 -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_sem_init=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_sem_init+y} -then : - break -fi -done -if test ${ac_cv_search_sem_init+y} -then : - -else case e in #( - e) ac_cv_search_sem_init=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sem_init" >&5 -printf "%s\n" "$ac_cv_search_sem_init" >&6; } -ac_res=$ac_cv_search_sem_init -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - - -# check if we need libintl for locale functions -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for textdomain in -lintl" >&5 -printf %s "checking for textdomain in -lintl... " >&6; } -if test ${ac_cv_lib_intl_textdomain+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char textdomain (void); -int -main (void) -{ -return textdomain (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_intl_textdomain=yes -else case e in #( - e) ac_cv_lib_intl_textdomain=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_textdomain" >&5 -printf "%s\n" "$ac_cv_lib_intl_textdomain" >&6; } -if test "x$ac_cv_lib_intl_textdomain" = xyes -then : - -printf "%s\n" "#define WITH_LIBINTL 1" >>confdefs.h - - LIBS="-lintl $LIBS" -fi - - -# checks for system dependent C++ extensions support -case "$ac_sys_system" in - AIX*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for genuine AIX C++ extensions support" >&5 -printf %s "checking for genuine AIX C++ extensions support... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include -int -main (void) -{ -loadAndInit("", 0, "") - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - -printf "%s\n" "#define AIX_GENUINE_CPLUSPLUS 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -# BUILD_GNU_TYPE + AIX_BUILDDATE are used to construct the platform_tag -# of the AIX system used to build/package Python executable. This tag serves -# as a baseline for bdist module packages - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the system builddate" >&5 -printf %s "checking for the system builddate... " >&6; } - AIX_BUILDDATE=$(lslpp -Lcq bos.mp64 | awk -F: '{ print $NF }') - -printf "%s\n" "#define AIX_BUILDDATE $AIX_BUILDDATE" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AIX_BUILDDATE" >&5 -printf "%s\n" "$AIX_BUILDDATE" >&6; } - ;; - *) ;; -esac - -# check for systems that require aligned memory access -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking aligned memory access is required" >&5 -printf %s "checking aligned memory access is required... " >&6; } -if test ${ac_cv_aligned_required+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "$cross_compiling" = yes -then : - -# "yes" changes the hash function to FNV, which causes problems with Numba -# (https://github.com/numba/numba/blob/0.59.0/numba/cpython/hashing.py#L470). -if test "$ac_sys_system" = "Linux-android"; then - ac_cv_aligned_required=no -else - ac_cv_aligned_required=yes -fi -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main(void) -{ - char s[16]; - int i, *p1, *p2; - for (i=0; i < 16; i++) - s[i] = i; - p1 = (int*)(s+1); - p2 = (int*)(s+2); - if (*p1 == *p2) - return 1; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_aligned_required=no -else case e in #( - e) ac_cv_aligned_required=yes ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_aligned_required" >&5 -printf "%s\n" "$ac_cv_aligned_required" >&6; } -if test "$ac_cv_aligned_required" = yes ; then - -printf "%s\n" "#define HAVE_ALIGNED_REQUIRED 1" >>confdefs.h - -fi - -# str, bytes and memoryview hash algorithm - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-hash-algorithm" >&5 -printf %s "checking for --with-hash-algorithm... " >&6; } - -# Check whether --with-hash_algorithm was given. -if test ${with_hash_algorithm+y} -then : - withval=$with_hash_algorithm; -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -printf "%s\n" "$withval" >&6; } -case "$withval" in - siphash13) - printf "%s\n" "#define Py_HASH_ALGORITHM 3" >>confdefs.h - - ;; - siphash24) - printf "%s\n" "#define Py_HASH_ALGORITHM 1" >>confdefs.h - - ;; - fnv) - printf "%s\n" "#define Py_HASH_ALGORITHM 2" >>confdefs.h - - ;; - *) - as_fn_error $? "unknown hash algorithm '$withval'" "$LINENO" 5 - ;; -esac - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: default" >&5 -printf "%s\n" "default" >&6; } ;; -esac -fi - - -validate_tzpath() { - # Checks that each element of the path is an absolute path - if test -z "$1"; then - # Empty string is allowed: it indicates no system TZPATH - return 0 - fi - - # Bad paths are those that don't start with / - if ( echo $1 | grep '\(^\|:\)\([^/]\|$\)' > /dev/null); then - as_fn_error $? "--with-tzpath must contain only absolute paths, not $1" "$LINENO" 5 - return 1; - fi -} - -TZPATH="/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-tzpath" >&5 -printf %s "checking for --with-tzpath... " >&6; } - -# Check whether --with-tzpath was given. -if test ${with_tzpath+y} -then : - withval=$with_tzpath; -case "$withval" in - yes) - as_fn_error $? "--with-tzpath requires a value" "$LINENO" 5 - ;; - *) - validate_tzpath "$withval" - TZPATH="$withval" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$withval\"" >&5 -printf "%s\n" "\"$withval\"" >&6; } - ;; -esac - -else case e in #( - e) validate_tzpath "$TZPATH" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$TZPATH\"" >&5 -printf "%s\n" "\"$TZPATH\"" >&6; } ;; -esac -fi - - - -# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5 -printf %s "checking for t_open in -lnsl... " >&6; } -if test ${ac_cv_lib_nsl_t_open+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char t_open (void); -int -main (void) -{ -return t_open (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_nsl_t_open=yes -else case e in #( - e) ac_cv_lib_nsl_t_open=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_t_open" >&5 -printf "%s\n" "$ac_cv_lib_nsl_t_open" >&6; } -if test "x$ac_cv_lib_nsl_t_open" = xyes -then : - LIBS="-lnsl $LIBS" -fi - # SVR4 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 -printf %s "checking for socket in -lsocket... " >&6; } -if test ${ac_cv_lib_socket_socket+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char socket (void); -int -main (void) -{ -return socket (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_socket_socket=yes -else case e in #( - e) ac_cv_lib_socket_socket=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 -printf "%s\n" "$ac_cv_lib_socket_socket" >&6; } -if test "x$ac_cv_lib_socket_socket" = xyes -then : - LIBS="-lsocket $LIBS" -fi - # SVR4 sockets - -case $ac_sys_system/$ac_sys_release in - Haiku*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lnetwork" >&5 -printf %s "checking for socket in -lnetwork... " >&6; } -if test ${ac_cv_lib_network_socket+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lnetwork $LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char socket (void); -int -main (void) -{ -return socket (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_network_socket=yes -else case e in #( - e) ac_cv_lib_network_socket=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_network_socket" >&5 -printf "%s\n" "$ac_cv_lib_network_socket" >&6; } -if test "x$ac_cv_lib_network_socket" = xyes -then : - LIBS="-lnetwork $LIBS" -fi - - ;; -esac - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-libs" >&5 -printf %s "checking for --with-libs... " >&6; } - -# Check whether --with-libs was given. -if test ${with_libs+y} -then : - withval=$with_libs; -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -printf "%s\n" "$withval" >&6; } -LIBS="$withval $LIBS" - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac -fi - - -# Check for use of the system expat library -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-system-expat" >&5 -printf %s "checking for --with-system-expat... " >&6; } - -# Check whether --with-system_expat was given. -if test ${with_system_expat+y} -then : - withval=$with_system_expat; -else case e in #( - e) with_system_expat="no" ;; -esac -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_system_expat" >&5 -printf "%s\n" "$with_system_expat" >&6; } - -if test "x$with_system_expat" = xyes -then : - - LIBEXPAT_CFLAGS=${LIBEXPAT_CFLAGS-""} - LIBEXPAT_LDFLAGS=${LIBEXPAT_LDFLAGS-"-lexpat"} - LIBEXPAT_INTERNAL= - -else case e in #( - e) - LIBEXPAT_CFLAGS="-I\$(srcdir)/Modules/expat" - LIBEXPAT_LDFLAGS="-lm \$(LIBEXPAT_A)" - LIBEXPAT_INTERNAL="\$(LIBEXPAT_HEADERS) \$(LIBEXPAT_A)" - ;; -esac -fi - - - - -have_libffi=missing -if test "x$ac_sys_system" = xDarwin -then : - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CFLAGS="-I${SDKROOT}/usr/include/ffi $CFLAGS" - ac_fn_c_check_header_compile "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default" -if test "x$ac_cv_header_ffi_h" = xyes -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5 -printf %s "checking for ffi_call in -lffi... " >&6; } -if test ${ac_cv_lib_ffi_ffi_call+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lffi $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char ffi_call (void); -int -main (void) -{ -return ffi_call (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ffi_ffi_call=yes -else case e in #( - e) ac_cv_lib_ffi_ffi_call=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5 -printf "%s\n" "$ac_cv_lib_ffi_ffi_call" >&6; } -if test "x$ac_cv_lib_ffi_ffi_call" = xyes -then : - - have_libffi=yes - LIBFFI_CFLAGS="-I${SDKROOT}/usr/include/ffi -DUSING_APPLE_OS_LIBFFI=1" - LIBFFI_LIBS="-lffi" - -fi - - -fi - - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -fi -if test "x$have_libffi" = xmissing -then : - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libffi" >&5 -printf %s "checking for libffi... " >&6; } - -if test -n "$LIBFFI_CFLAGS"; then - pkg_cv_LIBFFI_CFLAGS="$LIBFFI_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libffi") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBFFI_CFLAGS=`$PKG_CONFIG --cflags "libffi" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$LIBFFI_LIBS"; then - pkg_cv_LIBFFI_LIBS="$LIBFFI_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libffi") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBFFI_LIBS=`$PKG_CONFIG --libs "libffi" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - LIBFFI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libffi" 2>&1` - else - LIBFFI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libffi" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$LIBFFI_PKG_ERRORS" >&5 - - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBFFI_CFLAGS" - LIBS="$LIBS $LIBFFI_LIBS" - ac_fn_c_check_header_compile "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default" -if test "x$ac_cv_header_ffi_h" = xyes -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5 -printf %s "checking for ffi_call in -lffi... " >&6; } -if test ${ac_cv_lib_ffi_ffi_call+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lffi $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char ffi_call (void); -int -main (void) -{ -return ffi_call (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ffi_ffi_call=yes -else case e in #( - e) ac_cv_lib_ffi_ffi_call=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5 -printf "%s\n" "$ac_cv_lib_ffi_ffi_call" >&6; } -if test "x$ac_cv_lib_ffi_ffi_call" = xyes -then : - - have_libffi=yes - LIBFFI_CFLAGS=${LIBFFI_CFLAGS-""} - LIBFFI_LIBS=${LIBFFI_LIBS-"-lffi"} - -else case e in #( - e) have_libffi=no ;; -esac -fi - - -fi - - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBFFI_CFLAGS" - LIBS="$LIBS $LIBFFI_LIBS" - ac_fn_c_check_header_compile "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default" -if test "x$ac_cv_header_ffi_h" = xyes -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5 -printf %s "checking for ffi_call in -lffi... " >&6; } -if test ${ac_cv_lib_ffi_ffi_call+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lffi $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char ffi_call (void); -int -main (void) -{ -return ffi_call (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ffi_ffi_call=yes -else case e in #( - e) ac_cv_lib_ffi_ffi_call=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5 -printf "%s\n" "$ac_cv_lib_ffi_ffi_call" >&6; } -if test "x$ac_cv_lib_ffi_ffi_call" = xyes -then : - - have_libffi=yes - LIBFFI_CFLAGS=${LIBFFI_CFLAGS-""} - LIBFFI_LIBS=${LIBFFI_LIBS-"-lffi"} - -else case e in #( - e) have_libffi=no ;; -esac -fi - - -fi - - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -else - LIBFFI_CFLAGS=$pkg_cv_LIBFFI_CFLAGS - LIBFFI_LIBS=$pkg_cv_LIBFFI_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - have_libffi=yes -fi - -fi - -if test "x$have_libffi" = xyes -then : - - ctypes_malloc_closure=no - case $ac_sys_system in #( - Darwin) : - - ctypes_malloc_closure=yes - ;; #( - iOS) : - - ctypes_malloc_closure=yes - ;; #( - sunos5) : - as_fn_append LIBFFI_LIBS " -mimpure-text" - ;; #( - *) : - ;; -esac - if test "x$ctypes_malloc_closure" = xyes -then : - - MODULE__CTYPES_MALLOC_CLOSURE=_ctypes/malloc_closure.c - as_fn_append LIBFFI_CFLAGS " -DUSING_MALLOC_CLOSURE_DOT_C=1" - -fi - - - if test "x$ac_cv_lib_dl_dlopen" = xyes -then : - as_fn_append LIBFFI_LIBS " -ldl" -fi - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CFLAGS="$CFLAGS $LIBFFI_CFLAGS" - LIBS="$LIBS $LIBFFI_LIBS" - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_prep_cif_var" >&5 -printf %s "checking for ffi_prep_cif_var... " >&6; } -if test ${ac_cv_func_ffi_prep_cif_var+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=ffi_prep_cif_var - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_ffi_prep_cif_var=yes -else case e in #( - e) ac_cv_func_ffi_prep_cif_var=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ffi_prep_cif_var" >&5 -printf "%s\n" "$ac_cv_func_ffi_prep_cif_var" >&6; } - if test "x$ac_cv_func_ffi_prep_cif_var" = xyes -then : - -printf "%s\n" "#define HAVE_FFI_PREP_CIF_VAR 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_prep_closure_loc" >&5 -printf %s "checking for ffi_prep_closure_loc... " >&6; } -if test ${ac_cv_func_ffi_prep_closure_loc+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=ffi_prep_closure_loc - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_ffi_prep_closure_loc=yes -else case e in #( - e) ac_cv_func_ffi_prep_closure_loc=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ffi_prep_closure_loc" >&5 -printf "%s\n" "$ac_cv_func_ffi_prep_closure_loc" >&6; } - if test "x$ac_cv_func_ffi_prep_closure_loc" = xyes -then : - -printf "%s\n" "#define HAVE_FFI_PREP_CLOSURE_LOC 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_closure_alloc" >&5 -printf %s "checking for ffi_closure_alloc... " >&6; } -if test ${ac_cv_func_ffi_closure_alloc+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=ffi_closure_alloc - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_ffi_closure_alloc=yes -else case e in #( - e) ac_cv_func_ffi_closure_alloc=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ffi_closure_alloc" >&5 -printf "%s\n" "$ac_cv_func_ffi_closure_alloc" >&6; } - if test "x$ac_cv_func_ffi_closure_alloc" = xyes -then : - -printf "%s\n" "#define HAVE_FFI_CLOSURE_ALLOC 1" >>confdefs.h - -fi - - - - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -fi - -# Check for libffi with real complex double support. -# This is a workaround, since FFI_TARGET_HAS_COMPLEX_TYPE was defined in libffi v3.2.1, -# but real support was provided only in libffi v3.3.0. -# See https://github.com/python/cpython/issues/125206 for more details. -# -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libffi has complex type support" >&5 -printf %s "checking libffi has complex type support... " >&6; } -if test ${ac_cv_ffi_complex_double_supported+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBFFI_CFLAGS" - LIBS="$LIBS $LIBFFI_LIBS" -if test "$cross_compiling" = yes -then : - ac_cv_ffi_complex_double_supported=no -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -int z_is_expected(double complex z) -{ - const double complex expected = 1.25 - 0.5 * I; - return z == expected; -} -int main(void) -{ - double complex z = 1.25 - 0.5 * I; - ffi_type *args[1] = {&ffi_type_complex_double}; - void *values[1] = {&z}; - ffi_cif cif; - if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, - &ffi_type_sint, args) != FFI_OK) - { - return 2; - } - ffi_arg rc; - ffi_call(&cif, FFI_FN(z_is_expected), &rc, values); - return !rc; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_ffi_complex_double_supported=yes -else case e in #( - e) ac_cv_ffi_complex_double_supported=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ffi_complex_double_supported" >&5 -printf "%s\n" "$ac_cv_ffi_complex_double_supported" >&6; } -if test "$ac_cv_ffi_complex_double_supported" = "yes"; then - -printf "%s\n" "#define _Py_FFI_SUPPORT_C_COMPLEX 1" >>confdefs.h - -fi - -# Check for use of the system libmpdec library -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-system-libmpdec" >&5 -printf %s "checking for --with-system-libmpdec... " >&6; } - - -# Check whether --with-system_libmpdec was given. -if test ${with_system_libmpdec+y} -then : - withval=$with_system_libmpdec; if test "x$with_system_libmpdec" = xno -then : - LIBMPDEC_CFLAGS="-I\$(srcdir)/Modules/_decimal/libmpdec" - LIBMPDEC_LIBS="-lm \$(LIBMPDEC_A)" - LIBMPDEC_INTERNAL="\$(LIBMPDEC_HEADERS) \$(LIBMPDEC_A)" - have_mpdec=yes - with_system_libmpdec=no -fi -else case e in #( - e) with_system_libmpdec="yes" ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_system_libmpdec" >&5 -printf "%s\n" "$with_system_libmpdec" >&6; } - -if test "x$with_system_libmpdec" = xyes -then : - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libmpdec >= 2.5.0" >&5 -printf %s "checking for libmpdec >= 2.5.0... " >&6; } - -if test -n "$LIBMPDEC_CFLAGS"; then - pkg_cv_LIBMPDEC_CFLAGS="$LIBMPDEC_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmpdec >= 2.5.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libmpdec >= 2.5.0") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBMPDEC_CFLAGS=`$PKG_CONFIG --cflags "libmpdec >= 2.5.0" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$LIBMPDEC_LIBS"; then - pkg_cv_LIBMPDEC_LIBS="$LIBMPDEC_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmpdec >= 2.5.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libmpdec >= 2.5.0") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBMPDEC_LIBS=`$PKG_CONFIG --libs "libmpdec >= 2.5.0" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - LIBMPDEC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libmpdec >= 2.5.0" 2>&1` - else - LIBMPDEC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libmpdec >= 2.5.0" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$LIBMPDEC_PKG_ERRORS" >&5 - - LIBMPDEC_CFLAGS=${LIBMPDEC_CFLAGS-""} - LIBMPDEC_LIBS=${LIBMPDEC_LIBS-"-lmpdec -lm"} - LIBMPDEC_INTERNAL= -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - LIBMPDEC_CFLAGS=${LIBMPDEC_CFLAGS-""} - LIBMPDEC_LIBS=${LIBMPDEC_LIBS-"-lmpdec -lm"} - LIBMPDEC_INTERNAL= -else - LIBMPDEC_CFLAGS=$pkg_cv_LIBMPDEC_CFLAGS - LIBMPDEC_LIBS=$pkg_cv_LIBMPDEC_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi -fi - -if test "x$with_system_libmpdec" = xyes -then : - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBMPDEC_CFLAGS" - LIBS="$LIBS $LIBMPDEC_LIBS" - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - #if MPD_VERSION_HEX < 0x02050000 - # error "mpdecimal 2.5.0 or higher required" - #endif - -int -main (void) -{ -const char *x = mpd_version(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - have_mpdec=yes -else case e in #( - e) have_mpdec=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - -fi - -# Disable forced inlining in debug builds, see GH-94847 -if test "x$with_pydebug" = xyes -then : - as_fn_append LIBMPDEC_CFLAGS " -DTEST_COVERAGE" -fi - -# Check whether _decimal should use a coroutine-local or thread-local context -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-decimal-contextvar" >&5 -printf %s "checking for --with-decimal-contextvar... " >&6; } - -# Check whether --with-decimal_contextvar was given. -if test ${with_decimal_contextvar+y} -then : - withval=$with_decimal_contextvar; -else case e in #( - e) with_decimal_contextvar="yes" ;; -esac -fi - - -if test "$with_decimal_contextvar" != "no" -then - -printf "%s\n" "#define WITH_DECIMAL_CONTEXTVAR 1" >>confdefs.h - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_decimal_contextvar" >&5 -printf "%s\n" "$with_decimal_contextvar" >&6; } - -if test "x$with_system_libmpdec" = xno -then : - # Check for libmpdec machine flavor - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for decimal libmpdec machine" >&5 -printf %s "checking for decimal libmpdec machine... " >&6; } - case $ac_sys_system in #( - Darwin*) : - libmpdec_system=Darwin ;; #( - SunOS*) : - libmpdec_system=sunos ;; #( - *) : - libmpdec_system=other - ;; -esac - - libmpdec_machine=unknown - if test "$libmpdec_system" = Darwin; then - # universal here means: build libmpdec with the same arch options - # the python interpreter was built with - libmpdec_machine=universal - elif test $ac_cv_sizeof_size_t -eq 8; then - if test "$ac_cv_gcc_asm_for_x64" = yes; then - libmpdec_machine=x64 - elif test "$ac_cv_type___uint128_t" = yes; then - libmpdec_machine=uint128 - else - libmpdec_machine=ansi64 - fi - elif test $ac_cv_sizeof_size_t -eq 4; then - if test "$ac_cv_gcc_asm_for_x87" = yes -a "$libmpdec_system" != sunos; then - case $ac_cv_cc_name in #( - *gcc*) : - libmpdec_machine=ppro ;; #( - *clang*) : - libmpdec_machine=ppro ;; #( - *) : - libmpdec_machine=ansi32 - ;; -esac - else - libmpdec_machine=ansi32 - fi - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libmpdec_machine" >&5 -printf "%s\n" "$libmpdec_machine" >&6; } - - case $libmpdec_machine in #( - x64) : - as_fn_append LIBMPDEC_CFLAGS " -DCONFIG_64=1 -DASM=1" ;; #( - uint128) : - as_fn_append LIBMPDEC_CFLAGS " -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1" ;; #( - ansi64) : - as_fn_append LIBMPDEC_CFLAGS " -DCONFIG_64=1 -DANSI=1" ;; #( - ppro) : - as_fn_append LIBMPDEC_CFLAGS " -DCONFIG_32=1 -DANSI=1 -DASM=1 -Wno-unknown-pragmas" ;; #( - ansi32) : - as_fn_append LIBMPDEC_CFLAGS " -DCONFIG_32=1 -DANSI=1" ;; #( - ansi-legacy) : - as_fn_append LIBMPDEC_CFLAGS " -DCONFIG_32=1 -DANSI=1 -DLEGACY_COMPILER=1" ;; #( - universal) : - as_fn_append LIBMPDEC_CFLAGS " -DUNIVERSAL=1" ;; #( - *) : - as_fn_error $? "_decimal: unsupported architecture" "$LINENO" 5 - ;; -esac -fi - -if test "$have_ipa_pure_const_bug" = yes; then - # Some versions of gcc miscompile inline asm: - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 - # https://gcc.gnu.org/ml/gcc/2010-11/msg00366.html - as_fn_append LIBMPDEC_CFLAGS " -fno-ipa-pure-const" -fi - -if test "$have_glibc_memmove_bug" = yes; then - # _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect: - # https://sourceware.org/ml/libc-alpha/2010-12/msg00009.html - as_fn_append LIBMPDEC_CFLAGS " -U_FORTIFY_SOURCE" -fi - - - - - - - - - if test "$ac_sys_system" = "Emscripten" -a -z "$LIBSQLITE3_CFLAGS" -a -z "$LIBSQLITE3_LIBS" -then : - - LIBSQLITE3_CFLAGS="-sUSE_SQLITE3" - LIBSQLITE3_LIBS="-sUSE_SQLITE3" - -fi - - - - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3 >= 3.15.2" >&5 -printf %s "checking for sqlite3 >= 3.15.2... " >&6; } - -if test -n "$LIBSQLITE3_CFLAGS"; then - pkg_cv_LIBSQLITE3_CFLAGS="$LIBSQLITE3_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.15.2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.15.2") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBSQLITE3_CFLAGS=`$PKG_CONFIG --cflags "sqlite3 >= 3.15.2" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$LIBSQLITE3_LIBS"; then - pkg_cv_LIBSQLITE3_LIBS="$LIBSQLITE3_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.15.2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.15.2") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBSQLITE3_LIBS=`$PKG_CONFIG --libs "sqlite3 >= 3.15.2" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - LIBSQLITE3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sqlite3 >= 3.15.2" 2>&1` - else - LIBSQLITE3_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sqlite3 >= 3.15.2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$LIBSQLITE3_PKG_ERRORS" >&5 - - - LIBSQLITE3_CFLAGS=${LIBSQLITE3_CFLAGS-""} - LIBSQLITE3_LIBS=${LIBSQLITE3_LIBS-"-lsqlite3"} - - -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - - LIBSQLITE3_CFLAGS=${LIBSQLITE3_CFLAGS-""} - LIBSQLITE3_LIBS=${LIBSQLITE3_LIBS-"-lsqlite3"} - - -else - LIBSQLITE3_CFLAGS=$pkg_cv_LIBSQLITE3_CFLAGS - LIBSQLITE3_LIBS=$pkg_cv_LIBSQLITE3_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi -as_fn_append LIBSQLITE3_CFLAGS ' -I$(srcdir)/Modules/_sqlite' - - - -save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBSQLITE3_CFLAGS" - LIBS="$LIBS $LIBSQLITE3_LIBS" - - ac_fn_c_check_header_compile "$LINENO" "sqlite3.h" "ac_cv_header_sqlite3_h" "$ac_includes_default" -if test "x$ac_cv_header_sqlite3_h" = xyes -then : - - have_sqlite3=yes - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - #if SQLITE_VERSION_NUMBER < 3015002 - # error "SQLite 3.15.2 or higher required" - #endif - -int -main (void) -{ - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - have_supported_sqlite3=yes - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_bind_double in -lsqlite3" >&5 -printf %s "checking for sqlite3_bind_double in -lsqlite3... " >&6; } -if test ${ac_cv_lib_sqlite3_sqlite3_bind_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_bind_double (void); -int -main (void) -{ -return sqlite3_bind_double (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sqlite3_sqlite3_bind_double=yes -else case e in #( - e) ac_cv_lib_sqlite3_sqlite3_bind_double=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_bind_double" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_bind_double" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_bind_double" = xyes -then : - printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h - - LIBS="-lsqlite3 $LIBS" - -else case e in #( - e) - have_supported_sqlite3=no - ;; -esac -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_column_decltype in -lsqlite3" >&5 -printf %s "checking for sqlite3_column_decltype in -lsqlite3... " >&6; } -if test ${ac_cv_lib_sqlite3_sqlite3_column_decltype+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_column_decltype (void); -int -main (void) -{ -return sqlite3_column_decltype (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sqlite3_sqlite3_column_decltype=yes -else case e in #( - e) ac_cv_lib_sqlite3_sqlite3_column_decltype=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_column_decltype" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_column_decltype" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_column_decltype" = xyes -then : - printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h - - LIBS="-lsqlite3 $LIBS" - -else case e in #( - e) - have_supported_sqlite3=no - ;; -esac -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_column_double in -lsqlite3" >&5 -printf %s "checking for sqlite3_column_double in -lsqlite3... " >&6; } -if test ${ac_cv_lib_sqlite3_sqlite3_column_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_column_double (void); -int -main (void) -{ -return sqlite3_column_double (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sqlite3_sqlite3_column_double=yes -else case e in #( - e) ac_cv_lib_sqlite3_sqlite3_column_double=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_column_double" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_column_double" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_column_double" = xyes -then : - printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h - - LIBS="-lsqlite3 $LIBS" - -else case e in #( - e) - have_supported_sqlite3=no - ;; -esac -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_complete in -lsqlite3" >&5 -printf %s "checking for sqlite3_complete in -lsqlite3... " >&6; } -if test ${ac_cv_lib_sqlite3_sqlite3_complete+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_complete (void); -int -main (void) -{ -return sqlite3_complete (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sqlite3_sqlite3_complete=yes -else case e in #( - e) ac_cv_lib_sqlite3_sqlite3_complete=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_complete" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_complete" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_complete" = xyes -then : - printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h - - LIBS="-lsqlite3 $LIBS" - -else case e in #( - e) - have_supported_sqlite3=no - ;; -esac -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_progress_handler in -lsqlite3" >&5 -printf %s "checking for sqlite3_progress_handler in -lsqlite3... " >&6; } -if test ${ac_cv_lib_sqlite3_sqlite3_progress_handler+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_progress_handler (void); -int -main (void) -{ -return sqlite3_progress_handler (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sqlite3_sqlite3_progress_handler=yes -else case e in #( - e) ac_cv_lib_sqlite3_sqlite3_progress_handler=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_progress_handler" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_progress_handler" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_progress_handler" = xyes -then : - printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h - - LIBS="-lsqlite3 $LIBS" - -else case e in #( - e) - have_supported_sqlite3=no - ;; -esac -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_result_double in -lsqlite3" >&5 -printf %s "checking for sqlite3_result_double in -lsqlite3... " >&6; } -if test ${ac_cv_lib_sqlite3_sqlite3_result_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_result_double (void); -int -main (void) -{ -return sqlite3_result_double (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sqlite3_sqlite3_result_double=yes -else case e in #( - e) ac_cv_lib_sqlite3_sqlite3_result_double=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_result_double" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_result_double" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_result_double" = xyes -then : - printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h - - LIBS="-lsqlite3 $LIBS" - -else case e in #( - e) - have_supported_sqlite3=no - ;; -esac -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_set_authorizer in -lsqlite3" >&5 -printf %s "checking for sqlite3_set_authorizer in -lsqlite3... " >&6; } -if test ${ac_cv_lib_sqlite3_sqlite3_set_authorizer+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_set_authorizer (void); -int -main (void) -{ -return sqlite3_set_authorizer (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sqlite3_sqlite3_set_authorizer=yes -else case e in #( - e) ac_cv_lib_sqlite3_sqlite3_set_authorizer=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_set_authorizer" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_set_authorizer" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_set_authorizer" = xyes -then : - printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h - - LIBS="-lsqlite3 $LIBS" - -else case e in #( - e) - have_supported_sqlite3=no - ;; -esac -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_trace_v2 in -lsqlite3" >&5 -printf %s "checking for sqlite3_trace_v2 in -lsqlite3... " >&6; } -if test ${ac_cv_lib_sqlite3_sqlite3_trace_v2+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_trace_v2 (void); -int -main (void) -{ -return sqlite3_trace_v2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sqlite3_sqlite3_trace_v2=yes -else case e in #( - e) ac_cv_lib_sqlite3_sqlite3_trace_v2=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_trace_v2" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_trace_v2" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_trace_v2" = xyes -then : - printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h - - LIBS="-lsqlite3 $LIBS" - -else case e in #( - e) - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_trace in -lsqlite3" >&5 -printf %s "checking for sqlite3_trace in -lsqlite3... " >&6; } -if test ${ac_cv_lib_sqlite3_sqlite3_trace+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_trace (void); -int -main (void) -{ -return sqlite3_trace (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sqlite3_sqlite3_trace=yes -else case e in #( - e) ac_cv_lib_sqlite3_sqlite3_trace=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_trace" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_trace" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_trace" = xyes -then : - printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h - - LIBS="-lsqlite3 $LIBS" - -else case e in #( - e) - have_supported_sqlite3=no - ;; -esac -fi - - - - ;; -esac -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_value_double in -lsqlite3" >&5 -printf %s "checking for sqlite3_value_double in -lsqlite3... " >&6; } -if test ${ac_cv_lib_sqlite3_sqlite3_value_double+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_value_double (void); -int -main (void) -{ -return sqlite3_value_double (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sqlite3_sqlite3_value_double=yes -else case e in #( - e) ac_cv_lib_sqlite3_sqlite3_value_double=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_value_double" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_value_double" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_value_double" = xyes -then : - printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h - - LIBS="-lsqlite3 $LIBS" - -else case e in #( - e) - have_supported_sqlite3=no - ;; -esac -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_load_extension in -lsqlite3" >&5 -printf %s "checking for sqlite3_load_extension in -lsqlite3... " >&6; } -if test ${ac_cv_lib_sqlite3_sqlite3_load_extension+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_load_extension (void); -int -main (void) -{ -return sqlite3_load_extension (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sqlite3_sqlite3_load_extension=yes -else case e in #( - e) ac_cv_lib_sqlite3_sqlite3_load_extension=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_load_extension" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_load_extension" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_load_extension" = xyes -then : - have_sqlite3_load_extension=yes -else case e in #( - e) have_sqlite3_load_extension=no - ;; -esac -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_serialize in -lsqlite3" >&5 -printf %s "checking for sqlite3_serialize in -lsqlite3... " >&6; } -if test ${ac_cv_lib_sqlite3_sqlite3_serialize+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_serialize (void); -int -main (void) -{ -return sqlite3_serialize (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_sqlite3_sqlite3_serialize=yes -else case e in #( - e) ac_cv_lib_sqlite3_sqlite3_serialize=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_serialize" >&5 -printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_serialize" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_serialize" = xyes -then : - - -printf "%s\n" "#define PY_SQLITE_HAVE_SERIALIZE 1" >>confdefs.h - - -fi - - -else case e in #( - e) - have_supported_sqlite3=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi - - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-loadable-sqlite-extensions" >&5 -printf %s "checking for --enable-loadable-sqlite-extensions... " >&6; } -# Check whether --enable-loadable-sqlite-extensions was given. -if test ${enable_loadable_sqlite_extensions+y} -then : - enableval=$enable_loadable_sqlite_extensions; - if test "x$have_sqlite3_load_extension" = xno -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: n/a" >&5 -printf "%s\n" "n/a" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Your version of SQLite does not support loadable extensions" >&5 -printf "%s\n" "$as_me: WARNING: Your version of SQLite does not support loadable extensions" >&2;} - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define PY_SQLITE_ENABLE_LOAD_EXTENSION 1" >>confdefs.h - - ;; -esac -fi - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - - ;; -esac -fi - - -found_tcltk=no -for _QUERY in \ - "tcl >= 8.5.12 tk >= 8.5.12" \ - "tcl8.6 tk8.6" \ - "tcl86 tk86" \ - "tcl8.5 >= 8.5.12 tk8.5 >= 8.5.12" \ - "tcl85 >= 8.5.12 tk85 >= 8.5.12" \ -; do - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$_QUERY\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$_QUERY") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $_QUERY" >&5 -printf %s "checking for $_QUERY... " >&6; } - -if test -n "$TCLTK_CFLAGS"; then - pkg_cv_TCLTK_CFLAGS="$TCLTK_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$_QUERY\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$_QUERY") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_TCLTK_CFLAGS=`$PKG_CONFIG --cflags "$_QUERY" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$TCLTK_LIBS"; then - pkg_cv_TCLTK_LIBS="$TCLTK_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$_QUERY\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$_QUERY") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_TCLTK_LIBS=`$PKG_CONFIG --libs "$_QUERY" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - TCLTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$_QUERY" 2>&1` - else - TCLTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$_QUERY" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$TCLTK_PKG_ERRORS" >&5 - - found_tcltk=no -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - found_tcltk=no -else - TCLTK_CFLAGS=$pkg_cv_TCLTK_CFLAGS - TCLTK_LIBS=$pkg_cv_TCLTK_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - found_tcltk=yes -fi - -fi - if test "x$found_tcltk" = xyes -then : - break -fi -done - -if test "x$found_tcltk" = xno -then : - - TCLTK_CFLAGS=${TCLTK_CFLAGS-""} - TCLTK_LIBS=${TCLTK_LIBS-""} - -fi - -case $ac_sys_system in #( - FreeBSD*) : - - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5 - ($PKG_CONFIG --exists --print-errors "x11") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for x11" >&5 -printf %s "checking for x11... " >&6; } - -if test -n "$X11_CFLAGS"; then - pkg_cv_X11_CFLAGS="$X11_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5 - ($PKG_CONFIG --exists --print-errors "x11") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_X11_CFLAGS=`$PKG_CONFIG --cflags "x11" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$X11_LIBS"; then - pkg_cv_X11_LIBS="$X11_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5 - ($PKG_CONFIG --exists --print-errors "x11") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_X11_LIBS=`$PKG_CONFIG --libs "x11" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - X11_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "x11" 2>&1` - else - X11_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "x11" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$X11_PKG_ERRORS" >&5 - - as_fn_error $? "Package requirements (x11) were not met: - -$X11_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables X11_CFLAGS -and X11_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details." "$LINENO" 5 -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables X11_CFLAGS -and X11_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See 'config.log' for more details" "$LINENO" 5; } -else - X11_CFLAGS=$pkg_cv_X11_CFLAGS - X11_LIBS=$pkg_cv_X11_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - - TCLTK_CFLAGS="$TCLTK_CFLAGS $X11_CFLAGS" - TCLTK_LIBS="$TCLTK_LIBS $X11_LIBS" - -fi - -fi - - ;; #( - *) : - ;; -esac - -save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $TCLTK_CFLAGS" - LIBS="$LIBS $TCLTK_LIBS" - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - #include - #if defined(TK_HEX_VERSION) - # if TK_HEX_VERSION < 0x0805020c - # error "Tk older than 8.5.12 not supported" - # endif - #endif - #if (TCL_MAJOR_VERSION < 8) || \ - ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION < 5)) || \ - ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION == 5) && (TCL_RELEASE_SERIAL < 12)) - # error "Tcl older than 8.5.12 not supported" - #endif - #if (TK_MAJOR_VERSION < 8) || \ - ((TK_MAJOR_VERSION == 8) && (TK_MINOR_VERSION < 5)) || \ - ((TK_MAJOR_VERSION == 8) && (TK_MINOR_VERSION == 5) && (TK_RELEASE_SERIAL < 12)) - # error "Tk older than 8.5.12 not supported" - #endif - -int -main (void) -{ - - void *x1 = Tcl_Init; - void *x2 = Tk_Init; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - have_tcltk=yes - as_fn_append TCLTK_CFLAGS " -Wno-strict-prototypes -DWITH_APPINIT=1" - -else case e in #( - e) - have_tcltk=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - - - -save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $GDBM_CFLAGS" - LIBS="$LIBS $GDBM_LIBS" - for ac_header in gdbm.h -do : - ac_fn_c_check_header_compile "$LINENO" "gdbm.h" "ac_cv_header_gdbm_h" "$ac_includes_default" -if test "x$ac_cv_header_gdbm_h" = xyes -then : - printf "%s\n" "#define HAVE_GDBM_H 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdbm_open in -lgdbm" >&5 -printf %s "checking for gdbm_open in -lgdbm... " >&6; } -if test ${ac_cv_lib_gdbm_gdbm_open+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lgdbm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char gdbm_open (void); -int -main (void) -{ -return gdbm_open (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_gdbm_gdbm_open=yes -else case e in #( - e) ac_cv_lib_gdbm_gdbm_open=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gdbm_gdbm_open" >&5 -printf "%s\n" "$ac_cv_lib_gdbm_gdbm_open" >&6; } -if test "x$ac_cv_lib_gdbm_gdbm_open" = xyes -then : - - have_gdbm=yes - GDBM_LIBS=${GDBM_LIBS-"-lgdbm"} - -else case e in #( - e) have_gdbm=no ;; -esac -fi - - -else case e in #( - e) have_gdbm=no ;; -esac -fi - -done - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - - for ac_header in ndbm.h -do : - ac_fn_c_check_header_compile "$LINENO" "ndbm.h" "ac_cv_header_ndbm_h" "$ac_includes_default" -if test "x$ac_cv_header_ndbm_h" = xyes -then : - printf "%s\n" "#define HAVE_NDBM_H 1" >>confdefs.h - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dbm_open" >&5 -printf %s "checking for library containing dbm_open... " >&6; } -if test ${ac_cv_search_dbm_open+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char dbm_open (void); -int -main (void) -{ -return dbm_open (); - ; - return 0; -} -_ACEOF -for ac_lib in '' ndbm gdbm_compat -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_dbm_open=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_dbm_open+y} -then : - break -fi -done -if test ${ac_cv_search_dbm_open+y} -then : - -else case e in #( - e) ac_cv_search_dbm_open=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dbm_open" >&5 -printf "%s\n" "$ac_cv_search_dbm_open" >&6; } -ac_res=$ac_cv_search_dbm_open -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -fi - -done - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ndbm presence and linker args" >&5 -printf %s "checking for ndbm presence and linker args... " >&6; } -case $ac_cv_search_dbm_open in #( - *ndbm*|*gdbm_compat*) : - - dbm_ndbm="$ac_cv_search_dbm_open" - have_ndbm=yes - ;; #( - none*) : - - dbm_ndbm="" - have_ndbm=yes - ;; #( - no) : - have_ndbm=no - ;; #( - *) : - ;; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_ndbm ($dbm_ndbm)" >&5 -printf "%s\n" "$have_ndbm ($dbm_ndbm)" >&6; } - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdbm/ndbm.h" >&5 -printf %s "checking for gdbm/ndbm.h... " >&6; } -if test ${ac_cv_header_gdbm_slash_ndbm_h+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - ac_cv_header_gdbm_slash_ndbm_h=yes -else case e in #( - e) ac_cv_header_gdbm_slash_ndbm_h=no ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_gdbm_slash_ndbm_h" >&5 -printf "%s\n" "$ac_cv_header_gdbm_slash_ndbm_h" >&6; } -if test "x$ac_cv_header_gdbm_slash_ndbm_h" = xyes -then : - - -printf "%s\n" "#define HAVE_GDBM_NDBM_H 1" >>confdefs.h - - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdbm-ndbm.h" >&5 -printf %s "checking for gdbm-ndbm.h... " >&6; } -if test ${ac_cv_header_gdbm_dash_ndbm_h+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - ac_cv_header_gdbm_dash_ndbm_h=yes -else case e in #( - e) ac_cv_header_gdbm_dash_ndbm_h=no ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_gdbm_dash_ndbm_h" >&5 -printf "%s\n" "$ac_cv_header_gdbm_dash_ndbm_h" >&6; } -if test "x$ac_cv_header_gdbm_dash_ndbm_h" = xyes -then : - - -printf "%s\n" "#define HAVE_GDBM_DASH_NDBM_H 1" >>confdefs.h - - -fi - -if test "$ac_cv_header_gdbm_slash_ndbm_h" = yes -o "$ac_cv_header_gdbm_dash_ndbm_h" = yes; then - { ac_cv_search_dbm_open=; unset ac_cv_search_dbm_open;} - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dbm_open" >&5 -printf %s "checking for library containing dbm_open... " >&6; } -if test ${ac_cv_search_dbm_open+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char dbm_open (void); -int -main (void) -{ -return dbm_open (); - ; - return 0; -} -_ACEOF -for ac_lib in '' gdbm_compat -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_dbm_open=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_dbm_open+y} -then : - break -fi -done -if test ${ac_cv_search_dbm_open+y} -then : - -else case e in #( - e) ac_cv_search_dbm_open=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dbm_open" >&5 -printf "%s\n" "$ac_cv_search_dbm_open" >&6; } -ac_res=$ac_cv_search_dbm_open -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - have_gdbm_compat=yes -else case e in #( - e) have_gdbm_compat=no ;; -esac -fi - - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - -fi - -# Check for libdb >= 5 with dbm_open() -# db.h re-defines the name of the function - for ac_header in db.h -do : - ac_fn_c_check_header_compile "$LINENO" "db.h" "ac_cv_header_db_h" "$ac_includes_default" -if test "x$ac_cv_header_db_h" = xyes -then : - printf "%s\n" "#define HAVE_DB_H 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libdb" >&5 -printf %s "checking for libdb... " >&6; } -if test ${ac_cv_have_libdb+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - LIBS="$LIBS -ldb" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #define DB_DBM_HSEARCH 1 - #include - #if DB_VERSION_MAJOR < 5 - #error "dh.h: DB_VERSION_MAJOR < 5 is not supported." - #endif - -int -main (void) -{ -DBM *dbm = dbm_open(NULL, 0, 0) - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_have_libdb=yes -else case e in #( - e) ac_cv_have_libdb=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_libdb" >&5 -printf "%s\n" "$ac_cv_have_libdb" >&6; } - if test "x$ac_cv_have_libdb" = xyes -then : - - -printf "%s\n" "#define HAVE_LIBDB 1" >>confdefs.h - - -fi - -fi - -done - -# Check for --with-dbmliborder -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-dbmliborder" >&5 -printf %s "checking for --with-dbmliborder... " >&6; } - -# Check whether --with-dbmliborder was given. -if test ${with_dbmliborder+y} -then : - withval=$with_dbmliborder; -else case e in #( - e) with_dbmliborder=gdbm:ndbm:bdb ;; -esac -fi - - -have_gdbm_dbmliborder=no -as_save_IFS=$IFS -IFS=: -for db in $with_dbmliborder; do - case $db in #( - ndbm) : - ;; #( - gdbm) : - have_gdbm_dbmliborder=yes ;; #( - bdb) : - ;; #( - *) : - with_dbmliborder=error - ;; -esac -done -IFS=$as_save_IFS -if test "x$with_dbmliborder" = xerror -then : - - as_fn_error $? "proper usage is --with-dbmliborder=db1:db2:... (gdbm:ndbm:bdb)" "$LINENO" 5 - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_dbmliborder" >&5 -printf "%s\n" "$with_dbmliborder" >&6; } - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _dbm module CFLAGS and LIBS" >&5 -printf %s "checking for _dbm module CFLAGS and LIBS... " >&6; } -have_dbm=no -as_save_IFS=$IFS -IFS=: -for db in $with_dbmliborder; do - case "$db" in - ndbm) - if test "$have_ndbm" = yes; then - DBM_CFLAGS="-DUSE_NDBM" - DBM_LIBS="$dbm_ndbm" - have_dbm=yes - break - fi - ;; - gdbm) - if test "$have_gdbm_compat" = yes; then - DBM_CFLAGS="-DUSE_GDBM_COMPAT" - DBM_LIBS="-lgdbm_compat" - have_dbm=yes - break - fi - ;; - bdb) - if test "$ac_cv_have_libdb" = yes; then - DBM_CFLAGS="-DUSE_BERKDB" - DBM_LIBS="-ldb" - have_dbm=yes - break - fi - ;; - esac -done -IFS=$as_save_IFS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DBM_CFLAGS $DBM_LIBS" >&5 -printf "%s\n" "$DBM_CFLAGS $DBM_LIBS" >&6; } - -# Templates for things AC_DEFINEd more than once. -# For a single AC_DEFINE, no template is needed. - - -if test "$ac_cv_pthread_is_default" = yes -then - # Defining _REENTRANT on system with POSIX threads should not hurt. - printf "%s\n" "#define _REENTRANT 1" >>confdefs.h - - posix_threads=yes - if test "$ac_sys_system" = "SunOS"; then - CFLAGS="$CFLAGS -D_REENTRANT" - fi -elif test "$ac_cv_kpthread" = "yes" -then - CC="$CC -Kpthread" - if test "$ac_cv_cxx_thread" = "yes"; then - CXX="$CXX -Kpthread" - fi - posix_threads=yes -elif test "$ac_cv_kthread" = "yes" -then - CC="$CC -Kthread" - if test "$ac_cv_cxx_thread" = "yes"; then - CXX="$CXX -Kthread" - fi - posix_threads=yes -elif test "$ac_cv_pthread" = "yes" -then - CC="$CC -pthread" - if test "$ac_cv_cxx_thread" = "yes"; then - CXX="$CXX -pthread" - fi - posix_threads=yes -else - if test ! -z "$withval" -a -d "$withval" - then LDFLAGS="$LDFLAGS -L$withval" - fi - - # According to the POSIX spec, a pthreads implementation must - # define _POSIX_THREADS in unistd.h. Some apparently don't - # (e.g. gnu pth with pthread emulation) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _POSIX_THREADS in unistd.h" >&5 -printf %s "checking for _POSIX_THREADS in unistd.h... " >&6; } - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _POSIX_THREADS defined in unistd.h" >&5 -printf %s "checking for _POSIX_THREADS defined in unistd.h... " >&6; } -if test ${ac_cv_defined__POSIX_THREADS_unistd_h+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ - - #ifdef _POSIX_THREADS - int ok; - (void)ok; - #else - choke me - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_defined__POSIX_THREADS_unistd_h=yes -else case e in #( - e) ac_cv_defined__POSIX_THREADS_unistd_h=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined__POSIX_THREADS_unistd_h" >&5 -printf "%s\n" "$ac_cv_defined__POSIX_THREADS_unistd_h" >&6; } -if test $ac_cv_defined__POSIX_THREADS_unistd_h != "no" -then : - unistd_defines_pthreads=yes -else case e in #( - e) unistd_defines_pthreads=no ;; -esac -fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $unistd_defines_pthreads" >&5 -printf "%s\n" "$unistd_defines_pthreads" >&6; } - - printf "%s\n" "#define _REENTRANT 1" >>confdefs.h - - # Just looking for pthread_create in libpthread is not enough: - # on HP/UX, pthread.h renames pthread_create to a different symbol name. - # So we really have to include pthread.h, and then link. - _libs=$LIBS - LIBS="$LIBS -lpthread" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 -printf %s "checking for pthread_create in -lpthread... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include - -void * start_routine (void *arg) { exit (0); } -int -main (void) -{ - -pthread_create (NULL, NULL, start_routine, NULL) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - posix_threads=yes - -else case e in #( - e) - LIBS=$_libs - ac_fn_c_check_func "$LINENO" "pthread_detach" "ac_cv_func_pthread_detach" -if test "x$ac_cv_func_pthread_detach" = xyes -then : - - posix_threads=yes - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthreads" >&5 -printf %s "checking for pthread_create in -lpthreads... " >&6; } -if test ${ac_cv_lib_pthreads_pthread_create+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthreads $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (void); -int -main (void) -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_pthreads_pthread_create=yes -else case e in #( - e) ac_cv_lib_pthreads_pthread_create=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_pthread_create" >&5 -printf "%s\n" "$ac_cv_lib_pthreads_pthread_create" >&6; } -if test "x$ac_cv_lib_pthreads_pthread_create" = xyes -then : - - posix_threads=yes - LIBS="$LIBS -lpthreads" - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lc_r" >&5 -printf %s "checking for pthread_create in -lc_r... " >&6; } -if test ${ac_cv_lib_c_r_pthread_create+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lc_r $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (void); -int -main (void) -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_c_r_pthread_create=yes -else case e in #( - e) ac_cv_lib_c_r_pthread_create=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_create" >&5 -printf "%s\n" "$ac_cv_lib_c_r_pthread_create" >&6; } -if test "x$ac_cv_lib_c_r_pthread_create" = xyes -then : - - posix_threads=yes - LIBS="$LIBS -lc_r" - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __pthread_create_system in -lpthread" >&5 -printf %s "checking for __pthread_create_system in -lpthread... " >&6; } -if test ${ac_cv_lib_pthread___pthread_create_system+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char __pthread_create_system (void); -int -main (void) -{ -return __pthread_create_system (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_pthread___pthread_create_system=yes -else case e in #( - e) ac_cv_lib_pthread___pthread_create_system=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread___pthread_create_system" >&5 -printf "%s\n" "$ac_cv_lib_pthread___pthread_create_system" >&6; } -if test "x$ac_cv_lib_pthread___pthread_create_system" = xyes -then : - - posix_threads=yes - LIBS="$LIBS -lpthread" - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lcma" >&5 -printf %s "checking for pthread_create in -lcma... " >&6; } -if test ${ac_cv_lib_cma_pthread_create+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lcma $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (void); -int -main (void) -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_cma_pthread_create=yes -else case e in #( - e) ac_cv_lib_cma_pthread_create=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cma_pthread_create" >&5 -printf "%s\n" "$ac_cv_lib_cma_pthread_create" >&6; } -if test "x$ac_cv_lib_cma_pthread_create" = xyes -then : - - posix_threads=yes - LIBS="$LIBS -lcma" - -else case e in #( - e) - case $ac_sys_system in #( - WASI) : - posix_threads=stub ;; #( - *) : - as_fn_error $? "could not find pthreads on your system" "$LINENO" 5 - ;; -esac - ;; -esac -fi - ;; -esac -fi - ;; -esac -fi - ;; -esac -fi - ;; -esac -fi - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for usconfig in -lmpc" >&5 -printf %s "checking for usconfig in -lmpc... " >&6; } -if test ${ac_cv_lib_mpc_usconfig+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lmpc $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char usconfig (void); -int -main (void) -{ -return usconfig (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_mpc_usconfig=yes -else case e in #( - e) ac_cv_lib_mpc_usconfig=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpc_usconfig" >&5 -printf "%s\n" "$ac_cv_lib_mpc_usconfig" >&6; } -if test "x$ac_cv_lib_mpc_usconfig" = xyes -then : - - LIBS="$LIBS -lmpc" - -fi - - -fi - -if test "$posix_threads" = "yes"; then - if test "$unistd_defines_pthreads" = "no"; then - -printf "%s\n" "#define _POSIX_THREADS 1" >>confdefs.h - - fi - - # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8. - case $ac_sys_system/$ac_sys_release in - SunOS/5.6) -printf "%s\n" "#define HAVE_PTHREAD_DESTRUCTOR 1" >>confdefs.h - - ;; - SunOS/5.8) -printf "%s\n" "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h - - ;; - AIX/*) -printf "%s\n" "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h - - ;; - NetBSD/*) -printf "%s\n" "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h - - ;; - esac - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if PTHREAD_SCOPE_SYSTEM is supported" >&5 -printf %s "checking if PTHREAD_SCOPE_SYSTEM is supported... " >&6; } -if test ${ac_cv_pthread_system_supported+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "$cross_compiling" = yes -then : - ac_cv_pthread_system_supported=no -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #include - void *foo(void *parm) { - return NULL; - } - int main(void) { - pthread_attr_t attr; - pthread_t id; - if (pthread_attr_init(&attr)) return (-1); - if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) return (-1); - if (pthread_create(&id, &attr, foo, NULL)) return (-1); - if (pthread_join(id, NULL)) return (-1); - return (0); - } -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_pthread_system_supported=yes -else case e in #( - e) ac_cv_pthread_system_supported=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_system_supported" >&5 -printf "%s\n" "$ac_cv_pthread_system_supported" >&6; } - if test "$ac_cv_pthread_system_supported" = "yes"; then - -printf "%s\n" "#define PTHREAD_SYSTEM_SCHED_SUPPORTED 1" >>confdefs.h - - fi - - for ac_func in pthread_sigmask -do : - ac_fn_c_check_func "$LINENO" "pthread_sigmask" "ac_cv_func_pthread_sigmask" -if test "x$ac_cv_func_pthread_sigmask" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_SIGMASK 1" >>confdefs.h - case $ac_sys_system in - CYGWIN*) - -printf "%s\n" "#define HAVE_BROKEN_PTHREAD_SIGMASK 1" >>confdefs.h - - ;; - esac -fi - -done - ac_fn_c_check_func "$LINENO" "pthread_getcpuclockid" "ac_cv_func_pthread_getcpuclockid" -if test "x$ac_cv_func_pthread_getcpuclockid" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_GETCPUCLOCKID 1" >>confdefs.h - -fi - -fi - -if test "x$posix_threads" = xstub -then : - - -printf "%s\n" "#define HAVE_PTHREAD_STUBS 1" >>confdefs.h - - -fi - -# Check for enable-ipv6 - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if --enable-ipv6 is specified" >&5 -printf %s "checking if --enable-ipv6 is specified... " >&6; } -# Check whether --enable-ipv6 was given. -if test ${enable_ipv6+y} -then : - enableval=$enable_ipv6; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ipv6=no - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - printf "%s\n" "#define ENABLE_IPV6 1" >>confdefs.h - - ipv6=yes - ;; - esac -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - /* AF_INET6 available check */ -#include -#include -int -main (void) -{ -int domain = AF_INET6; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - ipv6=yes - -else case e in #( - e) - ipv6=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -case $ac_sys_system in #( - WASI) : - ipv6=no - ;; #( - *) : - ;; -esac - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ipv6" >&5 -printf "%s\n" "$ipv6" >&6; } - -if test "$ipv6" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if RFC2553 API is available" >&5 -printf %s "checking if RFC2553 API is available... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include -#include -int -main (void) -{ -struct sockaddr_in6 x; - x.sin6_scope_id; - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ipv6=yes - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ipv6=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -if test "$ipv6" = "yes"; then - printf "%s\n" "#define ENABLE_IPV6 1" >>confdefs.h - -fi - ;; -esac -fi - - -ipv6type=unknown -ipv6lib=none -ipv6trylibc=no - -if test "$ipv6" = yes -a "$cross_compiling" = no; then - for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta; - do - case $i in - inria) - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for IPV6_INRIA_VERSION defined in netinet/in.h" >&5 -printf %s "checking for IPV6_INRIA_VERSION defined in netinet/in.h... " >&6; } -if test ${ac_cv_defined_IPV6_INRIA_VERSION_netinet_in_h+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ - - #ifdef IPV6_INRIA_VERSION - int ok; - (void)ok; - #else - choke me - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_defined_IPV6_INRIA_VERSION_netinet_in_h=yes -else case e in #( - e) ac_cv_defined_IPV6_INRIA_VERSION_netinet_in_h=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined_IPV6_INRIA_VERSION_netinet_in_h" >&5 -printf "%s\n" "$ac_cv_defined_IPV6_INRIA_VERSION_netinet_in_h" >&6; } -if test $ac_cv_defined_IPV6_INRIA_VERSION_netinet_in_h != "no" -then : - ipv6type=$i -fi - ;; - kame) - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __KAME__ defined in netinet/in.h" >&5 -printf %s "checking for __KAME__ defined in netinet/in.h... " >&6; } -if test ${ac_cv_defined___KAME___netinet_in_h+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ - - #ifdef __KAME__ - int ok; - (void)ok; - #else - choke me - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_defined___KAME___netinet_in_h=yes -else case e in #( - e) ac_cv_defined___KAME___netinet_in_h=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined___KAME___netinet_in_h" >&5 -printf "%s\n" "$ac_cv_defined___KAME___netinet_in_h" >&6; } -if test $ac_cv_defined___KAME___netinet_in_h != "no" -then : - ipv6type=$i - ipv6lib=inet6 - ipv6libdir=/usr/local/v6/lib - ipv6trylibc=yes -fi - ;; - linux-glibc) - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __GLIBC__ defined in features.h" >&5 -printf %s "checking for __GLIBC__ defined in features.h... " >&6; } -if test ${ac_cv_defined___GLIBC___features_h+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ - - #ifdef __GLIBC__ - int ok; - (void)ok; - #else - choke me - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_defined___GLIBC___features_h=yes -else case e in #( - e) ac_cv_defined___GLIBC___features_h=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined___GLIBC___features_h" >&5 -printf "%s\n" "$ac_cv_defined___GLIBC___features_h" >&6; } -if test $ac_cv_defined___GLIBC___features_h != "no" -then : - ipv6type=$i - ipv6trylibc=yes -fi - ;; - linux-inet6) - if test -d /usr/inet6; then - ipv6type=$i - ipv6lib=inet6 - ipv6libdir=/usr/inet6/lib - BASECFLAGS="-I/usr/inet6/include $BASECFLAGS" - fi - ;; - solaris) - if test -f /etc/netconfig; then - if $GREP -q tcp6 /etc/netconfig; then - ipv6type=$i - ipv6trylibc=yes - fi - fi - ;; - toshiba) - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _TOSHIBA_INET6 defined in sys/param.h" >&5 -printf %s "checking for _TOSHIBA_INET6 defined in sys/param.h... " >&6; } -if test ${ac_cv_defined__TOSHIBA_INET6_sys_param_h+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ - - #ifdef _TOSHIBA_INET6 - int ok; - (void)ok; - #else - choke me - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_defined__TOSHIBA_INET6_sys_param_h=yes -else case e in #( - e) ac_cv_defined__TOSHIBA_INET6_sys_param_h=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined__TOSHIBA_INET6_sys_param_h" >&5 -printf "%s\n" "$ac_cv_defined__TOSHIBA_INET6_sys_param_h" >&6; } -if test $ac_cv_defined__TOSHIBA_INET6_sys_param_h != "no" -then : - ipv6type=$i - ipv6lib=inet6 - ipv6libdir=/usr/local/v6/lib -fi - ;; - v6d) - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __V6D__ defined in /usr/local/v6/include/sys/v6config.h" >&5 -printf %s "checking for __V6D__ defined in /usr/local/v6/include/sys/v6config.h... " >&6; } -if test ${ac_cv_defined___V6D____usr_local_v6_include_sys_v6config_h+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ - - #ifdef __V6D__ - int ok; - (void)ok; - #else - choke me - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_defined___V6D____usr_local_v6_include_sys_v6config_h=yes -else case e in #( - e) ac_cv_defined___V6D____usr_local_v6_include_sys_v6config_h=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined___V6D____usr_local_v6_include_sys_v6config_h" >&5 -printf "%s\n" "$ac_cv_defined___V6D____usr_local_v6_include_sys_v6config_h" >&6; } -if test $ac_cv_defined___V6D____usr_local_v6_include_sys_v6config_h != "no" -then : - ipv6type=$i - ipv6lib=v6 - ipv6libdir=/usr/local/v6/lib - BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS" -fi - ;; - zeta) - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _ZETA_MINAMI_INET6 defined in sys/param.h" >&5 -printf %s "checking for _ZETA_MINAMI_INET6 defined in sys/param.h... " >&6; } -if test ${ac_cv_defined__ZETA_MINAMI_INET6_sys_param_h+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ - - #ifdef _ZETA_MINAMI_INET6 - int ok; - (void)ok; - #else - choke me - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_defined__ZETA_MINAMI_INET6_sys_param_h=yes -else case e in #( - e) ac_cv_defined__ZETA_MINAMI_INET6_sys_param_h=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined__ZETA_MINAMI_INET6_sys_param_h" >&5 -printf "%s\n" "$ac_cv_defined__ZETA_MINAMI_INET6_sys_param_h" >&6; } -if test $ac_cv_defined__ZETA_MINAMI_INET6_sys_param_h != "no" -then : - ipv6type=$i - ipv6lib=inet6 - ipv6libdir=/usr/local/v6/lib -fi - ;; - esac - if test "$ipv6type" != "unknown"; then - break - fi - done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ipv6 stack type" >&5 -printf %s "checking ipv6 stack type... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ipv6type" >&5 -printf "%s\n" "$ipv6type" >&6; } -fi - -if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ipv6 library" >&5 -printf %s "checking ipv6 library... " >&6; } - if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then - LIBS="-L$ipv6libdir -l$ipv6lib $LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: lib$ipv6lib" >&5 -printf "%s\n" "lib$ipv6lib" >&6; } - else - if test "x$ipv6trylibc" = xyes -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: libc" >&5 -printf "%s\n" "libc" >&6; } - -else case e in #( - e) - as_fn_error $? "No $ipv6lib library found; cannot continue. You need to fetch lib$ipv6lib.a from appropriate ipv6 kit and compile beforehand." "$LINENO" 5 - ;; -esac -fi - fi -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CAN_RAW_FD_FRAMES" >&5 -printf %s "checking CAN_RAW_FD_FRAMES... " >&6; } -if test ${ac_cv_can_raw_fd_frames+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - /* CAN_RAW_FD_FRAMES available check */ -#include -int -main (void) -{ -int can_raw_fd_frames = CAN_RAW_FD_FRAMES; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_can_raw_fd_frames=yes -else case e in #( - e) ac_cv_can_raw_fd_frames=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_can_raw_fd_frames" >&5 -printf "%s\n" "$ac_cv_can_raw_fd_frames" >&6; } -if test "x$ac_cv_can_raw_fd_frames" = xyes -then : - - -printf "%s\n" "#define HAVE_LINUX_CAN_RAW_FD_FRAMES 1" >>confdefs.h - - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CAN_RAW_JOIN_FILTERS" >&5 -printf %s "checking for CAN_RAW_JOIN_FILTERS... " >&6; } -if test ${ac_cv_can_raw_join_filters+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -int -main (void) -{ -int can_raw_join_filters = CAN_RAW_JOIN_FILTERS; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_can_raw_join_filters=yes -else case e in #( - e) ac_cv_can_raw_join_filters=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_can_raw_join_filters" >&5 -printf "%s\n" "$ac_cv_can_raw_join_filters" >&6; } -if test "x$ac_cv_can_raw_join_filters" = xyes -then : - - -printf "%s\n" "#define HAVE_LINUX_CAN_RAW_JOIN_FILTERS 1" >>confdefs.h - - -fi - -# Check for --with-doc-strings -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-doc-strings" >&5 -printf %s "checking for --with-doc-strings... " >&6; } - -# Check whether --with-doc-strings was given. -if test ${with_doc_strings+y} -then : - withval=$with_doc_strings; -fi - - -if test -z "$with_doc_strings" -then with_doc_strings="yes" -fi -if test "$with_doc_strings" != "no" -then - -printf "%s\n" "#define WITH_DOC_STRINGS 1" >>confdefs.h - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_doc_strings" >&5 -printf "%s\n" "$with_doc_strings" >&6; } - -# Check for stdatomic.h, required for mimalloc. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdatomic.h" >&5 -printf %s "checking for stdatomic.h... " >&6; } -if test ${ac_cv_header_stdatomic_h+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - atomic_int int_var; - atomic_uintptr_t uintptr_var; - int main() { - atomic_store_explicit(&int_var, 5, memory_order_relaxed); - atomic_store_explicit(&uintptr_var, 0, memory_order_relaxed); - int loaded_value = atomic_load_explicit(&int_var, memory_order_seq_cst); - return 0; - } - - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_header_stdatomic_h=yes -else case e in #( - e) ac_cv_header_stdatomic_h=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdatomic_h" >&5 -printf "%s\n" "$ac_cv_header_stdatomic_h" >&6; } - -if test "x$ac_cv_header_stdatomic_h" = xyes -then : - - -printf "%s\n" "#define HAVE_STD_ATOMIC 1" >>confdefs.h - - -fi - -# Check for GCC >= 4.7 and clang __atomic builtin functions -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for builtin __atomic_load_n and __atomic_store_n functions" >&5 -printf %s "checking for builtin __atomic_load_n and __atomic_store_n functions... " >&6; } -if test ${ac_cv_builtin_atomic+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - int val; - int main() { - __atomic_store_n(&val, 1, __ATOMIC_SEQ_CST); - (void)__atomic_load_n(&val, __ATOMIC_SEQ_CST); - return 0; - } - - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_builtin_atomic=yes -else case e in #( - e) ac_cv_builtin_atomic=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_builtin_atomic" >&5 -printf "%s\n" "$ac_cv_builtin_atomic" >&6; } - -if test "x$ac_cv_builtin_atomic" = xyes -then : - - -printf "%s\n" "#define HAVE_BUILTIN_ATOMIC 1" >>confdefs.h - - -fi - -# --with-mimalloc -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-mimalloc" >&5 -printf %s "checking for --with-mimalloc... " >&6; } - -# Check whether --with-mimalloc was given. -if test ${with_mimalloc+y} -then : - withval=$with_mimalloc; -else case e in #( - e) with_mimalloc="$ac_cv_header_stdatomic_h" - ;; -esac -fi - - -if test "$with_mimalloc" != no; then - if test "$ac_cv_header_stdatomic_h" != yes; then - # mimalloc-atomic.h wants C11 stdatomic.h on POSIX - as_fn_error $? "mimalloc requires stdatomic.h, use --without-mimalloc to disable mimalloc." "$LINENO" 5 - fi - with_mimalloc=yes - -printf "%s\n" "#define WITH_MIMALLOC 1" >>confdefs.h - - MIMALLOC_HEADERS='$(MIMALLOC_HEADERS)' - -elif test "$disable_gil" = "yes"; then - as_fn_error $? "--disable-gil requires mimalloc memory allocator (--with-mimalloc)." "$LINENO" 5 -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_mimalloc" >&5 -printf "%s\n" "$with_mimalloc" >&6; } -INSTALL_MIMALLOC=$with_mimalloc - - - -# Check for Python-specific malloc support -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-pymalloc" >&5 -printf %s "checking for --with-pymalloc... " >&6; } - -# Check whether --with-pymalloc was given. -if test ${with_pymalloc+y} -then : - withval=$with_pymalloc; -fi - - -if test -z "$with_pymalloc" -then - case $ac_sys_system in #( - Emscripten) : - with_pymalloc="no" ;; #( - WASI) : - with_pymalloc="no" ;; #( - *) : - with_pymalloc="yes" - ;; -esac -fi -if test "$with_pymalloc" != "no" -then - -printf "%s\n" "#define WITH_PYMALLOC 1" >>confdefs.h - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_pymalloc" >&5 -printf "%s\n" "$with_pymalloc" >&6; } - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-pymalloc-hugepages" >&5 -printf %s "checking for --with-pymalloc-hugepages... " >&6; } - -# Check whether --with-pymalloc-hugepages was given. -if test ${with_pymalloc_hugepages+y} -then : - withval=$with_pymalloc_hugepages; -fi - -if test "$with_pymalloc_hugepages" = "yes" -then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - -int -main (void) -{ - -int flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB; -(void)flags; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -printf "%s\n" "#define PYMALLOC_USE_HUGEPAGES 1" >>confdefs.h - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --with-pymalloc-hugepages requested but MAP_HUGETLB not found" >&5 -printf "%s\n" "$as_me: WARNING: --with-pymalloc-hugepages requested but MAP_HUGETLB not found" >&2;} - with_pymalloc_hugepages=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${with_pymalloc_hugepages:-no}" >&5 -printf "%s\n" "${with_pymalloc_hugepages:-no}" >&6; } - -# Check for --with-c-locale-coercion -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-c-locale-coercion" >&5 -printf %s "checking for --with-c-locale-coercion... " >&6; } - -# Check whether --with-c-locale-coercion was given. -if test ${with_c_locale_coercion+y} -then : - withval=$with_c_locale_coercion; -fi - - -if test -z "$with_c_locale_coercion" -then - with_c_locale_coercion="yes" -fi -if test "$with_c_locale_coercion" != "no" -then - -printf "%s\n" "#define PY_COERCE_C_LOCALE 1" >>confdefs.h - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_c_locale_coercion" >&5 -printf "%s\n" "$with_c_locale_coercion" >&6; } - -# Check for Valgrind support -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-valgrind" >&5 -printf %s "checking for --with-valgrind... " >&6; } - -# Check whether --with-valgrind was given. -if test ${with_valgrind+y} -then : - withval=$with_valgrind; -else case e in #( - e) with_valgrind=no - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_valgrind" >&5 -printf "%s\n" "$with_valgrind" >&6; } -if test "$with_valgrind" != no; then - ac_fn_c_check_header_compile "$LINENO" "valgrind/valgrind.h" "ac_cv_header_valgrind_valgrind_h" "$ac_includes_default" -if test "x$ac_cv_header_valgrind_valgrind_h" = xyes -then : - -printf "%s\n" "#define WITH_VALGRIND 1" >>confdefs.h - -else case e in #( - e) as_fn_error $? "Valgrind support requested but headers not available" "$LINENO" 5 - ;; -esac -fi - - OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT" -fi - -# Check for DTrace support -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-dtrace" >&5 -printf %s "checking for --with-dtrace... " >&6; } - -# Check whether --with-dtrace was given. -if test ${with_dtrace+y} -then : - withval=$with_dtrace; -else case e in #( - e) with_dtrace=no ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_dtrace" >&5 -printf "%s\n" "$with_dtrace" >&6; } - - - - - -DTRACE= -DTRACE_HEADERS= -DTRACE_OBJS= - -if test "$with_dtrace" = "yes" -then - # Extract the first word of "dtrace", so it can be a program name with args. -set dummy dtrace; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_DTRACE+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) case $DTRACE in - [\\/]* | ?:[\\/]*) - ac_cv_path_DTRACE="$DTRACE" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_DTRACE="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_DTRACE" && ac_cv_path_DTRACE="not found" - ;; -esac ;; -esac -fi -DTRACE=$ac_cv_path_DTRACE -if test -n "$DTRACE"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5 -printf "%s\n" "$DTRACE" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - if test "$DTRACE" = "not found"; then - as_fn_error $? "dtrace command not found on \$PATH" "$LINENO" 5 - fi - -printf "%s\n" "#define WITH_DTRACE 1" >>confdefs.h - - DTRACE_HEADERS="Include/pydtrace_probes.h" - - # On OS X, DTrace providers do not need to be explicitly compiled and - # linked into the binary. Correspondingly, dtrace(1) is missing the ELF - # generation flag '-G'. We check for presence of this flag, rather than - # hardcoding support by OS, in the interest of robustness. - # - # NetBSD DTrace requires the -x nolibs flag to avoid system library conflicts - # and uses header generation for testing instead of object generation. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether DTrace probes require linking" >&5 -printf %s "checking whether DTrace probes require linking... " >&6; } -if test ${ac_cv_dtrace_link+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ac_cv_dtrace_link=no - echo 'BEGIN{}' > conftest.d - case $host in - *netbsd*) - DTRACE_TEST_FLAGS="-x nolibs -h" - ;; - *) - DTRACE_TEST_FLAGS="-G" - ;; - esac - "$DTRACE" $DFLAGS $DTRACE_TEST_FLAGS -s conftest.d -o conftest.o > /dev/null 2>&1 && \ - ac_cv_dtrace_link=yes - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dtrace_link" >&5 -printf "%s\n" "$ac_cv_dtrace_link" >&6; } - if test "$ac_cv_dtrace_link" = "yes"; then - DTRACE_OBJS="Python/pydtrace.o" - fi - # Set NetBSD-specific DTrace flags in DFLAGS - case $host in - *netbsd*) - DFLAGS="$DFLAGS -x nolibs" - ;; - esac -fi - -PLATFORM_HEADERS= -PLATFORM_OBJS= - -case $ac_sys_system in #( - Emscripten) : - - as_fn_append PLATFORM_OBJS ' Python/emscripten_signal.o Python/emscripten_trampoline.o Python/emscripten_trampoline_wasm.o Python/emscripten_syscalls.o' - as_fn_append PLATFORM_HEADERS ' $(srcdir)/Include/internal/pycore_emscripten_signal.h $(srcdir)/Include/internal/pycore_emscripten_trampoline.h' - ;; #( - *) : - ;; -esac - - - -# -I${DLINCLDIR} is added to the compile rule for importdl.o - -DLINCLDIR=. - -# the dlopen() function means we might want to use dynload_shlib.o. some -# platforms have dlopen(), but don't want to use it. -ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes -then : - printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h - -fi - - -# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic -# loading of modules. - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking DYNLOADFILE" >&5 -printf %s "checking DYNLOADFILE... " >&6; } -if test -z "$DYNLOADFILE" -then - case $ac_sys_system/$ac_sys_release in - hp*|HP*) DYNLOADFILE="dynload_hpux.o";; - *) - # use dynload_shlib.c and dlopen() if we have it; otherwise stub - # out any dynamic loading - if test "$ac_cv_func_dlopen" = yes - then DYNLOADFILE="dynload_shlib.o" - else DYNLOADFILE="dynload_stub.o" - fi - ;; - esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DYNLOADFILE" >&5 -printf "%s\n" "$DYNLOADFILE" >&6; } -if test "$DYNLOADFILE" != "dynload_stub.o" -then - -printf "%s\n" "#define HAVE_DYNAMIC_LOADING 1" >>confdefs.h - -fi - -# MACHDEP_OBJS can be set to platform-specific object files needed by Python - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking MACHDEP_OBJS" >&5 -printf %s "checking MACHDEP_OBJS... " >&6; } -if test -z "$MACHDEP_OBJS" -then - MACHDEP_OBJS=$extra_machdep_objs -else - MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs" -fi -if test -z "$MACHDEP_OBJS"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 -printf "%s\n" "none" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MACHDEP_OBJS" >&5 -printf "%s\n" "$MACHDEP_OBJS" >&6; } -fi - -if test "$ac_sys_system" = "Linux-android"; then - # When these functions are used in an unprivileged process, they crash rather - # than returning an error. - blocked_funcs="chroot initgroups setegid seteuid setgid sethostname - setregid setresgid setresuid setreuid setuid" - - # These functions are unimplemented and always return an error - # (https://android.googlesource.com/platform/system/sepolicy/+/refs/heads/android13-release/public/domain.te#1044) - blocked_funcs="$blocked_funcs sem_open sem_unlink" - - # Before API level 23, when fchmodat is called with the unimplemented flag - # AT_SYMLINK_NOFOLLOW, instead of returning ENOTSUP as it should, it actually - # follows the symlink. - if test "$ANDROID_API_LEVEL" -lt 23; then - blocked_funcs="$blocked_funcs fchmodat" - fi - - for name in $blocked_funcs; do - as_func_var=`printf "%s\n" "ac_cv_func_$name" | sed "$as_sed_sh"` - - eval "$as_func_var=no" - - done -fi - -# checks for library functions -ac_fn_c_check_func "$LINENO" "accept4" "ac_cv_func_accept4" -if test "x$ac_cv_func_accept4" = xyes -then : - printf "%s\n" "#define HAVE_ACCEPT4 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "alarm" "ac_cv_func_alarm" -if test "x$ac_cv_func_alarm" = xyes -then : - printf "%s\n" "#define HAVE_ALARM 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" -if test "x$ac_cv_func_bind_textdomain_codeset" = xyes -then : - printf "%s\n" "#define HAVE_BIND_TEXTDOMAIN_CODESET 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "chmod" "ac_cv_func_chmod" -if test "x$ac_cv_func_chmod" = xyes -then : - printf "%s\n" "#define HAVE_CHMOD 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "chown" "ac_cv_func_chown" -if test "x$ac_cv_func_chown" = xyes -then : - printf "%s\n" "#define HAVE_CHOWN 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "clearenv" "ac_cv_func_clearenv" -if test "x$ac_cv_func_clearenv" = xyes -then : - printf "%s\n" "#define HAVE_CLEARENV 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "clock" "ac_cv_func_clock" -if test "x$ac_cv_func_clock" = xyes -then : - printf "%s\n" "#define HAVE_CLOCK 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "closefrom" "ac_cv_func_closefrom" -if test "x$ac_cv_func_closefrom" = xyes -then : - printf "%s\n" "#define HAVE_CLOSEFROM 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "close_range" "ac_cv_func_close_range" -if test "x$ac_cv_func_close_range" = xyes -then : - printf "%s\n" "#define HAVE_CLOSE_RANGE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "confstr" "ac_cv_func_confstr" -if test "x$ac_cv_func_confstr" = xyes -then : - printf "%s\n" "#define HAVE_CONFSTR 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "copy_file_range" "ac_cv_func_copy_file_range" -if test "x$ac_cv_func_copy_file_range" = xyes -then : - printf "%s\n" "#define HAVE_COPY_FILE_RANGE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "ctermid" "ac_cv_func_ctermid" -if test "x$ac_cv_func_ctermid" = xyes -then : - printf "%s\n" "#define HAVE_CTERMID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "dladdr" "ac_cv_func_dladdr" -if test "x$ac_cv_func_dladdr" = xyes -then : - printf "%s\n" "#define HAVE_DLADDR 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" -if test "x$ac_cv_func_dup" = xyes -then : - printf "%s\n" "#define HAVE_DUP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "dup3" "ac_cv_func_dup3" -if test "x$ac_cv_func_dup3" = xyes -then : - printf "%s\n" "#define HAVE_DUP3 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "execv" "ac_cv_func_execv" -if test "x$ac_cv_func_execv" = xyes -then : - printf "%s\n" "#define HAVE_EXECV 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero" -if test "x$ac_cv_func_explicit_bzero" = xyes -then : - printf "%s\n" "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "explicit_memset" "ac_cv_func_explicit_memset" -if test "x$ac_cv_func_explicit_memset" = xyes -then : - printf "%s\n" "#define HAVE_EXPLICIT_MEMSET 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "faccessat" "ac_cv_func_faccessat" -if test "x$ac_cv_func_faccessat" = xyes -then : - printf "%s\n" "#define HAVE_FACCESSAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fchmod" "ac_cv_func_fchmod" -if test "x$ac_cv_func_fchmod" = xyes -then : - printf "%s\n" "#define HAVE_FCHMOD 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fchmodat" "ac_cv_func_fchmodat" -if test "x$ac_cv_func_fchmodat" = xyes -then : - printf "%s\n" "#define HAVE_FCHMODAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fchown" "ac_cv_func_fchown" -if test "x$ac_cv_func_fchown" = xyes -then : - printf "%s\n" "#define HAVE_FCHOWN 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fchownat" "ac_cv_func_fchownat" -if test "x$ac_cv_func_fchownat" = xyes -then : - printf "%s\n" "#define HAVE_FCHOWNAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fdopendir" "ac_cv_func_fdopendir" -if test "x$ac_cv_func_fdopendir" = xyes -then : - printf "%s\n" "#define HAVE_FDOPENDIR 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fdwalk" "ac_cv_func_fdwalk" -if test "x$ac_cv_func_fdwalk" = xyes -then : - printf "%s\n" "#define HAVE_FDWALK 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fexecve" "ac_cv_func_fexecve" -if test "x$ac_cv_func_fexecve" = xyes -then : - printf "%s\n" "#define HAVE_FEXECVE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fork" "ac_cv_func_fork" -if test "x$ac_cv_func_fork" = xyes -then : - printf "%s\n" "#define HAVE_FORK 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fork1" "ac_cv_func_fork1" -if test "x$ac_cv_func_fork1" = xyes -then : - printf "%s\n" "#define HAVE_FORK1 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fpathconf" "ac_cv_func_fpathconf" -if test "x$ac_cv_func_fpathconf" = xyes -then : - printf "%s\n" "#define HAVE_FPATHCONF 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fstatat" "ac_cv_func_fstatat" -if test "x$ac_cv_func_fstatat" = xyes -then : - printf "%s\n" "#define HAVE_FSTATAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "ftime" "ac_cv_func_ftime" -if test "x$ac_cv_func_ftime" = xyes -then : - printf "%s\n" "#define HAVE_FTIME 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "ftruncate" "ac_cv_func_ftruncate" -if test "x$ac_cv_func_ftruncate" = xyes -then : - printf "%s\n" "#define HAVE_FTRUNCATE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "futimens" "ac_cv_func_futimens" -if test "x$ac_cv_func_futimens" = xyes -then : - printf "%s\n" "#define HAVE_FUTIMENS 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "futimes" "ac_cv_func_futimes" -if test "x$ac_cv_func_futimes" = xyes -then : - printf "%s\n" "#define HAVE_FUTIMES 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "futimesat" "ac_cv_func_futimesat" -if test "x$ac_cv_func_futimesat" = xyes -then : - printf "%s\n" "#define HAVE_FUTIMESAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "gai_strerror" "ac_cv_func_gai_strerror" -if test "x$ac_cv_func_gai_strerror" = xyes -then : - printf "%s\n" "#define HAVE_GAI_STRERROR 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getegid" "ac_cv_func_getegid" -if test "x$ac_cv_func_getegid" = xyes -then : - printf "%s\n" "#define HAVE_GETEGID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "geteuid" "ac_cv_func_geteuid" -if test "x$ac_cv_func_geteuid" = xyes -then : - printf "%s\n" "#define HAVE_GETEUID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getgid" "ac_cv_func_getgid" -if test "x$ac_cv_func_getgid" = xyes -then : - printf "%s\n" "#define HAVE_GETGID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getgrent" "ac_cv_func_getgrent" -if test "x$ac_cv_func_getgrent" = xyes -then : - printf "%s\n" "#define HAVE_GETGRENT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getgrgid" "ac_cv_func_getgrgid" -if test "x$ac_cv_func_getgrgid" = xyes -then : - printf "%s\n" "#define HAVE_GETGRGID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getgrgid_r" "ac_cv_func_getgrgid_r" -if test "x$ac_cv_func_getgrgid_r" = xyes -then : - printf "%s\n" "#define HAVE_GETGRGID_R 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getgrnam_r" "ac_cv_func_getgrnam_r" -if test "x$ac_cv_func_getgrnam_r" = xyes -then : - printf "%s\n" "#define HAVE_GETGRNAM_R 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getgrouplist" "ac_cv_func_getgrouplist" -if test "x$ac_cv_func_getgrouplist" = xyes -then : - printf "%s\n" "#define HAVE_GETGROUPLIST 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" -if test "x$ac_cv_func_gethostname" = xyes -then : - printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getitimer" "ac_cv_func_getitimer" -if test "x$ac_cv_func_getitimer" = xyes -then : - printf "%s\n" "#define HAVE_GETITIMER 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" -if test "x$ac_cv_func_getloadavg" = xyes -then : - printf "%s\n" "#define HAVE_GETLOADAVG 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getlogin" "ac_cv_func_getlogin" -if test "x$ac_cv_func_getlogin" = xyes -then : - printf "%s\n" "#define HAVE_GETLOGIN 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getlogin_r" "ac_cv_func_getlogin_r" -if test "x$ac_cv_func_getlogin_r" = xyes -then : - printf "%s\n" "#define HAVE_GETLOGIN_R 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getpeername" "ac_cv_func_getpeername" -if test "x$ac_cv_func_getpeername" = xyes -then : - printf "%s\n" "#define HAVE_GETPEERNAME 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getpgid" "ac_cv_func_getpgid" -if test "x$ac_cv_func_getpgid" = xyes -then : - printf "%s\n" "#define HAVE_GETPGID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getpid" "ac_cv_func_getpid" -if test "x$ac_cv_func_getpid" = xyes -then : - printf "%s\n" "#define HAVE_GETPID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getppid" "ac_cv_func_getppid" -if test "x$ac_cv_func_getppid" = xyes -then : - printf "%s\n" "#define HAVE_GETPPID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getpriority" "ac_cv_func_getpriority" -if test "x$ac_cv_func_getpriority" = xyes -then : - printf "%s\n" "#define HAVE_GETPRIORITY 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "_getpty" "ac_cv_func__getpty" -if test "x$ac_cv_func__getpty" = xyes -then : - printf "%s\n" "#define HAVE__GETPTY 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getpwent" "ac_cv_func_getpwent" -if test "x$ac_cv_func_getpwent" = xyes -then : - printf "%s\n" "#define HAVE_GETPWENT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getpwnam_r" "ac_cv_func_getpwnam_r" -if test "x$ac_cv_func_getpwnam_r" = xyes -then : - printf "%s\n" "#define HAVE_GETPWNAM_R 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getpwuid" "ac_cv_func_getpwuid" -if test "x$ac_cv_func_getpwuid" = xyes -then : - printf "%s\n" "#define HAVE_GETPWUID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getpwuid_r" "ac_cv_func_getpwuid_r" -if test "x$ac_cv_func_getpwuid_r" = xyes -then : - printf "%s\n" "#define HAVE_GETPWUID_R 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getresgid" "ac_cv_func_getresgid" -if test "x$ac_cv_func_getresgid" = xyes -then : - printf "%s\n" "#define HAVE_GETRESGID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getresuid" "ac_cv_func_getresuid" -if test "x$ac_cv_func_getresuid" = xyes -then : - printf "%s\n" "#define HAVE_GETRESUID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getrusage" "ac_cv_func_getrusage" -if test "x$ac_cv_func_getrusage" = xyes -then : - printf "%s\n" "#define HAVE_GETRUSAGE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getsid" "ac_cv_func_getsid" -if test "x$ac_cv_func_getsid" = xyes -then : - printf "%s\n" "#define HAVE_GETSID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getspent" "ac_cv_func_getspent" -if test "x$ac_cv_func_getspent" = xyes -then : - printf "%s\n" "#define HAVE_GETSPENT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getspnam" "ac_cv_func_getspnam" -if test "x$ac_cv_func_getspnam" = xyes -then : - printf "%s\n" "#define HAVE_GETSPNAM 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getuid" "ac_cv_func_getuid" -if test "x$ac_cv_func_getuid" = xyes -then : - printf "%s\n" "#define HAVE_GETUID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getwd" "ac_cv_func_getwd" -if test "x$ac_cv_func_getwd" = xyes -then : - printf "%s\n" "#define HAVE_GETWD 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "grantpt" "ac_cv_func_grantpt" -if test "x$ac_cv_func_grantpt" = xyes -then : - printf "%s\n" "#define HAVE_GRANTPT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "if_nameindex" "ac_cv_func_if_nameindex" -if test "x$ac_cv_func_if_nameindex" = xyes -then : - printf "%s\n" "#define HAVE_IF_NAMEINDEX 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "initgroups" "ac_cv_func_initgroups" -if test "x$ac_cv_func_initgroups" = xyes -then : - printf "%s\n" "#define HAVE_INITGROUPS 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "kill" "ac_cv_func_kill" -if test "x$ac_cv_func_kill" = xyes -then : - printf "%s\n" "#define HAVE_KILL 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "killpg" "ac_cv_func_killpg" -if test "x$ac_cv_func_killpg" = xyes -then : - printf "%s\n" "#define HAVE_KILLPG 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "lchown" "ac_cv_func_lchown" -if test "x$ac_cv_func_lchown" = xyes -then : - printf "%s\n" "#define HAVE_LCHOWN 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "linkat" "ac_cv_func_linkat" -if test "x$ac_cv_func_linkat" = xyes -then : - printf "%s\n" "#define HAVE_LINKAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "lockf" "ac_cv_func_lockf" -if test "x$ac_cv_func_lockf" = xyes -then : - printf "%s\n" "#define HAVE_LOCKF 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" -if test "x$ac_cv_func_lstat" = xyes -then : - printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "lutimes" "ac_cv_func_lutimes" -if test "x$ac_cv_func_lutimes" = xyes -then : - printf "%s\n" "#define HAVE_LUTIMES 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "madvise" "ac_cv_func_madvise" -if test "x$ac_cv_func_madvise" = xyes -then : - printf "%s\n" "#define HAVE_MADVISE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "mbrtowc" "ac_cv_func_mbrtowc" -if test "x$ac_cv_func_mbrtowc" = xyes -then : - printf "%s\n" "#define HAVE_MBRTOWC 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" -if test "x$ac_cv_func_memrchr" = xyes -then : - printf "%s\n" "#define HAVE_MEMRCHR 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "mkdirat" "ac_cv_func_mkdirat" -if test "x$ac_cv_func_mkdirat" = xyes -then : - printf "%s\n" "#define HAVE_MKDIRAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" -if test "x$ac_cv_func_mkfifo" = xyes -then : - printf "%s\n" "#define HAVE_MKFIFO 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "mkfifoat" "ac_cv_func_mkfifoat" -if test "x$ac_cv_func_mkfifoat" = xyes -then : - printf "%s\n" "#define HAVE_MKFIFOAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "mknod" "ac_cv_func_mknod" -if test "x$ac_cv_func_mknod" = xyes -then : - printf "%s\n" "#define HAVE_MKNOD 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "mknodat" "ac_cv_func_mknodat" -if test "x$ac_cv_func_mknodat" = xyes -then : - printf "%s\n" "#define HAVE_MKNODAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "mktime" "ac_cv_func_mktime" -if test "x$ac_cv_func_mktime" = xyes -then : - printf "%s\n" "#define HAVE_MKTIME 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" -if test "x$ac_cv_func_mmap" = xyes -then : - printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "mremap" "ac_cv_func_mremap" -if test "x$ac_cv_func_mremap" = xyes -then : - printf "%s\n" "#define HAVE_MREMAP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "nice" "ac_cv_func_nice" -if test "x$ac_cv_func_nice" = xyes -then : - printf "%s\n" "#define HAVE_NICE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "openat" "ac_cv_func_openat" -if test "x$ac_cv_func_openat" = xyes -then : - printf "%s\n" "#define HAVE_OPENAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "opendir" "ac_cv_func_opendir" -if test "x$ac_cv_func_opendir" = xyes -then : - printf "%s\n" "#define HAVE_OPENDIR 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pathconf" "ac_cv_func_pathconf" -if test "x$ac_cv_func_pathconf" = xyes -then : - printf "%s\n" "#define HAVE_PATHCONF 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pause" "ac_cv_func_pause" -if test "x$ac_cv_func_pause" = xyes -then : - printf "%s\n" "#define HAVE_PAUSE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" -if test "x$ac_cv_func_pipe" = xyes -then : - printf "%s\n" "#define HAVE_PIPE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pipe2" "ac_cv_func_pipe2" -if test "x$ac_cv_func_pipe2" = xyes -then : - printf "%s\n" "#define HAVE_PIPE2 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "plock" "ac_cv_func_plock" -if test "x$ac_cv_func_plock" = xyes -then : - printf "%s\n" "#define HAVE_PLOCK 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "poll" "ac_cv_func_poll" -if test "x$ac_cv_func_poll" = xyes -then : - printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "ppoll" "ac_cv_func_ppoll" -if test "x$ac_cv_func_ppoll" = xyes -then : - printf "%s\n" "#define HAVE_PPOLL 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "posix_fadvise" "ac_cv_func_posix_fadvise" -if test "x$ac_cv_func_posix_fadvise" = xyes -then : - printf "%s\n" "#define HAVE_POSIX_FADVISE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "posix_fallocate" "ac_cv_func_posix_fallocate" -if test "x$ac_cv_func_posix_fallocate" = xyes -then : - printf "%s\n" "#define HAVE_POSIX_FALLOCATE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "posix_openpt" "ac_cv_func_posix_openpt" -if test "x$ac_cv_func_posix_openpt" = xyes -then : - printf "%s\n" "#define HAVE_POSIX_OPENPT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" -if test "x$ac_cv_func_posix_spawn" = xyes -then : - printf "%s\n" "#define HAVE_POSIX_SPAWN 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "posix_spawnp" "ac_cv_func_posix_spawnp" -if test "x$ac_cv_func_posix_spawnp" = xyes -then : - printf "%s\n" "#define HAVE_POSIX_SPAWNP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "posix_spawn_file_actions_addclosefrom_np" "ac_cv_func_posix_spawn_file_actions_addclosefrom_np" -if test "x$ac_cv_func_posix_spawn_file_actions_addclosefrom_np" = xyes -then : - printf "%s\n" "#define HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSEFROM_NP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pread" "ac_cv_func_pread" -if test "x$ac_cv_func_pread" = xyes -then : - printf "%s\n" "#define HAVE_PREAD 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "preadv" "ac_cv_func_preadv" -if test "x$ac_cv_func_preadv" = xyes -then : - printf "%s\n" "#define HAVE_PREADV 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "preadv2" "ac_cv_func_preadv2" -if test "x$ac_cv_func_preadv2" = xyes -then : - printf "%s\n" "#define HAVE_PREADV2 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "process_vm_readv" "ac_cv_func_process_vm_readv" -if test "x$ac_cv_func_process_vm_readv" = xyes -then : - printf "%s\n" "#define HAVE_PROCESS_VM_READV 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pthread_cond_timedwait_relative_np" "ac_cv_func_pthread_cond_timedwait_relative_np" -if test "x$ac_cv_func_pthread_cond_timedwait_relative_np" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pthread_condattr_setclock" "ac_cv_func_pthread_condattr_setclock" -if test "x$ac_cv_func_pthread_condattr_setclock" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pthread_init" "ac_cv_func_pthread_init" -if test "x$ac_cv_func_pthread_init" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_INIT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pthread_kill" "ac_cv_func_pthread_kill" -if test "x$ac_cv_func_pthread_kill" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_KILL 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pthread_get_name_np" "ac_cv_func_pthread_get_name_np" -if test "x$ac_cv_func_pthread_get_name_np" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_GET_NAME_NP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pthread_getname_np" "ac_cv_func_pthread_getname_np" -if test "x$ac_cv_func_pthread_getname_np" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_GETNAME_NP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pthread_set_name_np" "ac_cv_func_pthread_set_name_np" -if test "x$ac_cv_func_pthread_set_name_np" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_SET_NAME_NP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pthread_setname_np" "ac_cv_func_pthread_setname_np" -if test "x$ac_cv_func_pthread_setname_np" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_SETNAME_NP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pthread_getattr_np" "ac_cv_func_pthread_getattr_np" -if test "x$ac_cv_func_pthread_getattr_np" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_GETATTR_NP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "ptsname" "ac_cv_func_ptsname" -if test "x$ac_cv_func_ptsname" = xyes -then : - printf "%s\n" "#define HAVE_PTSNAME 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "ptsname_r" "ac_cv_func_ptsname_r" -if test "x$ac_cv_func_ptsname_r" = xyes -then : - printf "%s\n" "#define HAVE_PTSNAME_R 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pwrite" "ac_cv_func_pwrite" -if test "x$ac_cv_func_pwrite" = xyes -then : - printf "%s\n" "#define HAVE_PWRITE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pwritev" "ac_cv_func_pwritev" -if test "x$ac_cv_func_pwritev" = xyes -then : - printf "%s\n" "#define HAVE_PWRITEV 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "pwritev2" "ac_cv_func_pwritev2" -if test "x$ac_cv_func_pwritev2" = xyes -then : - printf "%s\n" "#define HAVE_PWRITEV2 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" -if test "x$ac_cv_func_readlink" = xyes -then : - printf "%s\n" "#define HAVE_READLINK 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "readlinkat" "ac_cv_func_readlinkat" -if test "x$ac_cv_func_readlinkat" = xyes -then : - printf "%s\n" "#define HAVE_READLINKAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "readv" "ac_cv_func_readv" -if test "x$ac_cv_func_readv" = xyes -then : - printf "%s\n" "#define HAVE_READV 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" -if test "x$ac_cv_func_realpath" = xyes -then : - printf "%s\n" "#define HAVE_REALPATH 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "renameat" "ac_cv_func_renameat" -if test "x$ac_cv_func_renameat" = xyes -then : - printf "%s\n" "#define HAVE_RENAMEAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "rtpSpawn" "ac_cv_func_rtpSpawn" -if test "x$ac_cv_func_rtpSpawn" = xyes -then : - printf "%s\n" "#define HAVE_RTPSPAWN 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sched_get_priority_max" "ac_cv_func_sched_get_priority_max" -if test "x$ac_cv_func_sched_get_priority_max" = xyes -then : - printf "%s\n" "#define HAVE_SCHED_GET_PRIORITY_MAX 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sched_rr_get_interval" "ac_cv_func_sched_rr_get_interval" -if test "x$ac_cv_func_sched_rr_get_interval" = xyes -then : - printf "%s\n" "#define HAVE_SCHED_RR_GET_INTERVAL 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sched_setaffinity" "ac_cv_func_sched_setaffinity" -if test "x$ac_cv_func_sched_setaffinity" = xyes -then : - printf "%s\n" "#define HAVE_SCHED_SETAFFINITY 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sched_setparam" "ac_cv_func_sched_setparam" -if test "x$ac_cv_func_sched_setparam" = xyes -then : - printf "%s\n" "#define HAVE_SCHED_SETPARAM 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sched_setscheduler" "ac_cv_func_sched_setscheduler" -if test "x$ac_cv_func_sched_setscheduler" = xyes -then : - printf "%s\n" "#define HAVE_SCHED_SETSCHEDULER 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sem_clockwait" "ac_cv_func_sem_clockwait" -if test "x$ac_cv_func_sem_clockwait" = xyes -then : - printf "%s\n" "#define HAVE_SEM_CLOCKWAIT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sem_getvalue" "ac_cv_func_sem_getvalue" -if test "x$ac_cv_func_sem_getvalue" = xyes -then : - printf "%s\n" "#define HAVE_SEM_GETVALUE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sem_open" "ac_cv_func_sem_open" -if test "x$ac_cv_func_sem_open" = xyes -then : - printf "%s\n" "#define HAVE_SEM_OPEN 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sem_timedwait" "ac_cv_func_sem_timedwait" -if test "x$ac_cv_func_sem_timedwait" = xyes -then : - printf "%s\n" "#define HAVE_SEM_TIMEDWAIT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sem_unlink" "ac_cv_func_sem_unlink" -if test "x$ac_cv_func_sem_unlink" = xyes -then : - printf "%s\n" "#define HAVE_SEM_UNLINK 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sendfile" "ac_cv_func_sendfile" -if test "x$ac_cv_func_sendfile" = xyes -then : - printf "%s\n" "#define HAVE_SENDFILE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" -if test "x$ac_cv_func_setegid" = xyes -then : - printf "%s\n" "#define HAVE_SETEGID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" -if test "x$ac_cv_func_seteuid" = xyes -then : - printf "%s\n" "#define HAVE_SETEUID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setgid" "ac_cv_func_setgid" -if test "x$ac_cv_func_setgid" = xyes -then : - printf "%s\n" "#define HAVE_SETGID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sethostname" "ac_cv_func_sethostname" -if test "x$ac_cv_func_sethostname" = xyes -then : - printf "%s\n" "#define HAVE_SETHOSTNAME 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setitimer" "ac_cv_func_setitimer" -if test "x$ac_cv_func_setitimer" = xyes -then : - printf "%s\n" "#define HAVE_SETITIMER 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" -if test "x$ac_cv_func_setlocale" = xyes -then : - printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setpgid" "ac_cv_func_setpgid" -if test "x$ac_cv_func_setpgid" = xyes -then : - printf "%s\n" "#define HAVE_SETPGID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setpgrp" "ac_cv_func_setpgrp" -if test "x$ac_cv_func_setpgrp" = xyes -then : - printf "%s\n" "#define HAVE_SETPGRP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setpriority" "ac_cv_func_setpriority" -if test "x$ac_cv_func_setpriority" = xyes -then : - printf "%s\n" "#define HAVE_SETPRIORITY 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" -if test "x$ac_cv_func_setregid" = xyes -then : - printf "%s\n" "#define HAVE_SETREGID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setresgid" "ac_cv_func_setresgid" -if test "x$ac_cv_func_setresgid" = xyes -then : - printf "%s\n" "#define HAVE_SETRESGID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setresuid" "ac_cv_func_setresuid" -if test "x$ac_cv_func_setresuid" = xyes -then : - printf "%s\n" "#define HAVE_SETRESUID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" -if test "x$ac_cv_func_setreuid" = xyes -then : - printf "%s\n" "#define HAVE_SETREUID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setsid" "ac_cv_func_setsid" -if test "x$ac_cv_func_setsid" = xyes -then : - printf "%s\n" "#define HAVE_SETSID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setuid" "ac_cv_func_setuid" -if test "x$ac_cv_func_setuid" = xyes -then : - printf "%s\n" "#define HAVE_SETUID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" -if test "x$ac_cv_func_setvbuf" = xyes -then : - printf "%s\n" "#define HAVE_SETVBUF 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "shutdown" "ac_cv_func_shutdown" -if test "x$ac_cv_func_shutdown" = xyes -then : - printf "%s\n" "#define HAVE_SHUTDOWN 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" -if test "x$ac_cv_func_sigaction" = xyes -then : - printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sigaltstack" "ac_cv_func_sigaltstack" -if test "x$ac_cv_func_sigaltstack" = xyes -then : - printf "%s\n" "#define HAVE_SIGALTSTACK 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sigfillset" "ac_cv_func_sigfillset" -if test "x$ac_cv_func_sigfillset" = xyes -then : - printf "%s\n" "#define HAVE_SIGFILLSET 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "siginterrupt" "ac_cv_func_siginterrupt" -if test "x$ac_cv_func_siginterrupt" = xyes -then : - printf "%s\n" "#define HAVE_SIGINTERRUPT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sigpending" "ac_cv_func_sigpending" -if test "x$ac_cv_func_sigpending" = xyes -then : - printf "%s\n" "#define HAVE_SIGPENDING 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sigrelse" "ac_cv_func_sigrelse" -if test "x$ac_cv_func_sigrelse" = xyes -then : - printf "%s\n" "#define HAVE_SIGRELSE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sigtimedwait" "ac_cv_func_sigtimedwait" -if test "x$ac_cv_func_sigtimedwait" = xyes -then : - printf "%s\n" "#define HAVE_SIGTIMEDWAIT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sigwait" "ac_cv_func_sigwait" -if test "x$ac_cv_func_sigwait" = xyes -then : - printf "%s\n" "#define HAVE_SIGWAIT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sigwaitinfo" "ac_cv_func_sigwaitinfo" -if test "x$ac_cv_func_sigwaitinfo" = xyes -then : - printf "%s\n" "#define HAVE_SIGWAITINFO 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" -if test "x$ac_cv_func_snprintf" = xyes -then : - printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "splice" "ac_cv_func_splice" -if test "x$ac_cv_func_splice" = xyes -then : - printf "%s\n" "#define HAVE_SPLICE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" -if test "x$ac_cv_func_strftime" = xyes -then : - printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy" -if test "x$ac_cv_func_strlcpy" = xyes -then : - printf "%s\n" "#define HAVE_STRLCPY 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" -if test "x$ac_cv_func_strsignal" = xyes -then : - printf "%s\n" "#define HAVE_STRSIGNAL 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "symlinkat" "ac_cv_func_symlinkat" -if test "x$ac_cv_func_symlinkat" = xyes -then : - printf "%s\n" "#define HAVE_SYMLINKAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sync" "ac_cv_func_sync" -if test "x$ac_cv_func_sync" = xyes -then : - printf "%s\n" "#define HAVE_SYNC 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "sysconf" "ac_cv_func_sysconf" -if test "x$ac_cv_func_sysconf" = xyes -then : - printf "%s\n" "#define HAVE_SYSCONF 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "tcgetpgrp" "ac_cv_func_tcgetpgrp" -if test "x$ac_cv_func_tcgetpgrp" = xyes -then : - printf "%s\n" "#define HAVE_TCGETPGRP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "tcsetpgrp" "ac_cv_func_tcsetpgrp" -if test "x$ac_cv_func_tcsetpgrp" = xyes -then : - printf "%s\n" "#define HAVE_TCSETPGRP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "tempnam" "ac_cv_func_tempnam" -if test "x$ac_cv_func_tempnam" = xyes -then : - printf "%s\n" "#define HAVE_TEMPNAM 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "timegm" "ac_cv_func_timegm" -if test "x$ac_cv_func_timegm" = xyes -then : - printf "%s\n" "#define HAVE_TIMEGM 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "times" "ac_cv_func_times" -if test "x$ac_cv_func_times" = xyes -then : - printf "%s\n" "#define HAVE_TIMES 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "tmpfile" "ac_cv_func_tmpfile" -if test "x$ac_cv_func_tmpfile" = xyes -then : - printf "%s\n" "#define HAVE_TMPFILE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "tmpnam" "ac_cv_func_tmpnam" -if test "x$ac_cv_func_tmpnam" = xyes -then : - printf "%s\n" "#define HAVE_TMPNAM 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "tmpnam_r" "ac_cv_func_tmpnam_r" -if test "x$ac_cv_func_tmpnam_r" = xyes -then : - printf "%s\n" "#define HAVE_TMPNAM_R 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "truncate" "ac_cv_func_truncate" -if test "x$ac_cv_func_truncate" = xyes -then : - printf "%s\n" "#define HAVE_TRUNCATE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "ttyname_r" "ac_cv_func_ttyname_r" -if test "x$ac_cv_func_ttyname_r" = xyes -then : - printf "%s\n" "#define HAVE_TTYNAME_R 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" -if test "x$ac_cv_func_umask" = xyes -then : - printf "%s\n" "#define HAVE_UMASK 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "uname" "ac_cv_func_uname" -if test "x$ac_cv_func_uname" = xyes -then : - printf "%s\n" "#define HAVE_UNAME 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "unlinkat" "ac_cv_func_unlinkat" -if test "x$ac_cv_func_unlinkat" = xyes -then : - printf "%s\n" "#define HAVE_UNLINKAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "unlockpt" "ac_cv_func_unlockpt" -if test "x$ac_cv_func_unlockpt" = xyes -then : - printf "%s\n" "#define HAVE_UNLOCKPT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "utimensat" "ac_cv_func_utimensat" -if test "x$ac_cv_func_utimensat" = xyes -then : - printf "%s\n" "#define HAVE_UTIMENSAT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes" -if test "x$ac_cv_func_utimes" = xyes -then : - printf "%s\n" "#define HAVE_UTIMES 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "vfork" "ac_cv_func_vfork" -if test "x$ac_cv_func_vfork" = xyes -then : - printf "%s\n" "#define HAVE_VFORK 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "wait" "ac_cv_func_wait" -if test "x$ac_cv_func_wait" = xyes -then : - printf "%s\n" "#define HAVE_WAIT 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" -if test "x$ac_cv_func_wait3" = xyes -then : - printf "%s\n" "#define HAVE_WAIT3 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "wait4" "ac_cv_func_wait4" -if test "x$ac_cv_func_wait4" = xyes -then : - printf "%s\n" "#define HAVE_WAIT4 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "waitid" "ac_cv_func_waitid" -if test "x$ac_cv_func_waitid" = xyes -then : - printf "%s\n" "#define HAVE_WAITID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" -if test "x$ac_cv_func_waitpid" = xyes -then : - printf "%s\n" "#define HAVE_WAITPID 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "wcscoll" "ac_cv_func_wcscoll" -if test "x$ac_cv_func_wcscoll" = xyes -then : - printf "%s\n" "#define HAVE_WCSCOLL 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "wcsftime" "ac_cv_func_wcsftime" -if test "x$ac_cv_func_wcsftime" = xyes -then : - printf "%s\n" "#define HAVE_WCSFTIME 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "wcsxfrm" "ac_cv_func_wcsxfrm" -if test "x$ac_cv_func_wcsxfrm" = xyes -then : - printf "%s\n" "#define HAVE_WCSXFRM 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "wmemcmp" "ac_cv_func_wmemcmp" -if test "x$ac_cv_func_wmemcmp" = xyes -then : - printf "%s\n" "#define HAVE_WMEMCMP 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "writev" "ac_cv_func_writev" -if test "x$ac_cv_func_writev" = xyes -then : - printf "%s\n" "#define HAVE_WRITEV 1" >>confdefs.h - -fi - - -# os.statx uses Linux's statx function. AIX also has a function named statx, -# but it's unrelated. Check only on Linux (including Android). -case $ac_sys_system in #( - Linux*) : - ac_fn_c_check_func "$LINENO" "statx" "ac_cv_func_statx" -if test "x$ac_cv_func_statx" = xyes -then : - printf "%s\n" "#define HAVE_STATX 1" >>confdefs.h - -fi - - ;; #( - *) : - ;; -esac - -# Force lchmod off for Linux. Linux disallows changing the mode of symbolic -# links. Some libc implementations have a stub lchmod implementation that always -# returns an error. -if test "$MACHDEP" != linux; then - ac_fn_c_check_func "$LINENO" "lchmod" "ac_cv_func_lchmod" -if test "x$ac_cv_func_lchmod" = xyes -then : - printf "%s\n" "#define HAVE_LCHMOD 1" >>confdefs.h - -fi - -fi - -# iOS defines some system methods that can be linked (so they are -# found by configure), but either raise a compilation error (because the -# header definition prevents usage - autoconf doesn't use the headers), or -# raise an error if used at runtime. Force these symbols off. -if test "$ac_sys_system" != "iOS" ; then - ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy" -if test "x$ac_cv_func_getentropy" = xyes -then : - printf "%s\n" "#define HAVE_GETENTROPY 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" -if test "x$ac_cv_func_getgroups" = xyes -then : - printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "system" "ac_cv_func_system" -if test "x$ac_cv_func_system" = xyes -then : - printf "%s\n" "#define HAVE_SYSTEM 1" >>confdefs.h - -fi - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 -printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } -if test ${ac_cv_c_undeclared_builtin_options+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_save_CFLAGS=$CFLAGS - ac_cv_c_undeclared_builtin_options='cannot detect' - for ac_arg in '' -fno-builtin; do - CFLAGS="$ac_save_CFLAGS $ac_arg" - # This test program should *not* compile successfully. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -(void) strchr; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else case e in #( - e) # This test program should compile successfully. - # No library function is consistently available on - # freestanding implementations, so test against a dummy - # declaration. Include always-available headers on the - # off chance that they somehow elicit warnings. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -extern void ac_decl (int, char *); - -int -main (void) -{ -(void) ac_decl (0, (char *) 0); - (void) ac_decl; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - if test x"$ac_arg" = x -then : - ac_cv_c_undeclared_builtin_options='none needed' -else case e in #( - e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; -esac -fi - break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - done - CFLAGS=$ac_save_CFLAGS - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 -printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } - case $ac_cv_c_undeclared_builtin_options in #( - 'cannot detect') : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "cannot make $CC report undeclared builtins -See 'config.log' for more details" "$LINENO" 5; } ;; #( - 'none needed') : - ac_c_undeclared_builtin_options='' ;; #( - *) : - ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; -esac - -ac_fn_check_decl "$LINENO" "dirfd" "ac_cv_have_decl_dirfd" "#include - #include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_dirfd" = xyes -then : - -printf "%s\n" "#define HAVE_DIRFD 1" >>confdefs.h - -fi - -# For some functions, having a definition is not sufficient, since -# we want to take their address. - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for chroot" >&5 -printf %s "checking for chroot... " >&6; } -if test ${ac_cv_func_chroot+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=chroot - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_chroot=yes -else case e in #( - e) ac_cv_func_chroot=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chroot" >&5 -printf "%s\n" "$ac_cv_func_chroot" >&6; } - if test "x$ac_cv_func_chroot" = xyes -then : - -printf "%s\n" "#define HAVE_CHROOT 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for link" >&5 -printf %s "checking for link... " >&6; } -if test ${ac_cv_func_link+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=link - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_link=yes -else case e in #( - e) ac_cv_func_link=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_link" >&5 -printf "%s\n" "$ac_cv_func_link" >&6; } - if test "x$ac_cv_func_link" = xyes -then : - -printf "%s\n" "#define HAVE_LINK 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for symlink" >&5 -printf %s "checking for symlink... " >&6; } -if test ${ac_cv_func_symlink+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=symlink - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_symlink=yes -else case e in #( - e) ac_cv_func_symlink=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_symlink" >&5 -printf "%s\n" "$ac_cv_func_symlink" >&6; } - if test "x$ac_cv_func_symlink" = xyes -then : - -printf "%s\n" "#define HAVE_SYMLINK 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fchdir" >&5 -printf %s "checking for fchdir... " >&6; } -if test ${ac_cv_func_fchdir+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=fchdir - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_fchdir=yes -else case e in #( - e) ac_cv_func_fchdir=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fchdir" >&5 -printf "%s\n" "$ac_cv_func_fchdir" >&6; } - if test "x$ac_cv_func_fchdir" = xyes -then : - -printf "%s\n" "#define HAVE_FCHDIR 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fsync" >&5 -printf %s "checking for fsync... " >&6; } -if test ${ac_cv_func_fsync+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=fsync - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_fsync=yes -else case e in #( - e) ac_cv_func_fsync=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fsync" >&5 -printf "%s\n" "$ac_cv_func_fsync" >&6; } - if test "x$ac_cv_func_fsync" = xyes -then : - -printf "%s\n" "#define HAVE_FSYNC 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fdatasync" >&5 -printf %s "checking for fdatasync... " >&6; } -if test ${ac_cv_func_fdatasync+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=fdatasync - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_fdatasync=yes -else case e in #( - e) ac_cv_func_fdatasync=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fdatasync" >&5 -printf "%s\n" "$ac_cv_func_fdatasync" >&6; } - if test "x$ac_cv_func_fdatasync" = xyes -then : - -printf "%s\n" "#define HAVE_FDATASYNC 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for epoll_create" >&5 -printf %s "checking for epoll_create... " >&6; } -if test ${ac_cv_func_epoll_create+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=epoll_create - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_epoll_create=yes -else case e in #( - e) ac_cv_func_epoll_create=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_epoll_create" >&5 -printf "%s\n" "$ac_cv_func_epoll_create" >&6; } - if test "x$ac_cv_func_epoll_create" = xyes -then : - -printf "%s\n" "#define HAVE_EPOLL 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for epoll_create1" >&5 -printf %s "checking for epoll_create1... " >&6; } -if test ${ac_cv_func_epoll_create1+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=epoll_create1 - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_epoll_create1=yes -else case e in #( - e) ac_cv_func_epoll_create1=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_epoll_create1" >&5 -printf "%s\n" "$ac_cv_func_epoll_create1" >&6; } - if test "x$ac_cv_func_epoll_create1" = xyes -then : - -printf "%s\n" "#define HAVE_EPOLL_CREATE1 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kqueue" >&5 -printf %s "checking for kqueue... " >&6; } -if test ${ac_cv_func_kqueue+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -int -main (void) -{ -void *x=kqueue - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_kqueue=yes -else case e in #( - e) ac_cv_func_kqueue=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_kqueue" >&5 -printf "%s\n" "$ac_cv_func_kqueue" >&6; } - if test "x$ac_cv_func_kqueue" = xyes -then : - -printf "%s\n" "#define HAVE_KQUEUE 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for prlimit" >&5 -printf %s "checking for prlimit... " >&6; } -if test ${ac_cv_func_prlimit+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -int -main (void) -{ -void *x=prlimit - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_prlimit=yes -else case e in #( - e) ac_cv_func_prlimit=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_prlimit" >&5 -printf "%s\n" "$ac_cv_func_prlimit" >&6; } - if test "x$ac_cv_func_prlimit" = xyes -then : - -printf "%s\n" "#define HAVE_PRLIMIT 1" >>confdefs.h - -fi - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _dyld_shared_cache_contains_path" >&5 -printf %s "checking for _dyld_shared_cache_contains_path... " >&6; } -if test ${ac_cv_func__dyld_shared_cache_contains_path+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=_dyld_shared_cache_contains_path - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func__dyld_shared_cache_contains_path=yes -else case e in #( - e) ac_cv_func__dyld_shared_cache_contains_path=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func__dyld_shared_cache_contains_path" >&5 -printf "%s\n" "$ac_cv_func__dyld_shared_cache_contains_path" >&6; } - if test "x$ac_cv_func__dyld_shared_cache_contains_path" = xyes -then : - -printf "%s\n" "#define HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH 1" >>confdefs.h - -fi - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for memfd_create" >&5 -printf %s "checking for memfd_create... " >&6; } -if test ${ac_cv_func_memfd_create+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef HAVE_SYS_MMAN_H -#include -#endif -#ifdef HAVE_SYS_MEMFD_H -#include -#endif - -int -main (void) -{ -void *x=memfd_create - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_memfd_create=yes -else case e in #( - e) ac_cv_func_memfd_create=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memfd_create" >&5 -printf "%s\n" "$ac_cv_func_memfd_create" >&6; } - if test "x$ac_cv_func_memfd_create" = xyes -then : - -printf "%s\n" "#define HAVE_MEMFD_CREATE 1" >>confdefs.h - -fi - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for eventfd" >&5 -printf %s "checking for eventfd... " >&6; } -if test ${ac_cv_func_eventfd+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef HAVE_SYS_EVENTFD_H -#include -#endif - -int -main (void) -{ -void *x=eventfd - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_eventfd=yes -else case e in #( - e) ac_cv_func_eventfd=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_eventfd" >&5 -printf "%s\n" "$ac_cv_func_eventfd" >&6; } - if test "x$ac_cv_func_eventfd" = xyes -then : - -printf "%s\n" "#define HAVE_EVENTFD 1" >>confdefs.h - -fi - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for timerfd_create" >&5 -printf %s "checking for timerfd_create... " >&6; } -if test ${ac_cv_func_timerfd_create+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef HAVE_SYS_TIMERFD_H -#include -#endif - -int -main (void) -{ -void *x=timerfd_create - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_timerfd_create=yes -else case e in #( - e) ac_cv_func_timerfd_create=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_timerfd_create" >&5 -printf "%s\n" "$ac_cv_func_timerfd_create" >&6; } - if test "x$ac_cv_func_timerfd_create" = xyes -then : - -printf "%s\n" "#define HAVE_TIMERFD_CREATE 1" >>confdefs.h - -fi - - - - -# On some systems (eg. FreeBSD 5), we would find a definition of the -# functions ctermid_r, setgroups in the library, but no prototype -# (e.g. because we use _XOPEN_SOURCE). See whether we can take their -# address to avoid compiler warnings and potential miscompilations -# because of the missing prototypes. - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ctermid_r" >&5 -printf %s "checking for ctermid_r... " >&6; } -if test ${ac_cv_func_ctermid_r+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=ctermid_r - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_ctermid_r=yes -else case e in #( - e) ac_cv_func_ctermid_r=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ctermid_r" >&5 -printf "%s\n" "$ac_cv_func_ctermid_r" >&6; } - if test "x$ac_cv_func_ctermid_r" = xyes -then : - -printf "%s\n" "#define HAVE_CTERMID_R 1" >>confdefs.h - -fi - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flock declaration" >&5 -printf %s "checking for flock declaration... " >&6; } -if test ${ac_cv_flock_decl+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void* p = flock - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_flock_decl=yes -else case e in #( - e) ac_cv_flock_decl=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_flock_decl" >&5 -printf "%s\n" "$ac_cv_flock_decl" >&6; } -if test "x$ac_cv_flock_decl" = xyes -then : - - for ac_func in flock -do : - ac_fn_c_check_func "$LINENO" "flock" "ac_cv_func_flock" -if test "x$ac_cv_func_flock" = xyes -then : - printf "%s\n" "#define HAVE_FLOCK 1" >>confdefs.h - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flock in -lbsd" >&5 -printf %s "checking for flock in -lbsd... " >&6; } -if test ${ac_cv_lib_bsd_flock+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char flock (void); -int -main (void) -{ -return flock (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_bsd_flock=yes -else case e in #( - e) ac_cv_lib_bsd_flock=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_flock" >&5 -printf "%s\n" "$ac_cv_lib_bsd_flock" >&6; } -if test "x$ac_cv_lib_bsd_flock" = xyes -then : - FCNTL_LIBS="-lbsd" -fi - ;; -esac -fi - -done -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpagesize" >&5 -printf %s "checking for getpagesize... " >&6; } -if test ${ac_cv_func_getpagesize+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=getpagesize - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_getpagesize=yes -else case e in #( - e) ac_cv_func_getpagesize=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpagesize" >&5 -printf "%s\n" "$ac_cv_func_getpagesize" >&6; } - if test "x$ac_cv_func_getpagesize" = xyes -then : - -printf "%s\n" "#define HAVE_GETPAGESIZE 1" >>confdefs.h - -fi - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken unsetenv" >&5 -printf %s "checking for broken unsetenv... " >&6; } -if test ${ac_cv_broken_unsetenv+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -int res = unsetenv("DUMMY") - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_broken_unsetenv=no -else case e in #( - e) ac_cv_broken_unsetenv=yes - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_unsetenv" >&5 -printf "%s\n" "$ac_cv_broken_unsetenv" >&6; } -if test "x$ac_cv_broken_unsetenv" = xyes -then : - - -printf "%s\n" "#define HAVE_BROKEN_UNSETENV 1" >>confdefs.h - - -fi - -for ac_prog in true -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_TRUE+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$TRUE"; then - ac_cv_prog_TRUE="$TRUE" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_TRUE="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -TRUE=$ac_cv_prog_TRUE -if test -n "$TRUE"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TRUE" >&5 -printf "%s\n" "$TRUE" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$TRUE" && break -done -test -n "$TRUE" || TRUE="/bin/true" - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_aton in -lc" >&5 -printf %s "checking for inet_aton in -lc... " >&6; } -if test ${ac_cv_lib_c_inet_aton+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lc $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char inet_aton (void); -int -main (void) -{ -return inet_aton (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_c_inet_aton=yes -else case e in #( - e) ac_cv_lib_c_inet_aton=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_inet_aton" >&5 -printf "%s\n" "$ac_cv_lib_c_inet_aton" >&6; } -if test "x$ac_cv_lib_c_inet_aton" = xyes -then : - $ac_cv_prog_TRUE -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_aton in -lresolv" >&5 -printf %s "checking for inet_aton in -lresolv... " >&6; } -if test ${ac_cv_lib_resolv_inet_aton+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lresolv $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char inet_aton (void); -int -main (void) -{ -return inet_aton (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_resolv_inet_aton=yes -else case e in #( - e) ac_cv_lib_resolv_inet_aton=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_inet_aton" >&5 -printf "%s\n" "$ac_cv_lib_resolv_inet_aton" >&6; } -if test "x$ac_cv_lib_resolv_inet_aton" = xyes -then : - SOCKET_LIBS="-lresolv" -fi - - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hstrerror in -lc" >&5 -printf %s "checking for hstrerror in -lc... " >&6; } -if test ${ac_cv_lib_c_hstrerror+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lc $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char hstrerror (void); -int -main (void) -{ -return hstrerror (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_c_hstrerror=yes -else case e in #( - e) ac_cv_lib_c_hstrerror=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_hstrerror" >&5 -printf "%s\n" "$ac_cv_lib_c_hstrerror" >&6; } -if test "x$ac_cv_lib_c_hstrerror" = xyes -then : - $ac_cv_prog_TRUE -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hstrerror in -lresolv" >&5 -printf %s "checking for hstrerror in -lresolv... " >&6; } -if test ${ac_cv_lib_resolv_hstrerror+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lresolv $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char hstrerror (void); -int -main (void) -{ -return hstrerror (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_resolv_hstrerror=yes -else case e in #( - e) ac_cv_lib_resolv_hstrerror=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_hstrerror" >&5 -printf "%s\n" "$ac_cv_lib_resolv_hstrerror" >&6; } -if test "x$ac_cv_lib_resolv_hstrerror" = xyes -then : - SOCKET_LIBS="-lresolv" -fi - - ;; -esac -fi - - -# On Tru64, chflags seems to be present, but calling it will -# exit Python -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for chflags" >&5 -printf %s "checking for chflags... " >&6; } -if test ${ac_cv_have_chflags+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "$cross_compiling" = yes -then : - ac_cv_have_chflags=cross -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -int main(int argc, char *argv[]) -{ - if(chflags(argv[0], 0) != 0) - return 1; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_have_chflags=yes -else case e in #( - e) ac_cv_have_chflags=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_chflags" >&5 -printf "%s\n" "$ac_cv_have_chflags" >&6; } -if test "$ac_cv_have_chflags" = cross ; then - ac_fn_c_check_func "$LINENO" "chflags" "ac_cv_func_chflags" -if test "x$ac_cv_func_chflags" = xyes -then : - ac_cv_have_chflags="yes" -else case e in #( - e) ac_cv_have_chflags="no" ;; -esac -fi - -fi -if test "$ac_cv_have_chflags" = yes ; then - -printf "%s\n" "#define HAVE_CHFLAGS 1" >>confdefs.h - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lchflags" >&5 -printf %s "checking for lchflags... " >&6; } -if test ${ac_cv_have_lchflags+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "$cross_compiling" = yes -then : - ac_cv_have_lchflags=cross -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -int main(int argc, char *argv[]) -{ - if(lchflags(argv[0], 0) != 0) - return 1; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_have_lchflags=yes -else case e in #( - e) ac_cv_have_lchflags=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_lchflags" >&5 -printf "%s\n" "$ac_cv_have_lchflags" >&6; } -if test "$ac_cv_have_lchflags" = cross ; then - ac_fn_c_check_func "$LINENO" "lchflags" "ac_cv_func_lchflags" -if test "x$ac_cv_func_lchflags" = xyes -then : - ac_cv_have_lchflags="yes" -else case e in #( - e) ac_cv_have_lchflags="no" ;; -esac -fi - -fi -if test "$ac_cv_have_lchflags" = yes ; then - -printf "%s\n" "#define HAVE_LCHFLAGS 1" >>confdefs.h - -fi - - - - - - - if test "$ac_sys_system" = "Emscripten" -a -z "$ZLIB_CFLAGS" -a -z "$ZLIB_LIBS" -then : - - ZLIB_CFLAGS="-sUSE_ZLIB" - ZLIB_LIBS="-sUSE_ZLIB" - -fi - - - - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zlib >= 1.2.2.1" >&5 -printf %s "checking for zlib >= 1.2.2.1... " >&6; } - -if test -n "$ZLIB_CFLAGS"; then - pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.2.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.2.1") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib >= 1.2.2.1" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$ZLIB_LIBS"; then - pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.2.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.2.1") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib >= 1.2.2.1" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "zlib >= 1.2.2.1" 2>&1` - else - ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "zlib >= 1.2.2.1" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$ZLIB_PKG_ERRORS" >&5 - - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS" - LIBS="$LIBS $ZLIB_LIBS" - for ac_header in zlib.h -do : - ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" -if test "x$ac_cv_header_zlib_h" = xyes -then : - printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h - - py_check_lib_save_LIBS=$LIBS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5 -printf %s "checking for gzread in -lz... " >&6; } -if test ${ac_cv_lib_z_gzread+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lz $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char gzread (void); -int -main (void) -{ -return gzread (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_z_gzread=yes -else case e in #( - e) ac_cv_lib_z_gzread=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzread" >&5 -printf "%s\n" "$ac_cv_lib_z_gzread" >&6; } -if test "x$ac_cv_lib_z_gzread" = xyes -then : - have_zlib=yes -else case e in #( - e) have_zlib=no ;; -esac -fi - -LIBS=$py_check_lib_save_LIBS - - -else case e in #( - e) have_zlib=no ;; -esac -fi - -done - if test "x$have_zlib" = xyes -then : - - ZLIB_CFLAGS=${ZLIB_CFLAGS-""} - ZLIB_LIBS=${ZLIB_LIBS-"-lz"} - py_check_lib_save_LIBS=$LIBS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inflateCopy in -lz" >&5 -printf %s "checking for inflateCopy in -lz... " >&6; } -if test ${ac_cv_lib_z_inflateCopy+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lz $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char inflateCopy (void); -int -main (void) -{ -return inflateCopy (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_z_inflateCopy=yes -else case e in #( - e) ac_cv_lib_z_inflateCopy=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateCopy" >&5 -printf "%s\n" "$ac_cv_lib_z_inflateCopy" >&6; } -if test "x$ac_cv_lib_z_inflateCopy" = xyes -then : - printf "%s\n" "#define HAVE_ZLIB_COPY 1" >>confdefs.h - -fi - -LIBS=$py_check_lib_save_LIBS - - -fi - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS" - LIBS="$LIBS $ZLIB_LIBS" - for ac_header in zlib.h -do : - ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" -if test "x$ac_cv_header_zlib_h" = xyes -then : - printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h - - py_check_lib_save_LIBS=$LIBS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5 -printf %s "checking for gzread in -lz... " >&6; } -if test ${ac_cv_lib_z_gzread+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lz $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char gzread (void); -int -main (void) -{ -return gzread (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_z_gzread=yes -else case e in #( - e) ac_cv_lib_z_gzread=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzread" >&5 -printf "%s\n" "$ac_cv_lib_z_gzread" >&6; } -if test "x$ac_cv_lib_z_gzread" = xyes -then : - have_zlib=yes -else case e in #( - e) have_zlib=no ;; -esac -fi - -LIBS=$py_check_lib_save_LIBS - - -else case e in #( - e) have_zlib=no ;; -esac -fi - -done - if test "x$have_zlib" = xyes -then : - - ZLIB_CFLAGS=${ZLIB_CFLAGS-""} - ZLIB_LIBS=${ZLIB_LIBS-"-lz"} - py_check_lib_save_LIBS=$LIBS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inflateCopy in -lz" >&5 -printf %s "checking for inflateCopy in -lz... " >&6; } -if test ${ac_cv_lib_z_inflateCopy+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lz $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char inflateCopy (void); -int -main (void) -{ -return inflateCopy (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_z_inflateCopy=yes -else case e in #( - e) ac_cv_lib_z_inflateCopy=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateCopy" >&5 -printf "%s\n" "$ac_cv_lib_z_inflateCopy" >&6; } -if test "x$ac_cv_lib_z_inflateCopy" = xyes -then : - printf "%s\n" "#define HAVE_ZLIB_COPY 1" >>confdefs.h - -fi - -LIBS=$py_check_lib_save_LIBS - - -fi - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -else - ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS - ZLIB_LIBS=$pkg_cv_ZLIB_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - - have_zlib=yes - printf "%s\n" "#define HAVE_ZLIB_COPY 1" >>confdefs.h - - -fi - -if test "x$have_zlib" = xyes -then : - - BINASCII_CFLAGS="-DUSE_ZLIB_CRC32 $ZLIB_CFLAGS" - BINASCII_LIBS="$ZLIB_LIBS" - -fi - - - - - if test "$ac_sys_system" = "Emscripten" -a -z "$BZIP2_CFLAGS" -a -z "$BZIP2_LIBS" -then : - - BZIP2_CFLAGS="-sUSE_BZIP2" - BZIP2_LIBS="-sUSE_BZIP2" - -fi - - - - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bzip2" >&5 -printf %s "checking for bzip2... " >&6; } - -if test -n "$BZIP2_CFLAGS"; then - pkg_cv_BZIP2_CFLAGS="$BZIP2_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bzip2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "bzip2") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_BZIP2_CFLAGS=`$PKG_CONFIG --cflags "bzip2" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$BZIP2_LIBS"; then - pkg_cv_BZIP2_LIBS="$BZIP2_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bzip2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "bzip2") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_BZIP2_LIBS=`$PKG_CONFIG --libs "bzip2" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - BZIP2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "bzip2" 2>&1` - else - BZIP2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "bzip2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$BZIP2_PKG_ERRORS" >&5 - - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $BZIP2_CFLAGS" - LIBS="$LIBS $BZIP2_LIBS" - for ac_header in bzlib.h -do : - ac_fn_c_check_header_compile "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default" -if test "x$ac_cv_header_bzlib_h" = xyes -then : - printf "%s\n" "#define HAVE_BZLIB_H 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzCompress in -lbz2" >&5 -printf %s "checking for BZ2_bzCompress in -lbz2... " >&6; } -if test ${ac_cv_lib_bz2_BZ2_bzCompress+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lbz2 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char BZ2_bzCompress (void); -int -main (void) -{ -return BZ2_bzCompress (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_bz2_BZ2_bzCompress=yes -else case e in #( - e) ac_cv_lib_bz2_BZ2_bzCompress=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzCompress" >&5 -printf "%s\n" "$ac_cv_lib_bz2_BZ2_bzCompress" >&6; } -if test "x$ac_cv_lib_bz2_BZ2_bzCompress" = xyes -then : - have_bzip2=yes -else case e in #( - e) have_bzip2=no ;; -esac -fi - - -else case e in #( - e) have_bzip2=no ;; -esac -fi - -done - if test "x$have_bzip2" = xyes -then : - - BZIP2_CFLAGS=${BZIP2_CFLAGS-""} - BZIP2_LIBS=${BZIP2_LIBS-"-lbz2"} - -fi - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $BZIP2_CFLAGS" - LIBS="$LIBS $BZIP2_LIBS" - for ac_header in bzlib.h -do : - ac_fn_c_check_header_compile "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default" -if test "x$ac_cv_header_bzlib_h" = xyes -then : - printf "%s\n" "#define HAVE_BZLIB_H 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzCompress in -lbz2" >&5 -printf %s "checking for BZ2_bzCompress in -lbz2... " >&6; } -if test ${ac_cv_lib_bz2_BZ2_bzCompress+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lbz2 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char BZ2_bzCompress (void); -int -main (void) -{ -return BZ2_bzCompress (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_bz2_BZ2_bzCompress=yes -else case e in #( - e) ac_cv_lib_bz2_BZ2_bzCompress=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzCompress" >&5 -printf "%s\n" "$ac_cv_lib_bz2_BZ2_bzCompress" >&6; } -if test "x$ac_cv_lib_bz2_BZ2_bzCompress" = xyes -then : - have_bzip2=yes -else case e in #( - e) have_bzip2=no ;; -esac -fi - - -else case e in #( - e) have_bzip2=no ;; -esac -fi - -done - if test "x$have_bzip2" = xyes -then : - - BZIP2_CFLAGS=${BZIP2_CFLAGS-""} - BZIP2_LIBS=${BZIP2_LIBS-"-lbz2"} - -fi - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -else - BZIP2_CFLAGS=$pkg_cv_BZIP2_CFLAGS - BZIP2_LIBS=$pkg_cv_BZIP2_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - have_bzip2=yes -fi - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for liblzma" >&5 -printf %s "checking for liblzma... " >&6; } - -if test -n "$LIBLZMA_CFLAGS"; then - pkg_cv_LIBLZMA_CFLAGS="$LIBLZMA_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblzma\""; } >&5 - ($PKG_CONFIG --exists --print-errors "liblzma") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBLZMA_CFLAGS=`$PKG_CONFIG --cflags "liblzma" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$LIBLZMA_LIBS"; then - pkg_cv_LIBLZMA_LIBS="$LIBLZMA_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblzma\""; } >&5 - ($PKG_CONFIG --exists --print-errors "liblzma") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBLZMA_LIBS=`$PKG_CONFIG --libs "liblzma" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - LIBLZMA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "liblzma" 2>&1` - else - LIBLZMA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "liblzma" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$LIBLZMA_PKG_ERRORS" >&5 - - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBLZMA_CFLAGS" - LIBS="$LIBS $LIBLZMA_LIBS" - for ac_header in lzma.h -do : - ac_fn_c_check_header_compile "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default" -if test "x$ac_cv_header_lzma_h" = xyes -then : - printf "%s\n" "#define HAVE_LZMA_H 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lzma_easy_encoder in -llzma" >&5 -printf %s "checking for lzma_easy_encoder in -llzma... " >&6; } -if test ${ac_cv_lib_lzma_lzma_easy_encoder+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-llzma $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char lzma_easy_encoder (void); -int -main (void) -{ -return lzma_easy_encoder (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_lzma_lzma_easy_encoder=yes -else case e in #( - e) ac_cv_lib_lzma_lzma_easy_encoder=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_easy_encoder" >&5 -printf "%s\n" "$ac_cv_lib_lzma_lzma_easy_encoder" >&6; } -if test "x$ac_cv_lib_lzma_lzma_easy_encoder" = xyes -then : - have_liblzma=yes -else case e in #( - e) have_liblzma=no ;; -esac -fi - - -else case e in #( - e) have_liblzma=no ;; -esac -fi - -done - if test "x$have_liblzma" = xyes -then : - - LIBLZMA_CFLAGS=${LIBLZMA_CFLAGS-""} - LIBLZMA_LIBS=${LIBLZMA_LIBS-"-llzma"} - -fi - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBLZMA_CFLAGS" - LIBS="$LIBS $LIBLZMA_LIBS" - for ac_header in lzma.h -do : - ac_fn_c_check_header_compile "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default" -if test "x$ac_cv_header_lzma_h" = xyes -then : - printf "%s\n" "#define HAVE_LZMA_H 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lzma_easy_encoder in -llzma" >&5 -printf %s "checking for lzma_easy_encoder in -llzma... " >&6; } -if test ${ac_cv_lib_lzma_lzma_easy_encoder+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-llzma $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char lzma_easy_encoder (void); -int -main (void) -{ -return lzma_easy_encoder (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_lzma_lzma_easy_encoder=yes -else case e in #( - e) ac_cv_lib_lzma_lzma_easy_encoder=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_easy_encoder" >&5 -printf "%s\n" "$ac_cv_lib_lzma_lzma_easy_encoder" >&6; } -if test "x$ac_cv_lib_lzma_lzma_easy_encoder" = xyes -then : - have_liblzma=yes -else case e in #( - e) have_liblzma=no ;; -esac -fi - - -else case e in #( - e) have_liblzma=no ;; -esac -fi - -done - if test "x$have_liblzma" = xyes -then : - - LIBLZMA_CFLAGS=${LIBLZMA_CFLAGS-""} - LIBLZMA_LIBS=${LIBLZMA_LIBS-"-llzma"} - -fi - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -else - LIBLZMA_CFLAGS=$pkg_cv_LIBLZMA_CFLAGS - LIBLZMA_LIBS=$pkg_cv_LIBLZMA_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - have_liblzma=yes -fi - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libzstd >= 1.4.5" >&5 -printf %s "checking for libzstd >= 1.4.5... " >&6; } - -if test -n "$LIBZSTD_CFLAGS"; then - pkg_cv_LIBZSTD_CFLAGS="$LIBZSTD_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd >= 1.4.5\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libzstd >= 1.4.5") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBZSTD_CFLAGS=`$PKG_CONFIG --cflags "libzstd >= 1.4.5" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$LIBZSTD_LIBS"; then - pkg_cv_LIBZSTD_LIBS="$LIBZSTD_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd >= 1.4.5\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libzstd >= 1.4.5") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBZSTD_LIBS=`$PKG_CONFIG --libs "libzstd >= 1.4.5" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - LIBZSTD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libzstd >= 1.4.5" 2>&1` - else - LIBZSTD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libzstd >= 1.4.5" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$LIBZSTD_PKG_ERRORS" >&5 - - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBZSTD_CFLAGS" - CFLAGS="$CFLAGS $LIBZSTD_CFLAGS" - LIBS="$LIBS $LIBZSTD_LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing ZDICT_finalizeDictionary" >&5 -printf %s "checking for library containing ZDICT_finalizeDictionary... " >&6; } -if test ${ac_cv_search_ZDICT_finalizeDictionary+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char ZDICT_finalizeDictionary (void); -int -main (void) -{ -return ZDICT_finalizeDictionary (); - ; - return 0; -} -_ACEOF -for ac_lib in '' zstd -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_ZDICT_finalizeDictionary=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_ZDICT_finalizeDictionary+y} -then : - break -fi -done -if test ${ac_cv_search_ZDICT_finalizeDictionary+y} -then : - -else case e in #( - e) ac_cv_search_ZDICT_finalizeDictionary=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ZDICT_finalizeDictionary" >&5 -printf "%s\n" "$ac_cv_search_ZDICT_finalizeDictionary" >&6; } -ac_res=$ac_cv_search_ZDICT_finalizeDictionary -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ZSTD_VERSION_NUMBER >= 1.4.5" >&5 -printf %s "checking ZSTD_VERSION_NUMBER >= 1.4.5... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include "zstd.h" -int -main (void) -{ - - #if ZSTD_VERSION_NUMBER < 10405 - # error "zstd version is too old" - #endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - for ac_header in zstd.h zdict.h -do : - as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_sh"` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1 -_ACEOF - have_libzstd=yes -else case e in #( - e) have_libzstd=no ;; -esac -fi - -done - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - have_libzstd=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -else case e in #( - e) have_libzstd=no ;; -esac -fi - - if test "x$have_libzstd" = xyes -then : - - LIBZSTD_CFLAGS=${LIBZSTD_CFLAGS-""} - LIBZSTD_LIBS=${LIBZSTD_LIBS-"-lzstd"} - -fi - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBZSTD_CFLAGS" - CFLAGS="$CFLAGS $LIBZSTD_CFLAGS" - LIBS="$LIBS $LIBZSTD_LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing ZDICT_finalizeDictionary" >&5 -printf %s "checking for library containing ZDICT_finalizeDictionary... " >&6; } -if test ${ac_cv_search_ZDICT_finalizeDictionary+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char ZDICT_finalizeDictionary (void); -int -main (void) -{ -return ZDICT_finalizeDictionary (); - ; - return 0; -} -_ACEOF -for ac_lib in '' zstd -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_ZDICT_finalizeDictionary=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_ZDICT_finalizeDictionary+y} -then : - break -fi -done -if test ${ac_cv_search_ZDICT_finalizeDictionary+y} -then : - -else case e in #( - e) ac_cv_search_ZDICT_finalizeDictionary=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ZDICT_finalizeDictionary" >&5 -printf "%s\n" "$ac_cv_search_ZDICT_finalizeDictionary" >&6; } -ac_res=$ac_cv_search_ZDICT_finalizeDictionary -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ZSTD_VERSION_NUMBER >= 1.4.5" >&5 -printf %s "checking ZSTD_VERSION_NUMBER >= 1.4.5... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include "zstd.h" -int -main (void) -{ - - #if ZSTD_VERSION_NUMBER < 10405 - # error "zstd version is too old" - #endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - for ac_header in zstd.h zdict.h -do : - as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_sh"` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1 -_ACEOF - have_libzstd=yes -else case e in #( - e) have_libzstd=no ;; -esac -fi - -done - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - have_libzstd=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -else case e in #( - e) have_libzstd=no ;; -esac -fi - - if test "x$have_libzstd" = xyes -then : - - LIBZSTD_CFLAGS=${LIBZSTD_CFLAGS-""} - LIBZSTD_LIBS=${LIBZSTD_LIBS-"-lzstd"} - -fi - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -else - LIBZSTD_CFLAGS=$pkg_cv_LIBZSTD_CFLAGS - LIBZSTD_LIBS=$pkg_cv_LIBZSTD_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - have_libzstd=yes -fi - -if test "x$have_libzstd" = xyes -then : - - REMOTE_DEBUGGING_CFLAGS="-DHAVE_ZSTD $LIBZSTD_CFLAGS" - REMOTE_DEBUGGING_LIBS="$LIBZSTD_LIBS" - -else case e in #( - e) - REMOTE_DEBUGGING_CFLAGS="" - REMOTE_DEBUGGING_LIBS="" - ;; -esac -fi - - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hstrerror" >&5 -printf %s "checking for hstrerror... " >&6; } -if test ${ac_cv_func_hstrerror+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=hstrerror - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_hstrerror=yes -else case e in #( - e) ac_cv_func_hstrerror=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_hstrerror" >&5 -printf "%s\n" "$ac_cv_func_hstrerror" >&6; } - if test "x$ac_cv_func_hstrerror" = xyes -then : - -printf "%s\n" "#define HAVE_HSTRERROR 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getservbyname" >&5 -printf %s "checking for getservbyname... " >&6; } -if test ${ac_cv_func_getservbyname+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=getservbyname - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_getservbyname=yes -else case e in #( - e) ac_cv_func_getservbyname=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getservbyname" >&5 -printf "%s\n" "$ac_cv_func_getservbyname" >&6; } - if test "x$ac_cv_func_getservbyname" = xyes -then : - -printf "%s\n" "#define HAVE_GETSERVBYNAME 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getservbyport" >&5 -printf %s "checking for getservbyport... " >&6; } -if test ${ac_cv_func_getservbyport+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=getservbyport - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_getservbyport=yes -else case e in #( - e) ac_cv_func_getservbyport=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getservbyport" >&5 -printf "%s\n" "$ac_cv_func_getservbyport" >&6; } - if test "x$ac_cv_func_getservbyport" = xyes -then : - -printf "%s\n" "#define HAVE_GETSERVBYPORT 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname" >&5 -printf %s "checking for gethostbyname... " >&6; } -if test ${ac_cv_func_gethostbyname+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=gethostbyname - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_gethostbyname=yes -else case e in #( - e) ac_cv_func_gethostbyname=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gethostbyname" >&5 -printf "%s\n" "$ac_cv_func_gethostbyname" >&6; } - if test "x$ac_cv_func_gethostbyname" = xyes -then : - -printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyaddr" >&5 -printf %s "checking for gethostbyaddr... " >&6; } -if test ${ac_cv_func_gethostbyaddr+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=gethostbyaddr - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_gethostbyaddr=yes -else case e in #( - e) ac_cv_func_gethostbyaddr=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gethostbyaddr" >&5 -printf "%s\n" "$ac_cv_func_gethostbyaddr" >&6; } - if test "x$ac_cv_func_gethostbyaddr" = xyes -then : - -printf "%s\n" "#define HAVE_GETHOSTBYADDR 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getprotobyname" >&5 -printf %s "checking for getprotobyname... " >&6; } -if test ${ac_cv_func_getprotobyname+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -void *x=getprotobyname - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_getprotobyname=yes -else case e in #( - e) ac_cv_func_getprotobyname=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getprotobyname" >&5 -printf "%s\n" "$ac_cv_func_getprotobyname" >&6; } - if test "x$ac_cv_func_getprotobyname" = xyes -then : - -printf "%s\n" "#define HAVE_GETPROTOBYNAME 1" >>confdefs.h - -fi - - - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_aton" >&5 -printf %s "checking for inet_aton... " >&6; } -if test ${ac_cv_func_inet_aton+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=inet_aton - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_inet_aton=yes -else case e in #( - e) ac_cv_func_inet_aton=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_aton" >&5 -printf "%s\n" "$ac_cv_func_inet_aton" >&6; } - if test "x$ac_cv_func_inet_aton" = xyes -then : - -printf "%s\n" "#define HAVE_INET_ATON 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_ntoa" >&5 -printf %s "checking for inet_ntoa... " >&6; } -if test ${ac_cv_func_inet_ntoa+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=inet_ntoa - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_inet_ntoa=yes -else case e in #( - e) ac_cv_func_inet_ntoa=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_ntoa" >&5 -printf "%s\n" "$ac_cv_func_inet_ntoa" >&6; } - if test "x$ac_cv_func_inet_ntoa" = xyes -then : - -printf "%s\n" "#define HAVE_INET_NTOA 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_pton" >&5 -printf %s "checking for inet_pton... " >&6; } -if test ${ac_cv_func_inet_pton+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=inet_pton - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_inet_pton=yes -else case e in #( - e) ac_cv_func_inet_pton=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_pton" >&5 -printf "%s\n" "$ac_cv_func_inet_pton" >&6; } - if test "x$ac_cv_func_inet_pton" = xyes -then : - -printf "%s\n" "#define HAVE_INET_PTON 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpeername" >&5 -printf %s "checking for getpeername... " >&6; } -if test ${ac_cv_func_getpeername+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=getpeername - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_getpeername=yes -else case e in #( - e) ac_cv_func_getpeername=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpeername" >&5 -printf "%s\n" "$ac_cv_func_getpeername" >&6; } - if test "x$ac_cv_func_getpeername" = xyes -then : - -printf "%s\n" "#define HAVE_GETPEERNAME 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getsockname" >&5 -printf %s "checking for getsockname... " >&6; } -if test ${ac_cv_func_getsockname+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=getsockname - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_getsockname=yes -else case e in #( - e) ac_cv_func_getsockname=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getsockname" >&5 -printf "%s\n" "$ac_cv_func_getsockname" >&6; } - if test "x$ac_cv_func_getsockname" = xyes -then : - -printf "%s\n" "#define HAVE_GETSOCKNAME 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for accept" >&5 -printf %s "checking for accept... " >&6; } -if test ${ac_cv_func_accept+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=accept - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_accept=yes -else case e in #( - e) ac_cv_func_accept=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_accept" >&5 -printf "%s\n" "$ac_cv_func_accept" >&6; } - if test "x$ac_cv_func_accept" = xyes -then : - -printf "%s\n" "#define HAVE_ACCEPT 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bind" >&5 -printf %s "checking for bind... " >&6; } -if test ${ac_cv_func_bind+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=bind - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_bind=yes -else case e in #( - e) ac_cv_func_bind=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_bind" >&5 -printf "%s\n" "$ac_cv_func_bind" >&6; } - if test "x$ac_cv_func_bind" = xyes -then : - -printf "%s\n" "#define HAVE_BIND 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for connect" >&5 -printf %s "checking for connect... " >&6; } -if test ${ac_cv_func_connect+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=connect - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_connect=yes -else case e in #( - e) ac_cv_func_connect=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_connect" >&5 -printf "%s\n" "$ac_cv_func_connect" >&6; } - if test "x$ac_cv_func_connect" = xyes -then : - -printf "%s\n" "#define HAVE_CONNECT 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for listen" >&5 -printf %s "checking for listen... " >&6; } -if test ${ac_cv_func_listen+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=listen - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_listen=yes -else case e in #( - e) ac_cv_func_listen=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_listen" >&5 -printf "%s\n" "$ac_cv_func_listen" >&6; } - if test "x$ac_cv_func_listen" = xyes -then : - -printf "%s\n" "#define HAVE_LISTEN 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for recvfrom" >&5 -printf %s "checking for recvfrom... " >&6; } -if test ${ac_cv_func_recvfrom+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=recvfrom - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_recvfrom=yes -else case e in #( - e) ac_cv_func_recvfrom=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_recvfrom" >&5 -printf "%s\n" "$ac_cv_func_recvfrom" >&6; } - if test "x$ac_cv_func_recvfrom" = xyes -then : - -printf "%s\n" "#define HAVE_RECVFROM 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sendto" >&5 -printf %s "checking for sendto... " >&6; } -if test ${ac_cv_func_sendto+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=sendto - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_sendto=yes -else case e in #( - e) ac_cv_func_sendto=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_sendto" >&5 -printf "%s\n" "$ac_cv_func_sendto" >&6; } - if test "x$ac_cv_func_sendto" = xyes -then : - -printf "%s\n" "#define HAVE_SENDTO 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setsockopt" >&5 -printf %s "checking for setsockopt... " >&6; } -if test ${ac_cv_func_setsockopt+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=setsockopt - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_setsockopt=yes -else case e in #( - e) ac_cv_func_setsockopt=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_setsockopt" >&5 -printf "%s\n" "$ac_cv_func_setsockopt" >&6; } - if test "x$ac_cv_func_setsockopt" = xyes -then : - -printf "%s\n" "#define HAVE_SETSOCKOPT 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket" >&5 -printf %s "checking for socket... " >&6; } -if test ${ac_cv_func_socket+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -void *x=socket - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_socket=yes -else case e in #( - e) ac_cv_func_socket=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_socket" >&5 -printf "%s\n" "$ac_cv_func_socket" >&6; } - if test "x$ac_cv_func_socket" = xyes -then : - -printf "%s\n" "#define HAVE_SOCKET 1" >>confdefs.h - -fi - - - - -# On some systems, setgroups is in unistd.h, on others, in grp.h - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setgroups" >&5 -printf %s "checking for setgroups... " >&6; } -if test ${ac_cv_func_setgroups+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef HAVE_GRP_H -#include -#endif - -int -main (void) -{ -void *x=setgroups - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_setgroups=yes -else case e in #( - e) ac_cv_func_setgroups=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_setgroups" >&5 -printf "%s\n" "$ac_cv_func_setgroups" >&6; } - if test "x$ac_cv_func_setgroups" = xyes -then : - -printf "%s\n" "#define HAVE_SETGROUPS 1" >>confdefs.h - -fi - - - - -ac_fn_check_decl "$LINENO" "MAXLOGNAME" "ac_cv_have_decl_MAXLOGNAME" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_MAXLOGNAME" = xyes -then : - -printf "%s\n" "#define HAVE_MAXLOGNAME 1" >>confdefs.h - -fi - -ac_fn_check_decl "$LINENO" "UT_NAMESIZE" "ac_cv_have_decl_UT_NAMESIZE" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_UT_NAMESIZE" = xyes -then : - ac_have_decl=1 -else case e in #( - e) ac_have_decl=0 ;; -esac -fi -printf "%s\n" "#define HAVE_DECL_UT_NAMESIZE $ac_have_decl" >>confdefs.h -if test $ac_have_decl = 1 -then : - -printf "%s\n" "#define HAVE_UT_NAMESIZE 1" >>confdefs.h - -fi - -# musl libc redefines struct prctl_mm_map and conflicts with linux/prctl.h -if test "$ac_cv_libc" != musl -then : - -ac_fn_check_decl "$LINENO" "PR_SET_VMA_ANON_NAME" "ac_cv_have_decl_PR_SET_VMA_ANON_NAME" "#include - #include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_PR_SET_VMA_ANON_NAME" = xyes -then : - ac_have_decl=1 -else case e in #( - e) ac_have_decl=0 ;; -esac -fi -printf "%s\n" "#define HAVE_DECL_PR_SET_VMA_ANON_NAME $ac_have_decl" >>confdefs.h -if test $ac_have_decl = 1 -then : - -printf "%s\n" "#define HAVE_PR_SET_VMA_ANON_NAME 1" >>confdefs.h - -fi - - -fi -# check for openpty, login_tty, and forkpty - - - for ac_func in openpty -do : - ac_fn_c_check_func "$LINENO" "openpty" "ac_cv_func_openpty" -if test "x$ac_cv_func_openpty" = xyes -then : - printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5 -printf %s "checking for openpty in -lutil... " >&6; } -if test ${ac_cv_lib_util_openpty+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lutil $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char openpty (void); -int -main (void) -{ -return openpty (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_util_openpty=yes -else case e in #( - e) ac_cv_lib_util_openpty=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_openpty" >&5 -printf "%s\n" "$ac_cv_lib_util_openpty" >&6; } -if test "x$ac_cv_lib_util_openpty" = xyes -then : - printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h - LIBS="$LIBS -lutil" -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openpty in -lbsd" >&5 -printf %s "checking for openpty in -lbsd... " >&6; } -if test ${ac_cv_lib_bsd_openpty+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char openpty (void); -int -main (void) -{ -return openpty (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_bsd_openpty=yes -else case e in #( - e) ac_cv_lib_bsd_openpty=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_openpty" >&5 -printf "%s\n" "$ac_cv_lib_bsd_openpty" >&6; } -if test "x$ac_cv_lib_bsd_openpty" = xyes -then : - printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h - LIBS="$LIBS -lbsd" -fi - ;; -esac -fi - ;; -esac -fi - -done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing login_tty" >&5 -printf %s "checking for library containing login_tty... " >&6; } -if test ${ac_cv_search_login_tty+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char login_tty (void); -int -main (void) -{ -return login_tty (); - ; - return 0; -} -_ACEOF -for ac_lib in '' util -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_login_tty=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_login_tty+y} -then : - break -fi -done -if test ${ac_cv_search_login_tty+y} -then : - -else case e in #( - e) ac_cv_search_login_tty=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_login_tty" >&5 -printf "%s\n" "$ac_cv_search_login_tty" >&6; } -ac_res=$ac_cv_search_login_tty -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -printf "%s\n" "#define HAVE_LOGIN_TTY 1" >>confdefs.h - - -fi - - - for ac_func in forkpty -do : - ac_fn_c_check_func "$LINENO" "forkpty" "ac_cv_func_forkpty" -if test "x$ac_cv_func_forkpty" = xyes -then : - printf "%s\n" "#define HAVE_FORKPTY 1" >>confdefs.h - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for forkpty in -lutil" >&5 -printf %s "checking for forkpty in -lutil... " >&6; } -if test ${ac_cv_lib_util_forkpty+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lutil $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char forkpty (void); -int -main (void) -{ -return forkpty (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_util_forkpty=yes -else case e in #( - e) ac_cv_lib_util_forkpty=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_forkpty" >&5 -printf "%s\n" "$ac_cv_lib_util_forkpty" >&6; } -if test "x$ac_cv_lib_util_forkpty" = xyes -then : - printf "%s\n" "#define HAVE_FORKPTY 1" >>confdefs.h - LIBS="$LIBS -lutil" -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for forkpty in -lbsd" >&5 -printf %s "checking for forkpty in -lbsd... " >&6; } -if test ${ac_cv_lib_bsd_forkpty+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char forkpty (void); -int -main (void) -{ -return forkpty (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_bsd_forkpty=yes -else case e in #( - e) ac_cv_lib_bsd_forkpty=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_forkpty" >&5 -printf "%s\n" "$ac_cv_lib_bsd_forkpty" >&6; } -if test "x$ac_cv_lib_bsd_forkpty" = xyes -then : - printf "%s\n" "#define HAVE_FORKPTY 1" >>confdefs.h - LIBS="$LIBS -lbsd" -fi - ;; -esac -fi - ;; -esac -fi - -done - -# check for long file support functions -ac_fn_c_check_func "$LINENO" "fseek64" "ac_cv_func_fseek64" -if test "x$ac_cv_func_fseek64" = xyes -then : - printf "%s\n" "#define HAVE_FSEEK64 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fseeko" "ac_cv_func_fseeko" -if test "x$ac_cv_func_fseeko" = xyes -then : - printf "%s\n" "#define HAVE_FSEEKO 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fstatvfs" "ac_cv_func_fstatvfs" -if test "x$ac_cv_func_fstatvfs" = xyes -then : - printf "%s\n" "#define HAVE_FSTATVFS 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "ftell64" "ac_cv_func_ftell64" -if test "x$ac_cv_func_ftell64" = xyes -then : - printf "%s\n" "#define HAVE_FTELL64 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "ftello" "ac_cv_func_ftello" -if test "x$ac_cv_func_ftello" = xyes -then : - printf "%s\n" "#define HAVE_FTELLO 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "statvfs" "ac_cv_func_statvfs" -if test "x$ac_cv_func_statvfs" = xyes -then : - printf "%s\n" "#define HAVE_STATVFS 1" >>confdefs.h - -fi - - -ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" -if test "x$ac_cv_func_dup2" = xyes -then : - printf "%s\n" "#define HAVE_DUP2 1" >>confdefs.h - -else case e in #( - e) case " $LIBOBJS " in - *" dup2.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS dup2.$ac_objext" - ;; -esac - ;; -esac -fi - - - for ac_func in getpgrp -do : - ac_fn_c_check_func "$LINENO" "getpgrp" "ac_cv_func_getpgrp" -if test "x$ac_cv_func_getpgrp" = xyes -then : - printf "%s\n" "#define HAVE_GETPGRP 1" >>confdefs.h - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -getpgrp(0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -printf "%s\n" "#define GETPGRP_HAVE_ARG 1" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -done - - for ac_func in setpgrp -do : - ac_fn_c_check_func "$LINENO" "setpgrp" "ac_cv_func_setpgrp" -if test "x$ac_cv_func_setpgrp" = xyes -then : - printf "%s\n" "#define HAVE_SETPGRP 1" >>confdefs.h - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -setpgrp(0,0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -printf "%s\n" "#define SETPGRP_HAVE_ARG 1" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -done - -# check for namespace functions -ac_fn_c_check_func "$LINENO" "setns" "ac_cv_func_setns" -if test "x$ac_cv_func_setns" = xyes -then : - printf "%s\n" "#define HAVE_SETNS 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "unshare" "ac_cv_func_unshare" -if test "x$ac_cv_func_unshare" = xyes -then : - printf "%s\n" "#define HAVE_UNSHARE 1" >>confdefs.h - -fi - - - - for ac_func in clock_gettime -do : - ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" -if test "x$ac_cv_func_clock_gettime" = xyes -then : - printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 -printf %s "checking for clock_gettime in -lrt... " >&6; } -if test ${ac_cv_lib_rt_clock_gettime+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lrt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char clock_gettime (void); -int -main (void) -{ -return clock_gettime (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_rt_clock_gettime=yes -else case e in #( - e) ac_cv_lib_rt_clock_gettime=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 -printf "%s\n" "$ac_cv_lib_rt_clock_gettime" >&6; } -if test "x$ac_cv_lib_rt_clock_gettime" = xyes -then : - - LIBS="$LIBS -lrt" - printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h - - -printf "%s\n" "#define TIMEMODULE_LIB rt" >>confdefs.h - - -fi - - ;; -esac -fi - -done - - - for ac_func in clock_getres -do : - ac_fn_c_check_func "$LINENO" "clock_getres" "ac_cv_func_clock_getres" -if test "x$ac_cv_func_clock_getres" = xyes -then : - printf "%s\n" "#define HAVE_CLOCK_GETRES 1" >>confdefs.h - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_getres in -lrt" >&5 -printf %s "checking for clock_getres in -lrt... " >&6; } -if test ${ac_cv_lib_rt_clock_getres+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lrt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char clock_getres (void); -int -main (void) -{ -return clock_getres (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_rt_clock_getres=yes -else case e in #( - e) ac_cv_lib_rt_clock_getres=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_getres" >&5 -printf "%s\n" "$ac_cv_lib_rt_clock_getres" >&6; } -if test "x$ac_cv_lib_rt_clock_getres" = xyes -then : - - printf "%s\n" "#define HAVE_CLOCK_GETRES 1" >>confdefs.h - - -fi - - ;; -esac -fi - -done - -# On Android and iOS, clock_settime can be linked (so it is found by -# configure), but when used in an unprivileged process, it crashes rather than -# returning an error. Force the symbol off. -if test "$ac_sys_system" != "Linux-android" && test "$ac_sys_system" != "iOS" -then - - for ac_func in clock_settime -do : - ac_fn_c_check_func "$LINENO" "clock_settime" "ac_cv_func_clock_settime" -if test "x$ac_cv_func_clock_settime" = xyes -then : - printf "%s\n" "#define HAVE_CLOCK_SETTIME 1" >>confdefs.h - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_settime in -lrt" >&5 -printf %s "checking for clock_settime in -lrt... " >&6; } -if test ${ac_cv_lib_rt_clock_settime+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lrt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char clock_settime (void); -int -main (void) -{ -return clock_settime (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_rt_clock_settime=yes -else case e in #( - e) ac_cv_lib_rt_clock_settime=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_settime" >&5 -printf "%s\n" "$ac_cv_lib_rt_clock_settime" >&6; } -if test "x$ac_cv_lib_rt_clock_settime" = xyes -then : - - printf "%s\n" "#define HAVE_CLOCK_SETTIME 1" >>confdefs.h - - -fi - - ;; -esac -fi - -done -fi - -# On Android before API level 23, clock_nanosleep returns the wrong value when -# interrupted by a signal (https://issuetracker.google.com/issues/216495770). -if ! { test "$ac_sys_system" = "Linux-android" && - test "$ANDROID_API_LEVEL" -lt 23; }; then - - for ac_func in clock_nanosleep -do : - ac_fn_c_check_func "$LINENO" "clock_nanosleep" "ac_cv_func_clock_nanosleep" -if test "x$ac_cv_func_clock_nanosleep" = xyes -then : - printf "%s\n" "#define HAVE_CLOCK_NANOSLEEP 1" >>confdefs.h - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_nanosleep in -lrt" >&5 -printf %s "checking for clock_nanosleep in -lrt... " >&6; } -if test ${ac_cv_lib_rt_clock_nanosleep+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lrt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char clock_nanosleep (void); -int -main (void) -{ -return clock_nanosleep (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_rt_clock_nanosleep=yes -else case e in #( - e) ac_cv_lib_rt_clock_nanosleep=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_nanosleep" >&5 -printf "%s\n" "$ac_cv_lib_rt_clock_nanosleep" >&6; } -if test "x$ac_cv_lib_rt_clock_nanosleep" = xyes -then : - - printf "%s\n" "#define HAVE_CLOCK_NANOSLEEP 1" >>confdefs.h - - -fi - - ;; -esac -fi - -done -fi - - - for ac_func in nanosleep -do : - ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep" -if test "x$ac_cv_func_nanosleep" = xyes -then : - printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nanosleep in -lrt" >&5 -printf %s "checking for nanosleep in -lrt... " >&6; } -if test ${ac_cv_lib_rt_nanosleep+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lrt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char nanosleep (void); -int -main (void) -{ -return nanosleep (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_rt_nanosleep=yes -else case e in #( - e) ac_cv_lib_rt_nanosleep=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_nanosleep" >&5 -printf "%s\n" "$ac_cv_lib_rt_nanosleep" >&6; } -if test "x$ac_cv_lib_rt_nanosleep" = xyes -then : - - printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h - - -fi - - ;; -esac -fi - -done - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for major, minor, and makedev" >&5 -printf %s "checking for major, minor, and makedev... " >&6; } -if test ${ac_cv_device_macros+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if defined(MAJOR_IN_MKDEV) -#include -#elif defined(MAJOR_IN_SYSMACROS) -#include -#include -#else -#include -#endif - -int -main (void) -{ - - makedev(major(0),minor(0)); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_device_macros=yes -else case e in #( - e) ac_cv_device_macros=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_device_macros" >&5 -printf "%s\n" "$ac_cv_device_macros" >&6; } -if test "x$ac_cv_device_macros" = xyes -then : - - -printf "%s\n" "#define HAVE_DEVICE_MACROS 1" >>confdefs.h - - -fi - - -printf "%s\n" "#define SYS_SELECT_WITH_SYS_TIME 1" >>confdefs.h - - -# On OSF/1 V5.1, getaddrinfo is available, but a define -# for [no]getaddrinfo in netdb.h. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5 -printf %s "checking for getaddrinfo... " >&6; } -if test ${ac_cv_func_getaddrinfo+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main (void) -{ -getaddrinfo(NULL, NULL, NULL, NULL); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_func_getaddrinfo=yes -else case e in #( - e) ac_cv_func_getaddrinfo=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getaddrinfo" >&5 -printf "%s\n" "$ac_cv_func_getaddrinfo" >&6; } - -if test "x$ac_cv_func_getaddrinfo" = xyes -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking getaddrinfo bug" >&5 -printf %s "checking getaddrinfo bug... " >&6; } -if test ${ac_cv_buggy_getaddrinfo+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "$cross_compiling" = yes -then : - -if test "$ac_sys_system" = "Linux-android" || test "$ac_sys_system" = "iOS"; then - ac_cv_buggy_getaddrinfo="no" -elif test "${enable_ipv6+set}" = set; then - ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6" -else - ac_cv_buggy_getaddrinfo=yes -fi -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include -#include -#include - -int main(void) -{ - int passive, gaierr, inet4 = 0, inet6 = 0; - struct addrinfo hints, *ai, *aitop; - char straddr[INET6_ADDRSTRLEN], strport[16]; - - for (passive = 0; passive <= 1; passive++) { - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_UNSPEC; - hints.ai_flags = passive ? AI_PASSIVE : 0; - hints.ai_socktype = SOCK_STREAM; - hints.ai_protocol = IPPROTO_TCP; - if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) { - (void)gai_strerror(gaierr); - goto bad; - } - for (ai = aitop; ai; ai = ai->ai_next) { - if (ai->ai_addr == NULL || - ai->ai_addrlen == 0 || - getnameinfo(ai->ai_addr, ai->ai_addrlen, - straddr, sizeof(straddr), strport, sizeof(strport), - NI_NUMERICHOST|NI_NUMERICSERV) != 0) { - goto bad; - } - switch (ai->ai_family) { - case AF_INET: - if (strcmp(strport, "54321") != 0) { - goto bad; - } - if (passive) { - if (strcmp(straddr, "0.0.0.0") != 0) { - goto bad; - } - } else { - if (strcmp(straddr, "127.0.0.1") != 0) { - goto bad; - } - } - inet4++; - break; - case AF_INET6: - if (strcmp(strport, "54321") != 0) { - goto bad; - } - if (passive) { - if (strcmp(straddr, "::") != 0) { - goto bad; - } - } else { - if (strcmp(straddr, "::1") != 0) { - goto bad; - } - } - inet6++; - break; - case AF_UNSPEC: - goto bad; - break; - default: - /* another family support? */ - break; - } - } - freeaddrinfo(aitop); - aitop = NULL; - } - - if (!(inet4 == 0 || inet4 == 2)) - goto bad; - if (!(inet6 == 0 || inet6 == 2)) - goto bad; - - if (aitop) - freeaddrinfo(aitop); - return 0; - - bad: - if (aitop) - freeaddrinfo(aitop); - return 1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_buggy_getaddrinfo=no -else case e in #( - e) ac_cv_buggy_getaddrinfo=yes ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_buggy_getaddrinfo" >&5 -printf "%s\n" "$ac_cv_buggy_getaddrinfo" >&6; } - - -fi - -if test "$ac_cv_func_getaddrinfo" = no -o "$ac_cv_buggy_getaddrinfo" = yes -then - if test "x$ipv6" = xyes -then : - - as_fn_error $? "You must get working getaddrinfo() function or pass the \"--disable-ipv6\" option to configure." "$LINENO" 5 - -fi -else - -printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h - -fi - -ac_fn_c_check_func "$LINENO" "getnameinfo" "ac_cv_func_getnameinfo" -if test "x$ac_cv_func_getnameinfo" = xyes -then : - printf "%s\n" "#define HAVE_GETNAMEINFO 1" >>confdefs.h - -fi - - -# checks for structures -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 -printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; } -if test ${ac_cv_struct_tm+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include - -int -main (void) -{ -struct tm tm; - int *p = &tm.tm_sec; - return !p; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_struct_tm=time.h -else case e in #( - e) ac_cv_struct_tm=sys/time.h ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 -printf "%s\n" "$ac_cv_struct_tm" >&6; } -if test $ac_cv_struct_tm = sys/time.h; then - -printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h - -fi - -ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include -#include <$ac_cv_struct_tm> - -" -if test "x$ac_cv_member_struct_tm_tm_zone" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_TM_TM_ZONE 1" >>confdefs.h - - -fi - -if test "$ac_cv_member_struct_tm_tm_zone" = yes; then - -printf "%s\n" "#define HAVE_TM_ZONE 1" >>confdefs.h - -else - ac_fn_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_tzname" = xyes -then : - ac_have_decl=1 -else case e in #( - e) ac_have_decl=0 ;; -esac -fi -printf "%s\n" "#define HAVE_DECL_TZNAME $ac_have_decl" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 -printf %s "checking for tzname... " >&6; } -if test ${ac_cv_var_tzname+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#if !HAVE_DECL_TZNAME -extern char *tzname[]; -#endif - -int -main (void) -{ -return tzname[0][0]; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_var_tzname=yes -else case e in #( - e) ac_cv_var_tzname=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 -printf "%s\n" "$ac_cv_var_tzname" >&6; } - if test $ac_cv_var_tzname = yes; then - -printf "%s\n" "#define HAVE_TZNAME 1" >>confdefs.h - - fi -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_rdev" "ac_cv_member_struct_stat_st_rdev" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_rdev" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_RDEV 1" >>confdefs.h - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_blksize" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BLKSIZE 1" >>confdefs.h - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_flags" "ac_cv_member_struct_stat_st_flags" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_flags" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_FLAGS 1" >>confdefs.h - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_gen" "ac_cv_member_struct_stat_st_gen" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_gen" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_GEN 1" >>confdefs.h - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtime" "ac_cv_member_struct_stat_st_birthtime" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_birthtime" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BIRTHTIME 1" >>confdefs.h - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_blocks" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BLOCKS 1" >>confdefs.h - - -fi - -ac_fn_c_check_member "$LINENO" "struct passwd" "pw_gecos" "ac_cv_member_struct_passwd_pw_gecos" " - #include - #include - -" -if test "x$ac_cv_member_struct_passwd_pw_gecos" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_PASSWD_PW_GECOS 1" >>confdefs.h - - -fi -ac_fn_c_check_member "$LINENO" "struct passwd" "pw_passwd" "ac_cv_member_struct_passwd_pw_passwd" " - #include - #include - -" -if test "x$ac_cv_member_struct_passwd_pw_passwd" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_PASSWD_PW_PASSWD 1" >>confdefs.h - - -fi - -# Issue #21085: In Cygwin, siginfo_t does not have si_band field. -ac_fn_c_check_member "$LINENO" "siginfo_t" "si_band" "ac_cv_member_siginfo_t_si_band" "#include -" -if test "x$ac_cv_member_siginfo_t_si_band" = xyes -then : - -printf "%s\n" "#define HAVE_SIGINFO_T_SI_BAND 1" >>confdefs.h - - -fi - - -if test "$ac_cv_func_statx" = yes; then - # Some systems have the definitions of the mask bits without having the - # corresponding members in struct statx. Check for members added after Linux - # 4.11 (when statx itself was added). - ac_fn_c_check_member "$LINENO" "struct statx" "stx_mnt_id" "ac_cv_member_struct_statx_stx_mnt_id" "$ac_includes_default" -if test "x$ac_cv_member_struct_statx_stx_mnt_id" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STATX_STX_MNT_ID 1" >>confdefs.h - - -fi - - ac_fn_c_check_member "$LINENO" "struct statx" "stx_dio_mem_align" "ac_cv_member_struct_statx_stx_dio_mem_align" "$ac_includes_default" -if test "x$ac_cv_member_struct_statx_stx_dio_mem_align" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STATX_STX_DIO_MEM_ALIGN 1" >>confdefs.h - - -fi - - # stx_dio_offset_align was added together with stx_dio_mem_align - ac_fn_c_check_member "$LINENO" "struct statx" "stx_subvol" "ac_cv_member_struct_statx_stx_subvol" "$ac_includes_default" -if test "x$ac_cv_member_struct_statx_stx_subvol" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STATX_STX_SUBVOL 1" >>confdefs.h - - -fi - - ac_fn_c_check_member "$LINENO" "struct statx" "stx_atomic_write_unit_min" "ac_cv_member_struct_statx_stx_atomic_write_unit_min" "$ac_includes_default" -if test "x$ac_cv_member_struct_statx_stx_atomic_write_unit_min" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STATX_STX_ATOMIC_WRITE_UNIT_MIN 1" >>confdefs.h - - -fi - - # stx_atomic_write_unit_max and stx_atomic_write_segments_max were added - # together with stx_atomic_write_unit_min - ac_fn_c_check_member "$LINENO" "struct statx" "stx_dio_read_offset_align" "ac_cv_member_struct_statx_stx_dio_read_offset_align" "$ac_includes_default" -if test "x$ac_cv_member_struct_statx_stx_dio_read_offset_align" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STATX_STX_DIO_READ_OFFSET_ALIGN 1" >>confdefs.h - - -fi - - # stx_atomic_write_unit_max_opt was added in Linux 6.16, but is controlled by - # the STATX_WRITE_ATOMIC mask bit added in Linux 6.11, so having the mask bit - # doesn't imply having the member. - ac_fn_c_check_member "$LINENO" "struct statx" "stx_atomic_write_unit_max_opt" "ac_cv_member_struct_statx_stx_atomic_write_unit_max_opt" "$ac_includes_default" -if test "x$ac_cv_member_struct_statx_stx_atomic_write_unit_max_opt" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STATX_STX_ATOMIC_WRITE_UNIT_MAX_OPT 1" >>confdefs.h - - -fi - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for time.h that defines altzone" >&5 -printf %s "checking for time.h that defines altzone... " >&6; } -if test ${ac_cv_header_time_altzone+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -return altzone; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_header_time_altzone=yes -else case e in #( - e) ac_cv_header_time_altzone=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time_altzone" >&5 -printf "%s\n" "$ac_cv_header_time_altzone" >&6; } -if test $ac_cv_header_time_altzone = yes; then - -printf "%s\n" "#define HAVE_ALTZONE 1" >>confdefs.h - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for addrinfo" >&5 -printf %s "checking for addrinfo... " >&6; } -if test ${ac_cv_struct_addrinfo+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -struct addrinfo a - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_struct_addrinfo=yes -else case e in #( - e) ac_cv_struct_addrinfo=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_addrinfo" >&5 -printf "%s\n" "$ac_cv_struct_addrinfo" >&6; } -if test $ac_cv_struct_addrinfo = yes; then - -printf "%s\n" "#define HAVE_ADDRINFO 1" >>confdefs.h - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sockaddr_storage" >&5 -printf %s "checking for sockaddr_storage... " >&6; } -if test ${ac_cv_struct_sockaddr_storage+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# include -# include -int -main (void) -{ -struct sockaddr_storage s - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_struct_sockaddr_storage=yes -else case e in #( - e) ac_cv_struct_sockaddr_storage=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_sockaddr_storage" >&5 -printf "%s\n" "$ac_cv_struct_sockaddr_storage" >&6; } -if test $ac_cv_struct_sockaddr_storage = yes; then - -printf "%s\n" "#define HAVE_SOCKADDR_STORAGE 1" >>confdefs.h - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sockaddr_alg" >&5 -printf %s "checking for sockaddr_alg... " >&6; } -if test ${ac_cv_struct_sockaddr_alg+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# include -# include -# include -int -main (void) -{ -struct sockaddr_alg s - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_struct_sockaddr_alg=yes -else case e in #( - e) ac_cv_struct_sockaddr_alg=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_sockaddr_alg" >&5 -printf "%s\n" "$ac_cv_struct_sockaddr_alg" >&6; } -if test $ac_cv_struct_sockaddr_alg = yes; then - -printf "%s\n" "#define HAVE_SOCKADDR_ALG 1" >>confdefs.h - -fi - -# checks for compiler characteristics - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -printf %s "checking for an ANSI C-conforming const... " >&6; } -if test ${ac_cv_c_const+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - -#ifndef __cplusplus - /* Ultrix mips cc rejects this sort of thing. */ - typedef int charset[2]; - const charset cs = { 0, 0 }; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* IBM XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this sort of thing. */ - char tx; - char *t = &tx; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; } bx; - struct s *b = &bx; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_c_const=yes -else case e in #( - e) ac_cv_c_const=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -printf "%s\n" "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -printf "%s\n" "#define const /**/" >>confdefs.h - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working signed char" >&5 -printf %s "checking for working signed char... " >&6; } -if test ${ac_cv_working_signed_char_c+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -signed char c; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_working_signed_char_c=yes -else case e in #( - e) ac_cv_working_signed_char_c=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_signed_char_c" >&5 -printf "%s\n" "$ac_cv_working_signed_char_c" >&6; } -if test "x$ac_cv_working_signed_char_c" = xno -then : - - -printf "%s\n" "#define signed /**/" >>confdefs.h - - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for prototypes" >&5 -printf %s "checking for prototypes... " >&6; } -if test ${ac_cv_function_prototypes+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo(int x) { return 0; } -int -main (void) -{ -return foo(10); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_function_prototypes=yes -else case e in #( - e) ac_cv_function_prototypes=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_function_prototypes" >&5 -printf "%s\n" "$ac_cv_function_prototypes" >&6; } -if test "x$ac_cv_function_prototypes" = xyes -then : - - -printf "%s\n" "#define HAVE_PROTOTYPES 1" >>confdefs.h - - -fi - - -# check for socketpair - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socketpair" >&5 -printf %s "checking for socketpair... " >&6; } -if test ${ac_cv_func_socketpair+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -int -main (void) -{ -void *x=socketpair - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_func_socketpair=yes -else case e in #( - e) ac_cv_func_socketpair=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_socketpair" >&5 -printf "%s\n" "$ac_cv_func_socketpair" >&6; } - if test "x$ac_cv_func_socketpair" = xyes -then : - -printf "%s\n" "#define HAVE_SOCKETPAIR 1" >>confdefs.h - -fi - - - - -# check if sockaddr has sa_len member -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sockaddr has sa_len member" >&5 -printf %s "checking if sockaddr has sa_len member... " >&6; } -if test ${ac_cv_struct_sockaddr_sa_len+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main (void) -{ -struct sockaddr x; -x.sa_len = 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_struct_sockaddr_sa_len=yes -else case e in #( - e) ac_cv_struct_sockaddr_sa_len=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_sockaddr_sa_len" >&5 -printf "%s\n" "$ac_cv_struct_sockaddr_sa_len" >&6; } -if test "x$ac_cv_struct_sockaddr_sa_len" = xyes -then : - - -printf "%s\n" "#define HAVE_SOCKADDR_SA_LEN 1" >>confdefs.h - - -fi - -# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-( - - -ac_fn_c_check_func "$LINENO" "gethostbyname_r" "ac_cv_func_gethostbyname_r" -if test "x$ac_cv_func_gethostbyname_r" = xyes -then : - printf "%s\n" "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking gethostbyname_r with 6 args" >&5 -printf %s "checking gethostbyname_r with 6 args... " >&6; } - OLD_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# include - -int -main (void) -{ - - char *name; - struct hostent *he, *res; - char buffer[2048]; - int buflen = 2048; - int h_errnop; - - (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop) - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - printf "%s\n" "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h - - -printf "%s\n" "#define HAVE_GETHOSTBYNAME_R_6_ARG 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking gethostbyname_r with 5 args" >&5 -printf %s "checking gethostbyname_r with 5 args... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# include - -int -main (void) -{ - - char *name; - struct hostent *he; - char buffer[2048]; - int buflen = 2048; - int h_errnop; - - (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop) - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - printf "%s\n" "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h - - -printf "%s\n" "#define HAVE_GETHOSTBYNAME_R_5_ARG 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking gethostbyname_r with 3 args" >&5 -printf %s "checking gethostbyname_r with 3 args... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# include - -int -main (void) -{ - - char *name; - struct hostent *he; - struct hostent_data data; - - (void) gethostbyname_r(name, he, &data); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - printf "%s\n" "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h - - -printf "%s\n" "#define HAVE_GETHOSTBYNAME_R_3_ARG 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$OLD_CFLAGS - -else case e in #( - e) - ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" -if test "x$ac_cv_func_gethostbyname" = xyes -then : - printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h - -fi - - ;; -esac -fi - - - - - - - -# checks for system services -# (none yet) - -# Linux requires this for correct f.p. operations -ac_fn_c_check_func "$LINENO" "__fpu_control" "ac_cv_func___fpu_control" -if test "x$ac_cv_func___fpu_control" = xyes -then : - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __fpu_control in -lieee" >&5 -printf %s "checking for __fpu_control in -lieee... " >&6; } -if test ${ac_cv_lib_ieee___fpu_control+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lieee $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char __fpu_control (void); -int -main (void) -{ -return __fpu_control (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ieee___fpu_control=yes -else case e in #( - e) ac_cv_lib_ieee___fpu_control=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ieee___fpu_control" >&5 -printf "%s\n" "$ac_cv_lib_ieee___fpu_control" >&6; } -if test "x$ac_cv_lib_ieee___fpu_control" = xyes -then : - printf "%s\n" "#define HAVE_LIBIEEE 1" >>confdefs.h - - LIBS="-lieee $LIBS" - -fi - - ;; -esac -fi - - -# check for --with-libm=... - -case $ac_sys_system in -Darwin) ;; -*) LIBM=-lm -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-libm=STRING" >&5 -printf %s "checking for --with-libm=STRING... " >&6; } - -# Check whether --with-libm was given. -if test ${with_libm+y} -then : - withval=$with_libm; -if test "$withval" = no -then LIBM= - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: force LIBM empty" >&5 -printf "%s\n" "force LIBM empty" >&6; } -elif test "$withval" != yes -then LIBM=$withval - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: set LIBM=\"$withval\"" >&5 -printf "%s\n" "set LIBM=\"$withval\"" >&6; } -else as_fn_error $? "proper usage is --with-libm=STRING" "$LINENO" 5 -fi -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: default LIBM=\"$LIBM\"" >&5 -printf "%s\n" "default LIBM=\"$LIBM\"" >&6; } ;; -esac -fi - - -# check for --with-libc=... - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-libc=STRING" >&5 -printf %s "checking for --with-libc=STRING... " >&6; } - -# Check whether --with-libc was given. -if test ${with_libc+y} -then : - withval=$with_libc; -if test "$withval" = no -then LIBC= - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: force LIBC empty" >&5 -printf "%s\n" "force LIBC empty" >&6; } -elif test "$withval" != yes -then LIBC=$withval - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: set LIBC=\"$withval\"" >&5 -printf "%s\n" "set LIBC=\"$withval\"" >&6; } -else as_fn_error $? "proper usage is --with-libc=STRING" "$LINENO" 5 -fi -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: default LIBC=\"$LIBC\"" >&5 -printf "%s\n" "default LIBC=\"$LIBC\"" >&6; } ;; -esac -fi - - -# ************************************** -# * Check for gcc x64 inline assembler * -# ************************************** - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for x64 gcc inline assembler" >&5 -printf %s "checking for x64 gcc inline assembler... " >&6; } -if test ${ac_cv_gcc_asm_for_x64+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - __asm__ __volatile__ ("movq %rcx, %rax"); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_gcc_asm_for_x64=yes -else case e in #( - e) ac_cv_gcc_asm_for_x64=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_asm_for_x64" >&5 -printf "%s\n" "$ac_cv_gcc_asm_for_x64" >&6; } - -if test "x$ac_cv_gcc_asm_for_x64" = xyes -then : - - -printf "%s\n" "#define HAVE_GCC_ASM_FOR_X64 1" >>confdefs.h - - -fi - -# ************************************************** -# * Check for various properties of floating point * -# ************************************************** - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether float word ordering is bigendian" >&5 -printf %s "checking whether float word ordering is bigendian... " >&6; } -if test ${ax_cv_c_float_words_bigendian+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - -ax_cv_c_float_words_bigendian=unknown -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include - -static double m[] = {9.090423496703681e+223, 0.0}; - -int main (int argc, char *argv[]) -{ - m[atoi (argv[1])] += atof (argv[2]); - return m[atoi (argv[3])] > 0.0; -} - - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - -if grep noonsees conftest* > /dev/null ; then - ax_cv_c_float_words_bigendian=yes -fi -if grep seesnoon conftest* >/dev/null ; then - if test "$ax_cv_c_float_words_bigendian" = unknown; then - ax_cv_c_float_words_bigendian=no - else - ax_cv_c_float_words_bigendian=unknown - fi -fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_float_words_bigendian" >&5 -printf "%s\n" "$ax_cv_c_float_words_bigendian" >&6; } - -case $ax_cv_c_float_words_bigendian in - yes) - -printf "%s\n" "#define DOUBLE_IS_BIG_ENDIAN_IEEE754 1" >>confdefs.h - ;; - no) - -printf "%s\n" "#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1" >>confdefs.h - ;; - *) - case $host_cpu in #( - *arm*) : - # Some ARM platforms use a mixed-endian representation for - # doubles. While Python doesn't currently have full support - # for these platforms (see e.g., issue 1762561), we can at - # least make sure that float <-> string conversions work. - # FLOAT_WORDS_BIGENDIAN doesn't actually detect this case, - # but if it's not big or little, then it must be this? - -printf "%s\n" "#define DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 1" >>confdefs.h - ;; #( - *) : - as_fn_error $? "Unknown float word ordering. You need to manually preset ax_cv_c_float_words_bigendian=no (or yes) according to your system." "$LINENO" 5 ;; -esac ;; -esac - - - -# The short float repr introduced in Python 3.1 requires the -# correctly-rounded string <-> double conversion functions from -# Python/dtoa.c, which in turn require that the FPU uses 53-bit -# rounding; this is a problem on x86, where the x87 FPU has a default -# rounding precision of 64 bits. For gcc/x86, we can fix this by -# using inline assembler to get and set the x87 FPU control word. - -# This inline assembler syntax may also work for suncc and icc, -# so we try it on all platforms. - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we can use gcc inline assembler to get and set x87 control word" >&5 -printf %s "checking whether we can use gcc inline assembler to get and set x87 control word... " >&6; } -if test ${ac_cv_gcc_asm_for_x87+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - unsigned short cw; - __asm__ __volatile__ ("fnstcw %0" : "=m" (cw)); - __asm__ __volatile__ ("fldcw %0" : : "m" (cw)); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_gcc_asm_for_x87=yes -else case e in #( - e) ac_cv_gcc_asm_for_x87=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_asm_for_x87" >&5 -printf "%s\n" "$ac_cv_gcc_asm_for_x87" >&6; } -if test "x$ac_cv_gcc_asm_for_x87" = xyes -then : - - -printf "%s\n" "#define HAVE_GCC_ASM_FOR_X87 1" >>confdefs.h - - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we can use gcc inline assembler to get and set mc68881 fpcr" >&5 -printf %s "checking whether we can use gcc inline assembler to get and set mc68881 fpcr... " >&6; } -if test ${ac_cv_gcc_asm_for_mc68881+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - unsigned int fpcr; - __asm__ __volatile__ ("fmove.l %%fpcr,%0" : "=dm" (fpcr)); - __asm__ __volatile__ ("fmove.l %0,%%fpcr" : : "dm" (fpcr)); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_gcc_asm_for_mc68881=yes -else case e in #( - e) ac_cv_gcc_asm_for_mc68881=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_asm_for_mc68881" >&5 -printf "%s\n" "$ac_cv_gcc_asm_for_mc68881" >&6; } -if test "x$ac_cv_gcc_asm_for_mc68881" = xyes -then : - - -printf "%s\n" "#define HAVE_GCC_ASM_FOR_MC68881 1" >>confdefs.h - - -fi - -# Detect whether system arithmetic is subject to x87-style double -# rounding issues. The result of this test has little meaning on non -# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding -# mode is round-to-nearest and double rounding issues are present, and -# 0 otherwise. See https://github.com/python/cpython/issues/47186 for more info. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for x87-style double rounding" >&5 -printf %s "checking for x87-style double rounding... " >&6; } -if test ${ac_cv_x87_double_rounding+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -# $BASECFLAGS may affect the result -ac_save_cc="$CC" -CC="$CC $BASECFLAGS" -if test "$cross_compiling" = yes -then : - ac_cv_x87_double_rounding=no -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -int main(void) { - volatile double x, y, z; - /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */ - x = 0.99999999999999989; /* 1-2**-53 */ - y = 1./x; - if (y != 1.) - exit(0); - /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */ - x = 1e16; - y = 2.99999; - z = x + y; - if (z != 1e16+4.) - exit(0); - /* both tests show evidence of double rounding */ - exit(1); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_x87_double_rounding=no -else case e in #( - e) ac_cv_x87_double_rounding=yes ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - -CC="$ac_save_cc" - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_x87_double_rounding" >&5 -printf "%s\n" "$ac_cv_x87_double_rounding" >&6; } - -if test "x$ac_cv_x87_double_rounding" = xyes -then : - - -printf "%s\n" "#define X87_DOUBLE_ROUNDING 1" >>confdefs.h - - -fi - -# ************************************ -# * Check for mathematical functions * -# ************************************ - -LIBS_SAVE=$LIBS -LIBS="$LIBS $LIBM" - - - for ac_func in acosh asinh atanh erf erfc expm1 log1p log2 -do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 -_ACEOF - -else case e in #( - e) as_fn_error $? "Python requires C99 compatible libm" "$LINENO" 5 - ;; -esac -fi - -done -LIBS=$LIBS_SAVE - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX semaphores are enabled" >&5 -printf %s "checking whether POSIX semaphores are enabled... " >&6; } -if test ${ac_cv_posix_semaphores_enabled+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "$cross_compiling" = yes -then : - ac_cv_posix_semaphores_enabled=yes -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - #include - #include - #include - #include - - int main(void) { - sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0); - if (a == SEM_FAILED) { - perror("sem_open"); - return 1; - } - sem_close(a); - sem_unlink("/autoconf"); - return 0; - } - - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_posix_semaphores_enabled=yes -else case e in #( - e) ac_cv_posix_semaphores_enabled=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_posix_semaphores_enabled" >&5 -printf "%s\n" "$ac_cv_posix_semaphores_enabled" >&6; } -if test "x$ac_cv_posix_semaphores_enabled" = xno -then : - - -printf "%s\n" "#define POSIX_SEMAPHORES_NOT_ENABLED 1" >>confdefs.h - - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken sem_getvalue" >&5 -printf %s "checking for broken sem_getvalue... " >&6; } -if test ${ac_cv_broken_sem_getvalue+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "$cross_compiling" = yes -then : - ac_cv_broken_sem_getvalue=yes -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - #include - #include - #include - #include - - int main(void){ - sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0); - int count; - int res; - if(a==SEM_FAILED){ - perror("sem_open"); - return 1; - - } - res = sem_getvalue(a, &count); - sem_close(a); - sem_unlink("/autocftw"); - return res==-1 ? 1 : 0; - } - - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_broken_sem_getvalue=no -else case e in #( - e) ac_cv_broken_sem_getvalue=yes ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_sem_getvalue" >&5 -printf "%s\n" "$ac_cv_broken_sem_getvalue" >&6; } -if test "x$ac_cv_broken_sem_getvalue" = xyes -then : - - -printf "%s\n" "#define HAVE_BROKEN_SEM_GETVALUE 1" >>confdefs.h - - -fi - -ac_fn_check_decl "$LINENO" "RTLD_LAZY" "ac_cv_have_decl_RTLD_LAZY" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_RTLD_LAZY" = xyes -then : - ac_have_decl=1 -else case e in #( - e) ac_have_decl=0 ;; -esac -fi -printf "%s\n" "#define HAVE_DECL_RTLD_LAZY $ac_have_decl" >>confdefs.h -ac_fn_check_decl "$LINENO" "RTLD_NOW" "ac_cv_have_decl_RTLD_NOW" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_RTLD_NOW" = xyes -then : - ac_have_decl=1 -else case e in #( - e) ac_have_decl=0 ;; -esac -fi -printf "%s\n" "#define HAVE_DECL_RTLD_NOW $ac_have_decl" >>confdefs.h -ac_fn_check_decl "$LINENO" "RTLD_GLOBAL" "ac_cv_have_decl_RTLD_GLOBAL" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_RTLD_GLOBAL" = xyes -then : - ac_have_decl=1 -else case e in #( - e) ac_have_decl=0 ;; -esac -fi -printf "%s\n" "#define HAVE_DECL_RTLD_GLOBAL $ac_have_decl" >>confdefs.h -ac_fn_check_decl "$LINENO" "RTLD_LOCAL" "ac_cv_have_decl_RTLD_LOCAL" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_RTLD_LOCAL" = xyes -then : - ac_have_decl=1 -else case e in #( - e) ac_have_decl=0 ;; -esac -fi -printf "%s\n" "#define HAVE_DECL_RTLD_LOCAL $ac_have_decl" >>confdefs.h -ac_fn_check_decl "$LINENO" "RTLD_NODELETE" "ac_cv_have_decl_RTLD_NODELETE" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_RTLD_NODELETE" = xyes -then : - ac_have_decl=1 -else case e in #( - e) ac_have_decl=0 ;; -esac -fi -printf "%s\n" "#define HAVE_DECL_RTLD_NODELETE $ac_have_decl" >>confdefs.h -ac_fn_check_decl "$LINENO" "RTLD_NOLOAD" "ac_cv_have_decl_RTLD_NOLOAD" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_RTLD_NOLOAD" = xyes -then : - ac_have_decl=1 -else case e in #( - e) ac_have_decl=0 ;; -esac -fi -printf "%s\n" "#define HAVE_DECL_RTLD_NOLOAD $ac_have_decl" >>confdefs.h -ac_fn_check_decl "$LINENO" "RTLD_DEEPBIND" "ac_cv_have_decl_RTLD_DEEPBIND" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_RTLD_DEEPBIND" = xyes -then : - ac_have_decl=1 -else case e in #( - e) ac_have_decl=0 ;; -esac -fi -printf "%s\n" "#define HAVE_DECL_RTLD_DEEPBIND $ac_have_decl" >>confdefs.h -ac_fn_check_decl "$LINENO" "RTLD_MEMBER" "ac_cv_have_decl_RTLD_MEMBER" "#include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_RTLD_MEMBER" = xyes -then : - ac_have_decl=1 -else case e in #( - e) ac_have_decl=0 ;; -esac -fi -printf "%s\n" "#define HAVE_DECL_RTLD_MEMBER $ac_have_decl" >>confdefs.h - - -# determine what size digit to use for Python's longs -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking digit size for Python's longs" >&5 -printf %s "checking digit size for Python's longs... " >&6; } -# Check whether --enable-big-digits was given. -if test ${enable_big_digits+y} -then : - enableval=$enable_big_digits; case $enable_big_digits in -yes) - enable_big_digits=30 ;; -no) - enable_big_digits=15 ;; -15|30) - ;; -*) - as_fn_error $? "bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30" "$LINENO" 5 ;; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_big_digits" >&5 -printf "%s\n" "$enable_big_digits" >&6; } - -printf "%s\n" "#define PYLONG_BITS_IN_DIGIT $enable_big_digits" >>confdefs.h - - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no value specified" >&5 -printf "%s\n" "no value specified" >&6; } ;; -esac -fi - - -# check for wchar.h -ac_fn_c_check_header_compile "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" -if test "x$ac_cv_header_wchar_h" = xyes -then : - - -printf "%s\n" "#define HAVE_WCHAR_H 1" >>confdefs.h - - wchar_h="yes" - -else case e in #( - e) wchar_h="no" - ;; -esac -fi - - -# determine wchar_t size -if test "$wchar_h" = yes -then - # The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5 -printf %s "checking size of wchar_t... " >&6; } -if test ${ac_cv_sizeof_wchar_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "#include -" -then : - -else case e in #( - e) if test "$ac_cv_type_wchar_t" = yes; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (wchar_t) -See 'config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_wchar_t=0 - fi ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5 -printf "%s\n" "$ac_cv_sizeof_wchar_t" >&6; } - - - -printf "%s\n" "#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t" >>confdefs.h - - -fi - -# check whether wchar_t is signed or not -if test "$wchar_h" = yes -then - # check whether wchar_t is signed or not - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wchar_t is signed" >&5 -printf %s "checking whether wchar_t is signed... " >&6; } -if test ${ac_cv_wchar_t_signed+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - if test "$cross_compiling" = yes -then : - ac_cv_wchar_t_signed=yes -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - int main() - { - /* Success: exit code 0 */ - return ((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); - } - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_wchar_t_signed=yes -else case e in #( - e) ac_cv_wchar_t_signed=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_wchar_t_signed" >&5 -printf "%s\n" "$ac_cv_wchar_t_signed" >&6; } -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wchar_t is usable" >&5 -printf %s "checking whether wchar_t is usable... " >&6; } -# wchar_t is only usable if it maps to an unsigned type -if test "$ac_cv_sizeof_wchar_t" -ge 2 \ - -a "$ac_cv_wchar_t_signed" = "no" -then - -printf "%s\n" "#define HAVE_USABLE_WCHAR_T 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - -case $ac_sys_system/$ac_sys_release in -SunOS/*) - if test -f /etc/os-release; then - OS_NAME=$(awk -F= '/^NAME=/ {print substr($2,2,length($2)-2)}' /etc/os-release) - if test "x$OS_NAME" = "xOracle Solaris"; then - # bpo-43667: In Oracle Solaris, the internal form of wchar_t in - # non-Unicode locales is not Unicode and hence cannot be used directly. - # https://docs.oracle.com/cd/E37838_01/html/E61053/gmwke.html - -printf "%s\n" "#define HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION 1" >>confdefs.h - - fi - fi - ;; -esac - -# check for endianness - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -printf %s "checking whether byte ordering is bigendian... " >&6; } -if test ${ac_cv_c_bigendian+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main (void) -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main (void) -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_c_bigendian=yes -else case e in #( - e) ac_cv_c_bigendian=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main (void) -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main (void) -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_c_bigendian=yes -else case e in #( - e) ac_cv_c_bigendian=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes -then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -unsigned short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - unsigned short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - unsigned short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - unsigned short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - int - main (int argc, char **argv) - { - /* Intimidate the compiler so that it does not - optimize the arrays away. */ - char *p = argv[0]; - ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; - ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; - return use_ascii (argc) == use_ebcdic (*p); - } -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main (void) -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_c_bigendian=no -else case e in #( - e) ac_cv_c_bigendian=yes ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - - fi ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -printf "%s\n" "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h -;; #( - no) - ;; #( - universal) - -printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - - -# ABI version string for Python extension modules. This appears between the -# periods in shared library file names, e.g. foo..so. It is calculated -# from the following attributes which affect the ABI of this Python build (in -# this order): -# -# * The Python implementation (always 'cpython-' for us) -# * The major and minor version numbers -# * --disable-gil (adds a 't') -# * --with-pydebug (adds a 'd') -# -# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc, -# would get a shared library ABI version tag of 'cpython-32dmu' and shared -# libraries would be named 'foo.cpython-32dmu.so'. -# -# In Python 3.2 and older, --with-wide-unicode added a 'u' flag. -# In Python 3.7 and older, --with-pymalloc added a 'm' flag. - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ABIFLAGS" >&5 -printf %s "checking ABIFLAGS... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ABIFLAGS" >&5 -printf "%s\n" "$ABIFLAGS" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking SOABI" >&5 -printf %s "checking SOABI... " >&6; } -SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${SOABI_PLATFORM:+-$SOABI_PLATFORM} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SOABI" >&5 -printf "%s\n" "$SOABI" >&6; } - -# Release build, debug build (Py_DEBUG), and trace refs build (Py_TRACE_REFS) -# are ABI compatible -if test "$Py_DEBUG" = 'true'; then - # Similar to SOABI but remove "d" flag from ABIFLAGS - - ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${SOABI_PLATFORM:+-$SOABI_PLATFORM} - -printf "%s\n" "#define ALT_SOABI \"${ALT_SOABI}\"" >>confdefs.h - -fi - - -EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LDVERSION" >&5 -printf %s "checking LDVERSION... " >&6; } -LDVERSION='$(VERSION)$(ABIFLAGS)' -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LDVERSION" >&5 -printf "%s\n" "$LDVERSION" >&6; } - -# Configure the flags and dependencies used when compiling shared modules. -# Do not rename LIBPYTHON - it's accessed via sysconfig by package build -# systems (e.g. Meson) to decide whether to link extension modules against -# libpython. - - -MODULE_DEPS_SHARED='$(MODULE_DEPS_STATIC) $(EXPORTSYMS)' -LIBPYTHON='' - -# On Android and Cygwin the shared libraries must be linked with libpython. -if test "$PY_ENABLE_SHARED" = "1" && ( test -n "$ANDROID_API_LEVEL" || test "$MACHDEP" = "cygwin"); then - MODULE_DEPS_SHARED="$MODULE_DEPS_SHARED \$(LDLIBRARY)" - LIBPYTHON="\$(BLDLIBRARY)" -fi - -# On iOS the shared libraries must be linked with the Python framework -if test "$ac_sys_system" = "iOS"; then - MODULE_DEPS_SHARED="$MODULE_DEPS_SHARED \$(PYTHONFRAMEWORKDIR)/\$(PYTHONFRAMEWORK)" -fi - -# Check for --with-platlibdir -# /usr/$PLATLIBDIR/python$(VERSION)$(ABI_THREAD) - -PLATLIBDIR="lib" # XXX: We should probably calculate the defauly from libdir, if defined. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-platlibdir" >&5 -printf %s "checking for --with-platlibdir... " >&6; } - -# Check whether --with-platlibdir was given. -if test ${with_platlibdir+y} -then : - withval=$with_platlibdir; -# ignore 3 options: -# --with-platlibdir -# --with-platlibdir= -# --without-platlibdir -if test -n "$withval" -a "$withval" != yes -a "$withval" != no -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - PLATLIBDIR="$withval" -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac -fi - - - - -LIBDEST='${prefix}/${PLATLIBDIR}/python$(VERSION)$(ABI_THREAD)' -BINLIBDEST='${exec_prefix}/${PLATLIBDIR}/python$(VERSION)$(ABI_THREAD)' - - -if test x$PLATFORM_TRIPLET = x; then - LIBPL='$(LIBDEST)'"/config-${LDVERSION}" -else - LIBPL='$(LIBDEST)'"/config-${LDVERSION}-${PLATFORM_TRIPLET}" -fi - - -# Check for --with-wheel-pkg-dir=PATH - -WHEEL_PKG_DIR="" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-wheel-pkg-dir" >&5 -printf %s "checking for --with-wheel-pkg-dir... " >&6; } - -# Check whether --with-wheel-pkg-dir was given. -if test ${with_wheel_pkg_dir+y} -then : - withval=$with_wheel_pkg_dir; -if test -n "$withval"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - WHEEL_PKG_DIR="$withval" -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } ;; -esac -fi - - -# Check whether right shifting a negative integer extends the sign bit -# or fills with zeros (like the Cray J90, according to Tim Peters). -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether right shift extends the sign bit" >&5 -printf %s "checking whether right shift extends the sign bit... " >&6; } -if test ${ac_cv_rshift_extends_sign+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -if test "$cross_compiling" = yes -then : - ac_cv_rshift_extends_sign=yes -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main(void) -{ - return (((-1)>>3 == -1) ? 0 : 1); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_rshift_extends_sign=yes -else case e in #( - e) ac_cv_rshift_extends_sign=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rshift_extends_sign" >&5 -printf "%s\n" "$ac_cv_rshift_extends_sign" >&6; } -if test "$ac_cv_rshift_extends_sign" = no -then - -printf "%s\n" "#define SIGNED_RIGHT_SHIFT_ZERO_FILLS 1" >>confdefs.h - -fi - -# check for getc_unlocked and related locking functions -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getc_unlocked() and friends" >&5 -printf %s "checking for getc_unlocked() and friends... " >&6; } -if test ${ac_cv_have_getc_unlocked+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ - - FILE *f = fopen("/dev/null", "r"); - flockfile(f); - getc_unlocked(f); - funlockfile(f); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_have_getc_unlocked=yes -else case e in #( - e) ac_cv_have_getc_unlocked=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_getc_unlocked" >&5 -printf "%s\n" "$ac_cv_have_getc_unlocked" >&6; } -if test "$ac_cv_have_getc_unlocked" = yes -then - -printf "%s\n" "#define HAVE_GETC_UNLOCKED 1" >>confdefs.h - -fi - - - - - -# Check whether --with-readline was given. -if test ${with_readline+y} -then : - withval=$with_readline; - case $with_readline in #( - editline|edit) : - with_readline=edit ;; #( - yes|readline) : - with_readline=readline ;; #( - no) : - ;; #( - *) : - as_fn_error $? "proper usage is --with(out)-readline[=editline|readline|no]" "$LINENO" 5 - ;; -esac - -else case e in #( - e) with_readline=readline - ;; -esac -fi - - -if test "x$with_readline" = xreadline -then : - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline" >&5 -printf %s "checking for readline... " >&6; } - -if test -n "$LIBREADLINE_CFLAGS"; then - pkg_cv_LIBREADLINE_CFLAGS="$LIBREADLINE_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"readline\""; } >&5 - ($PKG_CONFIG --exists --print-errors "readline") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBREADLINE_CFLAGS=`$PKG_CONFIG --cflags "readline" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$LIBREADLINE_LIBS"; then - pkg_cv_LIBREADLINE_LIBS="$LIBREADLINE_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"readline\""; } >&5 - ($PKG_CONFIG --exists --print-errors "readline") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBREADLINE_LIBS=`$PKG_CONFIG --libs "readline" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - LIBREADLINE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "readline" 2>&1` - else - LIBREADLINE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "readline" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$LIBREADLINE_PKG_ERRORS" >&5 - - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBREADLINE_CFLAGS" - LIBS="$LIBS $LIBREADLINE_LIBS" - for ac_header in readline/readline.h -do : - ac_fn_c_check_header_compile "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default" -if test "x$ac_cv_header_readline_readline_h" = xyes -then : - printf "%s\n" "#define HAVE_READLINE_READLINE_H 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5 -printf %s "checking for readline in -lreadline... " >&6; } -if test ${ac_cv_lib_readline_readline+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lreadline $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char readline (void); -int -main (void) -{ -return readline (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_readline_readline=yes -else case e in #( - e) ac_cv_lib_readline_readline=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5 -printf "%s\n" "$ac_cv_lib_readline_readline" >&6; } -if test "x$ac_cv_lib_readline_readline" = xyes -then : - - LIBREADLINE=readline - READLINE_CFLAGS=${LIBREADLINE_CFLAGS-""} - READLINE_LIBS=${LIBREADLINE_LIBS-"-lreadline"} - -else case e in #( - e) with_readline=no ;; -esac -fi - - -else case e in #( - e) with_readline=no ;; -esac -fi - -done - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBREADLINE_CFLAGS" - LIBS="$LIBS $LIBREADLINE_LIBS" - for ac_header in readline/readline.h -do : - ac_fn_c_check_header_compile "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default" -if test "x$ac_cv_header_readline_readline_h" = xyes -then : - printf "%s\n" "#define HAVE_READLINE_READLINE_H 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5 -printf %s "checking for readline in -lreadline... " >&6; } -if test ${ac_cv_lib_readline_readline+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lreadline $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char readline (void); -int -main (void) -{ -return readline (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_readline_readline=yes -else case e in #( - e) ac_cv_lib_readline_readline=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5 -printf "%s\n" "$ac_cv_lib_readline_readline" >&6; } -if test "x$ac_cv_lib_readline_readline" = xyes -then : - - LIBREADLINE=readline - READLINE_CFLAGS=${LIBREADLINE_CFLAGS-""} - READLINE_LIBS=${LIBREADLINE_LIBS-"-lreadline"} - -else case e in #( - e) with_readline=no ;; -esac -fi - - -else case e in #( - e) with_readline=no ;; -esac -fi - -done - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -else - LIBREADLINE_CFLAGS=$pkg_cv_LIBREADLINE_CFLAGS - LIBREADLINE_LIBS=$pkg_cv_LIBREADLINE_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - - LIBREADLINE=readline - READLINE_CFLAGS=$LIBREADLINE_CFLAGS - READLINE_LIBS=$LIBREADLINE_LIBS - -fi - -fi - -if test "x$with_readline" = xedit -then : - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libedit" >&5 -printf %s "checking for libedit... " >&6; } - -if test -n "$LIBEDIT_CFLAGS"; then - pkg_cv_LIBEDIT_CFLAGS="$LIBEDIT_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libedit\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libedit") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBEDIT_CFLAGS=`$PKG_CONFIG --cflags "libedit" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$LIBEDIT_LIBS"; then - pkg_cv_LIBEDIT_LIBS="$LIBEDIT_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libedit\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libedit") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBEDIT_LIBS=`$PKG_CONFIG --libs "libedit" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libedit" 2>&1` - else - LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libedit" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$LIBEDIT_PKG_ERRORS" >&5 - - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBEDIT_CFLAGS" - LIBS="$LIBS $LIBEDIT_LIBS" - for ac_header in editline/readline.h -do : - ac_fn_c_check_header_compile "$LINENO" "editline/readline.h" "ac_cv_header_editline_readline_h" "$ac_includes_default" -if test "x$ac_cv_header_editline_readline_h" = xyes -then : - printf "%s\n" "#define HAVE_EDITLINE_READLINE_H 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline in -ledit" >&5 -printf %s "checking for readline in -ledit... " >&6; } -if test ${ac_cv_lib_edit_readline+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-ledit $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char readline (void); -int -main (void) -{ -return readline (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_edit_readline=yes -else case e in #( - e) ac_cv_lib_edit_readline=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_readline" >&5 -printf "%s\n" "$ac_cv_lib_edit_readline" >&6; } -if test "x$ac_cv_lib_edit_readline" = xyes -then : - - LIBREADLINE=edit - printf "%s\n" "#define WITH_EDITLINE 1" >>confdefs.h - - READLINE_CFLAGS=${LIBEDIT_CFLAGS-""} - READLINE_LIBS=${LIBEDIT_LIBS-"-ledit"} - -else case e in #( - e) with_readline=no ;; -esac -fi - - -else case e in #( - e) with_readline=no ;; -esac -fi - -done - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $LIBEDIT_CFLAGS" - LIBS="$LIBS $LIBEDIT_LIBS" - for ac_header in editline/readline.h -do : - ac_fn_c_check_header_compile "$LINENO" "editline/readline.h" "ac_cv_header_editline_readline_h" "$ac_includes_default" -if test "x$ac_cv_header_editline_readline_h" = xyes -then : - printf "%s\n" "#define HAVE_EDITLINE_READLINE_H 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline in -ledit" >&5 -printf %s "checking for readline in -ledit... " >&6; } -if test ${ac_cv_lib_edit_readline+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-ledit $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char readline (void); -int -main (void) -{ -return readline (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_edit_readline=yes -else case e in #( - e) ac_cv_lib_edit_readline=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_readline" >&5 -printf "%s\n" "$ac_cv_lib_edit_readline" >&6; } -if test "x$ac_cv_lib_edit_readline" = xyes -then : - - LIBREADLINE=edit - printf "%s\n" "#define WITH_EDITLINE 1" >>confdefs.h - - READLINE_CFLAGS=${LIBEDIT_CFLAGS-""} - READLINE_LIBS=${LIBEDIT_LIBS-"-ledit"} - -else case e in #( - e) with_readline=no ;; -esac -fi - - -else case e in #( - e) with_readline=no ;; -esac -fi - -done - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -else - LIBEDIT_CFLAGS=$pkg_cv_LIBEDIT_CFLAGS - LIBEDIT_LIBS=$pkg_cv_LIBEDIT_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - - printf "%s\n" "#define WITH_EDITLINE 1" >>confdefs.h - - LIBREADLINE=edit - READLINE_CFLAGS=$LIBEDIT_CFLAGS - READLINE_LIBS=$LIBEDIT_LIBS - -fi - -fi - -READLINE_CFLAGS=$(echo $READLINE_CFLAGS | sed 's/-D_XOPEN_SOURCE=600//g') - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link readline" >&5 -printf %s "checking how to link readline... " >&6; } -if test "x$with_readline" = xno -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_readline (CFLAGS: $READLINE_CFLAGS, LIBS: $READLINE_LIBS)" >&5 -printf "%s\n" "$with_readline (CFLAGS: $READLINE_CFLAGS, LIBS: $READLINE_LIBS)" >&6; } - - save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - CPPFLAGS="$CPPFLAGS $READLINE_CFLAGS" - LIBS="$LIBS $READLINE_LIBS" - LIBS_SAVE=$LIBS - - - - # check for readline 2.2 - ac_fn_check_decl "$LINENO" "rl_completion_append_character" "ac_cv_have_decl_rl_completion_append_character" " - #include /* Must be first for Gnu Readline */ - #ifdef WITH_EDITLINE - # include - #else - # include - # include - #endif - -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_rl_completion_append_character" = xyes -then : - - -printf "%s\n" "#define HAVE_RL_COMPLETION_APPEND_CHARACTER 1" >>confdefs.h - - -fi - - ac_fn_check_decl "$LINENO" "rl_completion_suppress_append" "ac_cv_have_decl_rl_completion_suppress_append" " - #include /* Must be first for Gnu Readline */ - #ifdef WITH_EDITLINE - # include - #else - # include - # include - #endif - -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_rl_completion_suppress_append" = xyes -then : - - -printf "%s\n" "#define HAVE_RL_COMPLETION_SUPPRESS_APPEND 1" >>confdefs.h - - -fi - - # check for readline 4.0 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_pre_input_hook in -l$LIBREADLINE" >&5 -printf %s "checking for rl_pre_input_hook in -l$LIBREADLINE... " >&6; } -if test ${ac_cv_readline_rl_pre_input_hook+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include /* Must be first for Gnu Readline */ - #ifdef WITH_EDITLINE - # include - #else - # include - # include - #endif - -int -main (void) -{ -void *x = rl_pre_input_hook - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_readline_rl_pre_input_hook=yes -else case e in #( - e) ac_cv_readline_rl_pre_input_hook=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_rl_pre_input_hook" >&5 -printf "%s\n" "$ac_cv_readline_rl_pre_input_hook" >&6; } - if test "x$ac_cv_readline_rl_pre_input_hook" = xyes -then : - - -printf "%s\n" "#define HAVE_RL_PRE_INPUT_HOOK 1" >>confdefs.h - - -fi - - # also in 4.0 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_completion_display_matches_hook in -l$LIBREADLINE" >&5 -printf %s "checking for rl_completion_display_matches_hook in -l$LIBREADLINE... " >&6; } -if test ${ac_cv_readline_rl_completion_display_matches_hook+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include /* Must be first for Gnu Readline */ - #ifdef WITH_EDITLINE - # include - #else - # include - # include - #endif - -int -main (void) -{ -void *x = rl_completion_display_matches_hook - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_readline_rl_completion_display_matches_hook=yes -else case e in #( - e) ac_cv_readline_rl_completion_display_matches_hook=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_rl_completion_display_matches_hook" >&5 -printf "%s\n" "$ac_cv_readline_rl_completion_display_matches_hook" >&6; } - if test "x$ac_cv_readline_rl_completion_display_matches_hook" = xyes -then : - - -printf "%s\n" "#define HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK 1" >>confdefs.h - - -fi - - # also in 4.0, but not in editline - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_resize_terminal in -l$LIBREADLINE" >&5 -printf %s "checking for rl_resize_terminal in -l$LIBREADLINE... " >&6; } -if test ${ac_cv_readline_rl_resize_terminal+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include /* Must be first for Gnu Readline */ - #ifdef WITH_EDITLINE - # include - #else - # include - # include - #endif - -int -main (void) -{ -void *x = rl_resize_terminal - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_readline_rl_resize_terminal=yes -else case e in #( - e) ac_cv_readline_rl_resize_terminal=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_rl_resize_terminal" >&5 -printf "%s\n" "$ac_cv_readline_rl_resize_terminal" >&6; } - if test "x$ac_cv_readline_rl_resize_terminal" = xyes -then : - - -printf "%s\n" "#define HAVE_RL_RESIZE_TERMINAL 1" >>confdefs.h - - -fi - - # check for readline 4.2 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_completion_matches in -l$LIBREADLINE" >&5 -printf %s "checking for rl_completion_matches in -l$LIBREADLINE... " >&6; } -if test ${ac_cv_readline_rl_completion_matches+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include /* Must be first for Gnu Readline */ - #ifdef WITH_EDITLINE - # include - #else - # include - # include - #endif - -int -main (void) -{ -void *x = rl_completion_matches - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_readline_rl_completion_matches=yes -else case e in #( - e) ac_cv_readline_rl_completion_matches=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_rl_completion_matches" >&5 -printf "%s\n" "$ac_cv_readline_rl_completion_matches" >&6; } - if test "x$ac_cv_readline_rl_completion_matches" = xyes -then : - - -printf "%s\n" "#define HAVE_RL_COMPLETION_MATCHES 1" >>confdefs.h - - -fi - - # also in readline 4.2 - ac_fn_check_decl "$LINENO" "rl_catch_signals" "ac_cv_have_decl_rl_catch_signals" " - #include /* Must be first for Gnu Readline */ - #ifdef WITH_EDITLINE - # include - #else - # include - # include - #endif - -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_rl_catch_signals" = xyes -then : - - -printf "%s\n" "#define HAVE_RL_CATCH_SIGNAL 1" >>confdefs.h - - -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for append_history in -l$LIBREADLINE" >&5 -printf %s "checking for append_history in -l$LIBREADLINE... " >&6; } -if test ${ac_cv_readline_append_history+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include /* Must be first for Gnu Readline */ - #ifdef WITH_EDITLINE - # include - #else - # include - # include - #endif - -int -main (void) -{ -void *x = append_history - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_readline_append_history=yes -else case e in #( - e) ac_cv_readline_append_history=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_append_history" >&5 -printf "%s\n" "$ac_cv_readline_append_history" >&6; } - if test "x$ac_cv_readline_append_history" = xyes -then : - - -printf "%s\n" "#define HAVE_RL_APPEND_HISTORY 1" >>confdefs.h - - -fi - - # in readline as well as newer editline (April 2023) - ac_fn_c_check_type "$LINENO" "rl_compdisp_func_t" "ac_cv_type_rl_compdisp_func_t" " - #include /* Must be first for Gnu Readline */ - #ifdef WITH_EDITLINE - # include - #else - # include - # include - #endif - -" -if test "x$ac_cv_type_rl_compdisp_func_t" = xyes -then : - -printf "%s\n" "#define HAVE_RL_COMPDISP_FUNC_T 1" >>confdefs.h - - -fi - - - # Some editline versions declare rl_startup_hook as taking no args, others - # declare it as taking 2. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if rl_startup_hook takes arguments" >&5 -printf %s "checking if rl_startup_hook takes arguments... " >&6; } -if test ${ac_cv_readline_rl_startup_hook_takes_args+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include /* Must be first for Gnu Readline */ - #ifdef WITH_EDITLINE - # include - #else - # include - # include - #endif - - extern int test_hook_func(const char *text, int state); -int -main (void) -{ -rl_startup_hook=test_hook_func; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_readline_rl_startup_hook_takes_args=yes -else case e in #( - e) ac_cv_readline_rl_startup_hook_takes_args=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_rl_startup_hook_takes_args" >&5 -printf "%s\n" "$ac_cv_readline_rl_startup_hook_takes_args" >&6; } - if test "x$ac_cv_readline_rl_startup_hook_takes_args" = xyes -then : - - -printf "%s\n" "#define Py_RL_STARTUP_HOOK_TAKES_ARGS 1" >>confdefs.h - - -fi - - - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken nice()" >&5 -printf %s "checking for broken nice()... " >&6; } -if test ${ac_cv_broken_nice+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -if test "$cross_compiling" = yes -then : - ac_cv_broken_nice=no -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -int main(void) -{ - int val1 = nice(1); - if (val1 != -1 && val1 == nice(2)) - exit(0); - exit(1); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_broken_nice=yes -else case e in #( - e) ac_cv_broken_nice=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_nice" >&5 -printf "%s\n" "$ac_cv_broken_nice" >&6; } -if test "$ac_cv_broken_nice" = yes -then - -printf "%s\n" "#define HAVE_BROKEN_NICE 1" >>confdefs.h - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken poll()" >&5 -printf %s "checking for broken poll()... " >&6; } -if test ${ac_cv_broken_poll+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "$cross_compiling" = yes -then : - ac_cv_broken_poll=no -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -int main(void) -{ - struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 }; - int poll_test; - - close (42); - - poll_test = poll(&poll_struct, 1, 0); - if (poll_test < 0) - return 0; - else if (poll_test == 0 && poll_struct.revents != POLLNVAL) - return 0; - else - return 1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_broken_poll=yes -else case e in #( - e) ac_cv_broken_poll=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_poll" >&5 -printf "%s\n" "$ac_cv_broken_poll" >&6; } -if test "$ac_cv_broken_poll" = yes -then - -printf "%s\n" "#define HAVE_BROKEN_POLL 1" >>confdefs.h - -fi - -# check tzset(3) exists and works like we expect it to -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working tzset()" >&5 -printf %s "checking for working tzset()... " >&6; } -if test ${ac_cv_working_tzset+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -if test "$cross_compiling" = yes -then : - ac_cv_working_tzset=no -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include - -#if HAVE_TZNAME -extern char *tzname[]; -#endif - -int main(void) -{ - /* Note that we need to ensure that not only does tzset(3) - do 'something' with localtime, but it works as documented - in the library reference and as expected by the test suite. - This includes making sure that tzname is set properly if - tm->tm_zone does not exist since it is the alternative way - of getting timezone info. - - Red Hat 6.2 doesn't understand the southern hemisphere - after New Year's Day. - */ - - time_t groundhogday = 1044144000; /* GMT-based */ - time_t midyear = groundhogday + (365 * 24 * 3600 / 2); - - putenv("TZ=UTC+0"); - tzset(); - if (localtime(&groundhogday)->tm_hour != 0) - exit(1); -#if HAVE_TZNAME - /* For UTC, tzname[1] is sometimes "", sometimes " " */ - if (strcmp(tzname[0], "UTC") || - (tzname[1][0] != 0 && tzname[1][0] != ' ')) - exit(1); -#endif - - putenv("TZ=EST+5EDT,M4.1.0,M10.5.0"); - tzset(); - if (localtime(&groundhogday)->tm_hour != 19) - exit(1); -#if HAVE_TZNAME - if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT")) - exit(1); -#endif - - putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0"); - tzset(); - if (localtime(&groundhogday)->tm_hour != 11) - exit(1); -#if HAVE_TZNAME - if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT")) - exit(1); -#endif - -#if HAVE_STRUCT_TM_TM_ZONE - if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT")) - exit(1); - if (strcmp(localtime(&midyear)->tm_zone, "AEST")) - exit(1); -#endif - - exit(0); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_working_tzset=yes -else case e in #( - e) ac_cv_working_tzset=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_tzset" >&5 -printf "%s\n" "$ac_cv_working_tzset" >&6; } -if test "$ac_cv_working_tzset" = yes -then - -printf "%s\n" "#define HAVE_WORKING_TZSET 1" >>confdefs.h - -fi - -# Look for subsecond timestamps in struct stat -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tv_nsec in struct stat" >&5 -printf %s "checking for tv_nsec in struct stat... " >&6; } -if test ${ac_cv_stat_tv_nsec+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ - -struct stat st; -st.st_mtim.tv_nsec = 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_stat_tv_nsec=yes -else case e in #( - e) ac_cv_stat_tv_nsec=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_stat_tv_nsec" >&5 -printf "%s\n" "$ac_cv_stat_tv_nsec" >&6; } -if test "$ac_cv_stat_tv_nsec" = yes -then - -printf "%s\n" "#define HAVE_STAT_TV_NSEC 1" >>confdefs.h - -fi - -# Look for BSD style subsecond timestamps in struct stat -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tv_nsec2 in struct stat" >&5 -printf %s "checking for tv_nsec2 in struct stat... " >&6; } -if test ${ac_cv_stat_tv_nsec2+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ - -struct stat st; -st.st_mtimespec.tv_nsec = 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_stat_tv_nsec2=yes -else case e in #( - e) ac_cv_stat_tv_nsec2=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_stat_tv_nsec2" >&5 -printf "%s\n" "$ac_cv_stat_tv_nsec2" >&6; } -if test "$ac_cv_stat_tv_nsec2" = yes -then - -printf "%s\n" "#define HAVE_STAT_TV_NSEC2 1" >>confdefs.h - -fi - -have_curses=no -have_panel=no - - - -# Check for ncursesw/panelw first. If that fails, try ncurses/panel. - - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ncursesw" >&5 -printf %s "checking for ncursesw... " >&6; } - -if test -n "$CURSES_CFLAGS"; then - pkg_cv_CURSES_CFLAGS="$CURSES_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncursesw\""; } >&5 - ($PKG_CONFIG --exists --print-errors "ncursesw") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_CURSES_CFLAGS=`$PKG_CONFIG --cflags "ncursesw" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$CURSES_LIBS"; then - pkg_cv_CURSES_LIBS="$CURSES_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncursesw\""; } >&5 - ($PKG_CONFIG --exists --print-errors "ncursesw") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_CURSES_LIBS=`$PKG_CONFIG --libs "ncursesw" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - CURSES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ncursesw" 2>&1` - else - CURSES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ncursesw" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$CURSES_PKG_ERRORS" >&5 - - have_curses=no -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - have_curses=no -else - CURSES_CFLAGS=$pkg_cv_CURSES_CFLAGS - CURSES_LIBS=$pkg_cv_CURSES_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_NCURSESW 1" >>confdefs.h - - have_curses=yes - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for panelw" >&5 -printf %s "checking for panelw... " >&6; } - -if test -n "$PANEL_CFLAGS"; then - pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panelw\""; } >&5 - ($PKG_CONFIG --exists --print-errors "panelw") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "panelw" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$PANEL_LIBS"; then - pkg_cv_PANEL_LIBS="$PANEL_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panelw\""; } >&5 - ($PKG_CONFIG --exists --print-errors "panelw") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "panelw" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "panelw" 2>&1` - else - PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "panelw" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$PANEL_PKG_ERRORS" >&5 - - have_panel=no -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - have_panel=no -else - PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS - PANEL_LIBS=$pkg_cv_PANEL_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_PANELW 1" >>confdefs.h - - have_panel=yes -fi -fi - - -if test "x$have_curses" = xno -then : - - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ncurses" >&5 -printf %s "checking for ncurses... " >&6; } - -if test -n "$CURSES_CFLAGS"; then - pkg_cv_CURSES_CFLAGS="$CURSES_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncurses\""; } >&5 - ($PKG_CONFIG --exists --print-errors "ncurses") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_CURSES_CFLAGS=`$PKG_CONFIG --cflags "ncurses" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$CURSES_LIBS"; then - pkg_cv_CURSES_LIBS="$CURSES_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncurses\""; } >&5 - ($PKG_CONFIG --exists --print-errors "ncurses") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_CURSES_LIBS=`$PKG_CONFIG --libs "ncurses" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - CURSES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ncurses" 2>&1` - else - CURSES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ncurses" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$CURSES_PKG_ERRORS" >&5 - - have_curses=no -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - have_curses=no -else - CURSES_CFLAGS=$pkg_cv_CURSES_CFLAGS - CURSES_LIBS=$pkg_cv_CURSES_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_NCURSES 1" >>confdefs.h - - have_curses=yes - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for panel" >&5 -printf %s "checking for panel... " >&6; } - -if test -n "$PANEL_CFLAGS"; then - pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panel\""; } >&5 - ($PKG_CONFIG --exists --print-errors "panel") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "panel" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$PANEL_LIBS"; then - pkg_cv_PANEL_LIBS="$PANEL_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panel\""; } >&5 - ($PKG_CONFIG --exists --print-errors "panel") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "panel" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "panel" 2>&1` - else - PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "panel" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$PANEL_PKG_ERRORS" >&5 - - have_panel=no -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - have_panel=no -else - PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS - PANEL_LIBS=$pkg_cv_PANEL_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_PANEL 1" >>confdefs.h - - have_panel=yes -fi -fi - - -fi - -save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - # Make sure we've got the header defines. - as_fn_append CPPFLAGS " $CURSES_CFLAGS $PANEL_CFLAGS" - ac_fn_c_check_header_compile "$LINENO" "ncursesw/curses.h" "ac_cv_header_ncursesw_curses_h" "$ac_includes_default" -if test "x$ac_cv_header_ncursesw_curses_h" = xyes -then : - printf "%s\n" "#define HAVE_NCURSESW_CURSES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "ncursesw/ncurses.h" "ac_cv_header_ncursesw_ncurses_h" "$ac_includes_default" -if test "x$ac_cv_header_ncursesw_ncurses_h" = xyes -then : - printf "%s\n" "#define HAVE_NCURSESW_NCURSES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "ncursesw/panel.h" "ac_cv_header_ncursesw_panel_h" "$ac_includes_default" -if test "x$ac_cv_header_ncursesw_panel_h" = xyes -then : - printf "%s\n" "#define HAVE_NCURSESW_PANEL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "ncurses/curses.h" "ac_cv_header_ncurses_curses_h" "$ac_includes_default" -if test "x$ac_cv_header_ncurses_curses_h" = xyes -then : - printf "%s\n" "#define HAVE_NCURSES_CURSES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "ncurses/ncurses.h" "ac_cv_header_ncurses_ncurses_h" "$ac_includes_default" -if test "x$ac_cv_header_ncurses_ncurses_h" = xyes -then : - printf "%s\n" "#define HAVE_NCURSES_NCURSES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "ncurses/panel.h" "ac_cv_header_ncurses_panel_h" "$ac_includes_default" -if test "x$ac_cv_header_ncurses_panel_h" = xyes -then : - printf "%s\n" "#define HAVE_NCURSES_PANEL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "curses.h" "ac_cv_header_curses_h" "$ac_includes_default" -if test "x$ac_cv_header_curses_h" = xyes -then : - printf "%s\n" "#define HAVE_CURSES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "ncurses.h" "ac_cv_header_ncurses_h" "$ac_includes_default" -if test "x$ac_cv_header_ncurses_h" = xyes -then : - printf "%s\n" "#define HAVE_NCURSES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "panel.h" "ac_cv_header_panel_h" "$ac_includes_default" -if test "x$ac_cv_header_panel_h" = xyes -then : - printf "%s\n" "#define HAVE_PANEL_H 1" >>confdefs.h - -fi - - - # Check that we're able to link with crucial curses/panel functions. This - # also serves as a fallback in case pkg-config failed. - as_fn_append LIBS " $CURSES_LIBS $PANEL_LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing initscr" >&5 -printf %s "checking for library containing initscr... " >&6; } -if test ${ac_cv_search_initscr+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char initscr (void); -int -main (void) -{ -return initscr (); - ; - return 0; -} -_ACEOF -for ac_lib in '' ncursesw ncurses -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_initscr=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_initscr+y} -then : - break -fi -done -if test ${ac_cv_search_initscr+y} -then : - -else case e in #( - e) ac_cv_search_initscr=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_initscr" >&5 -printf "%s\n" "$ac_cv_search_initscr" >&6; } -ac_res=$ac_cv_search_initscr -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - if test "x$have_curses" = xno -then : - have_curses=yes - CURSES_LIBS=${CURSES_LIBS-"$ac_cv_search_initscr"} -fi -else case e in #( - e) have_curses=no ;; -esac -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing update_panels" >&5 -printf %s "checking for library containing update_panels... " >&6; } -if test ${ac_cv_search_update_panels+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char update_panels (void); -int -main (void) -{ -return update_panels (); - ; - return 0; -} -_ACEOF -for ac_lib in '' panelw panel -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_update_panels=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_update_panels+y} -then : - break -fi -done -if test ${ac_cv_search_update_panels+y} -then : - -else case e in #( - e) ac_cv_search_update_panels=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_update_panels" >&5 -printf "%s\n" "$ac_cv_search_update_panels" >&6; } -ac_res=$ac_cv_search_update_panels -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - if test "x$have_panel" = xno -then : - have_panel=yes - PANEL_LIBS=${PANEL_LIBS-"$ac_cv_search_update_panels"} -fi -else case e in #( - e) have_panel=no ;; -esac -fi - - - - -if test "have_curses" != "no" -then : - -CURSES_CFLAGS=$(echo $CURSES_CFLAGS | sed 's/-D_XOPEN_SOURCE=600//g') - -if test "x$ac_sys_system" = xDarwin -then : - - - as_fn_append CURSES_CFLAGS " -D_XOPEN_SOURCE_EXTENDED=1" - -fi - -PANEL_CFLAGS=$(echo $PANEL_CFLAGS | sed 's/-D_XOPEN_SOURCE=600//g') - -# On Solaris, term.h requires curses.h -ac_fn_c_check_header_compile "$LINENO" "term.h" "ac_cv_header_term_h" " -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -" -if test "x$ac_cv_header_term_h" = xyes -then : - printf "%s\n" "#define HAVE_TERM_H 1" >>confdefs.h - -fi - - -# On HP/UX 11.0, mvwdelch is a block with a return statement -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mvwdelch is an expression" >&5 -printf %s "checking whether mvwdelch is an expression... " >&6; } -if test ${ac_cv_mvwdelch_is_expression+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - int rtn; - rtn = mvwdelch(0,0,0); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_mvwdelch_is_expression=yes -else case e in #( - e) ac_cv_mvwdelch_is_expression=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mvwdelch_is_expression" >&5 -printf "%s\n" "$ac_cv_mvwdelch_is_expression" >&6; } - -if test "$ac_cv_mvwdelch_is_expression" = yes -then - -printf "%s\n" "#define MVWDELCH_IS_EXPRESSION 1" >>confdefs.h - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether WINDOW has _flags" >&5 -printf %s "checking whether WINDOW has _flags... " >&6; } -if test ${ac_cv_window_has_flags+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - WINDOW *w; - w->_flags = 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_window_has_flags=yes -else case e in #( - e) ac_cv_window_has_flags=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_window_has_flags" >&5 -printf "%s\n" "$ac_cv_window_has_flags" >&6; } - - -if test "$ac_cv_window_has_flags" = yes -then - -printf "%s\n" "#define WINDOW_HAS_FLAGS 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function is_pad" >&5 -printf %s "checking for curses function is_pad... " >&6; } -if test ${ac_cv_lib_curses_is_pad+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - #ifndef is_pad - void *x=is_pad - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_lib_curses_is_pad=yes -else case e in #( - e) ac_cv_lib_curses_is_pad=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_is_pad" >&5 -printf "%s\n" "$ac_cv_lib_curses_is_pad" >&6; } - if test "x$ac_cv_lib_curses_is_pad" = xyes -then : - -printf "%s\n" "#define HAVE_CURSES_IS_PAD 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function is_term_resized" >&5 -printf %s "checking for curses function is_term_resized... " >&6; } -if test ${ac_cv_lib_curses_is_term_resized+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - #ifndef is_term_resized - void *x=is_term_resized - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_lib_curses_is_term_resized=yes -else case e in #( - e) ac_cv_lib_curses_is_term_resized=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_is_term_resized" >&5 -printf "%s\n" "$ac_cv_lib_curses_is_term_resized" >&6; } - if test "x$ac_cv_lib_curses_is_term_resized" = xyes -then : - -printf "%s\n" "#define HAVE_CURSES_IS_TERM_RESIZED 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function resize_term" >&5 -printf %s "checking for curses function resize_term... " >&6; } -if test ${ac_cv_lib_curses_resize_term+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - #ifndef resize_term - void *x=resize_term - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_lib_curses_resize_term=yes -else case e in #( - e) ac_cv_lib_curses_resize_term=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_resize_term" >&5 -printf "%s\n" "$ac_cv_lib_curses_resize_term" >&6; } - if test "x$ac_cv_lib_curses_resize_term" = xyes -then : - -printf "%s\n" "#define HAVE_CURSES_RESIZE_TERM 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function resizeterm" >&5 -printf %s "checking for curses function resizeterm... " >&6; } -if test ${ac_cv_lib_curses_resizeterm+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - #ifndef resizeterm - void *x=resizeterm - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_lib_curses_resizeterm=yes -else case e in #( - e) ac_cv_lib_curses_resizeterm=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_resizeterm" >&5 -printf "%s\n" "$ac_cv_lib_curses_resizeterm" >&6; } - if test "x$ac_cv_lib_curses_resizeterm" = xyes -then : - -printf "%s\n" "#define HAVE_CURSES_RESIZETERM 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function immedok" >&5 -printf %s "checking for curses function immedok... " >&6; } -if test ${ac_cv_lib_curses_immedok+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - #ifndef immedok - void *x=immedok - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_lib_curses_immedok=yes -else case e in #( - e) ac_cv_lib_curses_immedok=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_immedok" >&5 -printf "%s\n" "$ac_cv_lib_curses_immedok" >&6; } - if test "x$ac_cv_lib_curses_immedok" = xyes -then : - -printf "%s\n" "#define HAVE_CURSES_IMMEDOK 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function syncok" >&5 -printf %s "checking for curses function syncok... " >&6; } -if test ${ac_cv_lib_curses_syncok+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - #ifndef syncok - void *x=syncok - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_lib_curses_syncok=yes -else case e in #( - e) ac_cv_lib_curses_syncok=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_syncok" >&5 -printf "%s\n" "$ac_cv_lib_curses_syncok" >&6; } - if test "x$ac_cv_lib_curses_syncok" = xyes -then : - -printf "%s\n" "#define HAVE_CURSES_SYNCOK 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function wchgat" >&5 -printf %s "checking for curses function wchgat... " >&6; } -if test ${ac_cv_lib_curses_wchgat+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - #ifndef wchgat - void *x=wchgat - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_lib_curses_wchgat=yes -else case e in #( - e) ac_cv_lib_curses_wchgat=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_wchgat" >&5 -printf "%s\n" "$ac_cv_lib_curses_wchgat" >&6; } - if test "x$ac_cv_lib_curses_wchgat" = xyes -then : - -printf "%s\n" "#define HAVE_CURSES_WCHGAT 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function filter" >&5 -printf %s "checking for curses function filter... " >&6; } -if test ${ac_cv_lib_curses_filter+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - #ifndef filter - void *x=filter - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_lib_curses_filter=yes -else case e in #( - e) ac_cv_lib_curses_filter=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_filter" >&5 -printf "%s\n" "$ac_cv_lib_curses_filter" >&6; } - if test "x$ac_cv_lib_curses_filter" = xyes -then : - -printf "%s\n" "#define HAVE_CURSES_FILTER 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function has_key" >&5 -printf %s "checking for curses function has_key... " >&6; } -if test ${ac_cv_lib_curses_has_key+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - #ifndef has_key - void *x=has_key - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_lib_curses_has_key=yes -else case e in #( - e) ac_cv_lib_curses_has_key=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_has_key" >&5 -printf "%s\n" "$ac_cv_lib_curses_has_key" >&6; } - if test "x$ac_cv_lib_curses_has_key" = xyes -then : - -printf "%s\n" "#define HAVE_CURSES_HAS_KEY 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function typeahead" >&5 -printf %s "checking for curses function typeahead... " >&6; } -if test ${ac_cv_lib_curses_typeahead+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - #ifndef typeahead - void *x=typeahead - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_lib_curses_typeahead=yes -else case e in #( - e) ac_cv_lib_curses_typeahead=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_typeahead" >&5 -printf "%s\n" "$ac_cv_lib_curses_typeahead" >&6; } - if test "x$ac_cv_lib_curses_typeahead" = xyes -then : - -printf "%s\n" "#define HAVE_CURSES_TYPEAHEAD 1" >>confdefs.h - -fi - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function use_env" >&5 -printf %s "checking for curses function use_env... " >&6; } -if test ${ac_cv_lib_curses_use_env+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define NCURSES_OPAQUE 0 -#if defined(HAVE_NCURSESW_NCURSES_H) -# include -#elif defined(HAVE_NCURSESW_CURSES_H) -# include -#elif defined(HAVE_NCURSES_NCURSES_H) -# include -#elif defined(HAVE_NCURSES_CURSES_H) -# include -#elif defined(HAVE_NCURSES_H) -# include -#elif defined(HAVE_CURSES_H) -# include -#endif - -int -main (void) -{ - - #ifndef use_env - void *x=use_env - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_lib_curses_use_env=yes -else case e in #( - e) ac_cv_lib_curses_use_env=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_use_env" >&5 -printf "%s\n" "$ac_cv_lib_curses_use_env" >&6; } - if test "x$ac_cv_lib_curses_use_env" = xyes -then : - -printf "%s\n" "#define HAVE_CURSES_USE_ENV 1" >>confdefs.h - -fi - - - -CPPFLAGS=$ac_save_cppflags - -fi -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for device files" >&5 -printf "%s\n" "$as_me: checking for device files" >&6;} - -if test "$ac_sys_system" = "Linux-android" || test "$ac_sys_system" = "iOS"; then - ac_cv_file__dev_ptmx=no - ac_cv_file__dev_ptc=no -else - if test "x$cross_compiling" = xyes; then - if test "${ac_cv_file__dev_ptmx+set}" != set; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /dev/ptmx" >&5 -printf %s "checking for /dev/ptmx... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not set" >&5 -printf "%s\n" "not set" >&6; } - as_fn_error $? "set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling" "$LINENO" 5 - fi - if test "${ac_cv_file__dev_ptc+set}" != set; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /dev/ptc" >&5 -printf %s "checking for /dev/ptc... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not set" >&5 -printf "%s\n" "not set" >&6; } - as_fn_error $? "set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling" "$LINENO" 5 - fi - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /dev/ptmx" >&5 -printf %s "checking for /dev/ptmx... " >&6; } -if test ${ac_cv_file__dev_ptmx+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) test "$cross_compiling" = yes && - as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 -if test -r "/dev/ptmx"; then - ac_cv_file__dev_ptmx=yes -else - ac_cv_file__dev_ptmx=no -fi ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_ptmx" >&5 -printf "%s\n" "$ac_cv_file__dev_ptmx" >&6; } -if test "x$ac_cv_file__dev_ptmx" = xyes -then : - -fi - - if test "x$ac_cv_file__dev_ptmx" = xyes; then - -printf "%s\n" "#define HAVE_DEV_PTMX 1" >>confdefs.h - - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /dev/ptc" >&5 -printf %s "checking for /dev/ptc... " >&6; } -if test ${ac_cv_file__dev_ptc+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) test "$cross_compiling" = yes && - as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 -if test -r "/dev/ptc"; then - ac_cv_file__dev_ptc=yes -else - ac_cv_file__dev_ptc=no -fi ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_ptc" >&5 -printf "%s\n" "$ac_cv_file__dev_ptc" >&6; } -if test "x$ac_cv_file__dev_ptc" = xyes -then : - -fi - - if test "x$ac_cv_file__dev_ptc" = xyes; then - -printf "%s\n" "#define HAVE_DEV_PTC 1" >>confdefs.h - - fi -fi - -if test $ac_sys_system = Darwin -then - LIBS="$LIBS -framework CoreFoundation" -fi - -ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_type_socklen_t" = xyes -then : - -printf "%s\n" "#define HAVE_SOCKLEN_T 1" >>confdefs.h - - -else case e in #( - e) -printf "%s\n" "#define socklen_t int" >>confdefs.h - ;; -esac -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken mbstowcs" >&5 -printf %s "checking for broken mbstowcs... " >&6; } -if test ${ac_cv_broken_mbstowcs+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "$cross_compiling" = yes -then : - ac_cv_broken_mbstowcs=no -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -int main(void) { - size_t len = -1; - const char *str = "text"; - len = mbstowcs(NULL, str, 0); - return (len != 4); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_broken_mbstowcs=no -else case e in #( - e) ac_cv_broken_mbstowcs=yes ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_mbstowcs" >&5 -printf "%s\n" "$ac_cv_broken_mbstowcs" >&6; } -if test "$ac_cv_broken_mbstowcs" = yes -then - -printf "%s\n" "#define HAVE_BROKEN_MBSTOWCS 1" >>confdefs.h - -fi - -# Check for --with-computed-gotos -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-computed-gotos" >&5 -printf %s "checking for --with-computed-gotos... " >&6; } - -# Check whether --with-computed-gotos was given. -if test ${with_computed_gotos+y} -then : - withval=$with_computed_gotos; -if test "$withval" = yes -then - -printf "%s\n" "#define USE_COMPUTED_GOTOS 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -fi -if test "$withval" = no -then - -printf "%s\n" "#define USE_COMPUTED_GOTOS 0" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no value specified" >&5 -printf "%s\n" "no value specified" >&6; } ;; -esac -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports computed gotos" >&5 -printf %s "checking whether $CC supports computed gotos... " >&6; } -if test ${ac_cv_computed_gotos+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "$cross_compiling" = yes -then : - if test "${with_computed_gotos+set}" = set; then - ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos" - else - ac_cv_computed_gotos=no - fi -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main(int argc, char **argv) -{ - static void *targets[1] = { &&LABEL1 }; - goto LABEL2; -LABEL1: - return 0; -LABEL2: - goto *targets[0]; - return 1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_computed_gotos=yes -else case e in #( - e) ac_cv_computed_gotos=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_computed_gotos" >&5 -printf "%s\n" "$ac_cv_computed_gotos" >&6; } -case "$ac_cv_computed_gotos" in yes*) - -printf "%s\n" "#define HAVE_COMPUTED_GOTOS 1" >>confdefs.h - -esac - -# Check for --with-tail-call-interp -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-tail-call-interp" >&5 -printf %s "checking for --with-tail-call-interp... " >&6; } - -# Check whether --with-tail-call-interp was given. -if test ${with_tail_call_interp+y} -then : - withval=$with_tail_call_interp; -if test "$withval" = yes -then - -printf "%s\n" "#define _Py_TAIL_CALL_INTERP 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -fi -if test "$withval" = no -then - -printf "%s\n" "#define _Py_TAIL_CALL_INTERP 0" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no value specified" >&5 -printf "%s\n" "no value specified" >&6; } ;; -esac -fi - - -# Check for --with-remote-debug -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-remote-debug" >&5 -printf %s "checking for --with-remote-debug... " >&6; } - -# Check whether --with-remote-debug was given. -if test ${with_remote_debug+y} -then : - withval=$with_remote_debug; -else case e in #( - e) with_remote_debug=yes ;; -esac -fi - - -if test "$with_remote_debug" = yes; then - -printf "%s\n" "#define Py_REMOTE_DEBUG 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -case $ac_sys_system in -AIX*) - -printf "%s\n" "#define HAVE_BROKEN_PIPE_BUF 1" >>confdefs.h - ;; -esac - - - - -for h in `(cd $srcdir;echo Python/thread_*.h)` -do - THREADHEADERS="$THREADHEADERS \$(srcdir)/$h" -done - - -SRCDIRS="\ - Modules \ - Modules/_ctypes \ - Modules/_decimal \ - Modules/_decimal/libmpdec \ - Modules/_hacl \ - Modules/_io \ - Modules/_multiprocessing \ - Modules/_remote_debugging \ - Modules/_sqlite \ - Modules/_sre \ - Modules/_testcapi \ - Modules/_testinternalcapi \ - Modules/_testlimitedcapi \ - Modules/_xxtestfuzz \ - Modules/_zstd \ - Modules/cjkcodecs \ - Modules/expat \ - Objects \ - Objects/mimalloc \ - Objects/mimalloc/prim \ - Parser \ - Parser/tokenizer \ - Parser/lexer \ - Programs \ - Python \ - Python/frozen_modules" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for build directories" >&5 -printf %s "checking for build directories... " >&6; } -for dir in $SRCDIRS; do - if test ! -d $dir; then - mkdir $dir - fi -done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 -printf "%s\n" "done" >&6; } - -# Availability of -O2: -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -O2" >&5 -printf %s "checking for -O2... " >&6; } -if test ${ac_cv_compile_o2+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -saved_cflags="$CFLAGS" -CFLAGS="-O2" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_compile_o2=yes -else case e in #( - e) ac_cv_compile_o2=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -CFLAGS="$saved_cflags" - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_compile_o2" >&5 -printf "%s\n" "$ac_cv_compile_o2" >&6; } - -# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect: -# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for glibc _FORTIFY_SOURCE/memmove bug" >&5 -printf %s "checking for glibc _FORTIFY_SOURCE/memmove bug... " >&6; } -saved_cflags="$CFLAGS" -CFLAGS="-O2 -D_FORTIFY_SOURCE=2" -if test "$ac_cv_compile_o2" = no; then - CFLAGS="" -fi -if test "$cross_compiling" = yes -then : - have_glibc_memmove_bug=undefined -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -void foo(void *p, void *q) { memmove(p, q, 19); } -int main(void) { - char a[32] = "123456789000000000"; - foo(&a[9], a); - if (strcmp(a, "123456789123456789000000000") != 0) - return 1; - foo(a, &a[9]); - if (strcmp(a, "123456789000000000") != 0) - return 1; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - have_glibc_memmove_bug=no -else case e in #( - e) have_glibc_memmove_bug=yes ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - -CFLAGS="$saved_cflags" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_glibc_memmove_bug" >&5 -printf "%s\n" "$have_glibc_memmove_bug" >&6; } -if test "$have_glibc_memmove_bug" = yes; then - -printf "%s\n" "#define HAVE_GLIBC_MEMMOVE_BUG 1" >>confdefs.h - -fi - -if test "$ac_cv_gcc_asm_for_x87" = yes; then - # Some versions of gcc miscompile inline asm: - # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 - # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html - case $ac_cv_cc_name in - gcc) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gcc ipa-pure-const bug" >&5 -printf %s "checking for gcc ipa-pure-const bug... " >&6; } - saved_cflags="$CFLAGS" - CFLAGS="-O2" - if test "$cross_compiling" = yes -then : - have_ipa_pure_const_bug=undefined -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - __attribute__((noinline)) int - foo(int *p) { - int r; - asm ( "movl \$6, (%1)\n\t" - "xorl %0, %0\n\t" - : "=r" (r) : "r" (p) : "memory" - ); - return r; - } - int main(void) { - int p = 8; - if ((foo(&p) ? : p) != 6) - return 1; - return 0; - } - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - have_ipa_pure_const_bug=no -else case e in #( - e) have_ipa_pure_const_bug=yes ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - - CFLAGS="$saved_cflags" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_ipa_pure_const_bug" >&5 -printf "%s\n" "$have_ipa_pure_const_bug" >&6; } - if test "$have_ipa_pure_const_bug" = yes; then - -printf "%s\n" "#define HAVE_IPA_PURE_CONST_BUG 1" >>confdefs.h - - fi - ;; - esac -fi - -# ensurepip option -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ensurepip" >&5 -printf %s "checking for ensurepip... " >&6; } - -# Check whether --with-ensurepip was given. -if test ${with_ensurepip+y} -then : - withval=$with_ensurepip; -else case e in #( - e) - case $ac_sys_system in #( - Emscripten) : - with_ensurepip=no ;; #( - WASI) : - with_ensurepip=no ;; #( - iOS) : - with_ensurepip=no ;; #( - *) : - with_ensurepip=upgrade - ;; -esac - ;; -esac -fi - -case $with_ensurepip in #( - yes|upgrade) : - ENSUREPIP=upgrade ;; #( - install) : - ENSUREPIP=install ;; #( - no) : - ENSUREPIP=no ;; #( - *) : - as_fn_error $? "--with-ensurepip=upgrade|install|no" "$LINENO" 5 ;; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ENSUREPIP" >&5 -printf "%s\n" "$ENSUREPIP" >&6; } - - -# check if the dirent structure of a d_type field and DT_UNKNOWN is defined -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the dirent structure of a d_type field" >&5 -printf %s "checking if the dirent structure of a d_type field... " >&6; } -if test ${ac_cv_dirent_d_type+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - - int main(void) { - struct dirent entry; - return entry.d_type == DT_UNKNOWN; - } - - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_dirent_d_type=yes -else case e in #( - e) ac_cv_dirent_d_type=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dirent_d_type" >&5 -printf "%s\n" "$ac_cv_dirent_d_type" >&6; } - -if test "x$ac_cv_dirent_d_type" = xyes -then : - - -printf "%s\n" "#define HAVE_DIRENT_D_TYPE 1" >>confdefs.h - - -fi - -# check if the Linux getrandom() syscall is available -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the Linux getrandom() syscall" >&5 -printf %s "checking for the Linux getrandom() syscall... " >&6; } -if test ${ac_cv_getrandom_syscall+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - #include - #include - #include - - int main(void) { - char buffer[1]; - const size_t buflen = sizeof(buffer); - const int flags = GRND_NONBLOCK; - /* ignore the result, Python checks for ENOSYS and EAGAIN at runtime */ - (void)syscall(SYS_getrandom, buffer, buflen, flags); - return 0; - } - - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_getrandom_syscall=yes -else case e in #( - e) ac_cv_getrandom_syscall=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_getrandom_syscall" >&5 -printf "%s\n" "$ac_cv_getrandom_syscall" >&6; } - -if test "x$ac_cv_getrandom_syscall" = xyes -then : - - -printf "%s\n" "#define HAVE_GETRANDOM_SYSCALL 1" >>confdefs.h - - -fi - -# check if the getrandom() function is available -# the test was written for the Solaris function of -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the getrandom() function" >&5 -printf %s "checking for the getrandom() function... " >&6; } -if test ${ac_cv_func_getrandom+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - #include - - int main(void) { - char buffer[1]; - const size_t buflen = sizeof(buffer); - const int flags = 0; - /* ignore the result, Python checks for ENOSYS at runtime */ - (void)getrandom(buffer, buflen, flags); - return 0; - } - - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_func_getrandom=yes -else case e in #( - e) ac_cv_func_getrandom=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getrandom" >&5 -printf "%s\n" "$ac_cv_func_getrandom" >&6; } - -if test "x$ac_cv_func_getrandom" = xyes -then : - - -printf "%s\n" "#define HAVE_GETRANDOM 1" >>confdefs.h - - -fi - -# checks for POSIX shared memory, used by Modules/_multiprocessing/posixshmem.c -# shm_* may only be available if linking against librt -POSIXSHMEM_CFLAGS='-I$(srcdir)/Modules/_multiprocessing' -save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing shm_open" >&5 -printf %s "checking for library containing shm_open... " >&6; } -if test ${ac_cv_search_shm_open+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char shm_open (void); -int -main (void) -{ -return shm_open (); - ; - return 0; -} -_ACEOF -for ac_lib in '' rt -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_shm_open=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_shm_open+y} -then : - break -fi -done -if test ${ac_cv_search_shm_open+y} -then : - -else case e in #( - e) ac_cv_search_shm_open=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_shm_open" >&5 -printf "%s\n" "$ac_cv_search_shm_open" >&6; } -ac_res=$ac_cv_search_shm_open -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - - if test "x$ac_cv_search_shm_open" = x-lrt -then : - POSIXSHMEM_LIBS="-lrt" -fi - - save_ac_includes_default=$ac_includes_default - ac_includes_default="\ - ${ac_includes_default} - #ifndef __cplusplus - # ifdef HAVE_SYS_MMAN_H - # include - # endif - #endif - " - - for ac_func in shm_open shm_unlink -do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 -_ACEOF - have_posix_shmem=yes -else case e in #( - e) have_posix_shmem=no ;; -esac -fi - -done - ac_includes_default=$save_ac_includes_default - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -# Check for usable OpenSSL - - found=false - -# Check whether --with-openssl was given. -if test ${with_openssl+y} -then : - withval=$with_openssl; - case "$withval" in - "" | y | ye | yes | n | no) - as_fn_error $? "Invalid --with-openssl value" "$LINENO" 5 - ;; - *) ssldirs="$withval" - ;; - esac - -else case e in #( - e) - # if pkg-config is installed and openssl has installed a .pc file, - # then use that information and don't search ssldirs - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_PKG_CONFIG+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$PKG_CONFIG"; then - ac_cv_prog_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_PKG_CONFIG="${ac_tool_prefix}pkg-config" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -PKG_CONFIG=$ac_cv_prog_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -printf "%s\n" "$PKG_CONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_PKG_CONFIG"; then - ac_ct_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_PKG_CONFIG+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_PKG_CONFIG"; then - ac_cv_prog_ac_ct_PKG_CONFIG="$ac_ct_PKG_CONFIG" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_PKG_CONFIG="pkg-config" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_PKG_CONFIG=$ac_cv_prog_ac_ct_PKG_CONFIG -if test -n "$ac_ct_PKG_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_PKG_CONFIG" >&5 -printf "%s\n" "$ac_ct_PKG_CONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_ct_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_prog_PKG_CONFIG" -fi - - if test x"$PKG_CONFIG" != x""; then - OPENSSL_LDFLAGS=`$PKG_CONFIG openssl --libs-only-L 2>/dev/null` - if test $? = 0; then - OPENSSL_LIBS=`$PKG_CONFIG openssl --libs-only-l 2>/dev/null` - OPENSSL_INCLUDES=`$PKG_CONFIG openssl --cflags-only-I 2>/dev/null` - found=true - fi - fi - - # no such luck; use some default ssldirs - if ! $found; then - ssldirs="/usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr" - fi - - ;; -esac -fi - - - - # note that we #include , so the OpenSSL headers have to be in - # an 'openssl' subdirectory - - if ! $found; then - OPENSSL_INCLUDES= - for ssldir in $ssldirs; do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for include/openssl/ssl.h in $ssldir" >&5 -printf %s "checking for include/openssl/ssl.h in $ssldir... " >&6; } - if test -f "$ssldir/include/openssl/ssl.h"; then - OPENSSL_INCLUDES="-I$ssldir/include" - OPENSSL_LDFLAGS="-L$ssldir/lib" - OPENSSL_LIBS="-lssl -lcrypto" - found=true - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - break - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - done - - # if the file wasn't found, well, go ahead and try the link anyway -- maybe - # it will just work! - fi - - # try the preprocessor and linker with our new flags, - # being careful not to pollute the global LIBS, LDFLAGS, and CPPFLAGS - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether compiling and linking against OpenSSL works" >&5 -printf %s "checking whether compiling and linking against OpenSSL works... " >&6; } - echo "Trying link with OPENSSL_LDFLAGS=$OPENSSL_LDFLAGS;" \ - "OPENSSL_LIBS=$OPENSSL_LIBS; OPENSSL_INCLUDES=$OPENSSL_INCLUDES" >&5 - - save_LIBS="$LIBS" - save_LDFLAGS="$LDFLAGS" - save_CPPFLAGS="$CPPFLAGS" - LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" - LIBS="$OPENSSL_LIBS $LIBS" - CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -SSL_new(NULL) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - have_openssl=yes - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - have_openssl=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - - - - - - -# rpath to libssl and libcrypto -if test "x$GNULD" = xyes -then : - - rpath_arg="-Wl,--enable-new-dtags,-rpath=" - -else case e in #( - e) - if test "$ac_sys_system" = "Darwin" - then - rpath_arg="-Wl,-rpath," - else - rpath_arg="-Wl,-rpath=" - fi - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-openssl-rpath" >&5 -printf %s "checking for --with-openssl-rpath... " >&6; } - -# Check whether --with-openssl-rpath was given. -if test ${with_openssl_rpath+y} -then : - withval=$with_openssl_rpath; -else case e in #( - e) with_openssl_rpath=no - ;; -esac -fi - -case $with_openssl_rpath in #( - auto|yes) : - - OPENSSL_RPATH=auto - for arg in "$OPENSSL_LDFLAGS"; do - case $arg in #( - -L*) : - OPENSSL_LDFLAGS_RPATH="$OPENSSL_LDFLAGS_RPATH ${rpath_arg}$(echo $arg | cut -c3-)" - ;; #( - *) : - ;; -esac - done - ;; #( - no) : - OPENSSL_RPATH= ;; #( - *) : - if test -d "$with_openssl_rpath" -then : - - OPENSSL_RPATH="$with_openssl_rpath" - OPENSSL_LDFLAGS_RPATH="${rpath_arg}$with_openssl_rpath" - -else case e in #( - e) as_fn_error $? "--with-openssl-rpath \"$with_openssl_rpath\" is not a directory" "$LINENO" 5 ;; -esac -fi - - ;; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OPENSSL_RPATH" >&5 -printf "%s\n" "$OPENSSL_RPATH" >&6; } - -# This static linking is NOT OFFICIALLY SUPPORTED and not advertised. -# Requires static OpenSSL build with position-independent code. Some features -# like DSO engines or external OSSL providers don't work. Only tested with GCC -# and clang on X86_64. -if test "x$PY_UNSUPPORTED_OPENSSL_BUILD" = xstatic -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsupported static openssl build" >&5 -printf %s "checking for unsupported static openssl build... " >&6; } - new_OPENSSL_LIBS= - for arg in $OPENSSL_LIBS; do - case $arg in #( - -l*) : - - libname=$(echo $arg | cut -c3-) - new_OPENSSL_LIBS="$new_OPENSSL_LIBS -l:lib${libname}.a -Wl,--exclude-libs,lib${libname}.a" - ;; #( - *) : - new_OPENSSL_LIBS="$new_OPENSSL_LIBS $arg" - ;; -esac - done - OPENSSL_LIBS="$new_OPENSSL_LIBS $ZLIB_LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OPENSSL_LIBS" >&5 -printf "%s\n" "$OPENSSL_LIBS" >&6; } - -fi - -LIBCRYPTO_LIBS= -for arg in $OPENSSL_LIBS; do - case $arg in #( - -l*ssl*|-Wl*ssl*) : - ;; #( - *) : - LIBCRYPTO_LIBS="$LIBCRYPTO_LIBS $arg" - ;; -esac -done - -# check if OpenSSL libraries work as expected -save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - LIBS="$LIBS $OPENSSL_LIBS" - CFLAGS="$CFLAGS $OPENSSL_INCLUDES" - LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides required ssl module APIs" >&5 -printf %s "checking whether OpenSSL provides required ssl module APIs... " >&6; } -if test ${ac_cv_working_openssl_ssl+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #include - #if OPENSSL_VERSION_NUMBER < 0x10101000L - #error "OpenSSL >= 1.1.1 is required" - #endif - static void keylog_cb(const SSL *ssl, const char *line) {} - -int -main (void) -{ - - SSL_CTX *ctx = SSL_CTX_new(TLS_client_method()); - SSL_CTX_set_keylog_callback(ctx, keylog_cb); - SSL *ssl = SSL_new(ctx); - X509_VERIFY_PARAM *param = SSL_get0_param(ssl); - X509_VERIFY_PARAM_set1_host(param, "python.org", 0); - SSL_free(ssl); - SSL_CTX_free(ctx); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_working_openssl_ssl=yes -else case e in #( - e) ac_cv_working_openssl_ssl=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_openssl_ssl" >&5 -printf "%s\n" "$ac_cv_working_openssl_ssl" >&6; } - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -save_CFLAGS=$CFLAGS -save_CPPFLAGS=$CPPFLAGS -save_LDFLAGS=$LDFLAGS -save_LIBS=$LIBS - - - LIBS="$LIBS $LIBCRYPTO_LIBS" - CFLAGS="$CFLAGS $OPENSSL_INCLUDES" - LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides required hashlib module APIs" >&5 -printf %s "checking whether OpenSSL provides required hashlib module APIs... " >&6; } -if test ${ac_cv_working_openssl_hashlib+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #include - #if OPENSSL_VERSION_NUMBER < 0x10101000L - #error "OpenSSL >= 1.1.1 is required" - #endif - -int -main (void) -{ - - OBJ_nid2sn(NID_md5); - OBJ_nid2sn(NID_sha1); - OBJ_nid2sn(NID_sha512); - OBJ_nid2sn(NID_sha3_512); - EVP_PBE_scrypt(NULL, 0, NULL, 0, 2, 8, 1, 0, NULL, 0); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_working_openssl_hashlib=yes -else case e in #( - e) ac_cv_working_openssl_hashlib=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_openssl_hashlib" >&5 -printf "%s\n" "$ac_cv_working_openssl_hashlib" >&6; } - -CFLAGS=$save_CFLAGS -CPPFLAGS=$save_CPPFLAGS -LDFLAGS=$save_LDFLAGS -LIBS=$save_LIBS - - - -# ssl module default cipher suite string - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-ssl-default-suites" >&5 -printf %s "checking for --with-ssl-default-suites... " >&6; } - -# Check whether --with-ssl-default-suites was given. -if test ${with_ssl_default_suites+y} -then : - withval=$with_ssl_default_suites; -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -printf "%s\n" "$withval" >&6; } -case "$withval" in - python) - printf "%s\n" "#define PY_SSL_DEFAULT_CIPHERS 1" >>confdefs.h - - ;; - openssl) - printf "%s\n" "#define PY_SSL_DEFAULT_CIPHERS 2" >>confdefs.h - - ;; - *) - printf "%s\n" "#define PY_SSL_DEFAULT_CIPHERS 0" >>confdefs.h - - printf "%s\n" "#define PY_SSL_DEFAULT_CIPHER_STRING \"$withval\"" >>confdefs.h - - ;; -esac - -else case e in #( - e) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: python" >&5 -printf "%s\n" "python" >&6; } -printf "%s\n" "#define PY_SSL_DEFAULT_CIPHERS 1" >>confdefs.h - - ;; -esac -fi - - -# builtin hash modules -default_hashlib_hashes="md5,sha1,sha2,sha3,blake2" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-builtin-hashlib-hashes" >&5 -printf %s "checking for --with-builtin-hashlib-hashes... " >&6; } - -# Check whether --with-builtin-hashlib-hashes was given. -if test ${with_builtin_hashlib_hashes+y} -then : - withval=$with_builtin_hashlib_hashes; - case $with_builtin_hashlib_hashes in #( - yes) : - with_builtin_hashlib_hashes=$default_hashlib_hashes ;; #( - no) : - with_builtin_hashlib_hashes="" - ;; #( - *) : - ;; -esac - -else case e in #( - e) with_builtin_hashlib_hashes=$default_hashlib_hashes ;; -esac -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_builtin_hashlib_hashes" >&5 -printf "%s\n" "$with_builtin_hashlib_hashes" >&6; } - -printf "%s\n" "#define PY_BUILTIN_HASHLIB_HASHES \"$with_builtin_hashlib_hashes\"" >>confdefs.h - - -as_save_IFS=$IFS -IFS=, -for builtin_hash in $with_builtin_hashlib_hashes; do - case $builtin_hash in #( - md5) : - with_builtin_md5=yes ;; #( - sha1) : - with_builtin_sha1=yes ;; #( - sha2) : - with_builtin_sha2=yes ;; #( - sha3) : - with_builtin_sha3=yes ;; #( - blake2) : - with_builtin_blake2=yes - ;; #( - *) : - ;; -esac -done -IFS=$as_save_IFS - -# Check whether to disable test modules. Once set, setup.py will not build -# test extension modules and "make install" will not install test suites. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --disable-test-modules" >&5 -printf %s "checking for --disable-test-modules... " >&6; } -# Check whether --enable-test-modules was given. -if test ${enable_test_modules+y} -then : - enableval=$enable_test_modules; - if test "x$enable_test_modules" = xyes -then : - TEST_MODULES=yes -else case e in #( - e) TEST_MODULES=no ;; -esac -fi - -else case e in #( - e) TEST_MODULES=yes ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEST_MODULES" >&5 -printf "%s\n" "$TEST_MODULES" >&6; } - - -# gh-109054: Check if -latomic is needed to get atomic functions. -# On Linux aarch64, GCC may require programs and libraries to be linked -# explicitly to libatomic. Call _Py_atomic_or_uint64() which may require -# libatomic __atomic_fetch_or_8(), or not, depending on the C compiler and the -# compiler flags. -# -# gh-112779: On RISC-V, GCC 12 and earlier require libatomic support for 1-byte -# and 2-byte operations, but not for 8-byte operations. -# -# Avoid #include or #include . The header -# requires header which is only written below by AC_OUTPUT below. -# If the check is done after AC_OUTPUT, modifying LIBS has no effect -# anymore. cannot be included alone, it's designed to be included -# by : it expects other includes and macros to be defined. -save_CPPFLAGS=$CPPFLAGS -CPPFLAGS="${BASECPPFLAGS} -I. -I${srcdir}/Include ${CPPFLAGS}" - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether libatomic is needed by " >&5 -printf %s "checking whether libatomic is needed by ... " >&6; } -if test ${ac_cv_libatomic_needed+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -// pyatomic.h needs uint64_t and Py_ssize_t types -#include // int64_t, intptr_t -#ifdef HAVE_SYS_TYPES_H -# include // ssize_t -#endif -// Code adapted from Include/pyport.h -#if HAVE_SSIZE_T -typedef ssize_t Py_ssize_t; -#elif SIZEOF_VOID_P == SIZEOF_SIZE_T -typedef intptr_t Py_ssize_t; -#else -# error "unable to define Py_ssize_t" -#endif - -#include "pyatomic.h" - -int main() -{ - uint64_t value; - _Py_atomic_store_uint64(&value, 2); - if (_Py_atomic_or_uint64(&value, 8) != 2) { - return 1; // error - } - if (_Py_atomic_load_uint64(&value) != 10) { - return 1; // error - } - uint8_t byte = 0xb8; - if (_Py_atomic_or_uint8(&byte, 0x2d) != 0xb8) { - return 1; // error - } - if (_Py_atomic_load_uint8(&byte) != 0xbd) { - return 1; // error - } - return 0; // all good -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_libatomic_needed=no -else case e in #( - e) ac_cv_libatomic_needed=yes ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libatomic_needed" >&5 -printf "%s\n" "$ac_cv_libatomic_needed" >&6; } - -if test "x$ac_cv_libatomic_needed" = xyes -then : - LIBS="${LIBS} -latomic" - LIBATOMIC=${LIBATOMIC-"-latomic"} -fi -CPPFLAGS=$save_CPPFLAGS - - -# gh-59705: Maximum length in bytes of a thread name -case "$ac_sys_system" in - Linux*) _PYTHREAD_NAME_MAXLEN=15;; # Linux and Android - SunOS*) _PYTHREAD_NAME_MAXLEN=31;; - NetBSD*) _PYTHREAD_NAME_MAXLEN=15;; # gh-131268 - Darwin) _PYTHREAD_NAME_MAXLEN=63;; - iOS) _PYTHREAD_NAME_MAXLEN=63;; - FreeBSD*) _PYTHREAD_NAME_MAXLEN=19;; # gh-131268 - OpenBSD*) _PYTHREAD_NAME_MAXLEN=23;; # gh-131268 - *) _PYTHREAD_NAME_MAXLEN=;; -esac -if test -n "$_PYTHREAD_NAME_MAXLEN"; then - -printf "%s\n" "#define _PYTHREAD_NAME_MAXLEN $_PYTHREAD_NAME_MAXLEN" >>confdefs.h - -fi - - - -# stdlib - - -# stdlib not available -case $ac_sys_system in #( - AIX) : - - - py_cv_module__scproxy=n/a - ;; #( - VxWorks*) : - - - py_cv_module__scproxy=n/a - py_cv_module_termios=n/a - py_cv_module_grp=n/a - ;; #( - Darwin) : - ;; #( - iOS) : - - - - py_cv_module__curses=n/a - py_cv_module__curses_panel=n/a - py_cv_module__gdbm=n/a - py_cv_module__multiprocessing=n/a - py_cv_module__posixshmem=n/a - py_cv_module__posixsubprocess=n/a - py_cv_module__scproxy=n/a - py_cv_module__tkinter=n/a - py_cv_module_grp=n/a - py_cv_module_nis=n/a - py_cv_module_readline=n/a - py_cv_module_pwd=n/a - py_cv_module_spwd=n/a - py_cv_module_syslog=n/a - py_cv_module_=n/a - - ;; #( - CYGWIN*) : - - - py_cv_module__scproxy=n/a - ;; #( - QNX*) : - - - py_cv_module__scproxy=n/a - ;; #( - FreeBSD*) : - - - py_cv_module__scproxy=n/a - ;; #( - Emscripten) : - - - - py_cv_module__curses=n/a - py_cv_module__curses_panel=n/a - py_cv_module__dbm=n/a - py_cv_module__gdbm=n/a - py_cv_module__multiprocessing=n/a - py_cv_module__posixshmem=n/a - py_cv_module__posixsubprocess=n/a - py_cv_module__scproxy=n/a - py_cv_module__tkinter=n/a - py_cv_module__interpreters=n/a - py_cv_module__interpchannels=n/a - py_cv_module__interpqueues=n/a - py_cv_module_grp=n/a - py_cv_module_pwd=n/a - py_cv_module_resource=n/a - py_cv_module_syslog=n/a - py_cv_module_=n/a - - - - py_cv_module_readline=n/a - py_cv_module_=n/a - - ;; #( - WASI) : - - - - py_cv_module__curses=n/a - py_cv_module__curses_panel=n/a - py_cv_module__dbm=n/a - py_cv_module__gdbm=n/a - py_cv_module__multiprocessing=n/a - py_cv_module__posixshmem=n/a - py_cv_module__posixsubprocess=n/a - py_cv_module__scproxy=n/a - py_cv_module__tkinter=n/a - py_cv_module__interpreters=n/a - py_cv_module__interpchannels=n/a - py_cv_module__interpqueues=n/a - py_cv_module_grp=n/a - py_cv_module_pwd=n/a - py_cv_module_resource=n/a - py_cv_module_syslog=n/a - py_cv_module_=n/a - - - - py_cv_module__ctypes_test=n/a - py_cv_module__remote_debugging=n/a - py_cv_module__testimportmultiple=n/a - py_cv_module__testmultiphase=n/a - py_cv_module__testsinglephase=n/a - py_cv_module_fcntl=n/a - py_cv_module_mmap=n/a - py_cv_module_termios=n/a - py_cv_module_xxlimited=n/a - py_cv_module_xxlimited_35=n/a - py_cv_module_=n/a - - ;; #( - *) : - - - py_cv_module__scproxy=n/a - - ;; -esac - - -case $host_cpu in #( - wasm32|wasm64) : - MODULE_BUILDTYPE=static ;; #( - *) : - MODULE_BUILDTYPE=${MODULE_BUILDTYPE:-shared} - ;; -esac - - - -MODULE_BLOCK= - - - - - - - if test "$py_cv_module__io" != "n/a" -then : - py_cv_module__io=yes -fi - if test "$py_cv_module__io" = yes; then - MODULE__IO_TRUE= - MODULE__IO_FALSE='#' -else - MODULE__IO_TRUE='#' - MODULE__IO_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__IO_STATE=$py_cv_module__io$as_nl" - if test "x$py_cv_module__io" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__IO_CFLAGS=-I\$(srcdir)/Modules/_io$as_nl" - - -fi - - - if test "$py_cv_module_time" != "n/a" -then : - py_cv_module_time=yes -fi - if test "$py_cv_module_time" = yes; then - MODULE_TIME_TRUE= - MODULE_TIME_FALSE='#' -else - MODULE_TIME_TRUE='#' - MODULE_TIME_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE_TIME_STATE=$py_cv_module_time$as_nl" - if test "x$py_cv_module_time" = xyes -then : - - - as_fn_append MODULE_BLOCK "MODULE_TIME_LDFLAGS=$TIMEMODULE_LIB$as_nl" - -fi - - - - if test "$py_cv_module_array" != "n/a" -then : - py_cv_module_array=yes -fi - if test "$py_cv_module_array" = yes; then - MODULE_ARRAY_TRUE= - MODULE_ARRAY_FALSE='#' -else - MODULE_ARRAY_TRUE='#' - MODULE_ARRAY_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE_ARRAY_STATE=$py_cv_module_array$as_nl" - if test "x$py_cv_module_array" = xyes -then : - - - - -fi - - - if test "$py_cv_module__math_integer" != "n/a" -then : - py_cv_module__math_integer=yes -fi - if test "$py_cv_module__math_integer" = yes; then - MODULE__MATH_INTEGER_TRUE= - MODULE__MATH_INTEGER_FALSE='#' -else - MODULE__MATH_INTEGER_TRUE='#' - MODULE__MATH_INTEGER_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__MATH_INTEGER_STATE=$py_cv_module__math_integer$as_nl" - if test "x$py_cv_module__math_integer" = xyes -then : - - - - -fi - - - if test "$py_cv_module__asyncio" != "n/a" -then : - py_cv_module__asyncio=yes -fi - if test "$py_cv_module__asyncio" = yes; then - MODULE__ASYNCIO_TRUE= - MODULE__ASYNCIO_FALSE='#' -else - MODULE__ASYNCIO_TRUE='#' - MODULE__ASYNCIO_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__ASYNCIO_STATE=$py_cv_module__asyncio$as_nl" - if test "x$py_cv_module__asyncio" = xyes -then : - - - - -fi - - - if test "$py_cv_module__bisect" != "n/a" -then : - py_cv_module__bisect=yes -fi - if test "$py_cv_module__bisect" = yes; then - MODULE__BISECT_TRUE= - MODULE__BISECT_FALSE='#' -else - MODULE__BISECT_TRUE='#' - MODULE__BISECT_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__BISECT_STATE=$py_cv_module__bisect$as_nl" - if test "x$py_cv_module__bisect" = xyes -then : - - - - -fi - - - if test "$py_cv_module__csv" != "n/a" -then : - py_cv_module__csv=yes -fi - if test "$py_cv_module__csv" = yes; then - MODULE__CSV_TRUE= - MODULE__CSV_FALSE='#' -else - MODULE__CSV_TRUE='#' - MODULE__CSV_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__CSV_STATE=$py_cv_module__csv$as_nl" - if test "x$py_cv_module__csv" = xyes -then : - - - - -fi - - - if test "$py_cv_module__heapq" != "n/a" -then : - py_cv_module__heapq=yes -fi - if test "$py_cv_module__heapq" = yes; then - MODULE__HEAPQ_TRUE= - MODULE__HEAPQ_FALSE='#' -else - MODULE__HEAPQ_TRUE='#' - MODULE__HEAPQ_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__HEAPQ_STATE=$py_cv_module__heapq$as_nl" - if test "x$py_cv_module__heapq" = xyes -then : - - - - -fi - - - if test "$py_cv_module__json" != "n/a" -then : - py_cv_module__json=yes -fi - if test "$py_cv_module__json" = yes; then - MODULE__JSON_TRUE= - MODULE__JSON_FALSE='#' -else - MODULE__JSON_TRUE='#' - MODULE__JSON_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__JSON_STATE=$py_cv_module__json$as_nl" - if test "x$py_cv_module__json" = xyes -then : - - - - -fi - - - if test "$py_cv_module__lsprof" != "n/a" -then : - py_cv_module__lsprof=yes -fi - if test "$py_cv_module__lsprof" = yes; then - MODULE__LSPROF_TRUE= - MODULE__LSPROF_FALSE='#' -else - MODULE__LSPROF_TRUE='#' - MODULE__LSPROF_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__LSPROF_STATE=$py_cv_module__lsprof$as_nl" - if test "x$py_cv_module__lsprof" = xyes -then : - - - - -fi - - - if test "$py_cv_module__pickle" != "n/a" -then : - py_cv_module__pickle=yes -fi - if test "$py_cv_module__pickle" = yes; then - MODULE__PICKLE_TRUE= - MODULE__PICKLE_FALSE='#' -else - MODULE__PICKLE_TRUE='#' - MODULE__PICKLE_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__PICKLE_STATE=$py_cv_module__pickle$as_nl" - if test "x$py_cv_module__pickle" = xyes -then : - - - - -fi - - - if test "$py_cv_module__posixsubprocess" != "n/a" -then : - py_cv_module__posixsubprocess=yes -fi - if test "$py_cv_module__posixsubprocess" = yes; then - MODULE__POSIXSUBPROCESS_TRUE= - MODULE__POSIXSUBPROCESS_FALSE='#' -else - MODULE__POSIXSUBPROCESS_TRUE='#' - MODULE__POSIXSUBPROCESS_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__POSIXSUBPROCESS_STATE=$py_cv_module__posixsubprocess$as_nl" - if test "x$py_cv_module__posixsubprocess" = xyes -then : - - - - -fi - - - if test "$py_cv_module__queue" != "n/a" -then : - py_cv_module__queue=yes -fi - if test "$py_cv_module__queue" = yes; then - MODULE__QUEUE_TRUE= - MODULE__QUEUE_FALSE='#' -else - MODULE__QUEUE_TRUE='#' - MODULE__QUEUE_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__QUEUE_STATE=$py_cv_module__queue$as_nl" - if test "x$py_cv_module__queue" = xyes -then : - - - - -fi - - - if test "$py_cv_module__random" != "n/a" -then : - py_cv_module__random=yes -fi - if test "$py_cv_module__random" = yes; then - MODULE__RANDOM_TRUE= - MODULE__RANDOM_FALSE='#' -else - MODULE__RANDOM_TRUE='#' - MODULE__RANDOM_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__RANDOM_STATE=$py_cv_module__random$as_nl" - if test "x$py_cv_module__random" = xyes -then : - - - - -fi - - - if test "$py_cv_module__remote_debugging" != "n/a" -then : - py_cv_module__remote_debugging=yes -fi - if test "$py_cv_module__remote_debugging" = yes; then - MODULE__REMOTE_DEBUGGING_TRUE= - MODULE__REMOTE_DEBUGGING_FALSE='#' -else - MODULE__REMOTE_DEBUGGING_TRUE='#' - MODULE__REMOTE_DEBUGGING_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__REMOTE_DEBUGGING_STATE=$py_cv_module__remote_debugging$as_nl" - if test "x$py_cv_module__remote_debugging" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__REMOTE_DEBUGGING_CFLAGS=$REMOTE_DEBUGGING_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__REMOTE_DEBUGGING_LDFLAGS=$REMOTE_DEBUGGING_LIBS$as_nl" - -fi - - - if test "$py_cv_module_select" != "n/a" -then : - py_cv_module_select=yes -fi - if test "$py_cv_module_select" = yes; then - MODULE_SELECT_TRUE= - MODULE_SELECT_FALSE='#' -else - MODULE_SELECT_TRUE='#' - MODULE_SELECT_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE_SELECT_STATE=$py_cv_module_select$as_nl" - if test "x$py_cv_module_select" = xyes -then : - - - - -fi - - - if test "$py_cv_module__struct" != "n/a" -then : - py_cv_module__struct=yes -fi - if test "$py_cv_module__struct" = yes; then - MODULE__STRUCT_TRUE= - MODULE__STRUCT_FALSE='#' -else - MODULE__STRUCT_TRUE='#' - MODULE__STRUCT_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__STRUCT_STATE=$py_cv_module__struct$as_nl" - if test "x$py_cv_module__struct" = xyes -then : - - - - -fi - - - if test "$py_cv_module__types" != "n/a" -then : - py_cv_module__types=yes -fi - if test "$py_cv_module__types" = yes; then - MODULE__TYPES_TRUE= - MODULE__TYPES_FALSE='#' -else - MODULE__TYPES_TRUE='#' - MODULE__TYPES_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__TYPES_STATE=$py_cv_module__types$as_nl" - if test "x$py_cv_module__types" = xyes -then : - - - - -fi - - - if test "$py_cv_module__typing" != "n/a" -then : - py_cv_module__typing=yes -fi - if test "$py_cv_module__typing" = yes; then - MODULE__TYPING_TRUE= - MODULE__TYPING_FALSE='#' -else - MODULE__TYPING_TRUE='#' - MODULE__TYPING_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__TYPING_STATE=$py_cv_module__typing$as_nl" - if test "x$py_cv_module__typing" = xyes -then : - - - - -fi - - - if test "$py_cv_module__interpreters" != "n/a" -then : - py_cv_module__interpreters=yes -fi - if test "$py_cv_module__interpreters" = yes; then - MODULE__INTERPRETERS_TRUE= - MODULE__INTERPRETERS_FALSE='#' -else - MODULE__INTERPRETERS_TRUE='#' - MODULE__INTERPRETERS_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__INTERPRETERS_STATE=$py_cv_module__interpreters$as_nl" - if test "x$py_cv_module__interpreters" = xyes -then : - - - - -fi - - - if test "$py_cv_module__interpchannels" != "n/a" -then : - py_cv_module__interpchannels=yes -fi - if test "$py_cv_module__interpchannels" = yes; then - MODULE__INTERPCHANNELS_TRUE= - MODULE__INTERPCHANNELS_FALSE='#' -else - MODULE__INTERPCHANNELS_TRUE='#' - MODULE__INTERPCHANNELS_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__INTERPCHANNELS_STATE=$py_cv_module__interpchannels$as_nl" - if test "x$py_cv_module__interpchannels" = xyes -then : - - - - -fi - - - if test "$py_cv_module__interpqueues" != "n/a" -then : - py_cv_module__interpqueues=yes -fi - if test "$py_cv_module__interpqueues" = yes; then - MODULE__INTERPQUEUES_TRUE= - MODULE__INTERPQUEUES_FALSE='#' -else - MODULE__INTERPQUEUES_TRUE='#' - MODULE__INTERPQUEUES_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__INTERPQUEUES_STATE=$py_cv_module__interpqueues$as_nl" - if test "x$py_cv_module__interpqueues" = xyes -then : - - - - -fi - - - if test "$py_cv_module__zoneinfo" != "n/a" -then : - py_cv_module__zoneinfo=yes -fi - if test "$py_cv_module__zoneinfo" = yes; then - MODULE__ZONEINFO_TRUE= - MODULE__ZONEINFO_FALSE='#' -else - MODULE__ZONEINFO_TRUE='#' - MODULE__ZONEINFO_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__ZONEINFO_STATE=$py_cv_module__zoneinfo$as_nl" - if test "x$py_cv_module__zoneinfo" = xyes -then : - - - - -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _multiprocessing" >&5 -printf %s "checking for stdlib extension module _multiprocessing... " >&6; } - if test "$py_cv_module__multiprocessing" != "n/a" -then : - - if true -then : - if test "$ac_cv_func_sem_unlink" = "yes" -then : - py_cv_module__multiprocessing=yes -else case e in #( - e) py_cv_module__multiprocessing=missing ;; -esac -fi -else case e in #( - e) py_cv_module__multiprocessing=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__MULTIPROCESSING_STATE=$py_cv_module__multiprocessing$as_nl" - if test "x$py_cv_module__multiprocessing" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__MULTIPROCESSING_CFLAGS=-I\$(srcdir)/Modules/_multiprocessing$as_nl" - - -fi - if test "$py_cv_module__multiprocessing" = yes; then - MODULE__MULTIPROCESSING_TRUE= - MODULE__MULTIPROCESSING_FALSE='#' -else - MODULE__MULTIPROCESSING_TRUE='#' - MODULE__MULTIPROCESSING_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__multiprocessing" >&5 -printf "%s\n" "$py_cv_module__multiprocessing" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _posixshmem" >&5 -printf %s "checking for stdlib extension module _posixshmem... " >&6; } - if test "$py_cv_module__posixshmem" != "n/a" -then : - - if true -then : - if test "$have_posix_shmem" = "yes" -then : - py_cv_module__posixshmem=yes -else case e in #( - e) py_cv_module__posixshmem=missing ;; -esac -fi -else case e in #( - e) py_cv_module__posixshmem=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__POSIXSHMEM_STATE=$py_cv_module__posixshmem$as_nl" - if test "x$py_cv_module__posixshmem" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__POSIXSHMEM_CFLAGS=$POSIXSHMEM_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__POSIXSHMEM_LDFLAGS=$POSIXSHMEM_LIBS$as_nl" - -fi - if test "$py_cv_module__posixshmem" = yes; then - MODULE__POSIXSHMEM_TRUE= - MODULE__POSIXSHMEM_FALSE='#' -else - MODULE__POSIXSHMEM_TRUE='#' - MODULE__POSIXSHMEM_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__posixshmem" >&5 -printf "%s\n" "$py_cv_module__posixshmem" >&6; } - - - - if test "$py_cv_module__statistics" != "n/a" -then : - py_cv_module__statistics=yes -fi - if test "$py_cv_module__statistics" = yes; then - MODULE__STATISTICS_TRUE= - MODULE__STATISTICS_FALSE='#' -else - MODULE__STATISTICS_TRUE='#' - MODULE__STATISTICS_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__STATISTICS_STATE=$py_cv_module__statistics$as_nl" - if test "x$py_cv_module__statistics" = xyes -then : - - - as_fn_append MODULE_BLOCK "MODULE__STATISTICS_LDFLAGS=$LIBM$as_nl" - -fi - - - if test "$py_cv_module_cmath" != "n/a" -then : - py_cv_module_cmath=yes -fi - if test "$py_cv_module_cmath" = yes; then - MODULE_CMATH_TRUE= - MODULE_CMATH_FALSE='#' -else - MODULE_CMATH_TRUE='#' - MODULE_CMATH_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE_CMATH_STATE=$py_cv_module_cmath$as_nl" - if test "x$py_cv_module_cmath" = xyes -then : - - - as_fn_append MODULE_BLOCK "MODULE_CMATH_LDFLAGS=$LIBM$as_nl" - -fi - - - if test "$py_cv_module_math" != "n/a" -then : - py_cv_module_math=yes -fi - if test "$py_cv_module_math" = yes; then - MODULE_MATH_TRUE= - MODULE_MATH_FALSE='#' -else - MODULE_MATH_TRUE='#' - MODULE_MATH_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE_MATH_STATE=$py_cv_module_math$as_nl" - if test "x$py_cv_module_math" = xyes -then : - - - as_fn_append MODULE_BLOCK "MODULE_MATH_LDFLAGS=$LIBM$as_nl" - -fi - - - - if test "$py_cv_module__datetime" != "n/a" -then : - py_cv_module__datetime=yes -fi - if test "$py_cv_module__datetime" = yes; then - MODULE__DATETIME_TRUE= - MODULE__DATETIME_FALSE='#' -else - MODULE__DATETIME_TRUE='#' - MODULE__DATETIME_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__DATETIME_STATE=$py_cv_module__datetime$as_nl" - if test "x$py_cv_module__datetime" = xyes -then : - - - as_fn_append MODULE_BLOCK "MODULE__DATETIME_LDFLAGS=$TIMEMODULE_LIB $LIBM$as_nl" - -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module fcntl" >&5 -printf %s "checking for stdlib extension module fcntl... " >&6; } - if test "$py_cv_module_fcntl" != "n/a" -then : - - if true -then : - if test "$ac_cv_header_sys_ioctl_h" = "yes" -a "$ac_cv_header_fcntl_h" = "yes" -then : - py_cv_module_fcntl=yes -else case e in #( - e) py_cv_module_fcntl=missing ;; -esac -fi -else case e in #( - e) py_cv_module_fcntl=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_FCNTL_STATE=$py_cv_module_fcntl$as_nl" - if test "x$py_cv_module_fcntl" = xyes -then : - - - as_fn_append MODULE_BLOCK "MODULE_FCNTL_LDFLAGS=$FCNTL_LIBS$as_nl" - -fi - if test "$py_cv_module_fcntl" = yes; then - MODULE_FCNTL_TRUE= - MODULE_FCNTL_FALSE='#' -else - MODULE_FCNTL_TRUE='#' - MODULE_FCNTL_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_fcntl" >&5 -printf "%s\n" "$py_cv_module_fcntl" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module mmap" >&5 -printf %s "checking for stdlib extension module mmap... " >&6; } - if test "$py_cv_module_mmap" != "n/a" -then : - - if true -then : - if test "$ac_cv_header_sys_mman_h" = "yes" -a "$ac_cv_header_sys_stat_h" = "yes" -then : - py_cv_module_mmap=yes -else case e in #( - e) py_cv_module_mmap=missing ;; -esac -fi -else case e in #( - e) py_cv_module_mmap=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_MMAP_STATE=$py_cv_module_mmap$as_nl" - if test "x$py_cv_module_mmap" = xyes -then : - - - - -fi - if test "$py_cv_module_mmap" = yes; then - MODULE_MMAP_TRUE= - MODULE_MMAP_FALSE='#' -else - MODULE_MMAP_TRUE='#' - MODULE_MMAP_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_mmap" >&5 -printf "%s\n" "$py_cv_module_mmap" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _socket" >&5 -printf %s "checking for stdlib extension module _socket... " >&6; } - if test "$py_cv_module__socket" != "n/a" -then : - - if true -then : - if test "$ac_cv_header_sys_socket_h" = "yes" -a "$ac_cv_header_sys_types_h" = "yes" -a "$ac_cv_header_netinet_in_h" = "yes" -then : - py_cv_module__socket=yes -else case e in #( - e) py_cv_module__socket=missing ;; -esac -fi -else case e in #( - e) py_cv_module__socket=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__SOCKET_STATE=$py_cv_module__socket$as_nl" - if test "x$py_cv_module__socket" = xyes -then : - - - as_fn_append MODULE_BLOCK "MODULE__SOCKET_LDFLAGS=$SOCKET_LIBS$as_nl" - -fi - if test "$py_cv_module__socket" = yes; then - MODULE__SOCKET_TRUE= - MODULE__SOCKET_FALSE='#' -else - MODULE__SOCKET_TRUE='#' - MODULE__SOCKET_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__socket" >&5 -printf "%s\n" "$py_cv_module__socket" >&6; } - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module grp" >&5 -printf %s "checking for stdlib extension module grp... " >&6; } - if test "$py_cv_module_grp" != "n/a" -then : - - if true -then : - if test "$ac_cv_func_getgrent" = "yes" && - { test "$ac_cv_func_getgrgid" = "yes" || test "$ac_cv_func_getgrgid_r" = "yes"; } -then : - py_cv_module_grp=yes -else case e in #( - e) py_cv_module_grp=missing ;; -esac -fi -else case e in #( - e) py_cv_module_grp=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_GRP_STATE=$py_cv_module_grp$as_nl" - if test "x$py_cv_module_grp" = xyes -then : - - - - -fi - if test "$py_cv_module_grp" = yes; then - MODULE_GRP_TRUE= - MODULE_GRP_FALSE='#' -else - MODULE_GRP_TRUE='#' - MODULE_GRP_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_grp" >&5 -printf "%s\n" "$py_cv_module_grp" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module pwd" >&5 -printf %s "checking for stdlib extension module pwd... " >&6; } - if test "$py_cv_module_pwd" != "n/a" -then : - - if true -then : - if test "$ac_cv_func_getpwuid" = yes -o "$ac_cv_func_getpwuid_r" = yes -then : - py_cv_module_pwd=yes -else case e in #( - e) py_cv_module_pwd=missing ;; -esac -fi -else case e in #( - e) py_cv_module_pwd=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_PWD_STATE=$py_cv_module_pwd$as_nl" - if test "x$py_cv_module_pwd" = xyes -then : - - - - -fi - if test "$py_cv_module_pwd" = yes; then - MODULE_PWD_TRUE= - MODULE_PWD_FALSE='#' -else - MODULE_PWD_TRUE='#' - MODULE_PWD_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_pwd" >&5 -printf "%s\n" "$py_cv_module_pwd" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module resource" >&5 -printf %s "checking for stdlib extension module resource... " >&6; } - if test "$py_cv_module_resource" != "n/a" -then : - - if true -then : - if test "$ac_cv_header_sys_resource_h" = yes -then : - py_cv_module_resource=yes -else case e in #( - e) py_cv_module_resource=missing ;; -esac -fi -else case e in #( - e) py_cv_module_resource=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_RESOURCE_STATE=$py_cv_module_resource$as_nl" - if test "x$py_cv_module_resource" = xyes -then : - - - - -fi - if test "$py_cv_module_resource" = yes; then - MODULE_RESOURCE_TRUE= - MODULE_RESOURCE_FALSE='#' -else - MODULE_RESOURCE_TRUE='#' - MODULE_RESOURCE_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_resource" >&5 -printf "%s\n" "$py_cv_module_resource" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _scproxy" >&5 -printf %s "checking for stdlib extension module _scproxy... " >&6; } - if test "$py_cv_module__scproxy" != "n/a" -then : - - if test "$ac_sys_system" = "Darwin" -then : - if true -then : - py_cv_module__scproxy=yes -else case e in #( - e) py_cv_module__scproxy=missing ;; -esac -fi -else case e in #( - e) py_cv_module__scproxy=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__SCPROXY_STATE=$py_cv_module__scproxy$as_nl" - if test "x$py_cv_module__scproxy" = xyes -then : - - - as_fn_append MODULE_BLOCK "MODULE__SCPROXY_LDFLAGS=-framework SystemConfiguration -framework CoreFoundation$as_nl" - -fi - if test "$py_cv_module__scproxy" = yes; then - MODULE__SCPROXY_TRUE= - MODULE__SCPROXY_FALSE='#' -else - MODULE__SCPROXY_TRUE='#' - MODULE__SCPROXY_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__scproxy" >&5 -printf "%s\n" "$py_cv_module__scproxy" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module syslog" >&5 -printf %s "checking for stdlib extension module syslog... " >&6; } - if test "$py_cv_module_syslog" != "n/a" -then : - - if true -then : - if test "$ac_cv_header_syslog_h" = yes -then : - py_cv_module_syslog=yes -else case e in #( - e) py_cv_module_syslog=missing ;; -esac -fi -else case e in #( - e) py_cv_module_syslog=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_SYSLOG_STATE=$py_cv_module_syslog$as_nl" - if test "x$py_cv_module_syslog" = xyes -then : - - - - -fi - if test "$py_cv_module_syslog" = yes; then - MODULE_SYSLOG_TRUE= - MODULE_SYSLOG_FALSE='#' -else - MODULE_SYSLOG_TRUE='#' - MODULE_SYSLOG_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_syslog" >&5 -printf "%s\n" "$py_cv_module_syslog" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module termios" >&5 -printf %s "checking for stdlib extension module termios... " >&6; } - if test "$py_cv_module_termios" != "n/a" -then : - - if true -then : - if test "$ac_cv_header_termios_h" = yes -then : - py_cv_module_termios=yes -else case e in #( - e) py_cv_module_termios=missing ;; -esac -fi -else case e in #( - e) py_cv_module_termios=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_TERMIOS_STATE=$py_cv_module_termios$as_nl" - if test "x$py_cv_module_termios" = xyes -then : - - - - -fi - if test "$py_cv_module_termios" = yes; then - MODULE_TERMIOS_TRUE= - MODULE_TERMIOS_FALSE='#' -else - MODULE_TERMIOS_TRUE='#' - MODULE_TERMIOS_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_termios" >&5 -printf "%s\n" "$py_cv_module_termios" >&6; } - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module pyexpat" >&5 -printf %s "checking for stdlib extension module pyexpat... " >&6; } - if test "$py_cv_module_pyexpat" != "n/a" -then : - - if true -then : - if test "$ac_cv_header_sys_time_h" = "yes" -then : - py_cv_module_pyexpat=yes -else case e in #( - e) py_cv_module_pyexpat=missing ;; -esac -fi -else case e in #( - e) py_cv_module_pyexpat=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_PYEXPAT_STATE=$py_cv_module_pyexpat$as_nl" - if test "x$py_cv_module_pyexpat" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE_PYEXPAT_CFLAGS=$LIBEXPAT_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE_PYEXPAT_LDFLAGS=$LIBEXPAT_LDFLAGS$as_nl" - -fi - if test "$py_cv_module_pyexpat" = yes; then - MODULE_PYEXPAT_TRUE= - MODULE_PYEXPAT_FALSE='#' -else - MODULE_PYEXPAT_TRUE='#' - MODULE_PYEXPAT_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_pyexpat" >&5 -printf "%s\n" "$py_cv_module_pyexpat" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _elementtree" >&5 -printf %s "checking for stdlib extension module _elementtree... " >&6; } - if test "$py_cv_module__elementtree" != "n/a" -then : - - if true -then : - if true -then : - py_cv_module__elementtree=yes -else case e in #( - e) py_cv_module__elementtree=missing ;; -esac -fi -else case e in #( - e) py_cv_module__elementtree=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__ELEMENTTREE_STATE=$py_cv_module__elementtree$as_nl" - if test "x$py_cv_module__elementtree" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__ELEMENTTREE_CFLAGS=$LIBEXPAT_CFLAGS$as_nl" - - -fi - if test "$py_cv_module__elementtree" = yes; then - MODULE__ELEMENTTREE_TRUE= - MODULE__ELEMENTTREE_FALSE='#' -else - MODULE__ELEMENTTREE_TRUE='#' - MODULE__ELEMENTTREE_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__elementtree" >&5 -printf "%s\n" "$py_cv_module__elementtree" >&6; } - - - if test "$py_cv_module__codecs_cn" != "n/a" -then : - py_cv_module__codecs_cn=yes -fi - if test "$py_cv_module__codecs_cn" = yes; then - MODULE__CODECS_CN_TRUE= - MODULE__CODECS_CN_FALSE='#' -else - MODULE__CODECS_CN_TRUE='#' - MODULE__CODECS_CN_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__CODECS_CN_STATE=$py_cv_module__codecs_cn$as_nl" - if test "x$py_cv_module__codecs_cn" = xyes -then : - - - - -fi - - - if test "$py_cv_module__codecs_hk" != "n/a" -then : - py_cv_module__codecs_hk=yes -fi - if test "$py_cv_module__codecs_hk" = yes; then - MODULE__CODECS_HK_TRUE= - MODULE__CODECS_HK_FALSE='#' -else - MODULE__CODECS_HK_TRUE='#' - MODULE__CODECS_HK_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__CODECS_HK_STATE=$py_cv_module__codecs_hk$as_nl" - if test "x$py_cv_module__codecs_hk" = xyes -then : - - - - -fi - - - if test "$py_cv_module__codecs_iso2022" != "n/a" -then : - py_cv_module__codecs_iso2022=yes -fi - if test "$py_cv_module__codecs_iso2022" = yes; then - MODULE__CODECS_ISO2022_TRUE= - MODULE__CODECS_ISO2022_FALSE='#' -else - MODULE__CODECS_ISO2022_TRUE='#' - MODULE__CODECS_ISO2022_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__CODECS_ISO2022_STATE=$py_cv_module__codecs_iso2022$as_nl" - if test "x$py_cv_module__codecs_iso2022" = xyes -then : - - - - -fi - - - if test "$py_cv_module__codecs_jp" != "n/a" -then : - py_cv_module__codecs_jp=yes -fi - if test "$py_cv_module__codecs_jp" = yes; then - MODULE__CODECS_JP_TRUE= - MODULE__CODECS_JP_FALSE='#' -else - MODULE__CODECS_JP_TRUE='#' - MODULE__CODECS_JP_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__CODECS_JP_STATE=$py_cv_module__codecs_jp$as_nl" - if test "x$py_cv_module__codecs_jp" = xyes -then : - - - - -fi - - - if test "$py_cv_module__codecs_kr" != "n/a" -then : - py_cv_module__codecs_kr=yes -fi - if test "$py_cv_module__codecs_kr" = yes; then - MODULE__CODECS_KR_TRUE= - MODULE__CODECS_KR_FALSE='#' -else - MODULE__CODECS_KR_TRUE='#' - MODULE__CODECS_KR_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__CODECS_KR_STATE=$py_cv_module__codecs_kr$as_nl" - if test "x$py_cv_module__codecs_kr" = xyes -then : - - - - -fi - - - if test "$py_cv_module__codecs_tw" != "n/a" -then : - py_cv_module__codecs_tw=yes -fi - if test "$py_cv_module__codecs_tw" = yes; then - MODULE__CODECS_TW_TRUE= - MODULE__CODECS_TW_FALSE='#' -else - MODULE__CODECS_TW_TRUE='#' - MODULE__CODECS_TW_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__CODECS_TW_STATE=$py_cv_module__codecs_tw$as_nl" - if test "x$py_cv_module__codecs_tw" = xyes -then : - - - - -fi - - - if test "$py_cv_module__multibytecodec" != "n/a" -then : - py_cv_module__multibytecodec=yes -fi - if test "$py_cv_module__multibytecodec" = yes; then - MODULE__MULTIBYTECODEC_TRUE= - MODULE__MULTIBYTECODEC_FALSE='#' -else - MODULE__MULTIBYTECODEC_TRUE='#' - MODULE__MULTIBYTECODEC_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE__MULTIBYTECODEC_STATE=$py_cv_module__multibytecodec$as_nl" - if test "x$py_cv_module__multibytecodec" = xyes -then : - - - - -fi - - - if test "$py_cv_module_unicodedata" != "n/a" -then : - py_cv_module_unicodedata=yes -fi - if test "$py_cv_module_unicodedata" = yes; then - MODULE_UNICODEDATA_TRUE= - MODULE_UNICODEDATA_FALSE='#' -else - MODULE_UNICODEDATA_TRUE='#' - MODULE_UNICODEDATA_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE_UNICODEDATA_STATE=$py_cv_module_unicodedata$as_nl" - if test "x$py_cv_module_unicodedata" = xyes -then : - - - - -fi - - -############################################################################### -# HACL* compilation and linking configuration (contact: @picnixz) -# -# Used by the HACL*-based implementations of cryptographic primitives. -# -# CPython provides a vendored copy of a subset of the HACL* project used -# to build extension modules of cryptographic primitives. On WASI, HACL* -# sources must be statically linked with the extension modules; on other -# platforms, the extension modules may assume that HACL* has been compiled -# as a shared library. -# -# Example for MD5: -# -# * Compile Modules/_hacl/Hacl_Hash_MD5.c into Modules/_hacl/Hacl_Hash_MD5.o. -# * Decide whether the object files are to be passed to the linker (emulate -# a shared library without having to install it) or if we need to create -# a static library for WASI. The following summarizes the values taken by -# the MODULE__LDFLAGS variable depending on the linkage type: -# - shared: MODULE__MD5_LDFLAGS is set to LIBHACL_MD5_OBJS -# - static: MODULE__MD5_LDFLAGS is set to Modules/_hacl/libHacl_Hash_MD5.a -# * Compile Modules/md5module.c into Modules/md5module.o. -# * Link Modules/md5module.o using $(MODULE__MD5_LDFLAGS) -# and get Modules/_md5$(EXT_SUFFIX). -# -# LIBHACL_FLAG_I: '-I' flags passed to $(CC) for HACL* and HACL*-based modules -# LIBHACL_FLAG_D: '-D' flags passed to $(CC) for HACL* and HACL*-based modules -# LIBHACL_CFLAGS: compiler flags passed for HACL* and HACL*-based modules -# LIBHACL_LDFLAGS: linker flags passed for HACL* and HACL*-based modules -LIBHACL_FLAG_I='-I$(srcdir)/Modules/_hacl -I$(srcdir)/Modules/_hacl/include' -LIBHACL_FLAG_D='-D_BSD_SOURCE -D_DEFAULT_SOURCE' -case "$ac_sys_system" in - Linux*) - if test "$ac_cv_func_explicit_bzero" = "no"; then - LIBHACL_FLAG_D="${LIBHACL_FLAG_D} -DLINUX_NO_EXPLICIT_BZERO" - fi - ;; -esac -LIBHACL_CFLAGS="${LIBHACL_FLAG_I} ${LIBHACL_FLAG_D} \$(PY_STDMODULE_CFLAGS) \$(CCSHARED)" - -LIBHACL_LDFLAGS= # for now, no specific linker flags are needed - - -if test "$UNIVERSAL_ARCHS" = "universal2" -o \ - \( "$build_cpu" = "aarch64" -a "$build_vendor" = "apple" \) -then - use_hacl_universal2_impl=yes -else - use_hacl_universal2_impl=no -fi - -# The SIMD files use aligned_alloc, which is not available on older versions of -# Android. -# The *mmintrin.h headers are x86-family-specific, so can't be used on WASI. -if test "$ac_sys_system" != "Linux-android" -a "$ac_sys_system" != "WASI" || \ - { test -n "$ANDROID_API_LEVEL" && test "$ANDROID_API_LEVEL" -ge 28; } -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse -msse2 -msse3 -msse4.1 -msse4.2" >&5 -printf %s "checking whether C compiler accepts -msse -msse2 -msse3 -msse4.1 -msse4.2... " >&6; } -if test ${ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Werror -msse -msse2 -msse3 -msse4.1 -msse4.2" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2=yes -else case e in #( - e) ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2" >&6; } -if test "x$ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2" = xyes -then : - - LIBHACL_SIMD128_FLAGS="-msse -msse2 -msse3 -msse4.1 -msse4.2" - - -printf "%s\n" "#define _Py_HACL_CAN_COMPILE_VEC128 1" >>confdefs.h - - - # macOS universal2 builds *support* the -msse etc flags because they're - # available on x86_64. However, performance of the HACL SIMD128 implementation - # isn't great, so it's disabled on ARM64. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HACL* SIMD128 implementation" >&5 -printf %s "checking for HACL* SIMD128 implementation... " >&6; } - if test "$use_hacl_universal2_impl" = "yes"; then - LIBHACL_BLAKE2_SIMD128_OBJS="Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.o" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: universal2" >&5 -printf "%s\n" "universal2" >&6; } - else - LIBHACL_BLAKE2_SIMD128_OBJS="Modules/_hacl/Hacl_Hash_Blake2s_Simd128.o" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: standard" >&5 -printf "%s\n" "standard" >&6; } - fi - - -else case e in #( - e) : ;; -esac -fi - -fi - - - -# The SIMD files use aligned_alloc, which is not available on older versions of -# Android. -# The *mmintrin.h headers are x86-family-specific, so can't be used on WASI. -# -# Although AVX support is not guaranteed on Android -# (https://developer.android.com/ndk/guides/abis#86-64), this is safe because we do a -# runtime CPUID check. -if test "$ac_sys_system" != "Linux-android" -a "$ac_sys_system" != "WASI" || \ - { test -n "$ANDROID_API_LEVEL" && test "$ANDROID_API_LEVEL" -ge 28; } -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mavx2" >&5 -printf %s "checking whether C compiler accepts -mavx2... " >&6; } -if test ${ax_cv_check_cflags__Werror__mavx2+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Werror -mavx2" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags__Werror__mavx2=yes -else case e in #( - e) ax_cv_check_cflags__Werror__mavx2=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__mavx2" >&5 -printf "%s\n" "$ax_cv_check_cflags__Werror__mavx2" >&6; } -if test "x$ax_cv_check_cflags__Werror__mavx2" = xyes -then : - - LIBHACL_SIMD256_FLAGS="-mavx2" - -printf "%s\n" "#define _Py_HACL_CAN_COMPILE_VEC256 1" >>confdefs.h - - - # macOS universal2 builds *support* the -mavx2 compiler flag because it's - # available on x86_64; but the HACL SIMD256 build then fails because the - # implementation requires symbols that aren't available on ARM64. Use a - # wrapped implementation if we're building for universal2. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HACL* SIMD256 implementation" >&5 -printf %s "checking for HACL* SIMD256 implementation... " >&6; } - if test "$use_hacl_universal2_impl" = "yes"; then - LIBHACL_BLAKE2_SIMD256_OBJS="Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.o" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: universal2" >&5 -printf "%s\n" "universal2" >&6; } - else - LIBHACL_BLAKE2_SIMD256_OBJS="Modules/_hacl/Hacl_Hash_Blake2b_Simd256.o" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: standard" >&5 -printf "%s\n" "standard" >&6; } - fi - -else case e in #( - e) : ;; -esac -fi - -fi - - -### end(HACL* configuration) - -############################################################################### -# HACL*-based cryptographic primitives - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HACL* library linking type" >&5 -printf %s "checking for HACL* library linking type... " >&6; } -if test "$ac_sys_system" = "WASI"; then - LIBHACL_LDEPS_LIBTYPE=STATIC - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: static" >&5 -printf "%s\n" "static" >&6; } -else - LIBHACL_LDEPS_LIBTYPE=SHARED - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: shared" >&5 -printf "%s\n" "shared" >&6; } -fi -# Used to complete the "MODULE__LDEPS" Makefile variable. -# The LDEPS variable is a Makefile rule prerequisite. - - - - - - - LIBHACL_MD5_LDFLAGS=LIBHACL_MD5_LIB_${LIBHACL_LDEPS_LIBTYPE} - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _md5" >&5 -printf %s "checking for stdlib extension module _md5... " >&6; } - if test "$py_cv_module__md5" != "n/a" -then : - - if test "$with_builtin_md5" = yes -then : - if true -then : - py_cv_module__md5=yes -else case e in #( - e) py_cv_module__md5=missing ;; -esac -fi -else case e in #( - e) py_cv_module__md5=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__MD5_STATE=$py_cv_module__md5$as_nl" - if test "x$py_cv_module__md5" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__MD5_CFLAGS=$LIBHACL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__MD5_LDFLAGS=\$($LIBHACL_MD5_LDFLAGS)$as_nl" - -fi - if test "$py_cv_module__md5" = yes; then - MODULE__MD5_TRUE= - MODULE__MD5_FALSE='#' -else - MODULE__MD5_TRUE='#' - MODULE__MD5_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__md5" >&5 -printf "%s\n" "$py_cv_module__md5" >&6; } - - - - - - LIBHACL_SHA1_LDFLAGS=LIBHACL_SHA1_LIB_${LIBHACL_LDEPS_LIBTYPE} - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _sha1" >&5 -printf %s "checking for stdlib extension module _sha1... " >&6; } - if test "$py_cv_module__sha1" != "n/a" -then : - - if test "$with_builtin_sha1" = yes -then : - if true -then : - py_cv_module__sha1=yes -else case e in #( - e) py_cv_module__sha1=missing ;; -esac -fi -else case e in #( - e) py_cv_module__sha1=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__SHA1_STATE=$py_cv_module__sha1$as_nl" - if test "x$py_cv_module__sha1" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__SHA1_CFLAGS=$LIBHACL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__SHA1_LDFLAGS=\$($LIBHACL_SHA1_LDFLAGS)$as_nl" - -fi - if test "$py_cv_module__sha1" = yes; then - MODULE__SHA1_TRUE= - MODULE__SHA1_FALSE='#' -else - MODULE__SHA1_TRUE='#' - MODULE__SHA1_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__sha1" >&5 -printf "%s\n" "$py_cv_module__sha1" >&6; } - - - - - - LIBHACL_SHA2_LDFLAGS=LIBHACL_SHA2_LIB_${LIBHACL_LDEPS_LIBTYPE} - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _sha2" >&5 -printf %s "checking for stdlib extension module _sha2... " >&6; } - if test "$py_cv_module__sha2" != "n/a" -then : - - if test "$with_builtin_sha2" = yes -then : - if true -then : - py_cv_module__sha2=yes -else case e in #( - e) py_cv_module__sha2=missing ;; -esac -fi -else case e in #( - e) py_cv_module__sha2=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__SHA2_STATE=$py_cv_module__sha2$as_nl" - if test "x$py_cv_module__sha2" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__SHA2_CFLAGS=$LIBHACL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__SHA2_LDFLAGS=\$($LIBHACL_SHA2_LDFLAGS)$as_nl" - -fi - if test "$py_cv_module__sha2" = yes; then - MODULE__SHA2_TRUE= - MODULE__SHA2_FALSE='#' -else - MODULE__SHA2_TRUE='#' - MODULE__SHA2_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__sha2" >&5 -printf "%s\n" "$py_cv_module__sha2" >&6; } - - - - - - LIBHACL_SHA3_LDFLAGS=LIBHACL_SHA3_LIB_${LIBHACL_LDEPS_LIBTYPE} - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _sha3" >&5 -printf %s "checking for stdlib extension module _sha3... " >&6; } - if test "$py_cv_module__sha3" != "n/a" -then : - - if test "$with_builtin_sha3" = yes -then : - if true -then : - py_cv_module__sha3=yes -else case e in #( - e) py_cv_module__sha3=missing ;; -esac -fi -else case e in #( - e) py_cv_module__sha3=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__SHA3_STATE=$py_cv_module__sha3$as_nl" - if test "x$py_cv_module__sha3" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__SHA3_CFLAGS=$LIBHACL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__SHA3_LDFLAGS=\$($LIBHACL_SHA3_LDFLAGS)$as_nl" - -fi - if test "$py_cv_module__sha3" = yes; then - MODULE__SHA3_TRUE= - MODULE__SHA3_FALSE='#' -else - MODULE__SHA3_TRUE='#' - MODULE__SHA3_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__sha3" >&5 -printf "%s\n" "$py_cv_module__sha3" >&6; } - - - - - - LIBHACL_BLAKE2_LDFLAGS=LIBHACL_BLAKE2_LIB_${LIBHACL_LDEPS_LIBTYPE} - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _blake2" >&5 -printf %s "checking for stdlib extension module _blake2... " >&6; } - if test "$py_cv_module__blake2" != "n/a" -then : - - if test "$with_builtin_blake2" = yes -then : - if true -then : - py_cv_module__blake2=yes -else case e in #( - e) py_cv_module__blake2=missing ;; -esac -fi -else case e in #( - e) py_cv_module__blake2=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__BLAKE2_STATE=$py_cv_module__blake2$as_nl" - if test "x$py_cv_module__blake2" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__BLAKE2_CFLAGS=$LIBHACL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__BLAKE2_LDFLAGS=\$($LIBHACL_BLAKE2_LDFLAGS)$as_nl" - -fi - if test "$py_cv_module__blake2" = yes; then - MODULE__BLAKE2_TRUE= - MODULE__BLAKE2_FALSE='#' -else - MODULE__BLAKE2_TRUE='#' - MODULE__BLAKE2_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__blake2" >&5 -printf "%s\n" "$py_cv_module__blake2" >&6; } - - - - - - - LIBHACL_HMAC_LDFLAGS=LIBHACL_HMAC_LIB_${LIBHACL_LDEPS_LIBTYPE} - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _hmac" >&5 -printf %s "checking for stdlib extension module _hmac... " >&6; } - if test "$py_cv_module__hmac" != "n/a" -then : - - if test "$ac_sys_system" != "Emscripten" -then : - if true -then : - py_cv_module__hmac=yes -else case e in #( - e) py_cv_module__hmac=missing ;; -esac -fi -else case e in #( - e) py_cv_module__hmac=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__HMAC_STATE=$py_cv_module__hmac$as_nl" - if test "x$py_cv_module__hmac" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__HMAC_CFLAGS=$LIBHACL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__HMAC_LDFLAGS=\$($LIBHACL_HMAC_LDFLAGS)$as_nl" - -fi - if test "$py_cv_module__hmac" = yes; then - MODULE__HMAC_TRUE= - MODULE__HMAC_FALSE='#' -else - MODULE__HMAC_TRUE='#' - MODULE__HMAC_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__hmac" >&5 -printf "%s\n" "$py_cv_module__hmac" >&6; } - - - -### end(cryptographic primitives) - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _ctypes" >&5 -printf %s "checking for stdlib extension module _ctypes... " >&6; } - if test "$py_cv_module__ctypes" != "n/a" -then : - - if true -then : - if test "$have_libffi" = yes -then : - py_cv_module__ctypes=yes -else case e in #( - e) py_cv_module__ctypes=missing ;; -esac -fi -else case e in #( - e) py_cv_module__ctypes=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__CTYPES_STATE=$py_cv_module__ctypes$as_nl" - if test "x$py_cv_module__ctypes" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__CTYPES_CFLAGS=$NO_STRICT_OVERFLOW_CFLAGS $LIBFFI_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__CTYPES_LDFLAGS=$LIBFFI_LIBS$as_nl" - -fi - if test "$py_cv_module__ctypes" = yes; then - MODULE__CTYPES_TRUE= - MODULE__CTYPES_FALSE='#' -else - MODULE__CTYPES_TRUE='#' - MODULE__CTYPES_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__ctypes" >&5 -printf "%s\n" "$py_cv_module__ctypes" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _curses" >&5 -printf %s "checking for stdlib extension module _curses... " >&6; } - if test "$py_cv_module__curses" != "n/a" -then : - - if true -then : - if test "$have_curses" = "yes" -then : - py_cv_module__curses=yes -else case e in #( - e) py_cv_module__curses=missing ;; -esac -fi -else case e in #( - e) py_cv_module__curses=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__CURSES_STATE=$py_cv_module__curses$as_nl" - if test "x$py_cv_module__curses" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__CURSES_CFLAGS=$CURSES_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__CURSES_LDFLAGS=$CURSES_LIBS -$as_nl" - -fi - if test "$py_cv_module__curses" = yes; then - MODULE__CURSES_TRUE= - MODULE__CURSES_FALSE='#' -else - MODULE__CURSES_TRUE='#' - MODULE__CURSES_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__curses" >&5 -printf "%s\n" "$py_cv_module__curses" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _curses_panel" >&5 -printf %s "checking for stdlib extension module _curses_panel... " >&6; } - if test "$py_cv_module__curses_panel" != "n/a" -then : - - if true -then : - if test "$have_curses" = "yes" && test "$have_panel" = "yes" -then : - py_cv_module__curses_panel=yes -else case e in #( - e) py_cv_module__curses_panel=missing ;; -esac -fi -else case e in #( - e) py_cv_module__curses_panel=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__CURSES_PANEL_STATE=$py_cv_module__curses_panel$as_nl" - if test "x$py_cv_module__curses_panel" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__CURSES_PANEL_CFLAGS=$PANEL_CFLAGS $CURSES_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__CURSES_PANEL_LDFLAGS=$PANEL_LIBS $CURSES_LIBS -$as_nl" - -fi - if test "$py_cv_module__curses_panel" = yes; then - MODULE__CURSES_PANEL_TRUE= - MODULE__CURSES_PANEL_FALSE='#' -else - MODULE__CURSES_PANEL_TRUE='#' - MODULE__CURSES_PANEL_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__curses_panel" >&5 -printf "%s\n" "$py_cv_module__curses_panel" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _decimal" >&5 -printf %s "checking for stdlib extension module _decimal... " >&6; } - if test "$py_cv_module__decimal" != "n/a" -then : - - if true -then : - if test "$have_mpdec" = "yes" -then : - py_cv_module__decimal=yes -else case e in #( - e) py_cv_module__decimal=missing ;; -esac -fi -else case e in #( - e) py_cv_module__decimal=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__DECIMAL_STATE=$py_cv_module__decimal$as_nl" - if test "x$py_cv_module__decimal" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__DECIMAL_CFLAGS=$LIBMPDEC_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__DECIMAL_LDFLAGS=$LIBMPDEC_LIBS$as_nl" - -fi - if test "$py_cv_module__decimal" = yes; then - MODULE__DECIMAL_TRUE= - MODULE__DECIMAL_FALSE='#' -else - MODULE__DECIMAL_TRUE='#' - MODULE__DECIMAL_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__decimal" >&5 -printf "%s\n" "$py_cv_module__decimal" >&6; } - - -if test "x$with_system_libmpdec" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: the bundled copy of libmpdec is scheduled for removal in Python 3.16; consider using a system installed mpdecimal library." >&5 -printf "%s\n" "$as_me: WARNING: the bundled copy of libmpdec is scheduled for removal in Python 3.16; consider using a system installed mpdecimal library." >&2;} -fi -if test "$with_system_libmpdec" = "yes" && test "$have_mpdec" = "no" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: no system libmpdec found; falling back to pure-Python version for the decimal module" >&5 -printf "%s\n" "$as_me: WARNING: no system libmpdec found; falling back to pure-Python version for the decimal module" >&2;} -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _dbm" >&5 -printf %s "checking for stdlib extension module _dbm... " >&6; } - if test "$py_cv_module__dbm" != "n/a" -then : - - if test -n "$with_dbmliborder" -then : - if test "$have_dbm" != "no" -then : - py_cv_module__dbm=yes -else case e in #( - e) py_cv_module__dbm=missing ;; -esac -fi -else case e in #( - e) py_cv_module__dbm=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__DBM_STATE=$py_cv_module__dbm$as_nl" - if test "x$py_cv_module__dbm" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__DBM_CFLAGS=$DBM_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__DBM_LDFLAGS=$DBM_LIBS$as_nl" - -fi - if test "$py_cv_module__dbm" = yes; then - MODULE__DBM_TRUE= - MODULE__DBM_FALSE='#' -else - MODULE__DBM_TRUE='#' - MODULE__DBM_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__dbm" >&5 -printf "%s\n" "$py_cv_module__dbm" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _gdbm" >&5 -printf %s "checking for stdlib extension module _gdbm... " >&6; } - if test "$py_cv_module__gdbm" != "n/a" -then : - - if test "$have_gdbm_dbmliborder" = yes -then : - if test "$have_gdbm" = yes -then : - py_cv_module__gdbm=yes -else case e in #( - e) py_cv_module__gdbm=missing ;; -esac -fi -else case e in #( - e) py_cv_module__gdbm=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__GDBM_STATE=$py_cv_module__gdbm$as_nl" - if test "x$py_cv_module__gdbm" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__GDBM_CFLAGS=$GDBM_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__GDBM_LDFLAGS=$GDBM_LIBS$as_nl" - -fi - if test "$py_cv_module__gdbm" = yes; then - MODULE__GDBM_TRUE= - MODULE__GDBM_FALSE='#' -else - MODULE__GDBM_TRUE='#' - MODULE__GDBM_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__gdbm" >&5 -printf "%s\n" "$py_cv_module__gdbm" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module readline" >&5 -printf %s "checking for stdlib extension module readline... " >&6; } - if test "$py_cv_module_readline" != "n/a" -then : - - if true -then : - if test "$with_readline" != "no" -then : - py_cv_module_readline=yes -else case e in #( - e) py_cv_module_readline=missing ;; -esac -fi -else case e in #( - e) py_cv_module_readline=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_READLINE_STATE=$py_cv_module_readline$as_nl" - if test "x$py_cv_module_readline" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE_READLINE_CFLAGS=$READLINE_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE_READLINE_LDFLAGS=$READLINE_LIBS$as_nl" - -fi - if test "$py_cv_module_readline" = yes; then - MODULE_READLINE_TRUE= - MODULE_READLINE_FALSE='#' -else - MODULE_READLINE_TRUE='#' - MODULE_READLINE_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_readline" >&5 -printf "%s\n" "$py_cv_module_readline" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _sqlite3" >&5 -printf %s "checking for stdlib extension module _sqlite3... " >&6; } - if test "$py_cv_module__sqlite3" != "n/a" -then : - - if test "$have_sqlite3" = "yes" -then : - if test "$have_supported_sqlite3" = "yes" -then : - py_cv_module__sqlite3=yes -else case e in #( - e) py_cv_module__sqlite3=missing ;; -esac -fi -else case e in #( - e) py_cv_module__sqlite3=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__SQLITE3_STATE=$py_cv_module__sqlite3$as_nl" - if test "x$py_cv_module__sqlite3" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__SQLITE3_CFLAGS=$LIBSQLITE3_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__SQLITE3_LDFLAGS=$LIBSQLITE3_LIBS$as_nl" - -fi - if test "$py_cv_module__sqlite3" = yes; then - MODULE__SQLITE3_TRUE= - MODULE__SQLITE3_FALSE='#' -else - MODULE__SQLITE3_TRUE='#' - MODULE__SQLITE3_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__sqlite3" >&5 -printf "%s\n" "$py_cv_module__sqlite3" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _tkinter" >&5 -printf %s "checking for stdlib extension module _tkinter... " >&6; } - if test "$py_cv_module__tkinter" != "n/a" -then : - - if true -then : - if test "$have_tcltk" = "yes" -then : - py_cv_module__tkinter=yes -else case e in #( - e) py_cv_module__tkinter=missing ;; -esac -fi -else case e in #( - e) py_cv_module__tkinter=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__TKINTER_STATE=$py_cv_module__tkinter$as_nl" - if test "x$py_cv_module__tkinter" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__TKINTER_CFLAGS=$TCLTK_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__TKINTER_LDFLAGS=$TCLTK_LIBS$as_nl" - -fi - if test "$py_cv_module__tkinter" = yes; then - MODULE__TKINTER_TRUE= - MODULE__TKINTER_FALSE='#' -else - MODULE__TKINTER_TRUE='#' - MODULE__TKINTER_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__tkinter" >&5 -printf "%s\n" "$py_cv_module__tkinter" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _uuid" >&5 -printf %s "checking for stdlib extension module _uuid... " >&6; } - if test "$py_cv_module__uuid" != "n/a" -then : - - if true -then : - if test "$have_uuid" = "yes" -then : - py_cv_module__uuid=yes -else case e in #( - e) py_cv_module__uuid=missing ;; -esac -fi -else case e in #( - e) py_cv_module__uuid=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__UUID_STATE=$py_cv_module__uuid$as_nl" - if test "x$py_cv_module__uuid" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__UUID_CFLAGS=$LIBUUID_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__UUID_LDFLAGS=$LIBUUID_LIBS$as_nl" - -fi - if test "$py_cv_module__uuid" = yes; then - MODULE__UUID_TRUE= - MODULE__UUID_FALSE='#' -else - MODULE__UUID_TRUE='#' - MODULE__UUID_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__uuid" >&5 -printf "%s\n" "$py_cv_module__uuid" >&6; } - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module zlib" >&5 -printf %s "checking for stdlib extension module zlib... " >&6; } - if test "$py_cv_module_zlib" != "n/a" -then : - - if true -then : - if test "$have_zlib" = yes -then : - py_cv_module_zlib=yes -else case e in #( - e) py_cv_module_zlib=missing ;; -esac -fi -else case e in #( - e) py_cv_module_zlib=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_ZLIB_STATE=$py_cv_module_zlib$as_nl" - if test "x$py_cv_module_zlib" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE_ZLIB_CFLAGS=$ZLIB_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE_ZLIB_LDFLAGS=$ZLIB_LIBS$as_nl" - -fi - if test "$py_cv_module_zlib" = yes; then - MODULE_ZLIB_TRUE= - MODULE_ZLIB_FALSE='#' -else - MODULE_ZLIB_TRUE='#' - MODULE_ZLIB_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_zlib" >&5 -printf "%s\n" "$py_cv_module_zlib" >&6; } - - - if test "$py_cv_module_binascii" != "n/a" -then : - py_cv_module_binascii=yes -fi - if test "$py_cv_module_binascii" = yes; then - MODULE_BINASCII_TRUE= - MODULE_BINASCII_FALSE='#' -else - MODULE_BINASCII_TRUE='#' - MODULE_BINASCII_FALSE= -fi - - as_fn_append MODULE_BLOCK "MODULE_BINASCII_STATE=$py_cv_module_binascii$as_nl" - if test "x$py_cv_module_binascii" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE_BINASCII_CFLAGS=$BINASCII_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE_BINASCII_LDFLAGS=$BINASCII_LIBS$as_nl" - -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _bz2" >&5 -printf %s "checking for stdlib extension module _bz2... " >&6; } - if test "$py_cv_module__bz2" != "n/a" -then : - - if true -then : - if test "$have_bzip2" = yes -then : - py_cv_module__bz2=yes -else case e in #( - e) py_cv_module__bz2=missing ;; -esac -fi -else case e in #( - e) py_cv_module__bz2=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__BZ2_STATE=$py_cv_module__bz2$as_nl" - if test "x$py_cv_module__bz2" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__BZ2_CFLAGS=$BZIP2_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__BZ2_LDFLAGS=$BZIP2_LIBS$as_nl" - -fi - if test "$py_cv_module__bz2" = yes; then - MODULE__BZ2_TRUE= - MODULE__BZ2_FALSE='#' -else - MODULE__BZ2_TRUE='#' - MODULE__BZ2_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__bz2" >&5 -printf "%s\n" "$py_cv_module__bz2" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _lzma" >&5 -printf %s "checking for stdlib extension module _lzma... " >&6; } - if test "$py_cv_module__lzma" != "n/a" -then : - - if true -then : - if test "$have_liblzma" = yes -then : - py_cv_module__lzma=yes -else case e in #( - e) py_cv_module__lzma=missing ;; -esac -fi -else case e in #( - e) py_cv_module__lzma=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__LZMA_STATE=$py_cv_module__lzma$as_nl" - if test "x$py_cv_module__lzma" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__LZMA_CFLAGS=$LIBLZMA_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__LZMA_LDFLAGS=$LIBLZMA_LIBS$as_nl" - -fi - if test "$py_cv_module__lzma" = yes; then - MODULE__LZMA_TRUE= - MODULE__LZMA_FALSE='#' -else - MODULE__LZMA_TRUE='#' - MODULE__LZMA_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__lzma" >&5 -printf "%s\n" "$py_cv_module__lzma" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _zstd" >&5 -printf %s "checking for stdlib extension module _zstd... " >&6; } - if test "$py_cv_module__zstd" != "n/a" -then : - - if true -then : - if test "$have_libzstd" = yes -then : - py_cv_module__zstd=yes -else case e in #( - e) py_cv_module__zstd=missing ;; -esac -fi -else case e in #( - e) py_cv_module__zstd=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__ZSTD_STATE=$py_cv_module__zstd$as_nl" - if test "x$py_cv_module__zstd" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__ZSTD_CFLAGS=$LIBZSTD_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__ZSTD_LDFLAGS=$LIBZSTD_LIBS$as_nl" - -fi - if test "$py_cv_module__zstd" = yes; then - MODULE__ZSTD_TRUE= - MODULE__ZSTD_FALSE='#' -else - MODULE__ZSTD_TRUE='#' - MODULE__ZSTD_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__zstd" >&5 -printf "%s\n" "$py_cv_module__zstd" >&6; } - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _ssl" >&5 -printf %s "checking for stdlib extension module _ssl... " >&6; } - if test "$py_cv_module__ssl" != "n/a" -then : - - if true -then : - if test "$ac_cv_working_openssl_ssl" = yes -then : - py_cv_module__ssl=yes -else case e in #( - e) py_cv_module__ssl=missing ;; -esac -fi -else case e in #( - e) py_cv_module__ssl=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__SSL_STATE=$py_cv_module__ssl$as_nl" - if test "x$py_cv_module__ssl" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__SSL_CFLAGS=$OPENSSL_INCLUDES$as_nl" - as_fn_append MODULE_BLOCK "MODULE__SSL_LDFLAGS=$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $OPENSSL_LIBS$as_nl" - -fi - if test "$py_cv_module__ssl" = yes; then - MODULE__SSL_TRUE= - MODULE__SSL_FALSE='#' -else - MODULE__SSL_TRUE='#' - MODULE__SSL_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__ssl" >&5 -printf "%s\n" "$py_cv_module__ssl" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _hashlib" >&5 -printf %s "checking for stdlib extension module _hashlib... " >&6; } - if test "$py_cv_module__hashlib" != "n/a" -then : - - if true -then : - if test "$ac_cv_working_openssl_hashlib" = yes -then : - py_cv_module__hashlib=yes -else case e in #( - e) py_cv_module__hashlib=missing ;; -esac -fi -else case e in #( - e) py_cv_module__hashlib=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__HASHLIB_STATE=$py_cv_module__hashlib$as_nl" - if test "x$py_cv_module__hashlib" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__HASHLIB_CFLAGS=$OPENSSL_INCLUDES$as_nl" - as_fn_append MODULE_BLOCK "MODULE__HASHLIB_LDFLAGS=$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $LIBCRYPTO_LIBS$as_nl" - -fi - if test "$py_cv_module__hashlib" = yes; then - MODULE__HASHLIB_TRUE= - MODULE__HASHLIB_FALSE='#' -else - MODULE__HASHLIB_TRUE='#' - MODULE__HASHLIB_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__hashlib" >&5 -printf "%s\n" "$py_cv_module__hashlib" >&6; } - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testcapi" >&5 -printf %s "checking for stdlib extension module _testcapi... " >&6; } - if test "$py_cv_module__testcapi" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if true -then : - py_cv_module__testcapi=yes -else case e in #( - e) py_cv_module__testcapi=missing ;; -esac -fi -else case e in #( - e) py_cv_module__testcapi=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__TESTCAPI_STATE=$py_cv_module__testcapi$as_nl" - if test "x$py_cv_module__testcapi" = xyes -then : - - - as_fn_append MODULE_BLOCK "MODULE__TESTCAPI_LDFLAGS=$LIBATOMIC$as_nl" - -fi - if test "$py_cv_module__testcapi" = yes; then - MODULE__TESTCAPI_TRUE= - MODULE__TESTCAPI_FALSE='#' -else - MODULE__TESTCAPI_TRUE='#' - MODULE__TESTCAPI_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testcapi" >&5 -printf "%s\n" "$py_cv_module__testcapi" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testclinic" >&5 -printf %s "checking for stdlib extension module _testclinic... " >&6; } - if test "$py_cv_module__testclinic" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if true -then : - py_cv_module__testclinic=yes -else case e in #( - e) py_cv_module__testclinic=missing ;; -esac -fi -else case e in #( - e) py_cv_module__testclinic=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__TESTCLINIC_STATE=$py_cv_module__testclinic$as_nl" - if test "x$py_cv_module__testclinic" = xyes -then : - - - - -fi - if test "$py_cv_module__testclinic" = yes; then - MODULE__TESTCLINIC_TRUE= - MODULE__TESTCLINIC_FALSE='#' -else - MODULE__TESTCLINIC_TRUE='#' - MODULE__TESTCLINIC_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testclinic" >&5 -printf "%s\n" "$py_cv_module__testclinic" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testclinic_limited" >&5 -printf %s "checking for stdlib extension module _testclinic_limited... " >&6; } - if test "$py_cv_module__testclinic_limited" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if true -then : - py_cv_module__testclinic_limited=yes -else case e in #( - e) py_cv_module__testclinic_limited=missing ;; -esac -fi -else case e in #( - e) py_cv_module__testclinic_limited=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__TESTCLINIC_LIMITED_STATE=$py_cv_module__testclinic_limited$as_nl" - if test "x$py_cv_module__testclinic_limited" = xyes -then : - - - - -fi - if test "$py_cv_module__testclinic_limited" = yes; then - MODULE__TESTCLINIC_LIMITED_TRUE= - MODULE__TESTCLINIC_LIMITED_FALSE='#' -else - MODULE__TESTCLINIC_LIMITED_TRUE='#' - MODULE__TESTCLINIC_LIMITED_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testclinic_limited" >&5 -printf "%s\n" "$py_cv_module__testclinic_limited" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testlimitedcapi" >&5 -printf %s "checking for stdlib extension module _testlimitedcapi... " >&6; } - if test "$py_cv_module__testlimitedcapi" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if true -then : - py_cv_module__testlimitedcapi=yes -else case e in #( - e) py_cv_module__testlimitedcapi=missing ;; -esac -fi -else case e in #( - e) py_cv_module__testlimitedcapi=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__TESTLIMITEDCAPI_STATE=$py_cv_module__testlimitedcapi$as_nl" - if test "x$py_cv_module__testlimitedcapi" = xyes -then : - - - - -fi - if test "$py_cv_module__testlimitedcapi" = yes; then - MODULE__TESTLIMITEDCAPI_TRUE= - MODULE__TESTLIMITEDCAPI_FALSE='#' -else - MODULE__TESTLIMITEDCAPI_TRUE='#' - MODULE__TESTLIMITEDCAPI_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testlimitedcapi" >&5 -printf "%s\n" "$py_cv_module__testlimitedcapi" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testinternalcapi" >&5 -printf %s "checking for stdlib extension module _testinternalcapi... " >&6; } - if test "$py_cv_module__testinternalcapi" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if true -then : - py_cv_module__testinternalcapi=yes -else case e in #( - e) py_cv_module__testinternalcapi=missing ;; -esac -fi -else case e in #( - e) py_cv_module__testinternalcapi=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__TESTINTERNALCAPI_STATE=$py_cv_module__testinternalcapi$as_nl" - if test "x$py_cv_module__testinternalcapi" = xyes -then : - - - - -fi - if test "$py_cv_module__testinternalcapi" = yes; then - MODULE__TESTINTERNALCAPI_TRUE= - MODULE__TESTINTERNALCAPI_FALSE='#' -else - MODULE__TESTINTERNALCAPI_TRUE='#' - MODULE__TESTINTERNALCAPI_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testinternalcapi" >&5 -printf "%s\n" "$py_cv_module__testinternalcapi" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testbuffer" >&5 -printf %s "checking for stdlib extension module _testbuffer... " >&6; } - if test "$py_cv_module__testbuffer" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if true -then : - py_cv_module__testbuffer=yes -else case e in #( - e) py_cv_module__testbuffer=missing ;; -esac -fi -else case e in #( - e) py_cv_module__testbuffer=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__TESTBUFFER_STATE=$py_cv_module__testbuffer$as_nl" - if test "x$py_cv_module__testbuffer" = xyes -then : - - - - -fi - if test "$py_cv_module__testbuffer" = yes; then - MODULE__TESTBUFFER_TRUE= - MODULE__TESTBUFFER_FALSE='#' -else - MODULE__TESTBUFFER_TRUE='#' - MODULE__TESTBUFFER_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testbuffer" >&5 -printf "%s\n" "$py_cv_module__testbuffer" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testimportmultiple" >&5 -printf %s "checking for stdlib extension module _testimportmultiple... " >&6; } - if test "$py_cv_module__testimportmultiple" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if test "$ac_cv_func_dlopen" = yes -then : - py_cv_module__testimportmultiple=yes -else case e in #( - e) py_cv_module__testimportmultiple=missing ;; -esac -fi -else case e in #( - e) py_cv_module__testimportmultiple=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__TESTIMPORTMULTIPLE_STATE=$py_cv_module__testimportmultiple$as_nl" - if test "x$py_cv_module__testimportmultiple" = xyes -then : - - - - -fi - if test "$py_cv_module__testimportmultiple" = yes; then - MODULE__TESTIMPORTMULTIPLE_TRUE= - MODULE__TESTIMPORTMULTIPLE_FALSE='#' -else - MODULE__TESTIMPORTMULTIPLE_TRUE='#' - MODULE__TESTIMPORTMULTIPLE_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testimportmultiple" >&5 -printf "%s\n" "$py_cv_module__testimportmultiple" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testmultiphase" >&5 -printf %s "checking for stdlib extension module _testmultiphase... " >&6; } - if test "$py_cv_module__testmultiphase" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if test "$ac_cv_func_dlopen" = yes -then : - py_cv_module__testmultiphase=yes -else case e in #( - e) py_cv_module__testmultiphase=missing ;; -esac -fi -else case e in #( - e) py_cv_module__testmultiphase=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__TESTMULTIPHASE_STATE=$py_cv_module__testmultiphase$as_nl" - if test "x$py_cv_module__testmultiphase" = xyes -then : - - - - -fi - if test "$py_cv_module__testmultiphase" = yes; then - MODULE__TESTMULTIPHASE_TRUE= - MODULE__TESTMULTIPHASE_FALSE='#' -else - MODULE__TESTMULTIPHASE_TRUE='#' - MODULE__TESTMULTIPHASE_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testmultiphase" >&5 -printf "%s\n" "$py_cv_module__testmultiphase" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testsinglephase" >&5 -printf %s "checking for stdlib extension module _testsinglephase... " >&6; } - if test "$py_cv_module__testsinglephase" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if test "$ac_cv_func_dlopen" = yes -then : - py_cv_module__testsinglephase=yes -else case e in #( - e) py_cv_module__testsinglephase=missing ;; -esac -fi -else case e in #( - e) py_cv_module__testsinglephase=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__TESTSINGLEPHASE_STATE=$py_cv_module__testsinglephase$as_nl" - if test "x$py_cv_module__testsinglephase" = xyes -then : - - - - -fi - if test "$py_cv_module__testsinglephase" = yes; then - MODULE__TESTSINGLEPHASE_TRUE= - MODULE__TESTSINGLEPHASE_FALSE='#' -else - MODULE__TESTSINGLEPHASE_TRUE='#' - MODULE__TESTSINGLEPHASE_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testsinglephase" >&5 -printf "%s\n" "$py_cv_module__testsinglephase" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module xxsubtype" >&5 -printf %s "checking for stdlib extension module xxsubtype... " >&6; } - if test "$py_cv_module_xxsubtype" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if true -then : - py_cv_module_xxsubtype=yes -else case e in #( - e) py_cv_module_xxsubtype=missing ;; -esac -fi -else case e in #( - e) py_cv_module_xxsubtype=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_XXSUBTYPE_STATE=$py_cv_module_xxsubtype$as_nl" - if test "x$py_cv_module_xxsubtype" = xyes -then : - - - - -fi - if test "$py_cv_module_xxsubtype" = yes; then - MODULE_XXSUBTYPE_TRUE= - MODULE_XXSUBTYPE_FALSE='#' -else - MODULE_XXSUBTYPE_TRUE='#' - MODULE_XXSUBTYPE_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_xxsubtype" >&5 -printf "%s\n" "$py_cv_module_xxsubtype" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _xxtestfuzz" >&5 -printf %s "checking for stdlib extension module _xxtestfuzz... " >&6; } - if test "$py_cv_module__xxtestfuzz" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if true -then : - py_cv_module__xxtestfuzz=yes -else case e in #( - e) py_cv_module__xxtestfuzz=missing ;; -esac -fi -else case e in #( - e) py_cv_module__xxtestfuzz=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__XXTESTFUZZ_STATE=$py_cv_module__xxtestfuzz$as_nl" - if test "x$py_cv_module__xxtestfuzz" = xyes -then : - - - - -fi - if test "$py_cv_module__xxtestfuzz" = yes; then - MODULE__XXTESTFUZZ_TRUE= - MODULE__XXTESTFUZZ_FALSE='#' -else - MODULE__XXTESTFUZZ_TRUE='#' - MODULE__XXTESTFUZZ_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__xxtestfuzz" >&5 -printf "%s\n" "$py_cv_module__xxtestfuzz" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _ctypes_test" >&5 -printf %s "checking for stdlib extension module _ctypes_test... " >&6; } - if test "$py_cv_module__ctypes_test" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if test "$have_libffi" = yes -a "$ac_cv_func_dlopen" = yes -then : - py_cv_module__ctypes_test=yes -else case e in #( - e) py_cv_module__ctypes_test=missing ;; -esac -fi -else case e in #( - e) py_cv_module__ctypes_test=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE__CTYPES_TEST_STATE=$py_cv_module__ctypes_test$as_nl" - if test "x$py_cv_module__ctypes_test" = xyes -then : - - as_fn_append MODULE_BLOCK "MODULE__CTYPES_TEST_CFLAGS=$LIBFFI_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__CTYPES_TEST_LDFLAGS=$LIBFFI_LIBS $LIBM$as_nl" - -fi - if test "$py_cv_module__ctypes_test" = yes; then - MODULE__CTYPES_TEST_TRUE= - MODULE__CTYPES_TEST_FALSE='#' -else - MODULE__CTYPES_TEST_TRUE='#' - MODULE__CTYPES_TEST_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__ctypes_test" >&5 -printf "%s\n" "$py_cv_module__ctypes_test" >&6; } - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module xxlimited" >&5 -printf %s "checking for stdlib extension module xxlimited... " >&6; } - if test "$py_cv_module_xxlimited" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if test "$ac_cv_func_dlopen" = yes -then : - py_cv_module_xxlimited=yes -else case e in #( - e) py_cv_module_xxlimited=missing ;; -esac -fi -else case e in #( - e) py_cv_module_xxlimited=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_XXLIMITED_STATE=$py_cv_module_xxlimited$as_nl" - if test "x$py_cv_module_xxlimited" = xyes -then : - - - - -fi - if test "$py_cv_module_xxlimited" = yes; then - MODULE_XXLIMITED_TRUE= - MODULE_XXLIMITED_FALSE='#' -else - MODULE_XXLIMITED_TRUE='#' - MODULE_XXLIMITED_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_xxlimited" >&5 -printf "%s\n" "$py_cv_module_xxlimited" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module xxlimited_35" >&5 -printf %s "checking for stdlib extension module xxlimited_35... " >&6; } - if test "$py_cv_module_xxlimited_35" != "n/a" -then : - - if test "$TEST_MODULES" = yes -then : - if test "$ac_cv_func_dlopen" = yes -then : - py_cv_module_xxlimited_35=yes -else case e in #( - e) py_cv_module_xxlimited_35=missing ;; -esac -fi -else case e in #( - e) py_cv_module_xxlimited_35=disabled ;; -esac -fi - -fi - as_fn_append MODULE_BLOCK "MODULE_XXLIMITED_35_STATE=$py_cv_module_xxlimited_35$as_nl" - if test "x$py_cv_module_xxlimited_35" = xyes -then : - - - - -fi - if test "$py_cv_module_xxlimited_35" = yes; then - MODULE_XXLIMITED_35_TRUE= - MODULE_XXLIMITED_35_FALSE='#' -else - MODULE_XXLIMITED_35_TRUE='#' - MODULE_XXLIMITED_35_FALSE= -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_xxlimited_35" >&5 -printf "%s\n" "$py_cv_module_xxlimited_35" >&6; } - - -# Determine JIT stencils header files based on target platform -JIT_STENCILS_H="" -if test "x$enable_experimental_jit" = xno -then : - -else case e in #( - e) case "$host" in - aarch64-apple-darwin*) - JIT_STENCILS_H="jit_stencils-aarch64-apple-darwin.h" - ;; - x86_64-apple-darwin*) - JIT_STENCILS_H="jit_stencils-x86_64-apple-darwin.h" - ;; - aarch64-pc-windows-msvc) - JIT_STENCILS_H="jit_stencils-aarch64-pc-windows-msvc.h" - ;; - i686-pc-windows-msvc) - JIT_STENCILS_H="jit_stencils-i686-pc-windows-msvc.h" - ;; - x86_64-pc-windows-msvc) - JIT_STENCILS_H="jit_stencils-x86_64-pc-windows-msvc.h" - ;; - aarch64-*-linux-gnu) - JIT_STENCILS_H="jit_stencils-aarch64-unknown-linux-gnu.h" - ;; - x86_64-*-linux-gnu) - JIT_STENCILS_H="jit_stencils-x86_64-unknown-linux-gnu.h" - ;; - esac ;; -esac -fi - - - -# substitute multiline block, must come after last PY_STDLIB_MOD() - - -# generate output files -ac_config_files="$ac_config_files Makefile.pre Misc/python.pc Misc/python-embed.pc Misc/python-config.sh" - -ac_config_files="$ac_config_files Modules/Setup.bootstrap Modules/Setup.stdlib" - -ac_config_files="$ac_config_files Modules/ld_so_aix" - -# Generate files like pyconfig.h -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# 'ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* 'ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # 'set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # 'set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -printf "%s\n" "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H +# This runs the Python-based configure.py script. +# Or, if python3 doesn't exist, runs configure-new. -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs +SCRIPT_DIR="$(dirname "$0")" -LTLIBOBJS=$ac_ltlibobjs - - - -if test -z "${MODULE__IO_TRUE}" && test -z "${MODULE__IO_FALSE}"; then - as_fn_error $? "conditional \"MODULE__IO\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_TIME_TRUE}" && test -z "${MODULE_TIME_FALSE}"; then - as_fn_error $? "conditional \"MODULE_TIME\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_ARRAY_TRUE}" && test -z "${MODULE_ARRAY_FALSE}"; then - as_fn_error $? "conditional \"MODULE_ARRAY\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__MATH_INTEGER_TRUE}" && test -z "${MODULE__MATH_INTEGER_FALSE}"; then - as_fn_error $? "conditional \"MODULE__MATH_INTEGER\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__ASYNCIO_TRUE}" && test -z "${MODULE__ASYNCIO_FALSE}"; then - as_fn_error $? "conditional \"MODULE__ASYNCIO\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__BISECT_TRUE}" && test -z "${MODULE__BISECT_FALSE}"; then - as_fn_error $? "conditional \"MODULE__BISECT\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__CSV_TRUE}" && test -z "${MODULE__CSV_FALSE}"; then - as_fn_error $? "conditional \"MODULE__CSV\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__HEAPQ_TRUE}" && test -z "${MODULE__HEAPQ_FALSE}"; then - as_fn_error $? "conditional \"MODULE__HEAPQ\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__JSON_TRUE}" && test -z "${MODULE__JSON_FALSE}"; then - as_fn_error $? "conditional \"MODULE__JSON\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__LSPROF_TRUE}" && test -z "${MODULE__LSPROF_FALSE}"; then - as_fn_error $? "conditional \"MODULE__LSPROF\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__PICKLE_TRUE}" && test -z "${MODULE__PICKLE_FALSE}"; then - as_fn_error $? "conditional \"MODULE__PICKLE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__POSIXSUBPROCESS_TRUE}" && test -z "${MODULE__POSIXSUBPROCESS_FALSE}"; then - as_fn_error $? "conditional \"MODULE__POSIXSUBPROCESS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__QUEUE_TRUE}" && test -z "${MODULE__QUEUE_FALSE}"; then - as_fn_error $? "conditional \"MODULE__QUEUE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__RANDOM_TRUE}" && test -z "${MODULE__RANDOM_FALSE}"; then - as_fn_error $? "conditional \"MODULE__RANDOM\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__REMOTE_DEBUGGING_TRUE}" && test -z "${MODULE__REMOTE_DEBUGGING_FALSE}"; then - as_fn_error $? "conditional \"MODULE__REMOTE_DEBUGGING\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_SELECT_TRUE}" && test -z "${MODULE_SELECT_FALSE}"; then - as_fn_error $? "conditional \"MODULE_SELECT\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__STRUCT_TRUE}" && test -z "${MODULE__STRUCT_FALSE}"; then - as_fn_error $? "conditional \"MODULE__STRUCT\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__TYPES_TRUE}" && test -z "${MODULE__TYPES_FALSE}"; then - as_fn_error $? "conditional \"MODULE__TYPES\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__TYPING_TRUE}" && test -z "${MODULE__TYPING_FALSE}"; then - as_fn_error $? "conditional \"MODULE__TYPING\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__INTERPRETERS_TRUE}" && test -z "${MODULE__INTERPRETERS_FALSE}"; then - as_fn_error $? "conditional \"MODULE__INTERPRETERS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__INTERPCHANNELS_TRUE}" && test -z "${MODULE__INTERPCHANNELS_FALSE}"; then - as_fn_error $? "conditional \"MODULE__INTERPCHANNELS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__INTERPQUEUES_TRUE}" && test -z "${MODULE__INTERPQUEUES_FALSE}"; then - as_fn_error $? "conditional \"MODULE__INTERPQUEUES\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__ZONEINFO_TRUE}" && test -z "${MODULE__ZONEINFO_FALSE}"; then - as_fn_error $? "conditional \"MODULE__ZONEINFO\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__MULTIPROCESSING_TRUE}" && test -z "${MODULE__MULTIPROCESSING_FALSE}"; then - as_fn_error $? "conditional \"MODULE__MULTIPROCESSING\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__POSIXSHMEM_TRUE}" && test -z "${MODULE__POSIXSHMEM_FALSE}"; then - as_fn_error $? "conditional \"MODULE__POSIXSHMEM\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__STATISTICS_TRUE}" && test -z "${MODULE__STATISTICS_FALSE}"; then - as_fn_error $? "conditional \"MODULE__STATISTICS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_CMATH_TRUE}" && test -z "${MODULE_CMATH_FALSE}"; then - as_fn_error $? "conditional \"MODULE_CMATH\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_MATH_TRUE}" && test -z "${MODULE_MATH_FALSE}"; then - as_fn_error $? "conditional \"MODULE_MATH\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__DATETIME_TRUE}" && test -z "${MODULE__DATETIME_FALSE}"; then - as_fn_error $? "conditional \"MODULE__DATETIME\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_FCNTL_TRUE}" && test -z "${MODULE_FCNTL_FALSE}"; then - as_fn_error $? "conditional \"MODULE_FCNTL\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_MMAP_TRUE}" && test -z "${MODULE_MMAP_FALSE}"; then - as_fn_error $? "conditional \"MODULE_MMAP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__SOCKET_TRUE}" && test -z "${MODULE__SOCKET_FALSE}"; then - as_fn_error $? "conditional \"MODULE__SOCKET\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_GRP_TRUE}" && test -z "${MODULE_GRP_FALSE}"; then - as_fn_error $? "conditional \"MODULE_GRP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_PWD_TRUE}" && test -z "${MODULE_PWD_FALSE}"; then - as_fn_error $? "conditional \"MODULE_PWD\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_RESOURCE_TRUE}" && test -z "${MODULE_RESOURCE_FALSE}"; then - as_fn_error $? "conditional \"MODULE_RESOURCE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__SCPROXY_TRUE}" && test -z "${MODULE__SCPROXY_FALSE}"; then - as_fn_error $? "conditional \"MODULE__SCPROXY\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_SYSLOG_TRUE}" && test -z "${MODULE_SYSLOG_FALSE}"; then - as_fn_error $? "conditional \"MODULE_SYSLOG\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_TERMIOS_TRUE}" && test -z "${MODULE_TERMIOS_FALSE}"; then - as_fn_error $? "conditional \"MODULE_TERMIOS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_PYEXPAT_TRUE}" && test -z "${MODULE_PYEXPAT_FALSE}"; then - as_fn_error $? "conditional \"MODULE_PYEXPAT\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__ELEMENTTREE_TRUE}" && test -z "${MODULE__ELEMENTTREE_FALSE}"; then - as_fn_error $? "conditional \"MODULE__ELEMENTTREE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__CODECS_CN_TRUE}" && test -z "${MODULE__CODECS_CN_FALSE}"; then - as_fn_error $? "conditional \"MODULE__CODECS_CN\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__CODECS_HK_TRUE}" && test -z "${MODULE__CODECS_HK_FALSE}"; then - as_fn_error $? "conditional \"MODULE__CODECS_HK\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__CODECS_ISO2022_TRUE}" && test -z "${MODULE__CODECS_ISO2022_FALSE}"; then - as_fn_error $? "conditional \"MODULE__CODECS_ISO2022\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__CODECS_JP_TRUE}" && test -z "${MODULE__CODECS_JP_FALSE}"; then - as_fn_error $? "conditional \"MODULE__CODECS_JP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__CODECS_KR_TRUE}" && test -z "${MODULE__CODECS_KR_FALSE}"; then - as_fn_error $? "conditional \"MODULE__CODECS_KR\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__CODECS_TW_TRUE}" && test -z "${MODULE__CODECS_TW_FALSE}"; then - as_fn_error $? "conditional \"MODULE__CODECS_TW\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__MULTIBYTECODEC_TRUE}" && test -z "${MODULE__MULTIBYTECODEC_FALSE}"; then - as_fn_error $? "conditional \"MODULE__MULTIBYTECODEC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_UNICODEDATA_TRUE}" && test -z "${MODULE_UNICODEDATA_FALSE}"; then - as_fn_error $? "conditional \"MODULE_UNICODEDATA\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__MD5_TRUE}" && test -z "${MODULE__MD5_FALSE}"; then - as_fn_error $? "conditional \"MODULE__MD5\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__SHA1_TRUE}" && test -z "${MODULE__SHA1_FALSE}"; then - as_fn_error $? "conditional \"MODULE__SHA1\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__SHA2_TRUE}" && test -z "${MODULE__SHA2_FALSE}"; then - as_fn_error $? "conditional \"MODULE__SHA2\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__SHA3_TRUE}" && test -z "${MODULE__SHA3_FALSE}"; then - as_fn_error $? "conditional \"MODULE__SHA3\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__BLAKE2_TRUE}" && test -z "${MODULE__BLAKE2_FALSE}"; then - as_fn_error $? "conditional \"MODULE__BLAKE2\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__HMAC_TRUE}" && test -z "${MODULE__HMAC_FALSE}"; then - as_fn_error $? "conditional \"MODULE__HMAC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__CTYPES_TRUE}" && test -z "${MODULE__CTYPES_FALSE}"; then - as_fn_error $? "conditional \"MODULE__CTYPES\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__CURSES_TRUE}" && test -z "${MODULE__CURSES_FALSE}"; then - as_fn_error $? "conditional \"MODULE__CURSES\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__CURSES_PANEL_TRUE}" && test -z "${MODULE__CURSES_PANEL_FALSE}"; then - as_fn_error $? "conditional \"MODULE__CURSES_PANEL\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__DECIMAL_TRUE}" && test -z "${MODULE__DECIMAL_FALSE}"; then - as_fn_error $? "conditional \"MODULE__DECIMAL\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__DBM_TRUE}" && test -z "${MODULE__DBM_FALSE}"; then - as_fn_error $? "conditional \"MODULE__DBM\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__GDBM_TRUE}" && test -z "${MODULE__GDBM_FALSE}"; then - as_fn_error $? "conditional \"MODULE__GDBM\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_READLINE_TRUE}" && test -z "${MODULE_READLINE_FALSE}"; then - as_fn_error $? "conditional \"MODULE_READLINE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__SQLITE3_TRUE}" && test -z "${MODULE__SQLITE3_FALSE}"; then - as_fn_error $? "conditional \"MODULE__SQLITE3\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__TKINTER_TRUE}" && test -z "${MODULE__TKINTER_FALSE}"; then - as_fn_error $? "conditional \"MODULE__TKINTER\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__UUID_TRUE}" && test -z "${MODULE__UUID_FALSE}"; then - as_fn_error $? "conditional \"MODULE__UUID\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_ZLIB_TRUE}" && test -z "${MODULE_ZLIB_FALSE}"; then - as_fn_error $? "conditional \"MODULE_ZLIB\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_BINASCII_TRUE}" && test -z "${MODULE_BINASCII_FALSE}"; then - as_fn_error $? "conditional \"MODULE_BINASCII\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__BZ2_TRUE}" && test -z "${MODULE__BZ2_FALSE}"; then - as_fn_error $? "conditional \"MODULE__BZ2\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__LZMA_TRUE}" && test -z "${MODULE__LZMA_FALSE}"; then - as_fn_error $? "conditional \"MODULE__LZMA\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__ZSTD_TRUE}" && test -z "${MODULE__ZSTD_FALSE}"; then - as_fn_error $? "conditional \"MODULE__ZSTD\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__SSL_TRUE}" && test -z "${MODULE__SSL_FALSE}"; then - as_fn_error $? "conditional \"MODULE__SSL\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__HASHLIB_TRUE}" && test -z "${MODULE__HASHLIB_FALSE}"; then - as_fn_error $? "conditional \"MODULE__HASHLIB\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__TESTCAPI_TRUE}" && test -z "${MODULE__TESTCAPI_FALSE}"; then - as_fn_error $? "conditional \"MODULE__TESTCAPI\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__TESTCLINIC_TRUE}" && test -z "${MODULE__TESTCLINIC_FALSE}"; then - as_fn_error $? "conditional \"MODULE__TESTCLINIC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__TESTCLINIC_LIMITED_TRUE}" && test -z "${MODULE__TESTCLINIC_LIMITED_FALSE}"; then - as_fn_error $? "conditional \"MODULE__TESTCLINIC_LIMITED\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__TESTLIMITEDCAPI_TRUE}" && test -z "${MODULE__TESTLIMITEDCAPI_FALSE}"; then - as_fn_error $? "conditional \"MODULE__TESTLIMITEDCAPI\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__TESTINTERNALCAPI_TRUE}" && test -z "${MODULE__TESTINTERNALCAPI_FALSE}"; then - as_fn_error $? "conditional \"MODULE__TESTINTERNALCAPI\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__TESTBUFFER_TRUE}" && test -z "${MODULE__TESTBUFFER_FALSE}"; then - as_fn_error $? "conditional \"MODULE__TESTBUFFER\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__TESTIMPORTMULTIPLE_TRUE}" && test -z "${MODULE__TESTIMPORTMULTIPLE_FALSE}"; then - as_fn_error $? "conditional \"MODULE__TESTIMPORTMULTIPLE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__TESTMULTIPHASE_TRUE}" && test -z "${MODULE__TESTMULTIPHASE_FALSE}"; then - as_fn_error $? "conditional \"MODULE__TESTMULTIPHASE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__TESTSINGLEPHASE_TRUE}" && test -z "${MODULE__TESTSINGLEPHASE_FALSE}"; then - as_fn_error $? "conditional \"MODULE__TESTSINGLEPHASE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_XXSUBTYPE_TRUE}" && test -z "${MODULE_XXSUBTYPE_FALSE}"; then - as_fn_error $? "conditional \"MODULE_XXSUBTYPE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__XXTESTFUZZ_TRUE}" && test -z "${MODULE__XXTESTFUZZ_FALSE}"; then - as_fn_error $? "conditional \"MODULE__XXTESTFUZZ\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE__CTYPES_TEST_TRUE}" && test -z "${MODULE__CTYPES_TEST_FALSE}"; then - as_fn_error $? "conditional \"MODULE__CTYPES_TEST\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_XXLIMITED_TRUE}" && test -z "${MODULE_XXLIMITED_FALSE}"; then - as_fn_error $? "conditional \"MODULE_XXLIMITED\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MODULE_XXLIMITED_35_TRUE}" && test -z "${MODULE_XXLIMITED_35_FALSE}"; then - as_fn_error $? "conditional \"MODULE_XXLIMITED_35\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac ;; -esac -fi - - - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. -as_nl=' -' -export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi - -# The user is always right. -if ${PATH_SEPARATOR+false} :; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - test -r "$as_dir$0" && as_myself=$as_dir$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - printf "%s\n" "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else case e in #( - e) as_fn_append () - { - eval $1=\$$1\$2 - } ;; -esac -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else case e in #( - e) as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } ;; -esac -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated - -# Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by python $as_me 3.15, which was -generated by GNU Autoconf 2.72. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -'$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Report bugs to ." - -_ACEOF -ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` -ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config='$ac_cs_config_escaped' -ac_cs_version="\\ -python config.status 3.15 -configured by $0, generated by GNU Autoconf 2.72, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2023 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - printf "%s\n" "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - printf "%s\n" "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: '$1' -Try '$0 --help' for more information.";; - --help | --hel | -h ) - printf "%s\n" "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: '$1' -Try '$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - printf "%s\n" "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "pyconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS pyconfig.h" ;; - "Mac/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/Makefile" ;; - "Mac/PythonLauncher/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/PythonLauncher/Makefile" ;; - "Mac/Resources/framework/Info.plist") CONFIG_FILES="$CONFIG_FILES Mac/Resources/framework/Info.plist" ;; - "Mac/Resources/app/Info.plist") CONFIG_FILES="$CONFIG_FILES Mac/Resources/app/Info.plist" ;; - "Apple/iOS/Resources/Info.plist") CONFIG_FILES="$CONFIG_FILES Apple/iOS/Resources/Info.plist" ;; - "Makefile.pre") CONFIG_FILES="$CONFIG_FILES Makefile.pre" ;; - "Misc/python.pc") CONFIG_FILES="$CONFIG_FILES Misc/python.pc" ;; - "Misc/python-embed.pc") CONFIG_FILES="$CONFIG_FILES Misc/python-embed.pc" ;; - "Misc/python-config.sh") CONFIG_FILES="$CONFIG_FILES Misc/python-config.sh" ;; - "Modules/Setup.bootstrap") CONFIG_FILES="$CONFIG_FILES Modules/Setup.bootstrap" ;; - "Modules/Setup.stdlib") CONFIG_FILES="$CONFIG_FILES Modules/Setup.stdlib" ;; - "Modules/ld_so_aix") CONFIG_FILES="$CONFIG_FILES Modules/ld_so_aix" ;; - - *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files - test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to '$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with './config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' +# Check for python3 by trying to run it +if python3 -c '' >/dev/null 2>&1; then + echo "Using configure.py..." + export PYTHONPATH=$SCRIPT_DIR/Tools/configure + python3 "$SCRIPT_DIR/Tools/configure/configure.py" --srcdir="$SCRIPT_DIR" "$@" else - ac_cs_awk_cr=$ac_cr + echo "Using AWK/sh configure-new..." + "$SCRIPT_DIR/configure-new" "$@" fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with './config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script 'defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain ':'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is 'configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -printf "%s\n" "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`printf "%s\n" "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when '$srcdir' = '.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - printf "%s\n" "/* $configure_input */" >&1 \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - printf "%s\n" "/* $configure_input */" >&1 \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi - ;; - - - esac - - - case $ac_file$ac_mode in - "Modules/ld_so_aix":F) chmod +x Modules/ld_so_aix ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating Modules/Setup.local" >&5 -printf "%s\n" "$as_me: creating Modules/Setup.local" >&6;} -if test ! -f Modules/Setup.local -then - echo "# Edit this file for local setup changes" >Modules/Setup.local -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating Makefile" >&5 -printf "%s\n" "$as_me: creating Makefile" >&6;} -$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \ - -s Modules \ - Modules/Setup.local Modules/Setup.stdlib Modules/Setup.bootstrap $srcdir/Modules/Setup -if test $? -ne 0; then - as_fn_error $? "makesetup failed" "$LINENO" 5 -fi - -mv config.c Modules - -if test -z "$PKG_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: pkg-config is missing. Some dependencies may not be detected correctly." >&5 -printf "%s\n" "$as_me: WARNING: pkg-config is missing. Some dependencies may not be detected correctly." >&2;} -fi - -if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: - -If you want a release build with all stable optimizations active (PGO, etc), -please run ./configure --enable-optimizations -" >&5 -printf "%s\n" "$as_me: - -If you want a release build with all stable optimizations active (PGO, etc), -please run ./configure --enable-optimizations -" >&6;} -fi - -if test "x$PY_SUPPORT_TIER" = x0 -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: - -Platform \"$host\" with compiler \"$ac_cv_cc_name\" is not supported by the -CPython core team, see https://peps.python.org/pep-0011/ for more information. -" >&5 -printf "%s\n" "$as_me: WARNING: - -Platform \"$host\" with compiler \"$ac_cv_cc_name\" is not supported by the -CPython core team, see https://peps.python.org/pep-0011/ for more information. -" >&2;} -fi - -if test "$ac_cv_header_stdatomic_h" != "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Your compiler or platform does have a working C11 stdatomic.h. A future version of Python may require stdatomic.h." >&5 -printf "%s\n" "$as_me: Your compiler or platform does have a working C11 stdatomic.h. A future version of Python may require stdatomic.h." >&6;} -fi - diff --git a/configure-old b/configure-old new file mode 100755 index 00000000000000..cd8983683333cd --- /dev/null +++ b/configure-old @@ -0,0 +1,36170 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.72 for python 3.15. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in #( + e) case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in #( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in #( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and +$0: https://github.com/python/cpython/issues/ about your +$0: system, including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='python' +PACKAGE_TARNAME='python' +PACKAGE_VERSION='3.15' +PACKAGE_STRING='python 3.15' +PACKAGE_BUGREPORT='https://github.com/python/cpython/issues/' +PACKAGE_URL='' + +ac_unique_file="Include/object.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +ac_subst_vars='LTLIBOBJS +MODULE_BLOCK +JIT_STENCILS_H +MODULE_XXLIMITED_35_FALSE +MODULE_XXLIMITED_35_TRUE +MODULE_XXLIMITED_FALSE +MODULE_XXLIMITED_TRUE +MODULE__CTYPES_TEST_FALSE +MODULE__CTYPES_TEST_TRUE +MODULE__XXTESTFUZZ_FALSE +MODULE__XXTESTFUZZ_TRUE +MODULE_XXSUBTYPE_FALSE +MODULE_XXSUBTYPE_TRUE +MODULE__TESTSINGLEPHASE_FALSE +MODULE__TESTSINGLEPHASE_TRUE +MODULE__TESTMULTIPHASE_FALSE +MODULE__TESTMULTIPHASE_TRUE +MODULE__TESTIMPORTMULTIPLE_FALSE +MODULE__TESTIMPORTMULTIPLE_TRUE +MODULE__TESTBUFFER_FALSE +MODULE__TESTBUFFER_TRUE +MODULE__TESTINTERNALCAPI_FALSE +MODULE__TESTINTERNALCAPI_TRUE +MODULE__TESTLIMITEDCAPI_FALSE +MODULE__TESTLIMITEDCAPI_TRUE +MODULE__TESTCLINIC_LIMITED_FALSE +MODULE__TESTCLINIC_LIMITED_TRUE +MODULE__TESTCLINIC_FALSE +MODULE__TESTCLINIC_TRUE +MODULE__TESTCAPI_FALSE +MODULE__TESTCAPI_TRUE +MODULE__HASHLIB_FALSE +MODULE__HASHLIB_TRUE +MODULE__SSL_FALSE +MODULE__SSL_TRUE +MODULE__ZSTD_FALSE +MODULE__ZSTD_TRUE +MODULE__LZMA_FALSE +MODULE__LZMA_TRUE +MODULE__BZ2_FALSE +MODULE__BZ2_TRUE +MODULE_BINASCII_FALSE +MODULE_BINASCII_TRUE +MODULE_ZLIB_FALSE +MODULE_ZLIB_TRUE +MODULE__UUID_FALSE +MODULE__UUID_TRUE +MODULE__TKINTER_FALSE +MODULE__TKINTER_TRUE +MODULE__SQLITE3_FALSE +MODULE__SQLITE3_TRUE +MODULE_READLINE_FALSE +MODULE_READLINE_TRUE +MODULE__GDBM_FALSE +MODULE__GDBM_TRUE +MODULE__DBM_FALSE +MODULE__DBM_TRUE +MODULE__DECIMAL_FALSE +MODULE__DECIMAL_TRUE +MODULE__CURSES_PANEL_FALSE +MODULE__CURSES_PANEL_TRUE +MODULE__CURSES_FALSE +MODULE__CURSES_TRUE +MODULE__CTYPES_FALSE +MODULE__CTYPES_TRUE +MODULE__HMAC_FALSE +MODULE__HMAC_TRUE +MODULE__BLAKE2_FALSE +MODULE__BLAKE2_TRUE +MODULE__SHA3_FALSE +MODULE__SHA3_TRUE +MODULE__SHA2_FALSE +MODULE__SHA2_TRUE +MODULE__SHA1_FALSE +MODULE__SHA1_TRUE +MODULE__MD5_FALSE +MODULE__MD5_TRUE +LIBHACL_LDEPS_LIBTYPE +LIBHACL_BLAKE2_SIMD256_OBJS +LIBHACL_SIMD256_FLAGS +LIBHACL_BLAKE2_SIMD128_OBJS +LIBHACL_SIMD128_FLAGS +LIBHACL_LDFLAGS +LIBHACL_CFLAGS +MODULE_UNICODEDATA_FALSE +MODULE_UNICODEDATA_TRUE +MODULE__MULTIBYTECODEC_FALSE +MODULE__MULTIBYTECODEC_TRUE +MODULE__CODECS_TW_FALSE +MODULE__CODECS_TW_TRUE +MODULE__CODECS_KR_FALSE +MODULE__CODECS_KR_TRUE +MODULE__CODECS_JP_FALSE +MODULE__CODECS_JP_TRUE +MODULE__CODECS_ISO2022_FALSE +MODULE__CODECS_ISO2022_TRUE +MODULE__CODECS_HK_FALSE +MODULE__CODECS_HK_TRUE +MODULE__CODECS_CN_FALSE +MODULE__CODECS_CN_TRUE +MODULE__ELEMENTTREE_FALSE +MODULE__ELEMENTTREE_TRUE +MODULE_PYEXPAT_FALSE +MODULE_PYEXPAT_TRUE +MODULE_TERMIOS_FALSE +MODULE_TERMIOS_TRUE +MODULE_SYSLOG_FALSE +MODULE_SYSLOG_TRUE +MODULE__SCPROXY_FALSE +MODULE__SCPROXY_TRUE +MODULE_RESOURCE_FALSE +MODULE_RESOURCE_TRUE +MODULE_PWD_FALSE +MODULE_PWD_TRUE +MODULE_GRP_FALSE +MODULE_GRP_TRUE +MODULE__SOCKET_FALSE +MODULE__SOCKET_TRUE +MODULE_MMAP_FALSE +MODULE_MMAP_TRUE +MODULE_FCNTL_FALSE +MODULE_FCNTL_TRUE +MODULE__DATETIME_FALSE +MODULE__DATETIME_TRUE +MODULE_MATH_FALSE +MODULE_MATH_TRUE +MODULE_CMATH_FALSE +MODULE_CMATH_TRUE +MODULE__STATISTICS_FALSE +MODULE__STATISTICS_TRUE +MODULE__POSIXSHMEM_FALSE +MODULE__POSIXSHMEM_TRUE +MODULE__MULTIPROCESSING_FALSE +MODULE__MULTIPROCESSING_TRUE +MODULE__ZONEINFO_FALSE +MODULE__ZONEINFO_TRUE +MODULE__INTERPQUEUES_FALSE +MODULE__INTERPQUEUES_TRUE +MODULE__INTERPCHANNELS_FALSE +MODULE__INTERPCHANNELS_TRUE +MODULE__INTERPRETERS_FALSE +MODULE__INTERPRETERS_TRUE +MODULE__TYPING_FALSE +MODULE__TYPING_TRUE +MODULE__TYPES_FALSE +MODULE__TYPES_TRUE +MODULE__STRUCT_FALSE +MODULE__STRUCT_TRUE +MODULE_SELECT_FALSE +MODULE_SELECT_TRUE +MODULE__REMOTE_DEBUGGING_FALSE +MODULE__REMOTE_DEBUGGING_TRUE +MODULE__RANDOM_FALSE +MODULE__RANDOM_TRUE +MODULE__QUEUE_FALSE +MODULE__QUEUE_TRUE +MODULE__POSIXSUBPROCESS_FALSE +MODULE__POSIXSUBPROCESS_TRUE +MODULE__PICKLE_FALSE +MODULE__PICKLE_TRUE +MODULE__LSPROF_FALSE +MODULE__LSPROF_TRUE +MODULE__JSON_FALSE +MODULE__JSON_TRUE +MODULE__HEAPQ_FALSE +MODULE__HEAPQ_TRUE +MODULE__CSV_FALSE +MODULE__CSV_TRUE +MODULE__BISECT_FALSE +MODULE__BISECT_TRUE +MODULE__ASYNCIO_FALSE +MODULE__ASYNCIO_TRUE +MODULE__MATH_INTEGER_FALSE +MODULE__MATH_INTEGER_TRUE +MODULE_ARRAY_FALSE +MODULE_ARRAY_TRUE +MODULE_TIME_FALSE +MODULE_TIME_TRUE +MODULE__IO_FALSE +MODULE__IO_TRUE +MODULE_BUILDTYPE +_PYTHREAD_NAME_MAXLEN +TEST_MODULES +OPENSSL_LDFLAGS +OPENSSL_LIBS +OPENSSL_INCLUDES +ENSUREPIP +SRCDIRS +THREADHEADERS +PANEL_LIBS +PANEL_CFLAGS +CURSES_LIBS +CURSES_CFLAGS +LIBEDIT_LIBS +LIBEDIT_CFLAGS +LIBREADLINE_LIBS +LIBREADLINE_CFLAGS +WHEEL_PKG_DIR +LIBPL +PY_ENABLE_SHARED +BINLIBDEST +LIBDEST +PLATLIBDIR +LIBPYTHON +MODULE_DEPS_SHARED +EXT_SUFFIX +ALT_SOABI +SOABI +LIBC +LIBM +HAVE_GETHOSTBYNAME +HAVE_GETHOSTBYNAME_R +HAVE_GETHOSTBYNAME_R_3_ARG +HAVE_GETHOSTBYNAME_R_5_ARG +HAVE_GETHOSTBYNAME_R_6_ARG +LIBOBJS +REMOTE_DEBUGGING_LIBS +REMOTE_DEBUGGING_CFLAGS +LIBZSTD_LIBS +LIBZSTD_CFLAGS +LIBLZMA_LIBS +LIBLZMA_CFLAGS +BZIP2_LIBS +BZIP2_CFLAGS +ZLIB_LIBS +ZLIB_CFLAGS +TRUE +MACHDEP_OBJS +DYNLOADFILE +DLINCLDIR +PLATFORM_OBJS +PLATFORM_HEADERS +DTRACE_OBJS +DTRACE_HEADERS +DFLAGS +DTRACE +INSTALL_MIMALLOC +MIMALLOC_HEADERS +GDBM_LIBS +GDBM_CFLAGS +X11_LIBS +X11_CFLAGS +TCLTK_LIBS +TCLTK_CFLAGS +LIBSQLITE3_LIBS +LIBSQLITE3_CFLAGS +LIBMPDEC_INTERNAL +LIBMPDEC_LIBS +LIBMPDEC_CFLAGS +MODULE__CTYPES_MALLOC_CLOSURE +LIBFFI_LIBS +LIBFFI_CFLAGS +LIBEXPAT_INTERNAL +LIBEXPAT_CFLAGS +TZPATH +LIBUUID_LIBS +LIBUUID_CFLAGS +PERF_TRAMPOLINE_OBJ +SHLIBS +CFLAGSFORSHARED +LINKFORSHARED +CCSHARED +BLDSHARED +LDCXXSHARED +LDSHARED +SHLIB_SUFFIX +DSYMUTIL_PATH +DSYMUTIL +REGEN_JIT_COMMAND +UNIVERSAL_ARCH_FLAGS +WASM_STDLIB +WASM_ASSETS_DIR +LDFLAGS_NOLTO +LDFLAGS_NODIST +CFLAGS_NODIST +BASECFLAGS +CFLAGS_ALIASING +OPT +BOLT_APPLY_FLAGS +BOLT_INSTRUMENT_FLAGS +BOLT_COMMON_FLAGS +BOLT_BINARIES +MERGE_FDATA +LLVM_BOLT +PREBOLT_RULE +LLVM_PROF_FOUND +LLVM_PROFDATA +LLVM_PROF_ERR +LLVM_PROF_FILE +LLVM_PROF_MERGER +PGO_PROF_USE_FLAG +PGO_PROF_GEN_FLAG +LLVM_AR_FOUND +LLVM_AR +PROFILE_TASK +DEF_MAKE_RULE +DEF_MAKE_ALL_RULE +ABI_THREAD +ABIFLAGS +LN +MKDIR_P +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +ARFLAGS +ac_ct_AR +AR +LINK_PYTHON_OBJS +LINK_PYTHON_DEPS +LIBRARY_DEPS +HOSTRUNNER +NODE +STATIC_LIBPYTHON +GNULD +EXPORTSFROM +EXPORTSYMS +LINKCC +LDVERSION +RUNSHARED +INSTSONAME +LDLIBRARYDIR +PY3LIBRARY +BLDLIBRARY +DLLLIBRARY +LDLIBRARY +LIBRARY +BUILDEXEEXT +NO_AS_NEEDED +_Py_STACK_GROWS_DOWN +MULTIARCH_CPPFLAGS +PLATFORM_TRIPLET +MULTIARCH +ac_ct_CXX +CXX +EGREP +SED +GREP +CPP +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +HAS_XCRUN +IPHONEOS_DEPLOYMENT_TARGET +EXPORT_MACOSX_DEPLOYMENT_TARGET +CONFIGURE_MACOSX_DEPLOYMENT_TARGET +_PYTHON_HOST_PLATFORM +APP_STORE_COMPLIANCE_PATCH +INSTALLTARGETS +FRAMEWORKINSTALLAPPSPREFIX +FRAMEWORKUNIXTOOLSPREFIX +FRAMEWORKPYTHONW +FRAMEWORKALTINSTALLLAST +FRAMEWORKALTINSTALLFIRST +FRAMEWORKINSTALLLAST +FRAMEWORKINSTALLFIRST +RESSRCDIR +PYTHONFRAMEWORKINSTALLNAMEPREFIX +PYTHONFRAMEWORKINSTALLDIR +PYTHONFRAMEWORKPREFIX +PYTHONFRAMEWORKDIR +PYTHONFRAMEWORKIDENTIFIER +PYTHONFRAMEWORK +LIPO_INTEL64_FLAGS +LIPO_32BIT_FLAGS +ARCH_RUN_32BIT +UNIVERSALSDK +host_exec_prefix +host_prefix +MACHDEP +MISSING_STDLIB_CONFIG +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +CONFIG_ARGS +SOVERSION +VERSION +PYTHON_FOR_REGEN +PYTHON_FOR_BUILD_DEPS +FREEZE_MODULE_DEPS +FREEZE_MODULE +FREEZE_MODULE_BOOTSTRAP_DEPS +FREEZE_MODULE_BOOTSTRAP +PYTHON_FOR_FREEZE +PYTHON_FOR_BUILD +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +HAS_GIT +GITBRANCH +GITTAG +GITVERSION +BASECPPFLAGS +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_build_python +with_pkg_config +with_missing_stdlib_config +enable_universalsdk +with_universal_archs +with_framework_name +enable_framework +with_app_store_compliance +enable_wasm_dynamic_linking +enable_wasm_pthreads +with_suffix +enable_shared +with_static_libpython +enable_profiling +enable_gil +with_pydebug +with_trace_refs +enable_pystats +with_assertions +enable_optimizations +with_lto +enable_bolt +with_strict_overflow +enable_safety +enable_slower_safety +enable_experimental_jit +with_dsymutil +with_address_sanitizer +with_memory_sanitizer +with_undefined_behavior_sanitizer +with_thread_sanitizer +with_hash_algorithm +with_tzpath +with_libs +with_system_expat +with_system_libmpdec +with_decimal_contextvar +enable_loadable_sqlite_extensions +with_dbmliborder +enable_ipv6 +with_doc_strings +with_mimalloc +with_pymalloc +with_pymalloc_hugepages +with_c_locale_coercion +with_valgrind +with_dtrace +with_libm +with_libc +enable_big_digits +with_platlibdir +with_wheel_pkg_dir +with_readline +with_computed_gotos +with_tail_call_interp +with_remote_debug +with_ensurepip +with_openssl +with_openssl_rpath +with_ssl_default_suites +with_builtin_hashlib_hashes +enable_test_modules +' + ac_precious_vars='build_alias +host_alias +target_alias +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +MACHDEP +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PROFILE_TASK +BOLT_COMMON_FLAGS +BOLT_INSTRUMENT_FLAGS +BOLT_APPLY_FLAGS +LIBUUID_CFLAGS +LIBUUID_LIBS +LIBFFI_CFLAGS +LIBFFI_LIBS +LIBMPDEC_CFLAGS +LIBMPDEC_LIBS +LIBSQLITE3_CFLAGS +LIBSQLITE3_LIBS +TCLTK_CFLAGS +TCLTK_LIBS +X11_CFLAGS +X11_LIBS +GDBM_CFLAGS +GDBM_LIBS +ZLIB_CFLAGS +ZLIB_LIBS +BZIP2_CFLAGS +BZIP2_LIBS +LIBLZMA_CFLAGS +LIBLZMA_LIBS +LIBZSTD_CFLAGS +LIBZSTD_LIBS +LIBREADLINE_CFLAGS +LIBREADLINE_LIBS +LIBEDIT_CFLAGS +LIBEDIT_LIBS +CURSES_CFLAGS +CURSES_LIBS +PANEL_CFLAGS +PANEL_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +'configure' configures python 3.15 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print 'checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for '--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/python] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of python 3.15:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-universalsdk[=SDKDIR] + create a universal binary build. SDKDIR specifies + which macOS SDK should be used to perform the build, + see Mac/README.rst. (default is no) + --enable-framework[=INSTALLDIR] + create a Python.framework rather than a traditional + Unix install. optional INSTALLDIR specifies the + installation path. see Mac/README.rst (default is + no) + --enable-wasm-dynamic-linking + Enable dynamic linking support for WebAssembly + (default is no); WASI requires an external dynamic + loader to handle imports + --enable-wasm-pthreads Enable pthread emulation for WebAssembly (default is + no) + --enable-shared enable building a shared Python library (default is + no) + --enable-profiling enable C-level code profiling with gprof (default is + no) + --disable-gil enable support for running without the GIL (default + is no) + --enable-pystats enable internal statistics gathering (default is no) + --enable-optimizations enable expensive, stable optimizations (PGO, etc.) + (default is no) + --enable-bolt enable usage of the llvm-bolt post-link optimizer + (default is no) + --enable-safety enable usage of the security compiler options with + no performance overhead + --enable-slower-safety enable usage of the security compiler options with + performance overhead + --enable-experimental-jit[=no|yes|yes-off|interpreter] + build the experimental just-in-time compiler + (default is no) + --enable-loadable-sqlite-extensions + support loadable extensions in the sqlite3 module, + see Doc/library/sqlite3.rst (default is no) + --enable-ipv6 enable ipv6 (with ipv4) support, see + Doc/library/socket.rst (default is yes if supported) + --enable-big-digits[=15|30] + use big digits (30 or 15 bits) for Python longs + (default is 30)] + --disable-test-modules don't build nor install test modules + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-build-python=python3.15 + path to build python binary for cross compiling + (default: _bootstrap_python or python3.15) + --with-pkg-config=[yes|no|check] + use pkg-config to detect build options (default is + check) + --with-missing-stdlib-config=FILE + File with custom module error messages for missing + stdlib modules + --with-universal-archs=ARCH + specify the kind of macOS universal binary that + should be created. This option is only valid when + --enable-universalsdk is set; options are: + ("universal2", "intel-64", "intel-32", "intel", + "32-bit", "64-bit", "3-way", or "all") see + Mac/README.rst + --with-framework-name=FRAMEWORK + specify the name for the python framework on macOS + only valid when --enable-framework is set. see + Mac/README.rst (default is 'Python') + --with-app-store-compliance=[PATCH-FILE] + Enable any patches required for compiliance with app + stores. Optional PATCH-FILE specifies the custom + patch to apply. + --with-suffix=SUFFIX set executable suffix to SUFFIX (default is empty, + yes is mapped to '.exe') + --without-static-libpython + do not build libpythonMAJOR.MINOR.a and do not + install python.o (default is yes) + --with-pydebug build with Py_DEBUG defined (default is no) + --with-trace-refs enable tracing references for debugging purpose + (default is no) + --with-assertions build with C assertions enabled (default is no) + --with-lto=[full|thin|no|yes] + enable Link-Time-Optimization in any build (default + is no) + --with-strict-overflow if 'yes', add -fstrict-overflow to CFLAGS, else add + -fno-strict-overflow (default is no) + --with-dsymutil link debug information into final executable with + dsymutil in macOS (default is no) + --with-address-sanitizer + enable AddressSanitizer memory error detector, + 'asan' (default is no) + --with-memory-sanitizer enable MemorySanitizer allocation error detector, + 'msan' (default is no) + --with-undefined-behavior-sanitizer + enable UndefinedBehaviorSanitizer undefined + behaviour detector, 'ubsan' (default is no) + --with-thread-sanitizer enable ThreadSanitizer data race detector, 'tsan' + (default is no) + --with-hash-algorithm=[fnv|siphash13|siphash24] + select hash algorithm for use in Python/pyhash.c + (default is SipHash13) + --with-tzpath= + Select the default time zone search path for + zoneinfo.TZPATH + --with-libs='lib1 ...' link against additional libs (default is no) + --with-system-expat build pyexpat module using an installed expat + library, see Doc/library/pyexpat.rst (default is no) + --with-system-libmpdec build _decimal module using an installed mpdecimal + library, see Doc/library/decimal.rst (default is + yes) + --with-decimal-contextvar + build _decimal module using a coroutine-local rather + than a thread-local context (default is yes) + --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'. + --with-doc-strings enable documentation strings (default is yes) + --with-mimalloc build with mimalloc memory allocator (default is yes + if C11 stdatomic.h is available.) + --with-pymalloc enable specialized mallocs (default is yes) + --with-pymalloc-hugepages + enable huge page support for pymalloc arenas + (default is no) + --with-c-locale-coercion + enable C locale coercion to a UTF-8 based locale + (default is yes) + --with-valgrind enable Valgrind support (default is no) + --with-dtrace enable DTrace support (default is no) + --with-libm=STRING override libm math library to STRING (default is + system-dependent) + --with-libc=STRING override libc C library to STRING (default is + system-dependent) + --with-platlibdir=DIRNAME + Python library directory name (default is "lib") + --with-wheel-pkg-dir=PATH + Directory of wheel packages used by ensurepip + (default: none) + --with(out)-readline[=editline|readline|no] + use libedit for backend or disable readline module + --with-computed-gotos enable computed gotos in evaluation loop (enabled by + default on supported compilers) + --with-tail-call-interp enable tail-calling interpreter in evaluation loop + and rest of CPython + --with-remote-debug enable remote debugging support (default is yes) + --with-ensurepip[=install|upgrade|no] + "install" or "upgrade" using bundled pip (default is + upgrade) + --with-openssl=DIR root of the OpenSSL directory + --with-openssl-rpath=[DIR|auto|no] + Set runtime library directory (rpath) for OpenSSL + libraries, no (default): don't set rpath, auto: + auto-detect rpath from --with-openssl and + pkg-config, DIR: set an explicit rpath + --with-ssl-default-suites=[python|openssl|STRING] + override default cipher suites string, python: use + Python's preferred selection (default), openssl: + leave OpenSSL's defaults untouched, STRING: use a + custom string, python and STRING also set TLS 1.2 as + minimum TLS version + --with-builtin-hashlib-hashes=md5,sha1,sha2,sha3,blake2 + builtin hash modules, md5, sha1, sha2, sha3 (with + shake), blake2 + +Some influential environment variables: + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + MACHDEP name for machine-dependent library files + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PROFILE_TASK + Python args for PGO generation task + BOLT_COMMON_FLAGS + Common arguments to llvm-bolt when instrumenting and applying + BOLT_INSTRUMENT_FLAGS + Arguments to llvm-bolt when instrumenting binaries + BOLT_APPLY_FLAGS + Arguments to llvm-bolt when creating a BOLT optimized binary + LIBUUID_CFLAGS + C compiler flags for LIBUUID, overriding pkg-config + LIBUUID_LIBS + linker flags for LIBUUID, overriding pkg-config + LIBFFI_CFLAGS + C compiler flags for LIBFFI, overriding pkg-config + LIBFFI_LIBS linker flags for LIBFFI, overriding pkg-config + LIBMPDEC_CFLAGS + C compiler flags for LIBMPDEC, overriding pkg-config + LIBMPDEC_LIBS + linker flags for LIBMPDEC, overriding pkg-config + LIBSQLITE3_CFLAGS + C compiler flags for LIBSQLITE3, overriding pkg-config + LIBSQLITE3_LIBS + linker flags for LIBSQLITE3, overriding pkg-config + TCLTK_CFLAGS + C compiler flags for TCLTK, overriding pkg-config + TCLTK_LIBS linker flags for TCLTK, overriding pkg-config + X11_CFLAGS C compiler flags for X11, overriding pkg-config + X11_LIBS linker flags for X11, overriding pkg-config + GDBM_CFLAGS C compiler flags for gdbm + GDBM_LIBS additional linker flags for gdbm + ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config + ZLIB_LIBS linker flags for ZLIB, overriding pkg-config + BZIP2_CFLAGS + C compiler flags for BZIP2, overriding pkg-config + BZIP2_LIBS linker flags for BZIP2, overriding pkg-config + LIBLZMA_CFLAGS + C compiler flags for LIBLZMA, overriding pkg-config + LIBLZMA_LIBS + linker flags for LIBLZMA, overriding pkg-config + LIBZSTD_CFLAGS + C compiler flags for LIBZSTD, overriding pkg-config + LIBZSTD_LIBS + linker flags for LIBZSTD, overriding pkg-config + LIBREADLINE_CFLAGS + C compiler flags for LIBREADLINE, overriding pkg-config + LIBREADLINE_LIBS + linker flags for LIBREADLINE, overriding pkg-config + LIBEDIT_CFLAGS + C compiler flags for LIBEDIT, overriding pkg-config + LIBEDIT_LIBS + linker flags for LIBEDIT, overriding pkg-config + CURSES_CFLAGS + C compiler flags for CURSES, overriding pkg-config + CURSES_LIBS linker flags for CURSES, overriding pkg-config + PANEL_CFLAGS + C compiler flags for PANEL, overriding pkg-config + PANEL_LIBS linker flags for PANEL, overriding pkg-config + +Use these variables to override the choices made by 'configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +python configure 3.15 +generated by GNU Autoconf 2.72 + +Copyright (C) 2023 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status ;; +esac +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) eval "$3=yes" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES +# -------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_c_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_hi=$ac_mid; break +else case e in #( + e) as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_lo=$ac_mid; break +else case e in #( + e) as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done +else case e in #( + e) ac_lo= ac_hi= ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_hi=$ac_mid +else case e in #( + e) as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval (void) { return $2; } +static unsigned long int ulongval (void) { return $2; } +#include +#include +int +main (void) +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + echo >>conftest.val; read $3 &5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_check_decl + +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in #( + e) eval "$4=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$4 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by python $as_me 3.15, which was +generated by GNU Autoconf 2.72. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See 'config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (char **p, int i) +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +/* Does the compiler advertise C99 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +/* Does the compiler advertise C11 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" + +# Auxiliary files required by this configure script. +ac_aux_files="install-sh config.guess config.sub" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in #( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + +if test "$srcdir" != . -a "$srcdir" != "$(pwd)"; then + # If we're building out-of-tree, we need to make sure the following + # resources get picked up before their $srcdir counterparts. + # Objects/ -> typeslots.inc + # Include/ -> Python.h + # (A side effect of this is that these resources will automatically be + # regenerated when building out-of-tree, regardless of whether or not + # the $srcdir counterpart is up-to-date. This is an acceptable trade + # off.) + BASECPPFLAGS="-IObjects -IInclude -IPython" +else + BASECPPFLAGS="" +fi + + + + + +if test -e $srcdir/.git +then +# Extract the first word of "git", so it can be a program name with args. +set dummy git; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_HAS_GIT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$HAS_GIT"; then + ac_cv_prog_HAS_GIT="$HAS_GIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_HAS_GIT="found" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_HAS_GIT" && ac_cv_prog_HAS_GIT="not-found" +fi ;; +esac +fi +HAS_GIT=$ac_cv_prog_HAS_GIT +if test -n "$HAS_GIT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAS_GIT" >&5 +printf "%s\n" "$HAS_GIT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +else +HAS_GIT=no-repository +fi +if test $HAS_GIT = found +then + GITVERSION="git --git-dir \$(srcdir)/.git rev-parse --short HEAD" + GITTAG="git --git-dir \$(srcdir)/.git describe --all --always --dirty" + GITBRANCH="git --git-dir \$(srcdir)/.git name-rev --name-only HEAD" +else + GITVERSION="" + GITTAG="" + GITBRANCH="" +fi + + +ac_config_headers="$ac_config_headers pyconfig.h" + + + + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + + + +if test "x$cross_compiling" = xmaybe +then : + as_fn_error $? "Cross compiling required --host=HOST-TUPLE and --build=ARCH" "$LINENO" 5 + +fi + +# pybuilddir.txt will be created by --generate-posix-vars in the Makefile +rm -f pybuilddir.txt + + +# Check whether --with-build-python was given. +if test ${with_build_python+y} +then : + withval=$with_build_python; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-build-python" >&5 +printf %s "checking for --with-build-python... " >&6; } + + if test "x$with_build_python" = xyes +then : + with_build_python=python$PACKAGE_VERSION +fi + if test "x$with_build_python" = xno +then : + as_fn_error $? "invalid --with-build-python option: expected path or \"yes\", not \"no\"" "$LINENO" 5 +fi + + if ! $(command -v "$with_build_python" >/dev/null 2>&1); then + as_fn_error $? "invalid or missing build python binary \"$with_build_python\"" "$LINENO" 5 + fi + build_python_ver=$($with_build_python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')") + if test "$build_python_ver" != "$PACKAGE_VERSION"; then + as_fn_error $? "\"$with_build_python\" has incompatible version $build_python_ver (expected: $PACKAGE_VERSION)" "$LINENO" 5 + fi + ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python + PYTHON_FOR_FREEZE="$with_build_python" + PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) _PYTHON_SYSCONFIGDATA_PATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`) '$with_build_python + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_build_python" >&5 +printf "%s\n" "$with_build_python" >&6; } + +else case e in #( + e) + if test "x$cross_compiling" = xyes +then : + as_fn_error $? "Cross compiling requires --with-build-python" "$LINENO" 5 + +fi + PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E' + PYTHON_FOR_FREEZE="./_bootstrap_python" + + ;; +esac +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python interpreter freezing" >&5 +printf %s "checking for Python interpreter freezing... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_FOR_FREEZE" >&5 +printf "%s\n" "$PYTHON_FOR_FREEZE" >&6; } + + +if test "x$cross_compiling" = xyes +then : + + FREEZE_MODULE_BOOTSTRAP='$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py' + FREEZE_MODULE_BOOTSTRAP_DEPS='$(srcdir)/Programs/_freeze_module.py' + FREEZE_MODULE='$(FREEZE_MODULE_BOOTSTRAP)' + FREEZE_MODULE_DEPS='$(FREEZE_MODULE_BOOTSTRAP_DEPS)' + PYTHON_FOR_BUILD_DEPS='' + +else case e in #( + e) + FREEZE_MODULE_BOOTSTRAP='./Programs/_freeze_module' + FREEZE_MODULE_BOOTSTRAP_DEPS="Programs/_freeze_module" + FREEZE_MODULE='$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py' + FREEZE_MODULE_DEPS="_bootstrap_python \$(srcdir)/Programs/_freeze_module.py" + PYTHON_FOR_BUILD_DEPS='$(BUILDPYTHON)' + + ;; +esac +fi + + + + + + +for ac_prog in python$PACKAGE_VERSION python3.15 python3.14 python3.13 python3.12 python3.11 python3.10 python3 python +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PYTHON_FOR_REGEN+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$PYTHON_FOR_REGEN"; then + ac_cv_prog_PYTHON_FOR_REGEN="$PYTHON_FOR_REGEN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PYTHON_FOR_REGEN="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +PYTHON_FOR_REGEN=$ac_cv_prog_PYTHON_FOR_REGEN +if test -n "$PYTHON_FOR_REGEN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_FOR_REGEN" >&5 +printf "%s\n" "$PYTHON_FOR_REGEN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$PYTHON_FOR_REGEN" && break +done +test -n "$PYTHON_FOR_REGEN" || PYTHON_FOR_REGEN="python3" + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python for regen version" >&5 +printf %s "checking Python for regen version... " >&6; } +if command -v "$PYTHON_FOR_REGEN" >/dev/null 2>&1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $($PYTHON_FOR_REGEN -V 2>/dev/null)" >&5 +printf "%s\n" "$($PYTHON_FOR_REGEN -V 2>/dev/null)" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: missing" >&5 +printf "%s\n" "missing" >&6; } +fi + + +if test "$prefix" != "/"; then + prefix=`echo "$prefix" | sed -e 's/\/$//g'` +fi + + + + +# We don't use PACKAGE_ variables, and they cause conflicts +# with other autoconf-based packages that include Python.h +grep -v 'define PACKAGE_' confdefs.h.new +rm confdefs.h +mv confdefs.h.new confdefs.h + + +VERSION=3.15 + +# Version number of Python's own shared library file. + +SOVERSION=1.0 + +# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables +# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable +# them. + +printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + + +# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables +# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable +# them. + +printf "%s\n" "#define __BSD_VISIBLE 1" >>confdefs.h + + +# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables +# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable +# them. + +printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h + + + +define_xopen_source=yes + +# Arguments passed to configure. + +CONFIG_ARGS="$ac_configure_args" + + +# Check whether --with-pkg-config was given. +if test ${with_pkg_config+y} +then : + withval=$with_pkg_config; +else case e in #( + e) with_pkg_config=check + ;; +esac +fi + +case $with_pkg_config in #( + yes|check) : + + if test -z "$PKG_CONFIG"; then + { PKG_CONFIG=; unset PKG_CONFIG;} + { ac_cv_path_ac_pt_PKG_CONFIG=; unset ac_cv_path_ac_pt_PKG_CONFIG;} + { ac_cv_prog_ac_ct_PKG_CONFIG=; unset ac_cv_prog_ac_ct_PKG_CONFIG;} + fi + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + PKG_CONFIG="" + fi +fi + ;; #( + no) : + + PKG_CONFIG='' + ac_cv_path_ac_pt_PKG_CONFIG='' + ac_cv_prog_ac_ct_PKG_CONFIG='' + ;; #( + *) : + as_fn_error $? "invalid argument --with-pkg-config=$with_pkg_config" "$LINENO" 5 + ;; +esac +if test "$with_pkg_config" = yes -a -z "$PKG_CONFIG"; then + as_fn_error $? "pkg-config is required" "$LINENO" 5] +fi + + +# Check whether --with-missing-stdlib-config was given. +if test ${with_missing_stdlib_config+y} +then : + withval=$with_missing_stdlib_config; MISSING_STDLIB_CONFIG="$withval" +else case e in #( + e) MISSING_STDLIB_CONFIG="" + ;; +esac +fi + + + +# Set name for machine-dependent library files + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking MACHDEP" >&5 +printf %s "checking MACHDEP... " >&6; } +if test -z "$MACHDEP" +then + # avoid using uname for cross builds + if test "$cross_compiling" = yes; then + # ac_sys_system and ac_sys_release are used for setting + # a lot of different things including 'define_xopen_source' + # in the case statement below. + case "$host" in + *-*-linux-android*) + ac_sys_system=Linux-android + ;; + *-*-linux*) + ac_sys_system=Linux + ;; + *-*-cygwin*) + ac_sys_system=Cygwin + ;; + *-apple-ios*) + ac_sys_system=iOS + ;; + *-*-darwin*) + ac_sys_system=Darwin + ;; + *-*-vxworks*) + ac_sys_system=VxWorks + ;; + *-*-emscripten) + ac_sys_system=Emscripten + ;; + *-*-wasi*) + ac_sys_system=WASI + ;; + *) + # for now, limit cross builds to known configurations + MACHDEP="unknown" + as_fn_error $? "cross build not supported for $host" "$LINENO" 5 + esac + ac_sys_release= + else + ac_sys_system=`uname -s` + if test "$ac_sys_system" = "AIX" \ + -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then + ac_sys_release=`uname -v` + else + ac_sys_release=`uname -r` + fi + fi + ac_md_system=`echo $ac_sys_system | + tr -d '/ ' | tr '[A-Z]' '[a-z]'` + ac_md_release=`echo $ac_sys_release | + tr -d '/ ' | sed 's/^[A-Z]\.//' | sed 's/\..*//'` + MACHDEP="$ac_md_system$ac_md_release" + + case $MACHDEP in + aix*) MACHDEP="aix";; + freebsd*) MACHDEP="freebsd";; + linux-android*) MACHDEP="android";; + linux*) MACHDEP="linux";; + cygwin*) MACHDEP="cygwin";; + darwin*) MACHDEP="darwin";; + '') MACHDEP="unknown";; + esac + + if test "$ac_sys_system" = "SunOS"; then + # For Solaris, there isn't an OS version specific macro defined + # in most compilers, so we define one here. + SUNOS_VERSION=`echo $ac_sys_release | sed -e 's!\.\(0-9\)$!.0\1!g' | tr -d '.'` + +printf "%s\n" "#define Py_SUNOS_VERSION $SUNOS_VERSION" >>confdefs.h + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$MACHDEP\"" >&5 +printf "%s\n" "\"$MACHDEP\"" >&6; } + + +if test -z "$host_prefix"; then + case $ac_sys_system in #( + Emscripten) : + host_prefix=/ ;; #( + *) : + host_prefix='${prefix}' + ;; +esac +fi + + +if test -z "$host_exec_prefix"; then + case $ac_sys_system in #( + Emscripten) : + host_exec_prefix=$host_prefix ;; #( + *) : + host_exec_prefix='${exec_prefix}' + ;; +esac +fi + + +# On cross-compile builds, configure will look for a host-specific compiler by +# prepending the user-provided host triple to the required binary name. +# +# On iOS, this results in binaries like "arm64-apple-ios13.0-simulator-gcc", +# which isn't a binary that exists, and isn't very convenient, as it contains the +# iOS version. As the default cross-compiler name won't exist, configure falls +# back to gcc, which *definitely* won't work. We're providing wrapper scripts for +# these tools; the binary names of these scripts are better defaults than "gcc". +# This only requires that the user put the platform scripts folder (e.g., +# "iOS/Resources/bin") in their path, rather than defining platform-specific +# names/paths for AR, CC, CPP, and CXX explicitly; and if the user forgets to +# either put the platform scripts folder in the path, or specify CC etc, +# configure will fail. +if test -z "$AR"; then + case "$host" in + aarch64-apple-ios*-simulator) AR=arm64-apple-ios-simulator-ar ;; + aarch64-apple-ios*) AR=arm64-apple-ios-ar ;; + x86_64-apple-ios*-simulator) AR=x86_64-apple-ios-simulator-ar ;; + *) + esac +fi +if test -z "$CC"; then + case "$host" in + aarch64-apple-ios*-simulator) CC=arm64-apple-ios-simulator-clang ;; + aarch64-apple-ios*) CC=arm64-apple-ios-clang ;; + x86_64-apple-ios*-simulator) CC=x86_64-apple-ios-simulator-clang ;; + *) + esac +fi +if test -z "$CPP"; then + case "$host" in + aarch64-apple-ios*-simulator) CPP=arm64-apple-ios-simulator-cpp ;; + aarch64-apple-ios*) CPP=arm64-apple-ios-cpp ;; + x86_64-apple-ios*-simulator) CPP=x86_64-apple-ios-simulator-cpp ;; + *) + esac +fi +if test -z "$CXX"; then + case "$host" in + aarch64-apple-ios*-simulator) CXX=arm64-apple-ios-simulator-clang++ ;; + aarch64-apple-ios*) CXX=arm64-apple-ios-clang++ ;; + x86_64-apple-ios*-simulator) CXX=x86_64-apple-ios-simulator-clang++ ;; + *) + esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-universalsdk" >&5 +printf %s "checking for --enable-universalsdk... " >&6; } +# Check whether --enable-universalsdk was given. +if test ${enable_universalsdk+y} +then : + enableval=$enable_universalsdk; + case $enableval in + yes) + # Locate the best usable SDK, see Mac/README for more + # information + enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`" + if ! ( echo $enableval | grep -E '\.sdk' 1>/dev/null ) + then + enableval=/Developer/SDKs/MacOSX10.4u.sdk + if test ! -d "${enableval}" + then + enableval=/ + fi + fi + ;; + esac + case $enableval in + no) + UNIVERSALSDK= + enable_universalsdk= + ;; + *) + UNIVERSALSDK=$enableval + if test ! -d "${UNIVERSALSDK}" + then + as_fn_error $? "--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}" "$LINENO" 5 + fi + ;; + esac + + +else case e in #( + e) + UNIVERSALSDK= + enable_universalsdk= + ;; +esac +fi + +if test -n "${UNIVERSALSDK}" +then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${UNIVERSALSDK}" >&5 +printf "%s\n" "${UNIVERSALSDK}" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + +ARCH_RUN_32BIT="" + +# For backward compatibility reasons we prefer to select '32-bit' if available, +# otherwise use 'intel' +UNIVERSAL_ARCHS="32-bit" +if test "`uname -s`" = "Darwin" +then + if test -n "${UNIVERSALSDK}" + then + if test -z "`/usr/bin/file -L "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`" + then + UNIVERSAL_ARCHS="intel" + fi + fi +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-universal-archs" >&5 +printf %s "checking for --with-universal-archs... " >&6; } + +# Check whether --with-universal-archs was given. +if test ${with_universal_archs+y} +then : + withval=$with_universal_archs; + UNIVERSAL_ARCHS="$withval" + +fi + +if test -n "${UNIVERSALSDK}" +then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${UNIVERSAL_ARCHS}" >&5 +printf "%s\n" "${UNIVERSAL_ARCHS}" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Check whether --with-framework-name was given. +if test ${with_framework_name+y} +then : + withval=$with_framework_name; + PYTHONFRAMEWORK=${withval} + PYTHONFRAMEWORKDIR=${withval}.framework + PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr 'A-Z' 'a-z'` + +else case e in #( + e) + PYTHONFRAMEWORK=Python + PYTHONFRAMEWORKDIR=Python.framework + PYTHONFRAMEWORKIDENTIFIER=org.python.python + ;; +esac +fi + +# Check whether --enable-framework was given. +if test ${enable_framework+y} +then : + enableval=$enable_framework; + case $enableval in + yes) + case $ac_sys_system in + Darwin) enableval=/Library/Frameworks ;; + iOS) enableval=Apple/iOS/Frameworks/\$\(MULTIARCH\) ;; + *) as_fn_error $? "Unknown platform for framework build" "$LINENO" 5 + esac + esac + + case $enableval in + no) + case $ac_sys_system in + iOS) as_fn_error $? "iOS builds must use --enable-framework" "$LINENO" 5 ;; + *) + PYTHONFRAMEWORK= + PYTHONFRAMEWORKDIR=no-framework + PYTHONFRAMEWORKPREFIX= + PYTHONFRAMEWORKINSTALLDIR= + PYTHONFRAMEWORKINSTALLNAMEPREFIX= + RESSRCDIR= + FRAMEWORKINSTALLFIRST= + FRAMEWORKINSTALLLAST= + FRAMEWORKALTINSTALLFIRST= + FRAMEWORKALTINSTALLLAST= + FRAMEWORKPYTHONW= + INSTALLTARGETS="commoninstall bininstall maninstall" + + if test "x${prefix}" = "xNONE"; then + FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" + else + FRAMEWORKUNIXTOOLSPREFIX="${prefix}" + fi + enable_framework= + esac + ;; + *) + PYTHONFRAMEWORKPREFIX="${enableval}" + PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR + + case $ac_sys_system in #( + Darwin) : + FRAMEWORKINSTALLFIRST="frameworkinstallversionedstructure" + FRAMEWORKALTINSTALLFIRST="frameworkinstallversionedstructure " + FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools" + FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools" + FRAMEWORKPYTHONW="frameworkpythonw" + FRAMEWORKINSTALLAPPSPREFIX="/Applications" + INSTALLTARGETS="commoninstall bininstall maninstall" + + if test "x${prefix}" = "xNONE" ; then + FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" + + else + FRAMEWORKUNIXTOOLSPREFIX="${prefix}" + fi + + case "${enableval}" in + /System*) + FRAMEWORKINSTALLAPPSPREFIX="/Applications" + if test "${prefix}" = "NONE" ; then + # See below + FRAMEWORKUNIXTOOLSPREFIX="/usr" + fi + ;; + + /Library*) + FRAMEWORKINSTALLAPPSPREFIX="/Applications" + ;; + + */Library/Frameworks) + MDIR="`dirname "${enableval}"`" + MDIR="`dirname "${MDIR}"`" + FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications" + + if test "${prefix}" = "NONE"; then + # User hasn't specified the + # --prefix option, but wants to install + # the framework in a non-default location, + # ensure that the compatibility links get + # installed relative to that prefix as well + # instead of in /usr/local. + FRAMEWORKUNIXTOOLSPREFIX="${MDIR}" + fi + ;; + + *) + FRAMEWORKINSTALLAPPSPREFIX="/Applications" + ;; + esac + + prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION + PYTHONFRAMEWORKINSTALLNAMEPREFIX=${prefix} + RESSRCDIR=Mac/Resources/framework + + # Add files for Mac specific code to the list of output + # files: + ac_config_files="$ac_config_files Mac/Makefile" + + ac_config_files="$ac_config_files Mac/PythonLauncher/Makefile" + + ac_config_files="$ac_config_files Mac/Resources/framework/Info.plist" + + ac_config_files="$ac_config_files Mac/Resources/app/Info.plist" + + ;; + iOS) : + FRAMEWORKINSTALLFIRST="frameworkinstallunversionedstructure" + FRAMEWORKALTINSTALLFIRST="frameworkinstallunversionedstructure " + FRAMEWORKINSTALLLAST="frameworkinstallmobileheaders" + FRAMEWORKALTINSTALLLAST="frameworkinstallmobileheaders" + FRAMEWORKPYTHONW= + INSTALLTARGETS="libinstall inclinstall sharedinstall" + + prefix=$PYTHONFRAMEWORKPREFIX + PYTHONFRAMEWORKINSTALLNAMEPREFIX="@rpath/$PYTHONFRAMEWORKDIR" + RESSRCDIR=Apple/iOS/Resources + + ac_config_files="$ac_config_files Apple/iOS/Resources/Info.plist" + + ;; + *) + as_fn_error $? "Unknown platform for framework build" "$LINENO" 5 + ;; + esac + esac + +else case e in #( + e) + case $ac_sys_system in + iOS) as_fn_error $? "iOS builds must use --enable-framework" "$LINENO" 5 ;; + *) + PYTHONFRAMEWORK= + PYTHONFRAMEWORKDIR=no-framework + PYTHONFRAMEWORKPREFIX= + PYTHONFRAMEWORKINSTALLDIR= + PYTHONFRAMEWORKINSTALLNAMEPREFIX= + RESSRCDIR= + FRAMEWORKINSTALLFIRST= + FRAMEWORKINSTALLLAST= + FRAMEWORKALTINSTALLFIRST= + FRAMEWORKALTINSTALLLAST= + FRAMEWORKPYTHONW= + INSTALLTARGETS="commoninstall bininstall maninstall" + if test "x${prefix}" = "xNONE" ; then + FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" + else + FRAMEWORKUNIXTOOLSPREFIX="${prefix}" + fi + enable_framework= + esac + ;; +esac +fi + + + + + + + + + + + + + + + + + + +printf "%s\n" "#define _PYTHONFRAMEWORK \"${PYTHONFRAMEWORK}\"" >>confdefs.h + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-app-store-compliance" >&5 +printf %s "checking for --with-app-store-compliance... " >&6; } + +# Check whether --with-app_store_compliance was given. +if test ${with_app_store_compliance+y} +then : + withval=$with_app_store_compliance; + case "$withval" in + yes) + case $ac_sys_system in + Darwin|iOS) + # iOS is able to share the macOS patch + APP_STORE_COMPLIANCE_PATCH="Mac/Resources/app-store-compliance.patch" + ;; + *) as_fn_error $? "no default app store compliance patch available for $ac_sys_system" "$LINENO" 5 ;; + esac + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: applying default app store compliance patch" >&5 +printf "%s\n" "applying default app store compliance patch" >&6; } + ;; + *) + APP_STORE_COMPLIANCE_PATCH="${withval}" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: applying custom app store compliance patch" >&5 +printf "%s\n" "applying custom app store compliance patch" >&6; } + ;; + esac + +else case e in #( + e) + case $ac_sys_system in + iOS) + # Always apply the compliance patch on iOS; we can use the macOS patch + APP_STORE_COMPLIANCE_PATCH="Mac/Resources/app-store-compliance.patch" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: applying default app store compliance patch" >&5 +printf "%s\n" "applying default app store compliance patch" >&6; } + ;; + *) + # No default app compliance patching on any other platform + APP_STORE_COMPLIANCE_PATCH= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not patching for app store compliance" >&5 +printf "%s\n" "not patching for app store compliance" >&6; } + ;; + esac + ;; +esac +fi + + + + +if test "$cross_compiling" = yes; then + case "$host" in + *-*-linux*) + case "$host_cpu" in + arm*) + _host_ident=arm + ;; + *) + _host_ident=$host_cpu + esac + ;; + *-*-cygwin*) + _host_ident= + ;; + *-apple-ios*) + _host_os=`echo $host | cut -d '-' -f3` + _host_device=`echo $host | cut -d '-' -f4` + _host_device=${_host_device:=os} + + # IPHONEOS_DEPLOYMENT_TARGET is the minimum supported iOS version + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking iOS deployment target" >&5 +printf %s "checking iOS deployment target... " >&6; } + IPHONEOS_DEPLOYMENT_TARGET=$(echo ${_host_os} | cut -c4-) + IPHONEOS_DEPLOYMENT_TARGET=${IPHONEOS_DEPLOYMENT_TARGET:=13.0} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $IPHONEOS_DEPLOYMENT_TARGET" >&5 +printf "%s\n" "$IPHONEOS_DEPLOYMENT_TARGET" >&6; } + + case "$host_cpu" in + aarch64) + _host_ident=${IPHONEOS_DEPLOYMENT_TARGET}-arm64-iphone${_host_device} + ;; + *) + _host_ident=${IPHONEOS_DEPLOYMENT_TARGET}-$host_cpu-iphone${_host_device} + ;; + esac + ;; + *-*-darwin*) + case "$host_cpu" in + arm*) + _host_ident=arm + ;; + *) + _host_ident=$host_cpu + esac + ;; + *-*-vxworks*) + _host_ident=$host_cpu + ;; + *-*-emscripten) + _host_ident=$(emcc -dumpversion | cut -f1 -d-)-$host_cpu + ;; + wasm32-*-* | wasm64-*-*) + _host_ident=$host_cpu + ;; + *) + # for now, limit cross builds to known configurations + MACHDEP="unknown" + as_fn_error $? "cross build not supported for $host" "$LINENO" 5 + esac + _PYTHON_HOST_PLATFORM="$MACHDEP${_host_ident:+-$_host_ident}" +fi + +# Some systems cannot stand _XOPEN_SOURCE being defined at all; they +# disable features if it is defined, without any means to access these +# features as extensions. For these systems, we skip the definition of +# _XOPEN_SOURCE. Before adding a system to the list to gain access to +# some feature, make sure there is no alternative way to access this +# feature. Also, when using wildcards, make sure you have verified the +# need for not defining _XOPEN_SOURCE on all systems matching the +# wildcard, and that the wildcard does not include future systems +# (which may remove their limitations). +case $ac_sys_system/$ac_sys_release in + # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined, + # even though select is a POSIX function. Reported by J. Ribbens. + # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish. + # In addition, Stefan Krah confirms that issue #1244610 exists through + # OpenBSD 4.6, but is fixed in 4.7. + OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.[0123456]) + define_xopen_source=no + # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is + # also defined. This can be overridden by defining _BSD_SOURCE + # As this has a different meaning on Linux, only define it on OpenBSD + +printf "%s\n" "#define _BSD_SOURCE 1" >>confdefs.h + + ;; + OpenBSD/*) + # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is + # also defined. This can be overridden by defining _BSD_SOURCE + # As this has a different meaning on Linux, only define it on OpenBSD + +printf "%s\n" "#define _BSD_SOURCE 1" >>confdefs.h + + ;; + # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of + # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by + # Marc Recht + NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6[A-S]) + define_xopen_source=no;; + # From the perspective of Solaris, _XOPEN_SOURCE is not so much a + # request to enable features supported by the standard as a request + # to disable features not supported by the standard. The best way + # for Python to use Solaris is simply to leave _XOPEN_SOURCE out + # entirely and define __EXTENSIONS__ instead. + SunOS/*) + define_xopen_source=no;; + # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE, + # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice. + # Reconfirmed for 7.1.4 by Martin v. Loewis. + OpenUNIX/8.0.0| UnixWare/7.1.[0-4]) + define_xopen_source=no;; + # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE, + # but used in struct sockaddr.sa_family. Reported by Tim Rice. + SCO_SV/3.2) + define_xopen_source=no;; + # On MacOS X 10.2, a bug in ncurses.h means that it craps out if + # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which + # identifies itself as Darwin/7.* + # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE + # disables platform specific features beyond repair. + # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE + # has no effect, don't bother defining them + Darwin/[6789].*) + define_xopen_source=no;; + Darwin/[12][0-9].*) + define_xopen_source=no;; + # On iOS, defining _POSIX_C_SOURCE also disables platform specific features. + iOS/*) + define_xopen_source=no;; + # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from + # defining NI_NUMERICHOST. + QNX/6.3.2) + define_xopen_source=no + ;; + # On VxWorks, defining _XOPEN_SOURCE causes compile failures + # in network headers still using system V types. + VxWorks/*) + define_xopen_source=no + ;; + + # On HP-UX, defining _XOPEN_SOURCE to 600 or greater hides + # chroot() and other functions + hp*|HP*) + define_xopen_source=no + ;; + +esac + +if test $define_xopen_source = yes +then + # X/Open 8, incorporating POSIX.1-2024 + +printf "%s\n" "#define _XOPEN_SOURCE 800" >>confdefs.h + + + # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires + # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else + # several APIs are not declared. Since this is also needed in some + # cases for HP-UX, we define it globally. + +printf "%s\n" "#define _XOPEN_SOURCE_EXTENDED 1" >>confdefs.h + + + +printf "%s\n" "#define _POSIX_C_SOURCE 202405L" >>confdefs.h + +fi + +# On HP-UX mbstate_t requires _INCLUDE__STDC_A1_SOURCE +case $ac_sys_system in + hp*|HP*) + define_stdc_a1=yes;; + *) + define_stdc_a1=no;; +esac + +if test $define_stdc_a1 = yes +then + +printf "%s\n" "#define _INCLUDE__STDC_A1_SOURCE 1" >>confdefs.h + +fi + +# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET, +# it may influence the way we can build extensions, so distutils +# needs to check it + + +CONFIGURE_MACOSX_DEPLOYMENT_TARGET= +EXPORT_MACOSX_DEPLOYMENT_TARGET='#' + +# Record the value of IPHONEOS_DEPLOYMENT_TARGET enforced by the selected host triple. + + +# checks for alternative programs + +# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just +# for debug/optimization stuff. BASECFLAGS is for flags that are required +# just to get things to compile and link. Users are free to override OPT +# when running configure or make. The build should not break if they do. +# BASECFLAGS should generally not be messed with, however. + +# If the user switches compilers, we can't believe the cache +if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC" +then + as_fn_error $? "cached CC is different -- throw away $cache_file +(it is also a good idea to do 'make clean' before compiling)" "$LINENO" 5 +fi + +# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2 +# when the compiler supports them, but we don't always want -O2, and +# we set -g later. +if test -z "$CFLAGS"; then + CFLAGS= +fi + +case $host in #( + wasm64-*-emscripten) : + + as_fn_append CFLAGS " -sMEMORY64=1" + as_fn_append LDFLAGS " -sMEMORY64=1" + ;; #( + *) : + ;; +esac + +case $ac_sys_system in #( + iOS) : + + as_fn_append CFLAGS " -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}" + as_fn_append LDFLAGS " -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}" + ;; #( + *) : + ;; +esac + +if test "$ac_sys_system" = "Darwin" +then + # Extract the first word of "xcrun", so it can be a program name with args. +set dummy xcrun; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_HAS_XCRUN+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$HAS_XCRUN"; then + ac_cv_prog_HAS_XCRUN="$HAS_XCRUN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_HAS_XCRUN="yes" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_HAS_XCRUN" && ac_cv_prog_HAS_XCRUN="missing" +fi ;; +esac +fi +HAS_XCRUN=$ac_cv_prog_HAS_XCRUN +if test -n "$HAS_XCRUN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HAS_XCRUN" >&5 +printf "%s\n" "$HAS_XCRUN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking macOS SDKROOT" >&5 +printf %s "checking macOS SDKROOT... " >&6; } + if test -z "$SDKROOT"; then + if test "$HAS_XCRUN" = "yes"; then + SDKROOT=$(xcrun --show-sdk-path) + else + SDKROOT="/" + fi + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SDKROOT" >&5 +printf "%s\n" "$SDKROOT" >&6; } + + # Compiler selection on MacOSX is more complicated than + # AC_PROG_CC can handle, see Mac/README for more + # information + if test -z "${CC}" + then + found_gcc= + found_clang= + as_save_IFS=$IFS; IFS=: + for as_dir in $PATH + do + IFS=$as_save_IFS + if test -x "${as_dir}/gcc"; then + if test -z "${found_gcc}"; then + found_gcc="${as_dir}/gcc" + fi + fi + if test -x "${as_dir}/clang"; then + if test -z "${found_clang}"; then + found_clang="${as_dir}/clang" + fi + fi + done + IFS=$as_save_IFS + + if test -n "$found_gcc" -a -n "$found_clang" + then + if test -n "`"$found_gcc" --version | grep llvm-gcc`" + then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Detected llvm-gcc, falling back to clang" >&5 +printf "%s\n" "$as_me: Detected llvm-gcc, falling back to clang" >&6;} + CC="$found_clang" + CXX="$found_clang++" + fi + + + elif test -z "$found_gcc" -a -n "$found_clang" + then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: No GCC found, use CLANG" >&5 +printf "%s\n" "$as_me: No GCC found, use CLANG" >&6;} + CC="$found_clang" + CXX="$found_clang++" + + elif test -z "$found_gcc" -a -z "$found_clang" + then + found_clang=`/usr/bin/xcrun -find clang 2>/dev/null` + if test -n "${found_clang}" + then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Using clang from Xcode.app" >&5 +printf "%s\n" "$as_me: Using clang from Xcode.app" >&6;} + CC="${found_clang}" + CXX="`/usr/bin/xcrun -find clang++`" + + # else: use default behaviour + fi + fi + fi +fi + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in #( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in #( + e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in #( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in #( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else case e in #( + e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in #( +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in #( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in #( +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + EGREP_TRADITIONAL=$EGREP + ac_cv_path_EGREP_TRADITIONAL=$EGREP + + +CC_BASENAME=$(expr "//$CC" : '.*/\(.*\)') + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CC compiler name" >&5 +printf %s "checking for CC compiler name... " >&6; } +if test ${ac_cv_cc_name+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat > conftest.c <conftest.out 2>/dev/null; then + ac_cv_cc_name=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '` + if test "x$CC_BASENAME" = xmpicc +then : + ac_cv_cc_name=mpicc +fi +else + ac_cv_cc_name="unknown" +fi +rm -f conftest.c conftest.out + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_name" >&5 +printf "%s\n" "$ac_cv_cc_name" >&6; } + +# checks for UNIX variants that set C preprocessor variables +# may set _GNU_SOURCE, __EXTENSIONS__, _POSIX_PTHREAD_SEMANTICS, +# _POSIX_SOURCE, _POSIX_1_SOURCE, and more + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else case e in #( + e) ac_cv_safe_to_define___extensions__=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } + + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf "%s\n" "#define _MINIX 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h + +else case e in #( + e) MINIX= ;; +esac +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h + +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GCC compatible compiler" >&5 +printf %s "checking for GCC compatible compiler... " >&6; } +if test ${ac_cv_gcc_compat+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if !defined(__GNUC__) + #error "not GCC compatible" + #else + /* GCC compatible! */ + #endif + +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + ac_cv_gcc_compat=yes +else case e in #( + e) ac_cv_gcc_compat=no ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_compat" >&5 +printf "%s\n" "$ac_cv_gcc_compat" >&6; } + + + +preset_cxx="$CXX" +if test -z "$CXX" +then + case "$ac_cv_cc_name" in + gcc) if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}g++", so it can be a program name with args. +set dummy ${ac_tool_prefix}g++; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_CXX="$CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in notfound +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +CXX=$ac_cv_path_CXX +if test -n "$CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_CXX"; then + ac_pt_CXX=$CXX + # Extract the first word of "g++", so it can be a program name with args. +set dummy g++; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in notfound +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_CXX=$ac_cv_path_ac_pt_CXX +if test -n "$ac_pt_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5 +printf "%s\n" "$ac_pt_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_pt_CXX + fi +else + CXX="$ac_cv_path_CXX" +fi + ;; + cc) if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}c++", so it can be a program name with args. +set dummy ${ac_tool_prefix}c++; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_CXX="$CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in notfound +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +CXX=$ac_cv_path_CXX +if test -n "$CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_CXX"; then + ac_pt_CXX=$CXX + # Extract the first word of "c++", so it can be a program name with args. +set dummy c++; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in notfound +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_CXX=$ac_cv_path_ac_pt_CXX +if test -n "$ac_pt_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5 +printf "%s\n" "$ac_pt_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_CXX" = x; then + CXX="c++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_pt_CXX + fi +else + CXX="$ac_cv_path_CXX" +fi + ;; + clang) if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang++", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang++; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_CXX="$CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in notfound +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +CXX=$ac_cv_path_CXX +if test -n "$CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_CXX"; then + ac_pt_CXX=$CXX + # Extract the first word of "clang++", so it can be a program name with args. +set dummy clang++; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in notfound +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_CXX=$ac_cv_path_ac_pt_CXX +if test -n "$ac_pt_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5 +printf "%s\n" "$ac_pt_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_CXX" = x; then + CXX="clang++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_pt_CXX + fi +else + CXX="$ac_cv_path_CXX" +fi + ;; + icc) if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}icpc", so it can be a program name with args. +set dummy ${ac_tool_prefix}icpc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_CXX="$CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in notfound +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_CXX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +CXX=$ac_cv_path_CXX +if test -n "$CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_CXX"; then + ac_pt_CXX=$CXX + # Extract the first word of "icpc", so it can be a program name with args. +set dummy icpc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in notfound +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_CXX="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_CXX=$ac_cv_path_ac_pt_CXX +if test -n "$ac_pt_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5 +printf "%s\n" "$ac_pt_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_CXX" = x; then + CXX="icpc" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_pt_CXX + fi +else + CXX="$ac_cv_path_CXX" +fi + ;; + esac + if test "$CXX" = "notfound" + then + CXX="" + fi +fi +if test -z "$CXX" +then + if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf "%s\n" "$ac_ct_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="notfound" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + if test "$CXX" = "notfound" + then + CXX="" + fi +fi +if test "$preset_cxx" != "$CXX" +then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: + + By default, distutils will build C++ extension modules with \"$CXX\". + If this is not intended, then set CXX on the configure command line. + " >&5 +printf "%s\n" "$as_me: + + By default, distutils will build C++ extension modules with \"$CXX\". + If this is not intended, then set CXX on the configure command line. + " >&6;} +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the platform triplet based on compiler characteristics" >&5 +printf %s "checking for the platform triplet based on compiler characteristics... " >&6; } +if $CPP $CPPFLAGS $srcdir/Misc/platform_triplet.c >conftest.out 2>/dev/null; then + PLATFORM_TRIPLET=`grep '^PLATFORM_TRIPLET=' conftest.out | tr -d ' '` + PLATFORM_TRIPLET="${PLATFORM_TRIPLET#PLATFORM_TRIPLET=}" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PLATFORM_TRIPLET" >&5 +printf "%s\n" "$PLATFORM_TRIPLET" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf "%s\n" "none" >&6; } +fi +rm -f conftest.out + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for multiarch" >&5 +printf %s "checking for multiarch... " >&6; } +case $ac_sys_system in #( + Darwin*) : + MULTIARCH="" ;; #( + iOS) : + MULTIARCH="" ;; #( + FreeBSD*) : + MULTIARCH="" ;; #( + *) : + MULTIARCH=$($CC --print-multiarch 2>/dev/null) + ;; +esac + + +if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then + if test x$PLATFORM_TRIPLET != x$MULTIARCH; then + as_fn_error $? "internal configure error for the platform triplet, please file a bug report" "$LINENO" 5 + fi +elif test x$PLATFORM_TRIPLET != x && test x$MULTIARCH = x; then + MULTIARCH=$PLATFORM_TRIPLET +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MULTIARCH" >&5 +printf "%s\n" "$MULTIARCH" >&6; } + +case $ac_sys_system in #( + iOS) : + SOABI_PLATFORM=`echo "$PLATFORM_TRIPLET" | cut -d '-' -f2` ;; #( + *) : + SOABI_PLATFORM=$PLATFORM_TRIPLET + ;; +esac + +if test x$MULTIARCH != x; then + MULTIARCH_CPPFLAGS="-DMULTIARCH=\\\"$MULTIARCH\\\"" +fi + + +# Guess C stack direction +case $host in #( + hppa*) : + _Py_STACK_GROWS_DOWN=0 ;; #( + *) : + _Py_STACK_GROWS_DOWN=1 ;; +esac + +printf "%s\n" "#define _Py_STACK_GROWS_DOWN $_Py_STACK_GROWS_DOWN" >>confdefs.h + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PEP 11 support tier" >&5 +printf %s "checking for PEP 11 support tier... " >&6; } +case $host/$ac_cv_cc_name in #( + x86_64-*-linux-gnu/gcc) : + PY_SUPPORT_TIER=1 ;; #( + x86_64-apple-darwin*/clang) : + PY_SUPPORT_TIER=1 ;; #( + aarch64-apple-darwin*/clang) : + PY_SUPPORT_TIER=1 ;; #( + i686-pc-windows-msvc/msvc) : + PY_SUPPORT_TIER=1 ;; #( + x86_64-pc-windows-msvc/msvc) : + PY_SUPPORT_TIER=1 ;; #( + + aarch64-*-linux-gnu/gcc) : + PY_SUPPORT_TIER=2 ;; #( + aarch64-*-linux-gnu/clang) : + PY_SUPPORT_TIER=2 ;; #( + powerpc64le-*-linux-gnu/gcc) : + PY_SUPPORT_TIER=2 ;; #( + wasm32-unknown-wasip1/clang) : + PY_SUPPORT_TIER=2 ;; #( + x86_64-*-linux-gnu/clang) : + PY_SUPPORT_TIER=2 ;; #( + + aarch64-pc-windows-msvc/msvc) : + PY_SUPPORT_TIER=3 ;; #( + armv7l-*-linux-gnueabihf/gcc) : + PY_SUPPORT_TIER=3 ;; #( + powerpc64le-*-linux-gnu/clang) : + PY_SUPPORT_TIER=3 ;; #( + s390x-*-linux-gnu/gcc) : + PY_SUPPORT_TIER=3 ;; #( + x86_64-*-freebsd*/clang) : + PY_SUPPORT_TIER=3 ;; #( + aarch64-apple-ios*-simulator/clang) : + PY_SUPPORT_TIER=3 ;; #( + aarch64-apple-ios*/clang) : + PY_SUPPORT_TIER=3 ;; #( + aarch64-*-linux-android/clang) : + PY_SUPPORT_TIER=3 ;; #( + x86_64-*-linux-android/clang) : + PY_SUPPORT_TIER=3 ;; #( + wasm32-*-emscripten/emcc) : + PY_SUPPORT_TIER=3 ;; #( + *) : + + PY_SUPPORT_TIER=0 + ;; +esac + +case $PY_SUPPORT_TIER in #( + 1) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $host/$ac_cv_cc_name has tier 1 (supported)" >&5 +printf "%s\n" "$host/$ac_cv_cc_name has tier 1 (supported)" >&6; } ;; #( + 2) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $host/$ac_cv_cc_name has tier 2 (supported)" >&5 +printf "%s\n" "$host/$ac_cv_cc_name has tier 2 (supported)" >&6; } ;; #( + 3) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $host/$ac_cv_cc_name has tier 3 (partially supported)" >&5 +printf "%s\n" "$host/$ac_cv_cc_name has tier 3 (partially supported)" >&6; } ;; #( + *) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $host/$ac_cv_cc_name is not supported" >&5 +printf "%s\n" "$as_me: WARNING: $host/$ac_cv_cc_name is not supported" >&2;} + ;; +esac + + +printf "%s\n" "#define PY_SUPPORT_TIER $PY_SUPPORT_TIER" >>confdefs.h + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -Wl,--no-as-needed" >&5 +printf %s "checking for -Wl,--no-as-needed... " >&6; } +if test ${ac_cv_wl_no_as_needed+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + save_LDFLAGS="$LDFLAGS" + as_fn_append LDFLAGS " -Wl,--no-as-needed" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + NO_AS_NEEDED="-Wl,--no-as-needed" + ac_cv_wl_no_as_needed=yes +else case e in #( + e) NO_AS_NEEDED="" + ac_cv_wl_no_as_needed=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_wl_no_as_needed" >&5 +printf "%s\n" "$ac_cv_wl_no_as_needed" >&6; } + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the Android API level" >&5 +printf %s "checking for the Android API level... " >&6; } +cat > conftest.c <conftest.out 2>/dev/null; then + ANDROID_API_LEVEL=`sed -n -e '/__ANDROID_API__/d' -e 's/^android_api = //p' conftest.out` + _arm_arch=`sed -n -e '/__ARM_ARCH/d' -e 's/^arm_arch = //p' conftest.out` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ANDROID_API_LEVEL" >&5 +printf "%s\n" "$ANDROID_API_LEVEL" >&6; } + if test -z "$ANDROID_API_LEVEL"; then + as_fn_error $? "Fatal: you must define __ANDROID_API__" "$LINENO" 5 + fi + +printf "%s\n" "#define ANDROID_API_LEVEL $ANDROID_API_LEVEL" >>confdefs.h + + + # For __android_log_write() in Python/pylifecycle.c. + LIBS="$LIBS -llog" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the Android arm ABI" >&5 +printf %s "checking for the Android arm ABI... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $_arm_arch" >&5 +printf "%s\n" "$_arm_arch" >&6; } + if test "$_arm_arch" = 7; then + BASECFLAGS="${BASECFLAGS} -mfloat-abi=softfp -mfpu=vfpv3-d16" + LDFLAGS="${LDFLAGS} -march=armv7-a -Wl,--fix-cortex-a8" + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not Android" >&5 +printf "%s\n" "not Android" >&6; } +fi +rm -f conftest.c conftest.out + +# Check for unsupported systems +case $ac_sys_system/$ac_sys_release in #( + atheos*|Linux*/1*) : + + as_fn_error $? "This system \($ac_sys_system/$ac_sys_release\) is no longer supported. See README for details." "$LINENO" 5 + + ;; #( + *) : + ;; +esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-wasm-dynamic-linking" >&5 +printf %s "checking for --enable-wasm-dynamic-linking... " >&6; } +# Check whether --enable-wasm-dynamic-linking was given. +if test ${enable_wasm_dynamic_linking+y} +then : + enableval=$enable_wasm_dynamic_linking; + case $ac_sys_system in #( + Emscripten) : + ;; #( + WASI) : + ;; #( + *) : + as_fn_error $? "--enable-wasm-dynamic-linking only applies to Emscripten and WASI" "$LINENO" 5 + ;; +esac + +else case e in #( + e) + enable_wasm_dynamic_linking=missing + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_wasm_dynamic_linking" >&5 +printf "%s\n" "$enable_wasm_dynamic_linking" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-wasm-pthreads" >&5 +printf %s "checking for --enable-wasm-pthreads... " >&6; } +# Check whether --enable-wasm-pthreads was given. +if test ${enable_wasm_pthreads+y} +then : + enableval=$enable_wasm_pthreads; + case $ac_sys_system in #( + Emscripten) : + ;; #( + WASI) : + ;; #( + *) : + as_fn_error $? "--enable-wasm-pthreads only applies to Emscripten and WASI" "$LINENO" 5 + ;; +esac + +else case e in #( + e) + enable_wasm_pthreads=missing + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_wasm_pthreads" >&5 +printf "%s\n" "$enable_wasm_pthreads" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-suffix" >&5 +printf %s "checking for --with-suffix... " >&6; } + +# Check whether --with-suffix was given. +if test ${with_suffix+y} +then : + withval=$with_suffix; + case $with_suffix in #( + no) : + EXEEXT= ;; #( + yes) : + EXEEXT=.exe ;; #( + *) : + EXEEXT=$with_suffix + ;; +esac + +else case e in #( + e) + case $ac_sys_system in #( + Emscripten) : + EXEEXT=.mjs ;; #( + WASI) : + EXEEXT=.wasm ;; #( + *) : + EXEEXT= + ;; +esac + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EXEEXT" >&5 +printf "%s\n" "$EXEEXT" >&6; } + +# Make sure we keep EXEEXT and ac_exeext sync'ed. +ac_exeext=$EXEEXT + +# Test whether we're running on a non-case-sensitive system, in which +# case we give a warning if no ext is given + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for case-insensitive build directory" >&5 +printf %s "checking for case-insensitive build directory... " >&6; } +if test ! -d CaseSensitiveTestDir; then +mkdir CaseSensitiveTestDir +fi + +if test -d casesensitivetestdir && test -z "$EXEEXT" +then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + BUILDEXEEXT=.exe +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + BUILDEXEEXT=$EXEEXT +fi +rmdir CaseSensitiveTestDir + +case $ac_sys_system in +hp*|HP*) + case $ac_cv_cc_name in + cc|*/cc) CC="$CC -Ae";; + esac;; +esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LIBRARY" >&5 +printf %s "checking LIBRARY... " >&6; } +if test -z "$LIBRARY" +then + LIBRARY='libpython$(VERSION)$(ABIFLAGS).a' +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBRARY" >&5 +printf "%s\n" "$LIBRARY" >&6; } + +# LDLIBRARY is the name of the library to link against (as opposed to the +# name of the library into which to insert object files). BLDLIBRARY is also +# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY +# is blank as the main program is not linked directly against LDLIBRARY. +# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On +# systems without shared libraries, LDLIBRARY is the same as LIBRARY +# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library, +# DLLLIBRARY is the shared (i.e., DLL) library. +# +# RUNSHARED is used to run shared python without installed libraries +# +# INSTSONAME is the name of the shared library that will be use to install +# on the system - some systems like version suffix, others don't +# +# LDVERSION is the shared library version number, normally the Python version +# with the ABI build flags appended. + + + + + + + + +LDLIBRARY="$LIBRARY" +BLDLIBRARY='$(LDLIBRARY)' +INSTSONAME='$(LDLIBRARY)' +DLLLIBRARY='' +LDLIBRARYDIR='' +RUNSHARED='' +LDVERSION="$VERSION" + +# LINKCC is the command that links the python executable -- default is $(CC). +# If CXX is set, and if it is needed to link a main function that was +# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable: +# python might then depend on the C++ runtime + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LINKCC" >&5 +printf %s "checking LINKCC... " >&6; } +if test -z "$LINKCC" +then + LINKCC='$(PURIFY) $(CC)' + case $ac_sys_system in + QNX*) + # qcc must be used because the other compilers do not + # support -N. + LINKCC=qcc;; + esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LINKCC" >&5 +printf "%s\n" "$LINKCC" >&6; } + +# EXPORTSYMS holds the list of exported symbols for AIX. +# EXPORTSFROM holds the module name exporting symbols on AIX. +EXPORTSYMS= +EXPORTSFROM= + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking EXPORTSYMS" >&5 +printf %s "checking EXPORTSYMS... " >&6; } +case $ac_sys_system in +AIX*) + EXPORTSYMS="Modules/python.exp" + EXPORTSFROM=. # the main executable + ;; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EXPORTSYMS" >&5 +printf "%s\n" "$EXPORTSYMS" >&6; } + +# GNULD is set to "yes" if the GNU linker is used. If this goes wrong +# make sure we default having it set to "no": this is used by +# distutils.unixccompiler to know if it should add --enable-new-dtags +# to linker command lines, and failing to detect GNU ld simply results +# in the same behaviour as before. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +ac_prog=ld +if test "$ac_cv_cc_name" = "gcc"; then + ac_prog=`$CC -print-prog-name=ld` +fi +case `"$ac_prog" -V 2>&1 < /dev/null` in + *GNU*) + GNULD=yes;; + *) + GNULD=no;; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GNULD" >&5 +printf "%s\n" "$GNULD" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-shared" >&5 +printf %s "checking for --enable-shared... " >&6; } +# Check whether --enable-shared was given. +if test ${enable_shared+y} +then : + enableval=$enable_shared; +fi + + +if test -z "$enable_shared" +then + case $ac_sys_system in + CYGWIN*) + enable_shared="yes";; + *) + enable_shared="no";; + esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +printf "%s\n" "$enable_shared" >&6; } + +# --with-static-libpython +STATIC_LIBPYTHON=1 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-static-libpython" >&5 +printf %s "checking for --with-static-libpython... " >&6; } + +# Check whether --with-static-libpython was given. +if test ${with_static_libpython+y} +then : + withval=$with_static_libpython; +if test "$withval" = no +then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; + STATIC_LIBPYTHON=0 +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; }; +fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ;; +esac +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-profiling" >&5 +printf %s "checking for --enable-profiling... " >&6; } +# Check whether --enable-profiling was given. +if test ${enable_profiling+y} +then : + enableval=$enable_profiling; +fi + +if test "x$enable_profiling" = xyes; then + ac_save_cc="$CC" + CC="$CC -pg" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else case e in #( + e) enable_profiling=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + CC="$ac_save_cc" +else + enable_profiling=no +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_profiling" >&5 +printf "%s\n" "$enable_profiling" >&6; } + +if test "x$enable_profiling" = xyes; then + BASECFLAGS="-pg $BASECFLAGS" + LDFLAGS="-pg $LDFLAGS" +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LDLIBRARY" >&5 +printf %s "checking LDLIBRARY... " >&6; } + +# Apple framework builds need more magic. LDLIBRARY is the dynamic +# library that we build, but we do not want to link against it (we +# will find it with a -framework option). For this reason there is an +# extra variable BLDLIBRARY against which Python and the extension +# modules are linked, BLDLIBRARY. This is normally the same as +# LDLIBRARY, but empty for MacOSX framework builds. iOS does the same, +# but uses a non-versioned framework layout. +if test "$enable_framework" +then + case $ac_sys_system in + Darwin) + LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)';; + iOS) + LDLIBRARY='$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)';; + *) + as_fn_error $? "Unknown platform for framework build" "$LINENO" 5;; + esac + BLDLIBRARY='' + RUNSHARED=DYLD_FRAMEWORK_PATH=`pwd`${DYLD_FRAMEWORK_PATH:+:${DYLD_FRAMEWORK_PATH}} +else + BLDLIBRARY='$(LDLIBRARY)' +fi + +# Other platforms follow +if test $enable_shared = "yes"; then + PY_ENABLE_SHARED=1 + +printf "%s\n" "#define Py_ENABLE_SHARED 1" >>confdefs.h + + case $ac_sys_system in + CYGWIN*) + LDLIBRARY='libpython$(LDVERSION).dll.a' + BLDLIBRARY='-L. -lpython$(LDVERSION)' + DLLLIBRARY='libpython$(LDVERSION).dll' + ;; + SunOS*) + LDLIBRARY='libpython$(LDVERSION).so' + BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)' + RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} + INSTSONAME="$LDLIBRARY".$SOVERSION + if test "$with_pydebug" != yes + then + PY3LIBRARY=libpython3.so + fi + ;; + Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*) + LDLIBRARY='libpython$(LDVERSION).so' + BLDLIBRARY='-L. -lpython$(LDVERSION)' + RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} + + # The Android Gradle plugin will only package libraries whose names end + # with ".so". + if test "$ac_sys_system" != "Linux-android"; then + INSTSONAME="$LDLIBRARY".$SOVERSION + fi + + if test "$with_pydebug" != yes + then + PY3LIBRARY=libpython3.so + fi + ;; + hp*|HP*) + case `uname -m` in + ia64) + LDLIBRARY='libpython$(LDVERSION).so' + ;; + *) + LDLIBRARY='libpython$(LDVERSION).sl' + ;; + esac + BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)' + RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}} + ;; + Darwin*) + LDLIBRARY='libpython$(LDVERSION).dylib' + BLDLIBRARY='-L. -lpython$(LDVERSION)' + RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}} + ;; + iOS) + LDLIBRARY='libpython$(LDVERSION).dylib' + ;; + AIX*) + LDLIBRARY='libpython$(LDVERSION).so' + RUNSHARED=LIBPATH=`pwd`${LIBPATH:+:${LIBPATH}} + ;; + + esac +else # shared is disabled + PY_ENABLE_SHARED=0 + case $ac_sys_system in + CYGWIN*) + BLDLIBRARY='$(LIBRARY)' + LDLIBRARY='libpython$(LDVERSION).dll.a' + ;; + esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LDLIBRARY" >&5 +printf "%s\n" "$LDLIBRARY" >&6; } + +# HOSTRUNNER - Program to run CPython for the host platform +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking HOSTRUNNER" >&5 +printf %s "checking HOSTRUNNER... " >&6; } +if test -z "$HOSTRUNNER" +then + case $ac_sys_system in #( + Emscripten) : + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}node", so it can be a program name with args. +set dummy ${ac_tool_prefix}node; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_NODE+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $NODE in + [\\/]* | ?:[\\/]*) + ac_cv_path_NODE="$NODE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_NODE="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +NODE=$ac_cv_path_NODE +if test -n "$NODE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NODE" >&5 +printf "%s\n" "$NODE" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_NODE"; then + ac_pt_NODE=$NODE + # Extract the first word of "node", so it can be a program name with args. +set dummy node; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_NODE+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_NODE in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_NODE="$ac_pt_NODE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_NODE="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_NODE=$ac_cv_path_ac_pt_NODE +if test -n "$ac_pt_NODE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_NODE" >&5 +printf "%s\n" "$ac_pt_NODE" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_NODE" = x; then + NODE="node" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NODE=$ac_pt_NODE + fi +else + NODE="$ac_cv_path_NODE" +fi + + HOSTRUNNER="$NODE" + if test "x$host_cpu" = xwasm64 +then : + as_fn_append HOSTRUNNER " --experimental-wasm-memory64" +fi + ;; #( + WASI) : + + as_fn_error $? "HOSTRUNNER must be set when cross-compiling to WASI" "$LINENO" 5 + ;; #( + *) : + HOSTRUNNER='' + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HOSTRUNNER" >&5 +printf "%s\n" "$HOSTRUNNER" >&6; } + +if test -n "$HOSTRUNNER"; then + PYTHON_FOR_BUILD="_PYTHON_HOSTRUNNER='$HOSTRUNNER' $PYTHON_FOR_BUILD" +fi + +# LIBRARY_DEPS, LINK_PYTHON_OBJS and LINK_PYTHON_DEPS variable +LIBRARY_DEPS='$(PY3LIBRARY) $(EXPORTSYMS)' + +LINK_PYTHON_DEPS='$(LIBRARY_DEPS)' +if test "$PY_ENABLE_SHARED" = 1 || test "$enable_framework" ; then + LIBRARY_DEPS="\$(LDLIBRARY) $LIBRARY_DEPS" + if test "$STATIC_LIBPYTHON" = 1; then + LIBRARY_DEPS="\$(LIBRARY) $LIBRARY_DEPS" + fi + # Link Python program to the shared library + LINK_PYTHON_OBJS='$(BLDLIBRARY)' +else + if test "$STATIC_LIBPYTHON" = 0; then + # Build Python needs object files but don't need to build + # Python static library + LINK_PYTHON_DEPS="$LIBRARY_DEPS \$(LIBRARY_OBJS)" + fi + LIBRARY_DEPS="\$(LIBRARY) $LIBRARY_DEPS" + # Link Python program to object files + LINK_PYTHON_OBJS='$(LIBRARY_OBJS)' +fi + + + + +# ar program + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar aal + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar aal +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + + +# tweak ARFLAGS only if the user didn't set it on the command line + +if test -z "$ARFLAGS" +then + ARFLAGS="rcs" +fi + +case $MACHDEP in +hp*|HP*) + # install -d does not work on HP-UX + if test -z "$INSTALL" + then + INSTALL="${srcdir}/install-sh -c" + fi +esac + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + + +# Not every filesystem supports hard links + +if test -z "$LN" ; then + case $ac_sys_system in + CYGWIN*) LN="ln -s";; + *) LN=ln;; + esac +fi + +# For calculating the .so ABI tag. + + +ABIFLAGS="" +ABI_THREAD="" + +# Check for --disable-gil +# --disable-gil +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --disable-gil" >&5 +printf %s "checking for --disable-gil... " >&6; } +# Check whether --enable-gil was given. +if test ${enable_gil+y} +then : + enableval=$enable_gil; if test "x$enable_gil" = xyes +then : + disable_gil=no +else case e in #( + e) disable_gil=yes ;; +esac +fi +else case e in #( + e) disable_gil=no + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $disable_gil" >&5 +printf "%s\n" "$disable_gil" >&6; } + +if test "$disable_gil" = "yes" +then + +printf "%s\n" "#define Py_GIL_DISABLED 1" >>confdefs.h + + # Add "t" for "threaded" + ABIFLAGS="${ABIFLAGS}t" + ABI_THREAD="t" +fi + +# Check for --with-pydebug +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-pydebug" >&5 +printf %s "checking for --with-pydebug... " >&6; } + +# Check whether --with-pydebug was given. +if test ${with_pydebug+y} +then : + withval=$with_pydebug; +if test "$withval" != no +then + +printf "%s\n" "#define Py_DEBUG 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; }; + Py_DEBUG='true' + ABIFLAGS="${ABIFLAGS}d" +else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; Py_DEBUG='false' +fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi + + +# Check for --with-trace-refs +# --with-trace-refs +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-trace-refs" >&5 +printf %s "checking for --with-trace-refs... " >&6; } + +# Check whether --with-trace-refs was given. +if test ${with_trace_refs+y} +then : + withval=$with_trace_refs; +else case e in #( + e) with_trace_refs=no + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_trace_refs" >&5 +printf "%s\n" "$with_trace_refs" >&6; } + +if test "$with_trace_refs" = "yes" +then + +printf "%s\n" "#define Py_TRACE_REFS 1" >>confdefs.h + +fi + +if test "$disable_gil" = "yes" -a "$with_trace_refs" = "yes"; +then + as_fn_error $? "--disable-gil cannot be used with --with-trace-refs" "$LINENO" 5 +fi + +# Check for --enable-pystats +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-pystats" >&5 +printf %s "checking for --enable-pystats... " >&6; } +# Check whether --enable-pystats was given. +if test ${enable_pystats+y} +then : + enableval=$enable_pystats; +else case e in #( + e) enable_pystats=no + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_pystats" >&5 +printf "%s\n" "$enable_pystats" >&6; } + +if test "x$enable_pystats" = xyes +then : + + +printf "%s\n" "#define Py_STATS 1" >>confdefs.h + + +fi + +# Check for --with-assertions. +# This allows enabling assertions without Py_DEBUG. +assertions='false' +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-assertions" >&5 +printf %s "checking for --with-assertions... " >&6; } + +# Check whether --with-assertions was given. +if test ${with_assertions+y} +then : + withval=$with_assertions; +if test "$withval" != no +then + assertions='true' +fi +fi + +if test "$assertions" = 'true'; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +elif test "$Py_DEBUG" = 'true'; then + assertions='true' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: implied by --with-pydebug" >&5 +printf "%s\n" "implied by --with-pydebug" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + +# Enable optimization flags + + +Py_OPT='false' +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-optimizations" >&5 +printf %s "checking for --enable-optimizations... " >&6; } +# Check whether --enable-optimizations was given. +if test ${enable_optimizations+y} +then : + enableval=$enable_optimizations; +if test "$enableval" != no +then + Py_OPT='true' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; }; +else + Py_OPT='false' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; +fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi + + +if test "$Py_OPT" = 'true' ; then + # Check for conflicting CFLAGS=-O0 and --enable-optimizations + case "$CFLAGS" in + *-O0*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: CFLAGS contains -O0 which may conflict with --enable-optimizations. Consider removing -O0 from CFLAGS for optimal performance." >&5 +printf "%s\n" "$as_me: WARNING: CFLAGS contains -O0 which may conflict with --enable-optimizations. Consider removing -O0 from CFLAGS for optimal performance." >&2;} + ;; + esac + # Intentionally not forcing Py_LTO='true' here. Too many toolchains do not + # compile working code using it and both test_distutils and test_gdb are + # broken when you do manage to get a toolchain that works with it. People + # who want LTO need to use --with-lto themselves. + DEF_MAKE_ALL_RULE="profile-opt" + REQUIRE_PGO="yes" + DEF_MAKE_RULE="build_all" + if test "x$ac_cv_gcc_compat" = xyes +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-semantic-interposition" >&5 +printf %s "checking whether C compiler accepts -fno-semantic-interposition... " >&6; } +if test ${ax_cv_check_cflags__Werror__fno_semantic_interposition+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror -fno-semantic-interposition" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags__Werror__fno_semantic_interposition=yes +else case e in #( + e) ax_cv_check_cflags__Werror__fno_semantic_interposition=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__fno_semantic_interposition" >&5 +printf "%s\n" "$ax_cv_check_cflags__Werror__fno_semantic_interposition" >&6; } +if test "x$ax_cv_check_cflags__Werror__fno_semantic_interposition" = xyes +then : + + CFLAGS_NODIST="$CFLAGS_NODIST -fno-semantic-interposition" + LDFLAGS_NODIST="$LDFLAGS_NODIST -fno-semantic-interposition" + +else case e in #( + e) : ;; +esac +fi + + +fi +elif test "$ac_sys_system" = "Emscripten"; then + DEF_MAKE_ALL_RULE="build_emscripten" + REQUIRE_PGO="no" + DEF_MAKE_RULE="all" +elif test "$ac_sys_system" = "WASI"; then + DEF_MAKE_ALL_RULE="build_wasm" + REQUIRE_PGO="no" + DEF_MAKE_RULE="all" +else + DEF_MAKE_ALL_RULE="build_all" + REQUIRE_PGO="no" + DEF_MAKE_RULE="all" +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking PROFILE_TASK" >&5 +printf %s "checking PROFILE_TASK... " >&6; } +if test -z "$PROFILE_TASK" +then + PROFILE_TASK='-m test --pgo --timeout=$(TESTTIMEOUT)' +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PROFILE_TASK" >&5 +printf "%s\n" "$PROFILE_TASK" >&6; } + +# Make llvm-related checks work on systems where llvm tools are not installed with their +# normal names in the default $PATH (ie: Ubuntu). They exist under the +# non-suffixed name in their versioned llvm directory. + +llvm_bin_dir='' +llvm_path="${PATH}" +if test "${ac_cv_cc_name}" = "clang" +then + clang_bin=`which clang` + # Some systems install clang elsewhere as a symlink to the real path + # which is where the related llvm tools are located. + if test -L "${clang_bin}" + then + clang_dir=`dirname "${clang_bin}"` + clang_bin=`readlink "${clang_bin}"` + llvm_bin_dir="${clang_dir}/"`dirname "${clang_bin}"` + llvm_path="${llvm_path}${PATH_SEPARATOR}${llvm_bin_dir}" + fi +fi + +# Enable LTO flags +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-lto" >&5 +printf %s "checking for --with-lto... " >&6; } + +# Check whether --with-lto was given. +if test ${with_lto+y} +then : + withval=$with_lto; +case "$withval" in + full) + Py_LTO='true' + Py_LTO_POLICY='full' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + ;; + thin) + Py_LTO='true' + Py_LTO_POLICY='thin' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + ;; + yes) + Py_LTO='true' + Py_LTO_POLICY='default' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + ;; + no) + Py_LTO='false' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; + *) + Py_LTO='false' + as_fn_error $? "unknown lto option: '$withval'" "$LINENO" 5 + ;; +esac + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi + +if test "$Py_LTO" = 'true' ; then + case $ac_cv_cc_name in + clang) + LDFLAGS_NOLTO="-fno-lto" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=thin" >&5 +printf %s "checking whether C compiler accepts -flto=thin... " >&6; } +if test ${ax_cv_check_cflags___flto_thin+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -flto=thin" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags___flto_thin=yes +else case e in #( + e) ax_cv_check_cflags___flto_thin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_thin" >&5 +printf "%s\n" "$ax_cv_check_cflags___flto_thin" >&6; } +if test "x$ax_cv_check_cflags___flto_thin" = xyes +then : + LDFLAGS_NOLTO="-flto=thin" +else case e in #( + e) LDFLAGS_NOLTO="-flto" ;; +esac +fi + + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}llvm-ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}llvm-ar; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_LLVM_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $LLVM_AR in + [\\/]* | ?:[\\/]*) + ac_cv_path_LLVM_AR="$LLVM_AR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in ${llvm_path} +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_LLVM_AR="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +LLVM_AR=$ac_cv_path_LLVM_AR +if test -n "$LLVM_AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_AR" >&5 +printf "%s\n" "$LLVM_AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_LLVM_AR"; then + ac_pt_LLVM_AR=$LLVM_AR + # Extract the first word of "llvm-ar", so it can be a program name with args. +set dummy llvm-ar; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_LLVM_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_LLVM_AR in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_LLVM_AR="$ac_pt_LLVM_AR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in ${llvm_path} +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_LLVM_AR="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_LLVM_AR=$ac_cv_path_ac_pt_LLVM_AR +if test -n "$ac_pt_LLVM_AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_AR" >&5 +printf "%s\n" "$ac_pt_LLVM_AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_LLVM_AR" = x; then + LLVM_AR="''" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LLVM_AR=$ac_pt_LLVM_AR + fi +else + LLVM_AR="$ac_cv_path_LLVM_AR" +fi + + + if test -n "${LLVM_AR}" -a -x "${LLVM_AR}" + then + LLVM_AR_FOUND="found" + else + LLVM_AR_FOUND="not-found" + fi + if test "$ac_sys_system" = "Darwin" -a "${LLVM_AR_FOUND}" = "not-found" + then + # The Apple-supplied ar in Xcode or the Command Line Tools is apparently sufficient + found_llvm_ar=`/usr/bin/xcrun -find ar 2>/dev/null` + if test -n "${found_llvm_ar}" + then + LLVM_AR='/usr/bin/xcrun ar' + LLVM_AR_FOUND=found + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: llvm-ar found via xcrun: ${LLVM_AR}" >&5 +printf "%s\n" "$as_me: llvm-ar found via xcrun: ${LLVM_AR}" >&6;} + fi + fi + if test $LLVM_AR_FOUND = not-found + then + LLVM_PROFR_ERR=yes + as_fn_error $? "llvm-ar is required for a --with-lto build with clang but could not be found." "$LINENO" 5 + else + LLVM_AR_ERR=no + fi + AR="${LLVM_AR}" + case $ac_sys_system in + Darwin*) + # Any changes made here should be reflected in the GCC+Darwin case below + if test $Py_LTO_POLICY = default + then + # Check that ThinLTO is accepted. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=thin" >&5 +printf %s "checking whether C compiler accepts -flto=thin... " >&6; } +if test ${ax_cv_check_cflags___flto_thin+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -flto=thin" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags___flto_thin=yes +else case e in #( + e) ax_cv_check_cflags___flto_thin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_thin" >&5 +printf "%s\n" "$ax_cv_check_cflags___flto_thin" >&6; } +if test "x$ax_cv_check_cflags___flto_thin" = xyes +then : + + LTOFLAGS="-flto=thin -Wl,-export_dynamic -Wl,-object_path_lto,\"\$@\".lto" + LTOCFLAGS="-flto=thin" + +else case e in #( + e) + LTOFLAGS="-flto -Wl,-export_dynamic -Wl,-object_path_lto,\"\$@\".lto" + LTOCFLAGS="-flto" + + ;; +esac +fi + + else + LTOFLAGS="-flto=${Py_LTO_POLICY} -Wl,-export_dynamic -Wl,-object_path_lto,\"\$@\".lto" + LTOCFLAGS="-flto=${Py_LTO_POLICY}" + fi + ;; + *) + if test $Py_LTO_POLICY = default + then + # Check that ThinLTO is accepted + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -flto=thin" >&5 +printf %s "checking whether C compiler accepts -flto=thin... " >&6; } +if test ${ax_cv_check_cflags___flto_thin+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -flto=thin" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags___flto_thin=yes +else case e in #( + e) ax_cv_check_cflags___flto_thin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___flto_thin" >&5 +printf "%s\n" "$ax_cv_check_cflags___flto_thin" >&6; } +if test "x$ax_cv_check_cflags___flto_thin" = xyes +then : + LTOFLAGS="-flto=thin" +else case e in #( + e) LTOFLAGS="-flto" ;; +esac +fi + + else + LTOFLAGS="-flto=${Py_LTO_POLICY}" + fi + ;; + esac + ;; + emcc) + if test "$Py_LTO_POLICY" != "default"; then + as_fn_error $? "emcc supports only default lto." "$LINENO" 5 + fi + LTOFLAGS="-flto" + LTOCFLAGS="-flto" + ;; + gcc) + if test $Py_LTO_POLICY = thin + then + as_fn_error $? "thin lto is not supported under gcc compiler." "$LINENO" 5 + fi + LDFLAGS_NOLTO="-fno-lto" + case $ac_sys_system in + Darwin*) + LTOFLAGS="-flto -Wl,-export_dynamic -Wl,-object_path_lto,\"\$@\".lto" + LTOCFLAGS="-flto" + ;; + *) + LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects" + ;; + esac + ;; + esac + + if test "$ac_cv_prog_cc_g" = "yes" + then + # bpo-30345: Add -g to LDFLAGS when compiling with LTO + # to get debug symbols. + LTOFLAGS="$LTOFLAGS -g" + fi + + CFLAGS_NODIST="$CFLAGS_NODIST ${LTOCFLAGS-$LTOFLAGS}" + LDFLAGS_NODIST="$LDFLAGS_NODIST $LTOFLAGS" +fi + +# Enable PGO flags. + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}llvm-profdata", so it can be a program name with args. +set dummy ${ac_tool_prefix}llvm-profdata; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_LLVM_PROFDATA+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $LLVM_PROFDATA in + [\\/]* | ?:[\\/]*) + ac_cv_path_LLVM_PROFDATA="$LLVM_PROFDATA" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in ${llvm_path} +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_LLVM_PROFDATA="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +LLVM_PROFDATA=$ac_cv_path_LLVM_PROFDATA +if test -n "$LLVM_PROFDATA"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_PROFDATA" >&5 +printf "%s\n" "$LLVM_PROFDATA" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_LLVM_PROFDATA"; then + ac_pt_LLVM_PROFDATA=$LLVM_PROFDATA + # Extract the first word of "llvm-profdata", so it can be a program name with args. +set dummy llvm-profdata; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_LLVM_PROFDATA+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_LLVM_PROFDATA in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_LLVM_PROFDATA="$ac_pt_LLVM_PROFDATA" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in ${llvm_path} +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_LLVM_PROFDATA="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_LLVM_PROFDATA=$ac_cv_path_ac_pt_LLVM_PROFDATA +if test -n "$ac_pt_LLVM_PROFDATA"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_PROFDATA" >&5 +printf "%s\n" "$ac_pt_LLVM_PROFDATA" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_LLVM_PROFDATA" = x; then + LLVM_PROFDATA="''" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LLVM_PROFDATA=$ac_pt_LLVM_PROFDATA + fi +else + LLVM_PROFDATA="$ac_cv_path_LLVM_PROFDATA" +fi + + +if test -n "${LLVM_PROFDATA}" -a -x "${LLVM_PROFDATA}" +then + LLVM_PROF_FOUND="found" +else + LLVM_PROF_FOUND="not-found" +fi +if test "$ac_sys_system" = "Darwin" -a "${LLVM_PROF_FOUND}" = "not-found" +then + found_llvm_profdata=`/usr/bin/xcrun -find llvm-profdata 2>/dev/null` + if test -n "${found_llvm_profdata}" + then + # llvm-profdata isn't directly in $PATH in some cases. + # https://apple.stackexchange.com/questions/197053/ + LLVM_PROFDATA='/usr/bin/xcrun llvm-profdata' + LLVM_PROF_FOUND=found + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: llvm-profdata found via xcrun: ${LLVM_PROFDATA}" >&5 +printf "%s\n" "$as_me: llvm-profdata found via xcrun: ${LLVM_PROFDATA}" >&6;} + fi +fi +LLVM_PROF_ERR=no + +case "$ac_cv_cc_name" in + clang) + # Any changes made here should be reflected in the GCC+Darwin case below + PGO_PROF_GEN_FLAG="-fprofile-instr-generate" + PGO_PROF_USE_FLAG="-fprofile-instr-use=\"\$(shell pwd)/code.profclangd\"" + LLVM_PROF_MERGER=" ${LLVM_PROFDATA} merge -output=\"\$(shell pwd)/code.profclangd\" \"\$(shell pwd)\"/*.profclangr " + LLVM_PROF_FILE="LLVM_PROFILE_FILE=\"\$(shell pwd)/code-%p.profclangr\"" + if test $LLVM_PROF_FOUND = not-found + then + LLVM_PROF_ERR=yes + if test "${REQUIRE_PGO}" = "yes" + then + as_fn_error $? "llvm-profdata is required for a --enable-optimizations build but could not be found." "$LINENO" 5 + fi + fi + ;; + gcc) + PGO_PROF_GEN_FLAG="-fprofile-generate" + PGO_PROF_USE_FLAG="-fprofile-use -fprofile-correction" + LLVM_PROF_MERGER="true" + LLVM_PROF_FILE="" + ;; + icc) + PGO_PROF_GEN_FLAG="-prof-gen" + PGO_PROF_USE_FLAG="-prof-use" + LLVM_PROF_MERGER="true" + LLVM_PROF_FILE="" + ;; +esac + +# BOLT optimization. Always configured after PGO since it always runs after PGO. +Py_BOLT='false' +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-bolt" >&5 +printf %s "checking for --enable-bolt... " >&6; } +# Check whether --enable-bolt was given. +if test ${enable_bolt+y} +then : + enableval=$enable_bolt; +if test "$enableval" != no +then + Py_BOLT='true' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; }; +else + Py_BOLT='false' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; +fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi + + + +if test "$Py_BOLT" = 'true' ; then + PREBOLT_RULE="${DEF_MAKE_ALL_RULE}" + DEF_MAKE_ALL_RULE="bolt-opt" + DEF_MAKE_RULE="build_all" + + # -fno-reorder-blocks-and-partition is required for bolt to work. + # Possibly GCC only. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-reorder-blocks-and-partition" >&5 +printf %s "checking whether C compiler accepts -fno-reorder-blocks-and-partition... " >&6; } +if test ${ax_cv_check_cflags___fno_reorder_blocks_and_partition+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -fno-reorder-blocks-and-partition" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags___fno_reorder_blocks_and_partition=yes +else case e in #( + e) ax_cv_check_cflags___fno_reorder_blocks_and_partition=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_reorder_blocks_and_partition" >&5 +printf "%s\n" "$ax_cv_check_cflags___fno_reorder_blocks_and_partition" >&6; } +if test "x$ax_cv_check_cflags___fno_reorder_blocks_and_partition" = xyes +then : + + CFLAGS_NODIST="$CFLAGS_NODIST -fno-reorder-blocks-and-partition" + +else case e in #( + e) : ;; +esac +fi + + + # These flags are required for bolt to work: + LDFLAGS_NODIST="$LDFLAGS_NODIST -Wl,--emit-relocs" + + # These flags are required to get good performance from bolt: + CFLAGS_NODIST="$CFLAGS_NODIST -fno-pie" + # We want to add these no-pie flags to linking executables but not shared libraries: + LINKCC="$LINKCC -fno-pie -no-pie" + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}llvm-bolt", so it can be a program name with args. +set dummy ${ac_tool_prefix}llvm-bolt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_LLVM_BOLT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $LLVM_BOLT in + [\\/]* | ?:[\\/]*) + ac_cv_path_LLVM_BOLT="$LLVM_BOLT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in ${llvm_path} +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_LLVM_BOLT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +LLVM_BOLT=$ac_cv_path_LLVM_BOLT +if test -n "$LLVM_BOLT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_BOLT" >&5 +printf "%s\n" "$LLVM_BOLT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_LLVM_BOLT"; then + ac_pt_LLVM_BOLT=$LLVM_BOLT + # Extract the first word of "llvm-bolt", so it can be a program name with args. +set dummy llvm-bolt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_LLVM_BOLT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_LLVM_BOLT in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_LLVM_BOLT="$ac_pt_LLVM_BOLT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in ${llvm_path} +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_LLVM_BOLT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_LLVM_BOLT=$ac_cv_path_ac_pt_LLVM_BOLT +if test -n "$ac_pt_LLVM_BOLT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LLVM_BOLT" >&5 +printf "%s\n" "$ac_pt_LLVM_BOLT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_LLVM_BOLT" = x; then + LLVM_BOLT="''" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LLVM_BOLT=$ac_pt_LLVM_BOLT + fi +else + LLVM_BOLT="$ac_cv_path_LLVM_BOLT" +fi + + if test -n "${LLVM_BOLT}" -a -x "${LLVM_BOLT}" + then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"Found llvm-bolt\"" >&5 +printf "%s\n" "\"Found llvm-bolt\"" >&6; } + else + as_fn_error $? "llvm-bolt is required for a --enable-bolt build but could not be found." "$LINENO" 5 + fi + + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}merge-fdata", so it can be a program name with args. +set dummy ${ac_tool_prefix}merge-fdata; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MERGE_FDATA+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $MERGE_FDATA in + [\\/]* | ?:[\\/]*) + ac_cv_path_MERGE_FDATA="$MERGE_FDATA" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in ${llvm_path} +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_MERGE_FDATA="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +MERGE_FDATA=$ac_cv_path_MERGE_FDATA +if test -n "$MERGE_FDATA"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MERGE_FDATA" >&5 +printf "%s\n" "$MERGE_FDATA" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_MERGE_FDATA"; then + ac_pt_MERGE_FDATA=$MERGE_FDATA + # Extract the first word of "merge-fdata", so it can be a program name with args. +set dummy merge-fdata; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_MERGE_FDATA+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ac_pt_MERGE_FDATA in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_MERGE_FDATA="$ac_pt_MERGE_FDATA" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in ${llvm_path} +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_MERGE_FDATA="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_MERGE_FDATA=$ac_cv_path_ac_pt_MERGE_FDATA +if test -n "$ac_pt_MERGE_FDATA"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_MERGE_FDATA" >&5 +printf "%s\n" "$ac_pt_MERGE_FDATA" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_MERGE_FDATA" = x; then + MERGE_FDATA="''" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MERGE_FDATA=$ac_pt_MERGE_FDATA + fi +else + MERGE_FDATA="$ac_cv_path_MERGE_FDATA" +fi + + if test -n "${MERGE_FDATA}" -a -x "${MERGE_FDATA}" + then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"Found merge-fdata\"" >&5 +printf "%s\n" "\"Found merge-fdata\"" >&6; } + else + as_fn_error $? "merge-fdata is required for a --enable-bolt build but could not be found." "$LINENO" 5 + fi +fi + + +BOLT_BINARIES='$(BUILDPYTHON)' +if test "x$enable_shared" = xyes +then : + + BOLT_BINARIES="${BOLT_BINARIES} \$(INSTSONAME)" + +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking BOLT_COMMON_FLAGS" >&5 +printf %s "checking BOLT_COMMON_FLAGS... " >&6; } +if test -z "${BOLT_COMMON_FLAGS}" +then + BOLT_COMMON_FLAGS=" -update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1,sre_ucs1_match.lto_priv.0/1,sre_ucs2_match.lto_priv.0/1,sre_ucs4_match.lto_priv.0/1 " + +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking BOLT_INSTRUMENT_FLAGS" >&5 +printf %s "checking BOLT_INSTRUMENT_FLAGS... " >&6; } +if test -z "${BOLT_INSTRUMENT_FLAGS}" +then + BOLT_INSTRUMENT_FLAGS="${BOLT_COMMON_FLAGS}" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BOLT_INSTRUMENT_FLAGS" >&5 +printf "%s\n" "$BOLT_INSTRUMENT_FLAGS" >&6; } + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking BOLT_APPLY_FLAGS" >&5 +printf %s "checking BOLT_APPLY_FLAGS... " >&6; } +if test -z "${BOLT_APPLY_FLAGS}" +then + BOLT_APPLY_FLAGS=" ${BOLT_COMMON_FLAGS} -reorder-blocks=ext-tsp -reorder-functions=cdsort -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot " + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BOLT_APPLY_FLAGS" >&5 +printf "%s\n" "$BOLT_APPLY_FLAGS" >&6; } + +# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be +# merged with this chunk of code? + +# Optimizer/debugger flags +# ------------------------ +# (The following bit of code is complicated enough - please keep things +# indented properly. Just pretend you're editing Python code. ;-) + +# There are two parallel sets of case statements below, one that checks to +# see if OPT was set and one that does BASECFLAGS setting based upon +# compiler and platform. BASECFLAGS tweaks need to be made even if the +# user set OPT. + +save_CFLAGS=$CFLAGS +CFLAGS="-fstrict-overflow -fno-strict-overflow" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -fstrict-overflow and -fno-strict-overflow" >&5 +printf %s "checking if $CC supports -fstrict-overflow and -fno-strict-overflow... " >&6; } +if test ${ac_cv_cc_supports_fstrict_overflow+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_cc_supports_fstrict_overflow=yes +else case e in #( + e) ac_cv_cc_supports_fstrict_overflow=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_supports_fstrict_overflow" >&5 +printf "%s\n" "$ac_cv_cc_supports_fstrict_overflow" >&6; } +CFLAGS=$save_CFLAGS + +if test "x$ac_cv_cc_supports_fstrict_overflow" = xyes +then : + STRICT_OVERFLOW_CFLAGS="-fstrict-overflow" + NO_STRICT_OVERFLOW_CFLAGS="-fno-strict-overflow" +else case e in #( + e) STRICT_OVERFLOW_CFLAGS="" + NO_STRICT_OVERFLOW_CFLAGS="" ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-strict-overflow" >&5 +printf %s "checking for --with-strict-overflow... " >&6; } + +# Check whether --with-strict-overflow was given. +if test ${with_strict_overflow+y} +then : + withval=$with_strict_overflow; + if test "x$ac_cv_cc_supports_fstrict_overflow" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --with-strict-overflow=yes requires a compiler that supports -fstrict-overflow" >&5 +printf "%s\n" "$as_me: WARNING: --with-strict-overflow=yes requires a compiler that supports -fstrict-overflow" >&2;} +fi + +else case e in #( + e) with_strict_overflow=no + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_strict_overflow" >&5 +printf "%s\n" "$with_strict_overflow" >&6; } + +# Check if CC supports -Og optimization level +save_CFLAGS=$CFLAGS +CFLAGS="-Og" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Og optimization level" >&5 +printf %s "checking if $CC supports -Og optimization level... " >&6; } +if test ${ac_cv_cc_supports_og+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + ac_cv_cc_supports_og=yes + +else case e in #( + e) + ac_cv_cc_supports_og=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_supports_og" >&5 +printf "%s\n" "$ac_cv_cc_supports_og" >&6; } +CFLAGS=$save_CFLAGS + +# Optimization messes up debuggers, so turn it off for +# debug builds. +PYDEBUG_CFLAGS="-O0" +if test "x$ac_cv_cc_supports_og" = xyes +then : + PYDEBUG_CFLAGS="-Og" +fi + +# gh-120688: WASI uses -O3 in debug mode to support more recursive calls +if test "$ac_sys_system" = "WASI"; then + PYDEBUG_CFLAGS="-O3" +fi + +# tweak OPT based on compiler and platform, only if the user didn't set +# it on the command line + + +if test "${OPT-unset}" = "unset" +then + case $GCC in + yes) + if test "${ac_cv_cc_name}" != "clang" + then + # bpo-30104: disable strict aliasing to compile correctly dtoa.c, + # see Makefile.pre.in for more information + CFLAGS_ALIASING="-fno-strict-aliasing" + fi + + case $ac_cv_prog_cc_g in + yes) + if test "$Py_DEBUG" = 'true' ; then + OPT="-g $PYDEBUG_CFLAGS -Wall" + else + OPT="-g -O3 -Wall" + fi + ;; + *) + OPT="-O3 -Wall" + ;; + esac + + case $ac_sys_system in + SCO_SV*) OPT="$OPT -m486 -DSCO5" + ;; + esac + ;; + + *) + OPT="-O" + ;; + esac +fi + +# WASM flags +case $ac_sys_system in #( + Emscripten) : + + if test "x$Py_DEBUG" = xyes +then : + wasm_debug=yes +else case e in #( + e) wasm_debug=no ;; +esac +fi + + as_fn_append LINKFORSHARED " -sALLOW_MEMORY_GROWTH -sINITIAL_MEMORY=20971520" + + as_fn_append LDFLAGS_NODIST " -sWASM_BIGINT" + + as_fn_append LINKFORSHARED " -sFORCE_FILESYSTEM -lidbfs.js -lnodefs.js -lproxyfs.js -lworkerfs.js" + as_fn_append LINKFORSHARED " -sEXPORTED_RUNTIME_METHODS=FS,callMain,ENV,HEAPU32,TTY" + as_fn_append LINKFORSHARED " -sEXPORTED_FUNCTIONS=_main,_Py_Version,__PyRuntime,_PyGILState_GetThisThreadState,__Py_DumpTraceback" + as_fn_append LINKFORSHARED " -sSTACK_SIZE=5MB" + as_fn_append LINKFORSHARED " -sTEXTDECODER=2" + + if test "x$enable_wasm_dynamic_linking" = xyes +then : + + as_fn_append LINKFORSHARED " -sMAIN_MODULE" + +fi + + if test "x$enable_wasm_pthreads" = xyes +then : + + as_fn_append CFLAGS_NODIST " -pthread" + as_fn_append LDFLAGS_NODIST " -sUSE_PTHREADS" + as_fn_append LINKFORSHARED " -sPROXY_TO_PTHREAD" + +fi + as_fn_append LDFLAGS_NODIST " -sEXIT_RUNTIME" + WASM_LINKFORSHARED_DEBUG="-gseparate-dwarf --emit-symbol-map" + + if test "x$wasm_debug" = xyes +then : + + as_fn_append LDFLAGS_NODIST " -sASSERTIONS" + as_fn_append LINKFORSHARED " $WASM_LINKFORSHARED_DEBUG" + +else case e in #( + e) + as_fn_append LINKFORSHARED " -O2 -g0" + ;; +esac +fi + ;; #( + WASI) : + + +printf "%s\n" "#define _WASI_EMULATED_SIGNAL 1" >>confdefs.h + + +printf "%s\n" "#define _WASI_EMULATED_GETPID 1" >>confdefs.h + + +printf "%s\n" "#define _WASI_EMULATED_PROCESS_CLOCKS 1" >>confdefs.h + + LIBS="$LIBS -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks" + echo "#define _WASI_EMULATED_SIGNAL 1" >> confdefs.h + + if test "x$enable_wasm_pthreads" = xyes +then : + + # Note: update CFLAGS because ac_compile/ac_link needs this too. + # without this, configure fails to find pthread_create, sem_init, + # etc because they are only available in the sysroot for + # wasm32-wasi-threads. + # Note: wasi-threads requires --import-memory. + # Note: wasi requires --export-memory. + # Note: --export-memory is implicit unless --import-memory is given + # Note: this requires LLVM >= 16. + as_fn_append CFLAGS " -target wasm32-wasi-threads -pthread" + as_fn_append CFLAGS_NODIST " -target wasm32-wasi-threads -pthread" + as_fn_append LDFLAGS_NODIST " -target wasm32-wasi-threads -pthread" + as_fn_append LDFLAGS_NODIST " -Wl,--import-memory" + as_fn_append LDFLAGS_NODIST " -Wl,--export-memory" + as_fn_append LDFLAGS_NODIST " -Wl,--max-memory=10485760" + +fi + + as_fn_append LDFLAGS_NODIST " -z stack-size=16777216 -Wl,--stack-first -Wl,--initial-memory=41943040" + + ;; #( + *) : + ;; +esac + +case $enable_wasm_dynamic_linking in #( + yes) : + ac_cv_func_dlopen=yes ;; #( + no) : + ac_cv_func_dlopen=no ;; #( + missing) : + + ;; #( + *) : + ;; +esac + + + + + + + + +# The -arch flags for universal builds on macOS +UNIVERSAL_ARCH_FLAGS= + + + + +# tweak BASECFLAGS based on compiler and platform +if test "x$with_strict_overflow" = xyes +then : + BASECFLAGS="$BASECFLAGS $STRICT_OVERFLOW_CFLAGS" +else case e in #( + e) BASECFLAGS="$BASECFLAGS $NO_STRICT_OVERFLOW_CFLAGS" ;; +esac +fi + +# Enable flags that warn and protect for potential security vulnerabilities. +# These flags should be enabled by default for all builds. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-safety" >&5 +printf %s "checking for --enable-safety... " >&6; } +# Check whether --enable-safety was given. +if test ${enable_safety+y} +then : + enableval=$enable_safety; if test "x$disable_safety" = xyes +then : + enable_safety=no +else case e in #( + e) enable_safety=yes ;; +esac +fi +else case e in #( + e) enable_safety=no ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_safety" >&5 +printf "%s\n" "$enable_safety" >&6; } + +if test "$enable_safety" = "yes" +then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstack-protector-strong" >&5 +printf %s "checking whether C compiler accepts -fstack-protector-strong... " >&6; } +if test ${ax_cv_check_cflags__Werror__fstack_protector_strong+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror -fstack-protector-strong" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags__Werror__fstack_protector_strong=yes +else case e in #( + e) ax_cv_check_cflags__Werror__fstack_protector_strong=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__fstack_protector_strong" >&5 +printf "%s\n" "$ax_cv_check_cflags__Werror__fstack_protector_strong" >&6; } +if test "x$ax_cv_check_cflags__Werror__fstack_protector_strong" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -fstack-protector-strong" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -fstack-protector-strong not supported" >&5 +printf "%s\n" "$as_me: WARNING: -fstack-protector-strong not supported" >&2;} ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wtrampolines" >&5 +printf %s "checking whether C compiler accepts -Wtrampolines... " >&6; } +if test ${ax_cv_check_cflags__Werror__Wtrampolines+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror -Wtrampolines" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags__Werror__Wtrampolines=yes +else case e in #( + e) ax_cv_check_cflags__Werror__Wtrampolines=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wtrampolines" >&5 +printf "%s\n" "$ax_cv_check_cflags__Werror__Wtrampolines" >&6; } +if test "x$ax_cv_check_cflags__Werror__Wtrampolines" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -Wtrampolines" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Wtrampolines not supported" >&5 +printf "%s\n" "$as_me: WARNING: -Wtrampolines not supported" >&2;} ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wimplicit-fallthrough" >&5 +printf %s "checking whether C compiler accepts -Wimplicit-fallthrough... " >&6; } +if test ${ax_cv_check_cflags__Werror__Wimplicit_fallthrough+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror -Wimplicit-fallthrough" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags__Werror__Wimplicit_fallthrough=yes +else case e in #( + e) ax_cv_check_cflags__Werror__Wimplicit_fallthrough=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wimplicit_fallthrough" >&5 +printf "%s\n" "$ax_cv_check_cflags__Werror__Wimplicit_fallthrough" >&6; } +if test "x$ax_cv_check_cflags__Werror__Wimplicit_fallthrough" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -Wimplicit-fallthrough" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Wimplicit-fallthrough not supported" >&5 +printf "%s\n" "$as_me: WARNING: -Wimplicit-fallthrough not supported" >&2;} ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Werror=format-security" >&5 +printf %s "checking whether C compiler accepts -Werror=format-security... " >&6; } +if test ${ax_cv_check_cflags__Werror__Werror_format_security+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror -Werror=format-security" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags__Werror__Werror_format_security=yes +else case e in #( + e) ax_cv_check_cflags__Werror__Werror_format_security=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Werror_format_security" >&5 +printf "%s\n" "$ax_cv_check_cflags__Werror__Werror_format_security" >&6; } +if test "x$ax_cv_check_cflags__Werror__Werror_format_security" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -Werror=format-security" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Werror=format-security not supported" >&5 +printf "%s\n" "$as_me: WARNING: -Werror=format-security not supported" >&2;} ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wbidi-chars=any" >&5 +printf %s "checking whether C compiler accepts -Wbidi-chars=any... " >&6; } +if test ${ax_cv_check_cflags__Werror__Wbidi_chars_any+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror -Wbidi-chars=any" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags__Werror__Wbidi_chars_any=yes +else case e in #( + e) ax_cv_check_cflags__Werror__Wbidi_chars_any=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wbidi_chars_any" >&5 +printf "%s\n" "$ax_cv_check_cflags__Werror__Wbidi_chars_any" >&6; } +if test "x$ax_cv_check_cflags__Werror__Wbidi_chars_any" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -Wbidi-chars=any" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Wbidi-chars=any not supported" >&5 +printf "%s\n" "$as_me: WARNING: -Wbidi-chars=any not supported" >&2;} ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wall" >&5 +printf %s "checking whether C compiler accepts -Wall... " >&6; } +if test ${ax_cv_check_cflags__Werror__Wall+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror -Wall" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags__Werror__Wall=yes +else case e in #( + e) ax_cv_check_cflags__Werror__Wall=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wall" >&5 +printf "%s\n" "$ax_cv_check_cflags__Werror__Wall" >&6; } +if test "x$ax_cv_check_cflags__Werror__Wall" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -Wall" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -Wall not supported" >&5 +printf "%s\n" "$as_me: WARNING: -Wall not supported" >&2;} ;; +esac +fi + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-slower-safety" >&5 +printf %s "checking for --enable-slower-safety... " >&6; } +# Check whether --enable-slower-safety was given. +if test ${enable_slower_safety+y} +then : + enableval=$enable_slower_safety; if test "x$disable_slower_safety" = xyes +then : + enable_slower_safety=no +else case e in #( + e) enable_slower_safety=yes ;; +esac +fi +else case e in #( + e) enable_slower_safety=no ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_slower_safety" >&5 +printf "%s\n" "$enable_slower_safety" >&6; } + +if test "$enable_slower_safety" = "yes" +then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -D_FORTIFY_SOURCE=3" >&5 +printf %s "checking whether C compiler accepts -D_FORTIFY_SOURCE=3... " >&6; } +if test ${ax_cv_check_cflags__Werror__D_FORTIFY_SOURCE_3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror -D_FORTIFY_SOURCE=3" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags__Werror__D_FORTIFY_SOURCE_3=yes +else case e in #( + e) ax_cv_check_cflags__Werror__D_FORTIFY_SOURCE_3=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__D_FORTIFY_SOURCE_3" >&5 +printf "%s\n" "$ax_cv_check_cflags__Werror__D_FORTIFY_SOURCE_3" >&6; } +if test "x$ax_cv_check_cflags__Werror__D_FORTIFY_SOURCE_3" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: -D_FORTIFY_SOURCE=3 not supported" >&5 +printf "%s\n" "$as_me: WARNING: -D_FORTIFY_SOURCE=3 not supported" >&2;} ;; +esac +fi + +fi + +if test "x$ac_cv_gcc_compat" = xyes +then : + + CFLAGS_NODIST="$CFLAGS_NODIST -std=c11" + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can add -Wextra" >&5 +printf %s "checking if we can add -Wextra... " >&6; } +if test ${ac_cv_enable_extra_warning+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + py_cflags=$CFLAGS + as_fn_append CFLAGS " -Wextra -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_enable_extra_warning=yes +else case e in #( + e) ac_cv_enable_extra_warning=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$py_cflags + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_extra_warning" >&5 +printf "%s\n" "$ac_cv_enable_extra_warning" >&6; } + + + if test "x$ac_cv_enable_extra_warning" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -Wextra" +fi + + # Python doesn't violate C99 aliasing rules, but older versions of + # GCC produce warnings for legal Python code. Enable + # -fno-strict-aliasing on versions of GCC that support but produce + # warnings. See Issue3326 + ac_save_cc="$CC" + CC="$CC -fno-strict-aliasing" + save_CFLAGS="$CFLAGS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts and needs -fno-strict-aliasing" >&5 +printf %s "checking whether $CC accepts and needs -fno-strict-aliasing... " >&6; } +if test ${ac_cv_no_strict_aliasing+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + CC="$ac_save_cc -fstrict-aliasing" + CFLAGS="$CFLAGS -Werror -Wstrict-aliasing" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + void f(int **x) {} +int +main (void) +{ +double *x; f((int **) &x); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + ac_cv_no_strict_aliasing=no + +else case e in #( + e) + ac_cv_no_strict_aliasing=yes + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in #( + e) + ac_cv_no_strict_aliasing=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_no_strict_aliasing" >&5 +printf "%s\n" "$ac_cv_no_strict_aliasing" >&6; } + CFLAGS="$save_CFLAGS" + CC="$ac_save_cc" + if test "x$ac_cv_no_strict_aliasing" = xyes +then : + BASECFLAGS="$BASECFLAGS -fno-strict-aliasing" +fi + + # ICC doesn't recognize the option, but only emits a warning + ## XXX does it emit an unused result warning and can it be disabled? + case "$ac_cv_cc_name" in #( + icc) : + ac_cv_disable_unused_result_warning=no + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC unused-result warning" >&5 +printf %s "checking if we can disable $CC unused-result warning... " >&6; } +if test ${ac_cv_disable_unused_result_warning+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + py_cflags=$CFLAGS + as_fn_append CFLAGS " -Wunused-result -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_disable_unused_result_warning=yes +else case e in #( + e) ac_cv_disable_unused_result_warning=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$py_cflags + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_unused_result_warning" >&5 +printf "%s\n" "$ac_cv_disable_unused_result_warning" >&6; } + + ;; #( + *) : + ;; +esac + if test "x$ac_cv_disable_unused_result_warning" = xyes +then : + BASECFLAGS="$BASECFLAGS -Wno-unused-result" + CFLAGS_NODIST="$CFLAGS_NODIST -Wno-unused-result" +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC unused-parameter warning" >&5 +printf %s "checking if we can disable $CC unused-parameter warning... " >&6; } +if test ${ac_cv_disable_unused_parameter_warning+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + py_cflags=$CFLAGS + as_fn_append CFLAGS " -Wunused-parameter -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_disable_unused_parameter_warning=yes +else case e in #( + e) ac_cv_disable_unused_parameter_warning=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$py_cflags + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_unused_parameter_warning" >&5 +printf "%s\n" "$ac_cv_disable_unused_parameter_warning" >&6; } + + + if test "x$ac_cv_disable_unused_parameter_warning" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -Wno-unused-parameter" +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC int-conversion warning" >&5 +printf %s "checking if we can disable $CC int-conversion warning... " >&6; } +if test ${ac_cv_disable_int_conversion_warning+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + py_cflags=$CFLAGS + as_fn_append CFLAGS " -Wint-conversion -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_disable_int_conversion_warning=yes +else case e in #( + e) ac_cv_disable_int_conversion_warning=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$py_cflags + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_int_conversion_warning" >&5 +printf "%s\n" "$ac_cv_disable_int_conversion_warning" >&6; } + + + if test "x$ac_cv_disable_int_conversion" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -Wno-int-conversion" +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can disable $CC missing-field-initializers warning" >&5 +printf %s "checking if we can disable $CC missing-field-initializers warning... " >&6; } +if test ${ac_cv_disable_missing_field_initializers_warning+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + py_cflags=$CFLAGS + as_fn_append CFLAGS " -Wmissing-field-initializers -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_disable_missing_field_initializers_warning=yes +else case e in #( + e) ac_cv_disable_missing_field_initializers_warning=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$py_cflags + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_disable_missing_field_initializers_warning" >&5 +printf "%s\n" "$ac_cv_disable_missing_field_initializers_warning" >&6; } + + + if test "x$ac_cv_disable_missing_field_initializers_warning" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -Wno-missing-field-initializers" +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can enable $CC sign-compare warning" >&5 +printf %s "checking if we can enable $CC sign-compare warning... " >&6; } +if test ${ac_cv_enable_sign_compare_warning+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + py_cflags=$CFLAGS + as_fn_append CFLAGS " -Wsign-compare -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_enable_sign_compare_warning=yes +else case e in #( + e) ac_cv_enable_sign_compare_warning=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$py_cflags + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_sign_compare_warning" >&5 +printf "%s\n" "$ac_cv_enable_sign_compare_warning" >&6; } + + + if test "x$ac_cv_enable_sign_compare_warning" = xyes +then : + BASECFLAGS="$BASECFLAGS -Wsign-compare" +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can enable $CC unreachable-code warning" >&5 +printf %s "checking if we can enable $CC unreachable-code warning... " >&6; } +if test ${ac_cv_enable_unreachable_code_warning+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + py_cflags=$CFLAGS + as_fn_append CFLAGS " -Wunreachable-code -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_enable_unreachable_code_warning=yes +else case e in #( + e) ac_cv_enable_unreachable_code_warning=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$py_cflags + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_unreachable_code_warning" >&5 +printf "%s\n" "$ac_cv_enable_unreachable_code_warning" >&6; } + + + # Don't enable unreachable code warning in debug mode, since it usually + # results in non-standard code paths. + # Issue #24324: Unfortunately, the unreachable code warning does not work + # correctly on gcc and has been silently removed from the compiler. + # It is supported on clang but on OS X systems gcc may be an alias + # for clang. Try to determine if the compiler is not really gcc and, + # if so, only then enable the warning. + if test $ac_cv_enable_unreachable_code_warning = yes && \ + test "$Py_DEBUG" != "true" && \ + test -z "`$CC --version 2>/dev/null | grep 'Free Software Foundation'`" + then + BASECFLAGS="$BASECFLAGS -Wunreachable-code" + else + ac_cv_enable_unreachable_code_warning=no + fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can enable $CC strict-prototypes warning" >&5 +printf %s "checking if we can enable $CC strict-prototypes warning... " >&6; } +if test ${ac_cv_enable_strict_prototypes_warning+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + py_cflags=$CFLAGS + as_fn_append CFLAGS " -Wstrict-prototypes -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_enable_strict_prototypes_warning=yes +else case e in #( + e) ac_cv_enable_strict_prototypes_warning=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$py_cflags + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_strict_prototypes_warning" >&5 +printf "%s\n" "$ac_cv_enable_strict_prototypes_warning" >&6; } + + + if test "x$ac_cv_enable_strict_prototypes_warning" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -Wstrict-prototypes" +fi + + ac_save_cc="$CC" + CC="$CC -Werror=implicit-function-declaration" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can make implicit function declaration an error in $CC" >&5 +printf %s "checking if we can make implicit function declaration an error in $CC... " >&6; } +if test ${ac_cv_enable_implicit_function_declaration_error+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + ac_cv_enable_implicit_function_declaration_error=yes + +else case e in #( + e) + ac_cv_enable_implicit_function_declaration_error=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_implicit_function_declaration_error" >&5 +printf "%s\n" "$ac_cv_enable_implicit_function_declaration_error" >&6; } + CC="$ac_save_cc" + + if test "x$ac_cv_enable_implicit_function_declaration_error" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -Werror=implicit-function-declaration" +fi + + ac_save_cc="$CC" + CC="$CC -fvisibility=hidden" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can use visibility in $CC" >&5 +printf %s "checking if we can use visibility in $CC... " >&6; } +if test ${ac_cv_enable_visibility+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + ac_cv_enable_visibility=yes + +else case e in #( + e) + ac_cv_enable_visibility=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_visibility" >&5 +printf "%s\n" "$ac_cv_enable_visibility" >&6; } + CC="$ac_save_cc" + + if test "x$ac_cv_enable_visibility" = xyes +then : + CFLAGS_NODIST="$CFLAGS_NODIST -fvisibility=hidden" +fi + + # if using gcc on alpha, use -mieee to get (near) full IEEE 754 + # support. Without this, treatment of subnormals doesn't follow + # the standard. + case $host in + alpha*) + BASECFLAGS="$BASECFLAGS -mieee" + ;; + esac + + case $ac_sys_system in + SCO_SV*) + BASECFLAGS="$BASECFLAGS -m486 -DSCO5" + ;; + + Darwin*) + # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd + # used to be here, but non-Apple gcc doesn't accept them. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which compiler should be used" >&5 +printf %s "checking which compiler should be used... " >&6; } + case "${UNIVERSALSDK}" in + */MacOSX10.4u.sdk) + # Build using 10.4 SDK, force usage of gcc when the + # compiler is gcc, otherwise the user will get very + # confusing error messages when building on OSX 10.6 + CC=gcc-4.0 + CPP=cpp-4.0 + ;; + esac + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } + + # Error on unguarded use of new symbols, which will fail at runtime for + # users on older versions of macOS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wunguarded-availability" >&5 +printf %s "checking whether C compiler accepts -Wunguarded-availability... " >&6; } +if test ${ax_cv_check_cflags__Werror__Wunguarded_availability+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror -Wunguarded-availability" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags__Werror__Wunguarded_availability=yes +else case e in #( + e) ax_cv_check_cflags__Werror__Wunguarded_availability=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__Wunguarded_availability" >&5 +printf "%s\n" "$ax_cv_check_cflags__Werror__Wunguarded_availability" >&6; } +if test "x$ax_cv_check_cflags__Werror__Wunguarded_availability" = xyes +then : + as_fn_append CFLAGS_NODIST " -Werror=unguarded-availability" +else case e in #( + e) : ;; +esac +fi + + + LIPO_INTEL64_FLAGS="" + if test "${enable_universalsdk}" + then + case "$UNIVERSAL_ARCHS" in + 32-bit) + UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386" + LIPO_32BIT_FLAGS="" + ARCH_RUN_32BIT="" + ARCH_TRIPLES=`echo {ppc,i386}-apple-darwin` + ;; + 64-bit) + UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64" + LIPO_32BIT_FLAGS="" + ARCH_RUN_32BIT="true" + ARCH_TRIPLES=`echo {ppc64,x86_64}-apple-darwin` + ;; + all) + UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64" + LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" + ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" + ARCH_TRIPLES=`echo {i386,ppc,ppc64,x86_64}-apple-darwin` + ;; + universal2) + UNIVERSAL_ARCH_FLAGS="-arch arm64 -arch x86_64" + LIPO_32BIT_FLAGS="" + LIPO_INTEL64_FLAGS="-extract x86_64" + ARCH_RUN_32BIT="true" + ARCH_TRIPLES=`echo {aarch64,x86_64}-apple-darwin` + ;; + intel) + UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64" + LIPO_32BIT_FLAGS="-extract i386" + ARCH_RUN_32BIT="/usr/bin/arch -i386" + ARCH_TRIPLES=`echo {i386,x86_64}-apple-darwin` + ;; + intel-32) + UNIVERSAL_ARCH_FLAGS="-arch i386" + LIPO_32BIT_FLAGS="" + ARCH_RUN_32BIT="" + ARCH_TRIPLES=i386-apple-darwin + ;; + intel-64) + UNIVERSAL_ARCH_FLAGS="-arch x86_64" + LIPO_32BIT_FLAGS="" + ARCH_RUN_32BIT="true" + ARCH_TRIPLES=x86_64-apple-darwin + ;; + 3-way) + UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64" + LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" + ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" + ARCH_TRIPLES=`echo {i386,ppc,x86_64}-apple-darwin` + ;; + *) + as_fn_error $? "proper usage is --with-universal-arch=universal2|32-bit|64-bit|all|intel|3-way" "$LINENO" 5 + ;; + esac + + if test "${UNIVERSALSDK}" != "/" + then + CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}" + LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}" + CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}" + else + CFLAGS="${UNIVERSAL_ARCH_FLAGS} ${CFLAGS}" + LDFLAGS="${UNIVERSAL_ARCH_FLAGS} ${LDFLAGS}" + fi + fi + + # Calculate an appropriate deployment target for this build: + # The deployment target value is used explicitly to enable certain + # features are enabled (such as builtin libedit support for readline) + # through the use of Apple's Availability Macros and is used as a + # component of the string returned by distutils.get_platform(). + # + # Use the value from: + # 1. the MACOSX_DEPLOYMENT_TARGET environment variable if specified + # 2. the operating system version of the build machine if >= 10.6 + # 3. If running on OS X 10.3 through 10.5, use the legacy tests + # below to pick either 10.3, 10.4, or 10.5 as the target. + # 4. If we are running on OS X 10.2 or earlier, good luck! + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which MACOSX_DEPLOYMENT_TARGET to use" >&5 +printf %s "checking which MACOSX_DEPLOYMENT_TARGET to use... " >&6; } + cur_target_major=`sw_vers -productVersion | \ + sed 's/\([0-9]*\)\.\([0-9]*\).*/\1/'` + cur_target_minor=`sw_vers -productVersion | \ + sed 's/\([0-9]*\)\.\([0-9]*\).*/\2/'` + cur_target="${cur_target_major}.${cur_target_minor}" + if test ${cur_target_major} -eq 10 && \ + test ${cur_target_minor} -ge 3 && \ + test ${cur_target_minor} -le 5 + then + # OS X 10.3 through 10.5 + cur_target=10.3 + if test ${enable_universalsdk} + then + case "$UNIVERSAL_ARCHS" in + all|3-way|intel|64-bit) + # These configurations were first supported in 10.5 + cur_target='10.5' + ;; + esac + else + if test `/usr/bin/arch` = "i386" + then + # 10.4 was the first release to support Intel archs + cur_target="10.4" + fi + fi + fi + CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} + + # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the + # environment with a value that is the same as what we'll use + # in the Makefile to ensure that we'll get the same compiler + # environment during configure and build time. + MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" + export MACOSX_DEPLOYMENT_TARGET + EXPORT_MACOSX_DEPLOYMENT_TARGET='' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MACOSX_DEPLOYMENT_TARGET" >&5 +printf "%s\n" "$MACOSX_DEPLOYMENT_TARGET" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if specified universal architectures work" >&5 +printf %s "checking if specified universal architectures work... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +printf("%d", 42); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + as_fn_error $? "check config.log and use the '--with-universal-archs' option" "$LINENO" 5 + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + # end of Darwin* tests + ;; + esac + +else case e in #( + e) + case $ac_sys_system in + OpenUNIX*|UnixWare*) + BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca " + ;; + SCO_SV*) + BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5" + ;; + esac + ;; +esac +fi + +# Check for --enable-experimental-jit: +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-experimental-jit" >&5 +printf %s "checking for --enable-experimental-jit... " >&6; } +# Check whether --enable-experimental-jit was given. +if test ${enable_experimental_jit+y} +then : + enableval=$enable_experimental_jit; +else case e in #( + e) enable_experimental_jit=no ;; +esac +fi + +case $enable_experimental_jit in + no) jit_flags=""; tier2_flags="" ;; + yes) jit_flags="-D_Py_JIT"; tier2_flags="-D_Py_TIER2=1" ;; + yes-off) jit_flags="-D_Py_JIT"; tier2_flags="-D_Py_TIER2=3" ;; + interpreter) jit_flags=""; tier2_flags="-D_Py_TIER2=4" ;; + interpreter-off) jit_flags=""; tier2_flags="-D_Py_TIER2=6" ;; # Secret option + *) as_fn_error $? "invalid argument: --enable-experimental-jit=$enable_experimental_jit; expected no|yes|yes-off|interpreter" "$LINENO" 5 ;; +esac +if ${tier2_flags:+false} : +then : + +else case e in #( + e) as_fn_append CFLAGS_NODIST " $tier2_flags" ;; +esac +fi +if ${jit_flags:+false} : +then : + +else case e in #( + e) as_fn_append CFLAGS_NODIST " $jit_flags" + REGEN_JIT_COMMAND="\$(PYTHON_FOR_REGEN) \$(srcdir)/Tools/jit/build.py ${ARCH_TRIPLES:-$host} --output-dir . --pyconfig-dir . --cflags=\"$CFLAGS_JIT\" --llvm-version=\"$LLVM_VERSION\"" + if test "x$Py_DEBUG" = xtrue +then : + as_fn_append REGEN_JIT_COMMAND " --debug" +fi ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tier2_flags $jit_flags" >&5 +printf "%s\n" "$tier2_flags $jit_flags" >&6; } + +if test "$disable_gil" = "yes" -a "$enable_experimental_jit" != "no"; then + # GH-133171: This configuration builds the JIT but never actually uses it, + # which is surprising (and strictly worse than not building it at all): + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --enable-experimental-jit does not work correctly with --disable-gil." >&5 +printf "%s\n" "$as_me: WARNING: --enable-experimental-jit does not work correctly with --disable-gil." >&2;} +fi + +case "$ac_cv_cc_name" in +mpicc) + CFLAGS_NODIST="$CFLAGS_NODIST" + ;; +icc) + # ICC needs -fp-model strict or floats behave badly + CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict" + ;; +xlc) + CFLAGS_NODIST="$CFLAGS_NODIST -qalias=noansi -qmaxmem=-1" + ;; +esac + +if test "$assertions" = 'true'; then + : +else + OPT="-DNDEBUG $OPT" +fi + +if test "$ac_arch_flags" +then + BASECFLAGS="$BASECFLAGS $ac_arch_flags" +fi + +# On some compilers, pthreads are available without further options +# (e.g. MacOS X). On some of these systems, the compiler will not +# complain if unaccepted options are passed (e.g. gcc on Mac OS X). +# So we have to see first whether pthreads are available without +# options before we can check whether -Kpthread improves anything. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads are available without options" >&5 +printf %s "checking whether pthreads are available without options... " >&6; } +if test ${ac_cv_pthread_is_default+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_pthread_is_default=no +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +void* routine(void* p){return NULL;} + +int main(void){ + pthread_t p; + if(pthread_create(&p,NULL,routine,NULL)!=0) + return 1; + (void)pthread_detach(p); + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + + ac_cv_pthread_is_default=yes + ac_cv_kthread=no + ac_cv_pthread=no + +else case e in #( + e) ac_cv_pthread_is_default=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_is_default" >&5 +printf "%s\n" "$ac_cv_pthread_is_default" >&6; } + + +if test $ac_cv_pthread_is_default = yes +then + ac_cv_kpthread=no +else +# -Kpthread, if available, provides the right #defines +# and linker options to make pthread_create available +# Some compilers won't report that they do not support -Kpthread, +# so we need to run a program to see whether it really made the +# function available. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Kpthread" >&5 +printf %s "checking whether $CC accepts -Kpthread... " >&6; } +if test ${ac_cv_kpthread+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_cc="$CC" +CC="$CC -Kpthread" +if test "$cross_compiling" = yes +then : + ac_cv_kpthread=no +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +void* routine(void* p){return NULL;} + +int main(void){ + pthread_t p; + if(pthread_create(&p,NULL,routine,NULL)!=0) + return 1; + (void)pthread_detach(p); + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_kpthread=yes +else case e in #( + e) ac_cv_kpthread=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + +CC="$ac_save_cc" ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_kpthread" >&5 +printf "%s\n" "$ac_cv_kpthread" >&6; } +fi + +if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no +then +# -Kthread, if available, provides the right #defines +# and linker options to make pthread_create available +# Some compilers won't report that they do not support -Kthread, +# so we need to run a program to see whether it really made the +# function available. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Kthread" >&5 +printf %s "checking whether $CC accepts -Kthread... " >&6; } +if test ${ac_cv_kthread+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_cc="$CC" +CC="$CC -Kthread" +if test "$cross_compiling" = yes +then : + ac_cv_kthread=no +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +void* routine(void* p){return NULL;} + +int main(void){ + pthread_t p; + if(pthread_create(&p,NULL,routine,NULL)!=0) + return 1; + (void)pthread_detach(p); + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_kthread=yes +else case e in #( + e) ac_cv_kthread=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + +CC="$ac_save_cc" ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_kthread" >&5 +printf "%s\n" "$ac_cv_kthread" >&6; } +fi + +if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no +then +# -pthread, if available, provides the right #defines +# and linker options to make pthread_create available +# Some compilers won't report that they do not support -pthread, +# so we need to run a program to see whether it really made the +# function available. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -pthread" >&5 +printf %s "checking whether $CC accepts -pthread... " >&6; } +if test ${ac_cv_pthread+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_cc="$CC" +CC="$CC -pthread" +if test "$cross_compiling" = yes +then : + ac_cv_pthread=no +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +void* routine(void* p){return NULL;} + +int main(void){ + pthread_t p; + if(pthread_create(&p,NULL,routine,NULL)!=0) + return 1; + (void)pthread_detach(p); + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_pthread=yes +else case e in #( + e) ac_cv_pthread=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + +CC="$ac_save_cc" ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread" >&5 +printf "%s\n" "$ac_cv_pthread" >&6; } +fi + +# If we have set a CC compiler flag for thread support then +# check if it works for CXX, too. +if test ! -z "$CXX" +then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX also accepts flags for thread support" >&5 +printf %s "checking whether $CXX also accepts flags for thread support... " >&6; } +if test ${ac_cv_cxx_thread+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_cxx="$CXX" + +if test "$ac_cv_kpthread" = "yes" +then + CXX="$CXX -Kpthread" + ac_cv_cxx_thread=yes +elif test "$ac_cv_kthread" = "yes" +then + CXX="$CXX -Kthread" + ac_cv_cxx_thread=yes +elif test "$ac_cv_pthread" = "yes" +then + CXX="$CXX -pthread" + ac_cv_cxx_thread=yes +else + ac_cv_cxx_thread=no +fi + +if test $ac_cv_cxx_thread = yes +then + echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext + $CXX -c conftest.$ac_ext 2>&5 + if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \ + && test -s conftest$ac_exeext && ./conftest$ac_exeext + then + ac_cv_cxx_thread=yes + else + ac_cv_cxx_thread=no + fi + rm -fr conftest* +fi +CXX="$ac_save_cxx" ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_thread" >&5 +printf "%s\n" "$ac_cv_cxx_thread" >&6; } +else + ac_cv_cxx_thread=no +fi + + + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + + +# checks for header files +ac_fn_c_check_header_compile "$LINENO" "alloca.h" "ac_cv_header_alloca_h" "$ac_includes_default" +if test "x$ac_cv_header_alloca_h" = xyes +then : + printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "asm/types.h" "ac_cv_header_asm_types_h" "$ac_includes_default" +if test "x$ac_cv_header_asm_types_h" = xyes +then : + printf "%s\n" "#define HAVE_ASM_TYPES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "bluetooth.h" "ac_cv_header_bluetooth_h" "$ac_includes_default" +if test "x$ac_cv_header_bluetooth_h" = xyes +then : + printf "%s\n" "#define HAVE_BLUETOOTH_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "conio.h" "ac_cv_header_conio_h" "$ac_includes_default" +if test "x$ac_cv_header_conio_h" = xyes +then : + printf "%s\n" "#define HAVE_CONIO_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "direct.h" "ac_cv_header_direct_h" "$ac_includes_default" +if test "x$ac_cv_header_direct_h" = xyes +then : + printf "%s\n" "#define HAVE_DIRECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +if test "x$ac_cv_header_dlfcn_h" = xyes +then : + printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "endian.h" "ac_cv_header_endian_h" "$ac_includes_default" +if test "x$ac_cv_header_endian_h" = xyes +then : + printf "%s\n" "#define HAVE_ENDIAN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default" +if test "x$ac_cv_header_errno_h" = xyes +then : + printf "%s\n" "#define HAVE_ERRNO_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "grp.h" "ac_cv_header_grp_h" "$ac_includes_default" +if test "x$ac_cv_header_grp_h" = xyes +then : + printf "%s\n" "#define HAVE_GRP_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "io.h" "ac_cv_header_io_h" "$ac_includes_default" +if test "x$ac_cv_header_io_h" = xyes +then : + printf "%s\n" "#define HAVE_IO_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default" +if test "x$ac_cv_header_langinfo_h" = xyes +then : + printf "%s\n" "#define HAVE_LANGINFO_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" +if test "x$ac_cv_header_libintl_h" = xyes +then : + printf "%s\n" "#define HAVE_LIBINTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "libutil.h" "ac_cv_header_libutil_h" "$ac_includes_default" +if test "x$ac_cv_header_libutil_h" = xyes +then : + printf "%s\n" "#define HAVE_LIBUTIL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/auxvec.h" "ac_cv_header_linux_auxvec_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_auxvec_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_AUXVEC_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/auxv.h" "ac_cv_header_sys_auxv_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_auxv_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_AUXV_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/fs.h" "ac_cv_header_linux_fs_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_fs_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_FS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/limits.h" "ac_cv_header_linux_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_limits_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/memfd.h" "ac_cv_header_linux_memfd_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_memfd_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_MEMFD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/netfilter_ipv4.h" "ac_cv_header_linux_netfilter_ipv4_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_netfilter_ipv4_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_NETFILTER_IPV4_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/random.h" "ac_cv_header_linux_random_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_random_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_RANDOM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/soundcard.h" "ac_cv_header_linux_soundcard_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_soundcard_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_SOUNDCARD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/sched.h" "ac_cv_header_linux_sched_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_sched_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_SCHED_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/tipc.h" "ac_cv_header_linux_tipc_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_tipc_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_TIPC_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/wait.h" "ac_cv_header_linux_wait_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_wait_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_WAIT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default" +if test "x$ac_cv_header_netdb_h" = xyes +then : + printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "net/ethernet.h" "ac_cv_header_net_ethernet_h" "$ac_includes_default" +if test "x$ac_cv_header_net_ethernet_h" = xyes +then : + printf "%s\n" "#define HAVE_NET_ETHERNET_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default" +if test "x$ac_cv_header_netinet_in_h" = xyes +then : + printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "netpacket/packet.h" "ac_cv_header_netpacket_packet_h" "$ac_includes_default" +if test "x$ac_cv_header_netpacket_packet_h" = xyes +then : + printf "%s\n" "#define HAVE_NETPACKET_PACKET_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "poll.h" "ac_cv_header_poll_h" "$ac_includes_default" +if test "x$ac_cv_header_poll_h" = xyes +then : + printf "%s\n" "#define HAVE_POLL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "process.h" "ac_cv_header_process_h" "$ac_includes_default" +if test "x$ac_cv_header_process_h" = xyes +then : + printf "%s\n" "#define HAVE_PROCESS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" +if test "x$ac_cv_header_pthread_h" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "pty.h" "ac_cv_header_pty_h" "$ac_includes_default" +if test "x$ac_cv_header_pty_h" = xyes +then : + printf "%s\n" "#define HAVE_PTY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sched.h" "ac_cv_header_sched_h" "$ac_includes_default" +if test "x$ac_cv_header_sched_h" = xyes +then : + printf "%s\n" "#define HAVE_SCHED_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "setjmp.h" "ac_cv_header_setjmp_h" "$ac_includes_default" +if test "x$ac_cv_header_setjmp_h" = xyes +then : + printf "%s\n" "#define HAVE_SETJMP_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "shadow.h" "ac_cv_header_shadow_h" "$ac_includes_default" +if test "x$ac_cv_header_shadow_h" = xyes +then : + printf "%s\n" "#define HAVE_SHADOW_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "signal.h" "ac_cv_header_signal_h" "$ac_includes_default" +if test "x$ac_cv_header_signal_h" = xyes +then : + printf "%s\n" "#define HAVE_SIGNAL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default" +if test "x$ac_cv_header_spawn_h" = xyes +then : + printf "%s\n" "#define HAVE_SPAWN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "stropts.h" "ac_cv_header_stropts_h" "$ac_includes_default" +if test "x$ac_cv_header_stropts_h" = xyes +then : + printf "%s\n" "#define HAVE_STROPTS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/audioio.h" "ac_cv_header_sys_audioio_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_audioio_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_AUDIOIO_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/bsdtty.h" "ac_cv_header_sys_bsdtty_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_bsdtty_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_BSDTTY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/devpoll.h" "ac_cv_header_sys_devpoll_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_devpoll_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_DEVPOLL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/endian.h" "ac_cv_header_sys_endian_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_endian_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_ENDIAN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/epoll.h" "ac_cv_header_sys_epoll_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_epoll_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_EPOLL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/event.h" "ac_cv_header_sys_event_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_event_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_EVENT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/eventfd.h" "ac_cv_header_sys_eventfd_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_eventfd_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_EVENTFD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_ioctl_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/kern_control.h" "ac_cv_header_sys_kern_control_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_kern_control_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_KERN_CONTROL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/lock.h" "ac_cv_header_sys_lock_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_lock_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_LOCK_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/memfd.h" "ac_cv_header_sys_memfd_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_memfd_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_MEMFD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_mkdev_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_MKDEV_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_mman_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_MMAN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/modem.h" "ac_cv_header_sys_modem_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_modem_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_MODEM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/pidfd.h" "ac_cv_header_sys_pidfd_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_pidfd_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PIDFD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/poll.h" "ac_cv_header_sys_poll_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_poll_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_POLL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/random.h" "ac_cv_header_sys_random_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_random_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_RANDOM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/sendfile.h" "ac_cv_header_sys_sendfile_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_sendfile_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SENDFILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_socket_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/soundcard.h" "ac_cv_header_sys_soundcard_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_soundcard_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SOUNDCARD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_stat_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/statvfs.h" "ac_cv_header_sys_statvfs_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_statvfs_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_STATVFS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/sys_domain.h" "ac_cv_header_sys_sys_domain_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_sys_domain_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SYS_DOMAIN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/syscall.h" "ac_cv_header_sys_syscall_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_syscall_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SYSCALL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_sysmacros_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SYSMACROS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/termio.h" "ac_cv_header_sys_termio_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_termio_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TERMIO_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/times.h" "ac_cv_header_sys_times_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_times_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIMES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timerfd.h" "ac_cv_header_sys_timerfd_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timerfd_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIMERFD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_types_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_uio_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_UIO_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_un_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_UN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/utsname.h" "ac_cv_header_sys_utsname_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_utsname_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_UTSNAME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/xattr.h" "ac_cv_header_sys_xattr_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_xattr_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_XATTR_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sysexits.h" "ac_cv_header_sysexits_h" "$ac_includes_default" +if test "x$ac_cv_header_sysexits_h" = xyes +then : + printf "%s\n" "#define HAVE_SYSEXITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "syslog.h" "ac_cv_header_syslog_h" "$ac_includes_default" +if test "x$ac_cv_header_syslog_h" = xyes +then : + printf "%s\n" "#define HAVE_SYSLOG_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default" +if test "x$ac_cv_header_termios_h" = xyes +then : + printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "util.h" "ac_cv_header_util_h" "$ac_includes_default" +if test "x$ac_cv_header_util_h" = xyes +then : + printf "%s\n" "#define HAVE_UTIL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "utime.h" "ac_cv_header_utime_h" "$ac_includes_default" +if test "x$ac_cv_header_utime_h" = xyes +then : + printf "%s\n" "#define HAVE_UTIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "utmp.h" "ac_cv_header_utmp_h" "$ac_includes_default" +if test "x$ac_cv_header_utmp_h" = xyes +then : + printf "%s\n" "#define HAVE_UTMP_H 1" >>confdefs.h + +fi + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else case e in #( + e) eval "$as_ac_Header=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$as_ac_Header + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in #( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in #( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + + +ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_mkdev_h" = xyes +then : + +printf "%s\n" "#define MAJOR_IN_MKDEV 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_mkdev_h = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_sysmacros_h" = xyes +then : + +printf "%s\n" "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h + +fi + +fi + + +# bluetooth/bluetooth.h has been known to not compile with -std=c99. +# http://permalink.gmane.org/gmane.linux.bluez.kernel/22294 +SAVE_CFLAGS=$CFLAGS +CFLAGS="-std=c99 $CFLAGS" +ac_fn_c_check_header_compile "$LINENO" "bluetooth/bluetooth.h" "ac_cv_header_bluetooth_bluetooth_h" "$ac_includes_default" +if test "x$ac_cv_header_bluetooth_bluetooth_h" = xyes +then : + printf "%s\n" "#define HAVE_BLUETOOTH_BLUETOOTH_H 1" >>confdefs.h + +fi + +CFLAGS=$SAVE_CFLAGS + +# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first. +ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" "#include +#include +#include +#ifdef HAVE_SYS_SOCKET_H +# include +#endif + +" +if test "x$ac_cv_header_net_if_h" = xyes +then : + printf "%s\n" "#define HAVE_NET_IF_H 1" >>confdefs.h + +fi + + +# On Linux, netlink.h requires asm/types.h +# On FreeBSD, netlink.h is located in netlink/netlink.h +ac_fn_c_check_header_compile "$LINENO" "linux/netlink.h" "ac_cv_header_linux_netlink_h" " +#ifdef HAVE_ASM_TYPES_H +#include +#endif +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +" +if test "x$ac_cv_header_linux_netlink_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_NETLINK_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "netlink/netlink.h" "ac_cv_header_netlink_netlink_h" " +#ifdef HAVE_ASM_TYPES_H +#include +#endif +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +" +if test "x$ac_cv_header_netlink_netlink_h" = xyes +then : + printf "%s\n" "#define HAVE_NETLINK_NETLINK_H 1" >>confdefs.h + +fi + + +# On Linux, qrtr.h requires asm/types.h +ac_fn_c_check_header_compile "$LINENO" "linux/qrtr.h" "ac_cv_header_linux_qrtr_h" " +#ifdef HAVE_ASM_TYPES_H +#include +#endif +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +" +if test "x$ac_cv_header_linux_qrtr_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_QRTR_H 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "linux/vm_sockets.h" "ac_cv_header_linux_vm_sockets_h" " +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +" +if test "x$ac_cv_header_linux_vm_sockets_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_VM_SOCKETS_H 1" >>confdefs.h + +fi + + +# On Linux, can.h, can/bcm.h, can/isotp.h, can/j1939.h, can/raw.h require sys/socket.h +# On NetBSD, netcan/can.h requires sys/socket.h +ac_fn_c_check_header_compile "$LINENO" "linux/can.h" "ac_cv_header_linux_can_h" " +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +" +if test "x$ac_cv_header_linux_can_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_CAN_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/can/bcm.h" "ac_cv_header_linux_can_bcm_h" " +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +" +if test "x$ac_cv_header_linux_can_bcm_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_CAN_BCM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/can/isotp.h" "ac_cv_header_linux_can_isotp_h" " +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +" +if test "x$ac_cv_header_linux_can_isotp_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_CAN_ISOTP_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/can/j1939.h" "ac_cv_header_linux_can_j1939_h" " +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +" +if test "x$ac_cv_header_linux_can_j1939_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_CAN_J1939_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "linux/can/raw.h" "ac_cv_header_linux_can_raw_h" " +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +" +if test "x$ac_cv_header_linux_can_raw_h" = xyes +then : + printf "%s\n" "#define HAVE_LINUX_CAN_RAW_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "netcan/can.h" "ac_cv_header_netcan_can_h" " +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +" +if test "x$ac_cv_header_netcan_can_h" = xyes +then : + printf "%s\n" "#define HAVE_NETCAN_CAN_H 1" >>confdefs.h + +fi + + +# Check for clock_t in time.h. +ac_fn_c_check_type "$LINENO" "clock_t" "ac_cv_type_clock_t" "#include +" +if test "x$ac_cv_type_clock_t" = xyes +then : + +printf "%s\n" "#define HAVE_CLOCK_T 1" >>confdefs.h + + +else case e in #( + e) +printf "%s\n" "#define clock_t long" >>confdefs.h + ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for makedev" >&5 +printf %s "checking for makedev... " >&6; } +if test ${ac_cv_func_makedev+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined(MAJOR_IN_MKDEV) +#include +#elif defined(MAJOR_IN_SYSMACROS) +#include +#else +#include +#endif + +int +main (void) +{ + + makedev(0, 0) + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_makedev=yes +else case e in #( + e) ac_cv_func_makedev=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_makedev" >&5 +printf "%s\n" "$ac_cv_func_makedev" >&6; } + +if test "x$ac_cv_func_makedev" = xyes +then : + + +printf "%s\n" "#define HAVE_MAKEDEV 1" >>confdefs.h + + +fi + +# byte swapping +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for le64toh" >&5 +printf %s "checking for le64toh... " >&6; } +if test ${ac_cv_func_le64toh+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_ENDIAN_H +#include +#elif defined(HAVE_SYS_ENDIAN_H) +#include +#endif + +int +main (void) +{ + + le64toh(1) + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_le64toh=yes +else case e in #( + e) ac_cv_func_le64toh=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_le64toh" >&5 +printf "%s\n" "$ac_cv_func_le64toh" >&6; } + +if test "x$ac_cv_func_le64toh" = xyes +then : + + +printf "%s\n" "#define HAVE_HTOLE64 1" >>confdefs.h + + +fi + +use_lfs=yes +# Don't use largefile support for GNU/Hurd +case $ac_sys_system in GNU*) + use_lfs=no +esac + +if test "$use_lfs" = "yes"; then +# Two defines needed to enable largefile support on various platforms +# These may affect some typedefs +case $ac_sys_system/$ac_sys_release in +AIX*) + +printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h + + ;; +esac + +printf "%s\n" "#define _LARGEFILE_SOURCE 1" >>confdefs.h + + +printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h + +fi + +# Add some code to confdefs.h so that the test for off_t works on SCO +cat >> confdefs.h <<\EOF +#if defined(SCO_DS) +#undef _OFF_T +#endif +EOF + +# Type availability checks +ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" +if test "x$ac_cv_type_mode_t" = xyes +then : + +else case e in #( + e) +printf "%s\n" "#define mode_t int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else case e in #( + e) +printf "%s\n" "#define off_t long int" >>confdefs.h + ;; +esac +fi + + + ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default +" +if test "x$ac_cv_type_pid_t" = xyes +then : + +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else case e in #( + e) ac_pid_type='__int64' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h + + ;; +esac +fi + + + +printf "%s\n" "#define RETSIGTYPE void" >>confdefs.h + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else case e in #( + e) +printf "%s\n" "#define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" +if test "x$ac_cv_type_uid_t" = xyes +then : + +else case e in #( + e) +printf "%s\n" "#define uid_t int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" +if test "x$ac_cv_type_gid_t" = xyes +then : + +else case e in #( + e) +printf "%s\n" "#define gid_t int" >>confdefs.h + ;; +esac +fi + + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +printf "%s\n" "#define HAVE_SSIZE_T 1" >>confdefs.h + + +fi + +ac_fn_c_check_type "$LINENO" "__uint128_t" "ac_cv_type___uint128_t" "$ac_includes_default" +if test "x$ac_cv_type___uint128_t" = xyes +then : + +printf "%s\n" "#define HAVE___UINT128_T 1" >>confdefs.h + + +printf "%s\n" "#define HAVE_GCC_UINT128_T 1" >>confdefs.h + +fi + + +# Sizes and alignments of various common basic types +# ANSI C requires sizeof(char) == 1, so no need to check it +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 +printf %s "checking size of int... " >&6; } +if test ${ac_cv_sizeof_int+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type_int" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (int) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_int=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 +printf "%s\n" "$ac_cv_sizeof_int" >&6; } + + + +printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +printf %s "checking size of long... " >&6; } +if test ${ac_cv_sizeof_long+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type_long" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +printf "%s\n" "$ac_cv_sizeof_long" >&6; } + + + +printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler, +# see AC_CHECK_SIZEOF for more information. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking alignment of long" >&5 +printf %s "checking alignment of long... " >&6; } +if test ${ac_cv_alignof_long+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_long" "$ac_includes_default +typedef struct { char x; long y; } ac__type_alignof_;" +then : + +else case e in #( + e) if test "$ac_cv_type_long" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute alignment of long +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_alignof_long=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_long" >&5 +printf "%s\n" "$ac_cv_alignof_long" >&6; } + + + +printf "%s\n" "#define ALIGNOF_LONG $ac_cv_alignof_long" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 +printf %s "checking size of long long... " >&6; } +if test ${ac_cv_sizeof_long_long+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type_long_long" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long long) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long_long=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 +printf "%s\n" "$ac_cv_sizeof_long_long" >&6; } + + + +printf "%s\n" "#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 +printf %s "checking size of void *... " >&6; } +if test ${ac_cv_sizeof_void_p+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type_void_p" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (void *) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_void_p=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 +printf "%s\n" "$ac_cv_sizeof_void_p" >&6; } + + + +printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 +printf %s "checking size of short... " >&6; } +if test ${ac_cv_sizeof_short+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type_short" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (short) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_short=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 +printf "%s\n" "$ac_cv_sizeof_short" >&6; } + + + +printf "%s\n" "#define SIZEOF_SHORT $ac_cv_sizeof_short" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of float" >&5 +printf %s "checking size of float... " >&6; } +if test ${ac_cv_sizeof_float+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type_float" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (float) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_float=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5 +printf "%s\n" "$ac_cv_sizeof_float" >&6; } + + + +printf "%s\n" "#define SIZEOF_FLOAT $ac_cv_sizeof_float" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 +printf %s "checking size of double... " >&6; } +if test ${ac_cv_sizeof_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type_double" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (double) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_double=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 +printf "%s\n" "$ac_cv_sizeof_double" >&6; } + + + +printf "%s\n" "#define SIZEOF_DOUBLE $ac_cv_sizeof_double" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of fpos_t" >&5 +printf %s "checking size of fpos_t... " >&6; } +if test ${ac_cv_sizeof_fpos_t+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (fpos_t))" "ac_cv_sizeof_fpos_t" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type_fpos_t" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (fpos_t) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_fpos_t=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_fpos_t" >&5 +printf "%s\n" "$ac_cv_sizeof_fpos_t" >&6; } + + + +printf "%s\n" "#define SIZEOF_FPOS_T $ac_cv_sizeof_fpos_t" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 +printf %s "checking size of size_t... " >&6; } +if test ${ac_cv_sizeof_size_t+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type_size_t" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (size_t) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_size_t=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 +printf "%s\n" "$ac_cv_sizeof_size_t" >&6; } + + + +printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler, +# see AC_CHECK_SIZEOF for more information. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking alignment of size_t" >&5 +printf %s "checking alignment of size_t... " >&6; } +if test ${ac_cv_alignof_size_t+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_size_t" "$ac_includes_default +typedef struct { char x; size_t y; } ac__type_alignof_;" +then : + +else case e in #( + e) if test "$ac_cv_type_size_t" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute alignment of size_t +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_alignof_size_t=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_size_t" >&5 +printf "%s\n" "$ac_cv_alignof_size_t" >&6; } + + + +printf "%s\n" "#define ALIGNOF_SIZE_T $ac_cv_alignof_size_t" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of pid_t" >&5 +printf %s "checking size of pid_t... " >&6; } +if test ${ac_cv_sizeof_pid_t+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pid_t))" "ac_cv_sizeof_pid_t" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type_pid_t" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (pid_t) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_pid_t=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pid_t" >&5 +printf "%s\n" "$ac_cv_sizeof_pid_t" >&6; } + + + +printf "%s\n" "#define SIZEOF_PID_T $ac_cv_sizeof_pid_t" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of uintptr_t" >&5 +printf %s "checking size of uintptr_t... " >&6; } +if test ${ac_cv_sizeof_uintptr_t+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (uintptr_t))" "ac_cv_sizeof_uintptr_t" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type_uintptr_t" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (uintptr_t) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_uintptr_t=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_uintptr_t" >&5 +printf "%s\n" "$ac_cv_sizeof_uintptr_t" >&6; } + + + +printf "%s\n" "#define SIZEOF_UINTPTR_T $ac_cv_sizeof_uintptr_t" >>confdefs.h + + +# The cast to long int works around a bug in the HP C Compiler, +# see AC_CHECK_SIZEOF for more information. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking alignment of max_align_t" >&5 +printf %s "checking alignment of max_align_t... " >&6; } +if test ${ac_cv_alignof_max_align_t+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_max_align_t" "$ac_includes_default +typedef struct { char x; max_align_t y; } ac__type_alignof_;" +then : + +else case e in #( + e) if test "$ac_cv_type_max_align_t" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute alignment of max_align_t +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_alignof_max_align_t=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_max_align_t" >&5 +printf "%s\n" "$ac_cv_alignof_max_align_t" >&6; } + + + +printf "%s\n" "#define ALIGNOF_MAX_ALIGN_T $ac_cv_alignof_max_align_t" >>confdefs.h + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long double" >&5 +printf %s "checking for long double... " >&6; } +if test ${ac_cv_type_long_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$GCC" = yes; then + ac_cv_type_long_double=yes + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* The Stardent Vistra knows sizeof (long double), but does + not support it. */ + long double foo = 0.0L; +int +main (void) +{ +static int test_array [1 - 2 * !(/* On Ultrix 4.3 cc, long double is 4 and double is 8. */ + sizeof (double) <= sizeof (long double))]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_type_long_double=yes +else case e in #( + e) ac_cv_type_long_double=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double" >&5 +printf "%s\n" "$ac_cv_type_long_double" >&6; } + if test $ac_cv_type_long_double = yes; then + +printf "%s\n" "#define HAVE_LONG_DOUBLE 1" >>confdefs.h + + fi + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5 +printf %s "checking size of long double... " >&6; } +if test ${ac_cv_sizeof_long_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type_long_double" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long double) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long_double=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5 +printf "%s\n" "$ac_cv_sizeof_long_double" >&6; } + + + +printf "%s\n" "#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double" >>confdefs.h + + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of _Bool" >&5 +printf %s "checking size of _Bool... " >&6; } +if test ${ac_cv_sizeof__Bool+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (_Bool))" "ac_cv_sizeof__Bool" "$ac_includes_default" +then : + +else case e in #( + e) if test "$ac_cv_type__Bool" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (_Bool) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof__Bool=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof__Bool" >&5 +printf "%s\n" "$ac_cv_sizeof__Bool" >&6; } + + + +printf "%s\n" "#define SIZEOF__BOOL $ac_cv_sizeof__Bool" >>confdefs.h + + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 +printf %s "checking size of off_t... " >&6; } +if test ${ac_cv_sizeof_off_t+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" " +#ifdef HAVE_SYS_TYPES_H +#include +#endif + +" +then : + +else case e in #( + e) if test "$ac_cv_type_off_t" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (off_t) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_off_t=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5 +printf "%s\n" "$ac_cv_sizeof_off_t" >&6; } + + + +printf "%s\n" "#define SIZEOF_OFF_T $ac_cv_sizeof_off_t" >>confdefs.h + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable large file support" >&5 +printf %s "checking whether to enable large file support... " >&6; } +if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \ + "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then + have_largefile_support="yes" +else + have_largefile_support="no" +fi +if test "x$have_largefile_support" = xyes +then : + + +printf "%s\n" "#define HAVE_LARGEFILE_SUPPORT 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac +fi + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5 +printf %s "checking size of time_t... " >&6; } +if test ${ac_cv_sizeof_time_t+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" " +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_TIME_H +#include +#endif + +" +then : + +else case e in #( + e) if test "$ac_cv_type_time_t" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (time_t) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_time_t=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5 +printf "%s\n" "$ac_cv_sizeof_time_t" >&6; } + + + +printf "%s\n" "#define SIZEOF_TIME_T $ac_cv_sizeof_time_t" >>confdefs.h + + + +# if have pthread_t then define SIZEOF_PTHREAD_T +ac_save_cc="$CC" +if test "$ac_cv_kpthread" = "yes" +then CC="$CC -Kpthread" +elif test "$ac_cv_kthread" = "yes" +then CC="$CC -Kthread" +elif test "$ac_cv_pthread" = "yes" +then CC="$CC -pthread" +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_t" >&5 +printf %s "checking for pthread_t... " >&6; } +if test ${ac_cv_have_pthread_t+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include +int +main (void) +{ +pthread_t x; x = *(pthread_t*)0; + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_have_pthread_t=yes +else case e in #( + e) ac_cv_have_pthread_t=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_pthread_t" >&5 +printf "%s\n" "$ac_cv_have_pthread_t" >&6; } +if test "x$ac_cv_have_pthread_t" = xyes +then : + + # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of pthread_t" >&5 +printf %s "checking size of pthread_t... " >&6; } +if test ${ac_cv_sizeof_pthread_t+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pthread_t))" "ac_cv_sizeof_pthread_t" " +#ifdef HAVE_PTHREAD_H +#include +#endif + +" +then : + +else case e in #( + e) if test "$ac_cv_type_pthread_t" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (pthread_t) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_pthread_t=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pthread_t" >&5 +printf "%s\n" "$ac_cv_sizeof_pthread_t" >&6; } + + + +printf "%s\n" "#define SIZEOF_PTHREAD_T $ac_cv_sizeof_pthread_t" >>confdefs.h + + + +fi + +# Issue #25658: POSIX hasn't defined that pthread_key_t is compatible with int. +# This checking will be unnecessary after removing deprecated TLS API. +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of pthread_key_t" >&5 +printf %s "checking size of pthread_key_t... " >&6; } +if test ${ac_cv_sizeof_pthread_key_t+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pthread_key_t))" "ac_cv_sizeof_pthread_key_t" "#include +" +then : + +else case e in #( + e) if test "$ac_cv_type_pthread_key_t" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (pthread_key_t) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_pthread_key_t=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pthread_key_t" >&5 +printf "%s\n" "$ac_cv_sizeof_pthread_key_t" >&6; } + + + +printf "%s\n" "#define SIZEOF_PTHREAD_KEY_T $ac_cv_sizeof_pthread_key_t" >>confdefs.h + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthread_key_t is compatible with int" >&5 +printf %s "checking whether pthread_key_t is compatible with int... " >&6; } +if test ${ac_cv_pthread_key_t_is_arithmetic_type+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +if test "$ac_cv_sizeof_pthread_key_t" -eq "$ac_cv_sizeof_int" ; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +pthread_key_t k; k * 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_pthread_key_t_is_arithmetic_type=yes +else case e in #( + e) ac_cv_pthread_key_t_is_arithmetic_type=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else + ac_cv_pthread_key_t_is_arithmetic_type=no +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_key_t_is_arithmetic_type" >&5 +printf "%s\n" "$ac_cv_pthread_key_t_is_arithmetic_type" >&6; } +if test "x$ac_cv_pthread_key_t_is_arithmetic_type" = xyes +then : + + +printf "%s\n" "#define PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT 1" >>confdefs.h + + +fi + +CC="$ac_save_cc" + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-framework" >&5 +printf %s "checking for --enable-framework... " >&6; } +if test "$enable_framework" +then + BASECFLAGS="$BASECFLAGS -fno-common -dynamic" + # -F. is needed to allow linking to the framework while + # in the build location. + +printf "%s\n" "#define WITH_NEXT_FRAMEWORK 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + if test $enable_shared = "yes" + then + as_fn_error $? "Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead" "$LINENO" 5 + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + +# Check for --with-dsymutil + + +DSYMUTIL= +DSYMUTIL_PATH= +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-dsymutil" >&5 +printf %s "checking for --with-dsymutil... " >&6; } + +# Check whether --with-dsymutil was given. +if test ${with_dsymutil+y} +then : + withval=$with_dsymutil; +if test "$withval" != no +then + if test "$MACHDEP" != "darwin"; then + as_fn_error $? "dsymutil debug linking is only available in macOS." "$LINENO" 5 + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; }; + DSYMUTIL='true' +else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; DSYMUTIL= +fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi + + +if test "$DSYMUTIL"; then + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DSYMUTIL_PATH+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $DSYMUTIL_PATH in + [\\/]* | ?:[\\/]*) + ac_cv_path_DSYMUTIL_PATH="$DSYMUTIL_PATH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DSYMUTIL_PATH="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_DSYMUTIL_PATH" && ac_cv_path_DSYMUTIL_PATH="not found" + ;; +esac ;; +esac +fi +DSYMUTIL_PATH=$ac_cv_path_DSYMUTIL_PATH +if test -n "$DSYMUTIL_PATH"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL_PATH" >&5 +printf "%s\n" "$DSYMUTIL_PATH" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test "$DSYMUTIL_PATH" = "not found"; then + as_fn_error $? "dsymutil command not found on \$PATH" "$LINENO" 5 + fi +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dyld" >&5 +printf %s "checking for dyld... " >&6; } +case $ac_sys_system/$ac_sys_release in + Darwin/*) + +printf "%s\n" "#define WITH_DYLD 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: always on for Darwin" >&5 +printf "%s\n" "always on for Darwin" >&6; } + ;; + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-address-sanitizer" >&5 +printf %s "checking for --with-address-sanitizer... " >&6; } + +# Check whether --with-address_sanitizer was given. +if test ${with_address_sanitizer+y} +then : + withval=$with_address_sanitizer; +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 +printf "%s\n" "$withval" >&6; } +BASECFLAGS="-fsanitize=address -fno-omit-frame-pointer $BASECFLAGS" +LDFLAGS="-fsanitize=address $LDFLAGS" +# ASan works by controlling memory allocation, our own malloc interferes. +with_pymalloc="no" + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-memory-sanitizer" >&5 +printf %s "checking for --with-memory-sanitizer... " >&6; } + +# Check whether --with-memory_sanitizer was given. +if test ${with_memory_sanitizer+y} +then : + withval=$with_memory_sanitizer; +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 +printf "%s\n" "$withval" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fsanitize=memory" >&5 +printf %s "checking whether C compiler accepts -fsanitize=memory... " >&6; } +if test ${ax_cv_check_cflags___fsanitize_memory+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -fsanitize=memory" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags___fsanitize_memory=yes +else case e in #( + e) ax_cv_check_cflags___fsanitize_memory=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_memory" >&5 +printf "%s\n" "$ax_cv_check_cflags___fsanitize_memory" >&6; } +if test "x$ax_cv_check_cflags___fsanitize_memory" = xyes +then : + +BASECFLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer $BASECFLAGS" +LDFLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2 $LDFLAGS" + +else case e in #( + e) as_fn_error $? "The selected compiler doesn't support memory sanitizer" "$LINENO" 5 ;; +esac +fi + +# MSan works by controlling memory allocation, our own malloc interferes. +with_pymalloc="no" + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-undefined-behavior-sanitizer" >&5 +printf %s "checking for --with-undefined-behavior-sanitizer... " >&6; } + +# Check whether --with-undefined_behavior_sanitizer was given. +if test ${with_undefined_behavior_sanitizer+y} +then : + withval=$with_undefined_behavior_sanitizer; +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 +printf "%s\n" "$withval" >&6; } +BASECFLAGS="-fsanitize=undefined $BASECFLAGS" +LDFLAGS="-fsanitize=undefined $LDFLAGS" +with_ubsan="yes" + +else case e in #( + e) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +with_ubsan="no" + ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-thread-sanitizer" >&5 +printf %s "checking for --with-thread-sanitizer... " >&6; } + +# Check whether --with-thread_sanitizer was given. +if test ${with_thread_sanitizer+y} +then : + withval=$with_thread_sanitizer; +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 +printf "%s\n" "$withval" >&6; } +BASECFLAGS="-fsanitize=thread $BASECFLAGS" +LDFLAGS="-fsanitize=thread $LDFLAGS" +with_tsan="yes" + +else case e in #( + e) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +with_tsan="no" + ;; +esac +fi + + +# Set info about shared libraries. + + + + + + + +# SHLIB_SUFFIX is the extension of shared libraries `(including the dot!) +# -- usually .so, .sl on HP-UX, .dll on Cygwin +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the extension of shared libraries" >&5 +printf %s "checking the extension of shared libraries... " >&6; } +if test -z "$SHLIB_SUFFIX"; then + case $ac_sys_system in + hp*|HP*) + case `uname -m` in + ia64) SHLIB_SUFFIX=.so;; + *) SHLIB_SUFFIX=.sl;; + esac + ;; + CYGWIN*) SHLIB_SUFFIX=.dll;; + *) SHLIB_SUFFIX=.so;; + esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHLIB_SUFFIX" >&5 +printf "%s\n" "$SHLIB_SUFFIX" >&6; } + +# LDSHARED is the ld *command* used to create shared library +# -- "cc -G" on SunOS 5.x. +# (Shared libraries in this instance are shared modules to be loaded into +# Python, as opposed to building Python itself as a shared library.) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LDSHARED" >&5 +printf %s "checking LDSHARED... " >&6; } +if test -z "$LDSHARED" +then + case $ac_sys_system/$ac_sys_release in + AIX*) + BLDSHARED="Modules/ld_so_aix \$(CC) -bI:Modules/python.exp" + LDSHARED="\$(LIBPL)/ld_so_aix \$(CC) -bI:\$(LIBPL)/python.exp" + ;; + SunOS/5*) + if test "$ac_cv_gcc_compat" = "yes" ; then + LDSHARED='$(CC) -shared' + LDCXXSHARED='$(CXX) -shared' + else + LDSHARED='$(CC) -G' + LDCXXSHARED='$(CXX) -G' + fi ;; + hp*|HP*) + if test "$ac_cv_gcc_compat" = "yes" ; then + LDSHARED='$(CC) -shared' + LDCXXSHARED='$(CXX) -shared' + else + LDSHARED='$(CC) -b' + LDCXXSHARED='$(CXX) -b' + fi ;; + Darwin/1.3*) + LDSHARED='$(CC) -bundle' + LDCXXSHARED='$(CXX) -bundle' + if test "$enable_framework" ; then + # Link against the framework. All externals should be defined. + BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + else + # No framework. Ignore undefined symbols, assuming they come from Python + LDSHARED="$LDSHARED -undefined suppress" + LDCXXSHARED="$LDCXXSHARED -undefined suppress" + fi ;; + Darwin/1.4*|Darwin/5.*|Darwin/6.*) + LDSHARED='$(CC) -bundle' + LDCXXSHARED='$(CXX) -bundle' + if test "$enable_framework" ; then + # Link against the framework. All externals should be defined. + BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + else + # No framework, use the Python app as bundle-loader + BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)' + LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' + LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' + fi ;; + Darwin/*) + # Use -undefined dynamic_lookup whenever possible (10.3 and later). + # This allows an extension to be used in any Python + + dep_target_major=`echo ${MACOSX_DEPLOYMENT_TARGET} | \ + sed 's/\([0-9]*\)\.\([0-9]*\).*/\1/'` + dep_target_minor=`echo ${MACOSX_DEPLOYMENT_TARGET} | \ + sed 's/\([0-9]*\)\.\([0-9]*\).*/\2/'` + if test ${dep_target_major} -eq 10 && \ + test ${dep_target_minor} -le 2 + then + # building for OS X 10.0 through 10.2 + as_fn_error $? "MACOSX_DEPLOYMENT_TARGET too old ($MACOSX_DEPLOYMENT_TARGET), only 10.3 or later is supported" "$LINENO" 5 + else + # building for OS X 10.3 and later + LDSHARED='$(CC) -bundle -undefined dynamic_lookup' + LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' + BLDSHARED="$LDSHARED" + fi + ;; + iOS/*) + LDSHARED='$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' + LDCXXSHARED='$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' + BLDSHARED="$LDSHARED" + ;; + Emscripten*|WASI*) + LDSHARED='$(CC) -shared' + LDCXXSHARED='$(CXX) -shared';; + Linux*|GNU*|QNX*|VxWorks*|Haiku*) + LDSHARED='$(CC) -shared' + LDCXXSHARED='$(CXX) -shared';; + FreeBSD*) + if [ "`$CC -dM -E - &5 +printf "%s\n" "$LDSHARED" >&6; } +LDCXXSHARED=${LDCXXSHARED-$LDSHARED} + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking BLDSHARED flags" >&5 +printf %s "checking BLDSHARED flags... " >&6; } +BLDSHARED=${BLDSHARED-$LDSHARED} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BLDSHARED" >&5 +printf "%s\n" "$BLDSHARED" >&6; } + +# CCSHARED are the C *flags* used to create objects to go into a shared +# library (module) -- this is only needed for a few systems +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CCSHARED" >&5 +printf %s "checking CCSHARED... " >&6; } +if test -z "$CCSHARED" +then + case $ac_sys_system/$ac_sys_release in + SunOS*) if test "$ac_cv_gcc_compat" = "yes"; + then CCSHARED="-fPIC"; + elif test `uname -p` = sparc; + then CCSHARED="-xcode=pic32"; + else CCSHARED="-Kpic"; + fi;; + hp*|HP*) if test "$ac_cv_gcc_compat" = "yes"; + then CCSHARED="-fPIC"; + else CCSHARED="+z"; + fi;; + Linux*|GNU*) CCSHARED="-fPIC";; + Emscripten*|WASI*) + if test "x$enable_wasm_dynamic_linking" = xyes +then : + + CCSHARED="-fPIC" + +fi;; + FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";; + Haiku*) CCSHARED="-fPIC";; + OpenUNIX*|UnixWare*) + if test "$ac_cv_gcc_compat" = "yes" + then CCSHARED="-fPIC" + else CCSHARED="-KPIC" + fi;; + SCO_SV*) + if test "$ac_cv_gcc_compat" = "yes" + then CCSHARED="-fPIC" + else CCSHARED="-Kpic -belf" + fi;; + VxWorks*) + CCSHARED="-fpic -D__SO_PICABILINUX__ -ftls-model=global-dynamic" + esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CCSHARED" >&5 +printf "%s\n" "$CCSHARED" >&6; } +# LINKFORSHARED are the flags passed to the $(CC) command that links +# the python executable -- this is only needed for a few systems +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LINKFORSHARED" >&5 +printf %s "checking LINKFORSHARED... " >&6; } +if test -z "$LINKFORSHARED" +then + case $ac_sys_system/$ac_sys_release in + AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';; + hp*|HP*) + LINKFORSHARED="-Wl,-E -Wl,+s";; +# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; + Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; + Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; + # -u libsys_s pulls in all symbols in libsys + Darwin/*|iOS/*) + LINKFORSHARED="$extra_undefs -framework CoreFoundation" + + # Issue #18075: the default maximum stack size (8MBytes) is too + # small for the default recursion limit. Increase the stack size + # to ensure that tests don't crash + stack_size="1000000" # 16 MB + if test "$with_ubsan" = "yes" + then + # Undefined behavior sanitizer requires an even deeper stack + stack_size="4000000" # 64 MB + fi + + +printf "%s\n" "#define THREAD_STACK_SIZE 0x$stack_size" >>confdefs.h + + + if test $ac_sys_system = "Darwin"; then + LINKFORSHARED="-Wl,-stack_size,$stack_size $LINKFORSHARED" + + if test "$enable_framework"; then + LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + fi + LINKFORSHARED="$LINKFORSHARED" + elif test $ac_sys_system = "iOS"; then + LINKFORSHARED="-Wl,-stack_size,$stack_size $LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)' + fi + ;; + OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";; + SCO_SV*) LINKFORSHARED="-Wl,-Bexport";; + ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";; + FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) + if [ "`$CC -dM -E - &1 | grep export-dynamic >/dev/null + then + LINKFORSHARED="-Xlinker --export-dynamic" + fi + fi + ;; + CYGWIN*) + if test $enable_shared = "no" + then + LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)' + fi;; + QNX*) + # -Wl,-E causes the symbols to be added to the dynamic + # symbol table so that they can be found when a module + # is loaded. -N 2048K causes the stack size to be set + # to 2048 kilobytes so that the stack doesn't overflow + # when running test_compile.py. + LINKFORSHARED='-Wl,-E -N 2048K';; + VxWorks*) + LINKFORSHARED='-Wl,-export-dynamic';; + esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LINKFORSHARED" >&5 +printf "%s\n" "$LINKFORSHARED" >&6; } + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CFLAGSFORSHARED" >&5 +printf %s "checking CFLAGSFORSHARED... " >&6; } +if test ! "$LIBRARY" = "$LDLIBRARY" +then + case $ac_sys_system in + CYGWIN*) + # Cygwin needs CCSHARED when building extension DLLs + # but not when building the interpreter DLL. + CFLAGSFORSHARED='';; + *) + CFLAGSFORSHARED='$(CCSHARED)' + esac +fi + +if test "x$enable_wasm_dynamic_linking" = xyes +then : + + CFLAGSFORSHARED='$(CCSHARED)' + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CFLAGSFORSHARED" >&5 +printf "%s\n" "$CFLAGSFORSHARED" >&6; } + +# SHLIBS are libraries (except -lc and -lm) to link to the python shared +# library (with --enable-shared). +# For platforms on which shared libraries are not allowed to have unresolved +# symbols, this must be set to $(LIBS) (expanded by make). We do this even +# if it is not required, since it creates a dependency of the shared library +# to LIBS. This, in turn, means that applications linking the shared libpython +# don't need to link LIBS explicitly. The default should be only changed +# on systems where this approach causes problems. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking SHLIBS" >&5 +printf %s "checking SHLIBS... " >&6; } +case "$ac_sys_system" in + *) + SHLIBS='$(LIBS)';; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHLIBS" >&5 +printf "%s\n" "$SHLIBS" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking perf trampoline" >&5 +printf %s "checking perf trampoline... " >&6; } +case $PLATFORM_TRIPLET in #( + x86_64-linux-gnu) : + perf_trampoline=yes ;; #( + aarch64-linux-gnu) : + perf_trampoline=yes ;; #( + darwin) : + perf_trampoline=yes ;; #( + *) : + perf_trampoline=no + ;; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $perf_trampoline" >&5 +printf "%s\n" "$perf_trampoline" >&6; } + +if test "x$perf_trampoline" = xyes +then : + + +printf "%s\n" "#define PY_HAVE_PERF_TRAMPOLINE 1" >>confdefs.h + + PERF_TRAMPOLINE_OBJ=Python/asm_trampoline.o + + if test "x$Py_DEBUG" = xtrue +then : + + as_fn_append BASECFLAGS " -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" + +fi + +fi + + +# checks for libraries +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sendfile in -lsendfile" >&5 +printf %s "checking for sendfile in -lsendfile... " >&6; } +if test ${ac_cv_lib_sendfile_sendfile+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsendfile $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sendfile (void); +int +main (void) +{ +return sendfile (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sendfile_sendfile=yes +else case e in #( + e) ac_cv_lib_sendfile_sendfile=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sendfile_sendfile" >&5 +printf "%s\n" "$ac_cv_lib_sendfile_sendfile" >&6; } +if test "x$ac_cv_lib_sendfile_sendfile" = xyes +then : + printf "%s\n" "#define HAVE_LIBSENDFILE 1" >>confdefs.h + + LIBS="-lsendfile $LIBS" + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dl_dlopen=yes +else case e in #( + e) ac_cv_lib_dl_dlopen=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + printf "%s\n" "#define HAVE_LIBDL 1" >>confdefs.h + + LIBS="-ldl $LIBS" + +fi + # Dynamic linking for SunOS/Solaris and SYSV +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +printf %s "checking for shl_load in -ldld... " >&6; } +if test ${ac_cv_lib_dld_shl_load+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (void); +int +main (void) +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dld_shl_load=yes +else case e in #( + e) ac_cv_lib_dld_shl_load=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes +then : + printf "%s\n" "#define HAVE_LIBDLD 1" >>confdefs.h + + LIBS="-ldld $LIBS" + +fi + # Dynamic linking for HP-UX + + + for ac_header in execinfo.h link.h dlfcn.h +do : + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_sh"` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1 +_ACEOF + + + for ac_func in backtrace dladdr1 +do : + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 +_ACEOF + + # dladdr1 requires -ldl + ac_cv_require_ldl=yes + +fi + +done + +fi + +done + +if test "x$ac_cv_require_ldl" = xyes +then : + + if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + +else case e in #( + e) + as_fn_append LDFLAGS " -ldl" + ;; +esac +fi + +fi + + + + + + +have_uuid=missing + + for ac_header in uuid.h +do : + ac_fn_c_check_header_compile "$LINENO" "uuid.h" "ac_cv_header_uuid_h" "$ac_includes_default" +if test "x$ac_cv_header_uuid_h" = xyes +then : + printf "%s\n" "#define HAVE_UUID_H 1" >>confdefs.h + + + for ac_func in uuid_create uuid_enc_be +do : + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 +_ACEOF + + have_uuid=yes + ac_cv_have_uuid_h=yes + LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""} + LIBUUID_LIBS=${LIBUUID_LIBS-""} + +fi + +done + +fi + +done + +if test "x$have_uuid" = xmissing +then : + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid >= 2.20" >&5 +printf %s "checking for uuid >= 2.20... " >&6; } + +if test -n "$LIBUUID_CFLAGS"; then + pkg_cv_LIBUUID_CFLAGS="$LIBUUID_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"uuid >= 2.20\""; } >&5 + ($PKG_CONFIG --exists --print-errors "uuid >= 2.20") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBUUID_CFLAGS=`$PKG_CONFIG --cflags "uuid >= 2.20" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBUUID_LIBS"; then + pkg_cv_LIBUUID_LIBS="$LIBUUID_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"uuid >= 2.20\""; } >&5 + ($PKG_CONFIG --exists --print-errors "uuid >= 2.20") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBUUID_LIBS=`$PKG_CONFIG --libs "uuid >= 2.20" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBUUID_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "uuid >= 2.20" 2>&1` + else + LIBUUID_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "uuid >= 2.20" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBUUID_PKG_ERRORS" >&5 + + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBUUID_CFLAGS" + LIBS="$LIBS $LIBUUID_LIBS" + for ac_header in uuid/uuid.h +do : + ac_fn_c_check_header_compile "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default" +if test "x$ac_cv_header_uuid_uuid_h" = xyes +then : + printf "%s\n" "#define HAVE_UUID_UUID_H 1" >>confdefs.h + + ac_cv_have_uuid_uuid_h=yes + py_check_lib_save_LIBS=$LIBS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time in -luuid" >&5 +printf %s "checking for uuid_generate_time in -luuid... " >&6; } +if test ${ac_cv_lib_uuid_uuid_generate_time+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-luuid $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char uuid_generate_time (void); +int +main (void) +{ +return uuid_generate_time (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_uuid_uuid_generate_time=yes +else case e in #( + e) ac_cv_lib_uuid_uuid_generate_time=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time" >&5 +printf "%s\n" "$ac_cv_lib_uuid_uuid_generate_time" >&6; } +if test "x$ac_cv_lib_uuid_uuid_generate_time" = xyes +then : + have_uuid=yes +fi + +LIBS=$py_check_lib_save_LIBS + + py_check_lib_save_LIBS=$LIBS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time_safe in -luuid" >&5 +printf %s "checking for uuid_generate_time_safe in -luuid... " >&6; } +if test ${ac_cv_lib_uuid_uuid_generate_time_safe+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-luuid $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char uuid_generate_time_safe (void); +int +main (void) +{ +return uuid_generate_time_safe (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_uuid_uuid_generate_time_safe=yes +else case e in #( + e) ac_cv_lib_uuid_uuid_generate_time_safe=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time_safe" >&5 +printf "%s\n" "$ac_cv_lib_uuid_uuid_generate_time_safe" >&6; } +if test "x$ac_cv_lib_uuid_uuid_generate_time_safe" = xyes +then : + + have_uuid=yes + ac_cv_have_uuid_generate_time_safe=yes + +fi + +LIBS=$py_check_lib_save_LIBS + +fi + +done + if test "x$have_uuid" = xyes +then : + + LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""} + LIBUUID_LIBS=${LIBUUID_LIBS-"-luuid"} + +fi + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBUUID_CFLAGS" + LIBS="$LIBS $LIBUUID_LIBS" + for ac_header in uuid/uuid.h +do : + ac_fn_c_check_header_compile "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default" +if test "x$ac_cv_header_uuid_uuid_h" = xyes +then : + printf "%s\n" "#define HAVE_UUID_UUID_H 1" >>confdefs.h + + ac_cv_have_uuid_uuid_h=yes + py_check_lib_save_LIBS=$LIBS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time in -luuid" >&5 +printf %s "checking for uuid_generate_time in -luuid... " >&6; } +if test ${ac_cv_lib_uuid_uuid_generate_time+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-luuid $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char uuid_generate_time (void); +int +main (void) +{ +return uuid_generate_time (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_uuid_uuid_generate_time=yes +else case e in #( + e) ac_cv_lib_uuid_uuid_generate_time=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time" >&5 +printf "%s\n" "$ac_cv_lib_uuid_uuid_generate_time" >&6; } +if test "x$ac_cv_lib_uuid_uuid_generate_time" = xyes +then : + have_uuid=yes +fi + +LIBS=$py_check_lib_save_LIBS + + py_check_lib_save_LIBS=$LIBS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate_time_safe in -luuid" >&5 +printf %s "checking for uuid_generate_time_safe in -luuid... " >&6; } +if test ${ac_cv_lib_uuid_uuid_generate_time_safe+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-luuid $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char uuid_generate_time_safe (void); +int +main (void) +{ +return uuid_generate_time_safe (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_uuid_uuid_generate_time_safe=yes +else case e in #( + e) ac_cv_lib_uuid_uuid_generate_time_safe=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate_time_safe" >&5 +printf "%s\n" "$ac_cv_lib_uuid_uuid_generate_time_safe" >&6; } +if test "x$ac_cv_lib_uuid_uuid_generate_time_safe" = xyes +then : + + have_uuid=yes + ac_cv_have_uuid_generate_time_safe=yes + +fi + +LIBS=$py_check_lib_save_LIBS + +fi + +done + if test "x$have_uuid" = xyes +then : + + LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""} + LIBUUID_LIBS=${LIBUUID_LIBS-"-luuid"} + +fi + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + + +else + LIBUUID_CFLAGS=$pkg_cv_LIBUUID_CFLAGS + LIBUUID_LIBS=$pkg_cv_LIBUUID_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_uuid=yes + ac_cv_have_uuid_generate_time_safe=yes + # The uuid.h file to include may be *or* . + # Since pkg-config --cflags uuid may return -I/usr/include/uuid, + # it's possible to write '#include ' in _uuidmodule.c, + # assuming that the compiler flags are properly updated. + # + # Ideally, we should have defined HAVE_UUID_H if and only if + # #include can be written, *without* assuming extra + # include path. + ac_cv_have_uuid_h=yes + +fi + +fi + +if test "x$have_uuid" = xmissing +then : + + for ac_header in uuid/uuid.h +do : + ac_fn_c_check_header_compile "$LINENO" "uuid/uuid.h" "ac_cv_header_uuid_uuid_h" "$ac_includes_default" +if test "x$ac_cv_header_uuid_uuid_h" = xyes +then : + printf "%s\n" "#define HAVE_UUID_UUID_H 1" >>confdefs.h + + ac_fn_c_check_func "$LINENO" "uuid_generate_time" "ac_cv_func_uuid_generate_time" +if test "x$ac_cv_func_uuid_generate_time" = xyes +then : + + have_uuid=yes + ac_cv_have_uuid_uuid_h=yes + LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""} + LIBUUID_LIBS=${LIBUUID_LIBS-""} + +fi + + +fi + +done + +fi + +if test "x$ac_cv_have_uuid_h" = xyes +then : + printf "%s\n" "#define HAVE_UUID_H 1" >>confdefs.h + +fi +if test "x$ac_cv_have_uuid_uuid_h" = xyes +then : + printf "%s\n" "#define HAVE_UUID_UUID_H 1" >>confdefs.h + +fi +if test "x$ac_cv_have_uuid_generate_time_safe" = xyes +then : + + printf "%s\n" "#define HAVE_UUID_GENERATE_TIME_SAFE 1" >>confdefs.h + + +fi + +# gh-124228: While the libuuid library is available on NetBSD, it supports only UUID version 4. +# This restriction inhibits the proper generation of time-based UUIDs. +if test "$ac_sys_system" = "NetBSD"; then + have_uuid=missing + printf "%s\n" "#define HAVE_UUID_H 0" >>confdefs.h + +fi + +if test "x$have_uuid" = xmissing +then : + have_uuid=no +fi + +# gh-132710: The UUID node is fetched by using libuuid when possible +# and cached. While the node is constant within the same process, +# different interpreters may have different values as libuuid may +# randomize the node value if the latter cannot be deduced. +# +# Consumers may define HAVE_UUID_GENERATE_TIME_SAFE_STABLE_MAC +# to indicate that libuuid is unstable and should not be relied +# upon to deduce the MAC address. + + +if test "$have_uuid" = "yes" -a "$HAVE_UUID_GENERATE_TIME_SAFE" = "1" +then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if uuid_generate_time_safe() node value is stable" >&5 +printf %s "checking if uuid_generate_time_safe() node value is stable... " >&6; } + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + # Be sure to add the extra include path if we used pkg-config + # as HAVE_UUID_H may be set even though is only reachable + # by adding extra -I flags. + # + # If the following script does not compile, we simply assume that + # libuuid is missing. + CFLAGS="$CFLAGS $LIBUUID_CFLAGS" + LIBS="$LIBS $LIBUUID_LIBS" + if test "$cross_compiling" = yes +then : + + +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include // PRIu64 + #include // uint64_t + #include // fopen(), fclose() + + #ifdef HAVE_UUID_H + #include + #else + #include + #endif + + #define ERR 1 + int main(void) { + uuid_t uuid; // unsigned char[16] + (void)uuid_generate_time_safe(uuid); + uint64_t node = 0; + for (size_t i = 0; i < 6; i++) { + node |= (uint64_t)uuid[15 - i] << (8 * i); + } + FILE *fp = fopen("conftest.out", "w"); + if (fp == NULL) { + return ERR; + } + int rc = fprintf(fp, "%" PRIu64 "\n", node) >= 0; + rc |= fclose(fp); + return rc == 0 ? 0 : ERR; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + + py_cv_uuid_node1=`cat conftest.out` + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + # Be sure to add the extra include path if we used pkg-config + # as HAVE_UUID_H may be set even though is only reachable + # by adding extra -I flags. + # + # If the following script does not compile, we simply assume that + # libuuid is missing. + CFLAGS="$CFLAGS $LIBUUID_CFLAGS" + LIBS="$LIBS $LIBUUID_LIBS" + if test "$cross_compiling" = yes +then : + + +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include // PRIu64 + #include // uint64_t + #include // fopen(), fclose() + + #ifdef HAVE_UUID_H + #include + #else + #include + #endif + + #define ERR 1 + int main(void) { + uuid_t uuid; // unsigned char[16] + (void)uuid_generate_time_safe(uuid); + uint64_t node = 0; + for (size_t i = 0; i < 6; i++) { + node |= (uint64_t)uuid[15 - i] << (8 * i); + } + FILE *fp = fopen("conftest.out", "w"); + if (fp == NULL) { + return ERR; + } + int rc = fprintf(fp, "%" PRIu64 "\n", node) >= 0; + rc |= fclose(fp); + return rc == 0 ? 0 : ERR; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + + py_cv_uuid_node2=`cat conftest.out` + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + if test -n "$py_cv_uuid_node1" -a "$py_cv_uuid_node1" = "$py_cv_uuid_node2" + then + printf "%s\n" "#define HAVE_UUID_GENERATE_TIME_SAFE_STABLE_MAC 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: stable" >&5 +printf "%s\n" "stable" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unstable" >&5 +printf "%s\n" "unstable" >&6; } + fi +fi + +# 'Real Time' functions on Solaris +# posix4 on Solaris 2.6 +# pthread (first!) on Linux +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing sem_init" >&5 +printf %s "checking for library containing sem_init... " >&6; } +if test ${ac_cv_search_sem_init+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sem_init (void); +int +main (void) +{ +return sem_init (); + ; + return 0; +} +_ACEOF +for ac_lib in '' pthread rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_sem_init=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_sem_init+y} +then : + break +fi +done +if test ${ac_cv_search_sem_init+y} +then : + +else case e in #( + e) ac_cv_search_sem_init=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sem_init" >&5 +printf "%s\n" "$ac_cv_search_sem_init" >&6; } +ac_res=$ac_cv_search_sem_init +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +# check if we need libintl for locale functions +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for textdomain in -lintl" >&5 +printf %s "checking for textdomain in -lintl... " >&6; } +if test ${ac_cv_lib_intl_textdomain+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char textdomain (void); +int +main (void) +{ +return textdomain (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_intl_textdomain=yes +else case e in #( + e) ac_cv_lib_intl_textdomain=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_textdomain" >&5 +printf "%s\n" "$ac_cv_lib_intl_textdomain" >&6; } +if test "x$ac_cv_lib_intl_textdomain" = xyes +then : + +printf "%s\n" "#define WITH_LIBINTL 1" >>confdefs.h + + LIBS="-lintl $LIBS" +fi + + +# checks for system dependent C++ extensions support +case "$ac_sys_system" in + AIX*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for genuine AIX C++ extensions support" >&5 +printf %s "checking for genuine AIX C++ extensions support... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include +int +main (void) +{ +loadAndInit("", 0, "") + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + +printf "%s\n" "#define AIX_GENUINE_CPLUSPLUS 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +# BUILD_GNU_TYPE + AIX_BUILDDATE are used to construct the platform_tag +# of the AIX system used to build/package Python executable. This tag serves +# as a baseline for bdist module packages + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the system builddate" >&5 +printf %s "checking for the system builddate... " >&6; } + AIX_BUILDDATE=$(lslpp -Lcq bos.mp64 | awk -F: '{ print $NF }') + +printf "%s\n" "#define AIX_BUILDDATE $AIX_BUILDDATE" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AIX_BUILDDATE" >&5 +printf "%s\n" "$AIX_BUILDDATE" >&6; } + ;; + *) ;; +esac + +# check for systems that require aligned memory access +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking aligned memory access is required" >&5 +printf %s "checking aligned memory access is required... " >&6; } +if test ${ac_cv_aligned_required+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + +# "yes" changes the hash function to FNV, which causes problems with Numba +# (https://github.com/numba/numba/blob/0.59.0/numba/cpython/hashing.py#L470). +if test "$ac_sys_system" = "Linux-android"; then + ac_cv_aligned_required=no +else + ac_cv_aligned_required=yes +fi +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int main(void) +{ + char s[16]; + int i, *p1, *p2; + for (i=0; i < 16; i++) + s[i] = i; + p1 = (int*)(s+1); + p2 = (int*)(s+2); + if (*p1 == *p2) + return 1; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_aligned_required=no +else case e in #( + e) ac_cv_aligned_required=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_aligned_required" >&5 +printf "%s\n" "$ac_cv_aligned_required" >&6; } +if test "$ac_cv_aligned_required" = yes ; then + +printf "%s\n" "#define HAVE_ALIGNED_REQUIRED 1" >>confdefs.h + +fi + +# str, bytes and memoryview hash algorithm + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-hash-algorithm" >&5 +printf %s "checking for --with-hash-algorithm... " >&6; } + +# Check whether --with-hash_algorithm was given. +if test ${with_hash_algorithm+y} +then : + withval=$with_hash_algorithm; +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 +printf "%s\n" "$withval" >&6; } +case "$withval" in + siphash13) + printf "%s\n" "#define Py_HASH_ALGORITHM 3" >>confdefs.h + + ;; + siphash24) + printf "%s\n" "#define Py_HASH_ALGORITHM 1" >>confdefs.h + + ;; + fnv) + printf "%s\n" "#define Py_HASH_ALGORITHM 2" >>confdefs.h + + ;; + *) + as_fn_error $? "unknown hash algorithm '$withval'" "$LINENO" 5 + ;; +esac + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: default" >&5 +printf "%s\n" "default" >&6; } ;; +esac +fi + + +validate_tzpath() { + # Checks that each element of the path is an absolute path + if test -z "$1"; then + # Empty string is allowed: it indicates no system TZPATH + return 0 + fi + + # Bad paths are those that don't start with / + if ( echo $1 | grep '\(^\|:\)\([^/]\|$\)' > /dev/null); then + as_fn_error $? "--with-tzpath must contain only absolute paths, not $1" "$LINENO" 5 + return 1; + fi +} + +TZPATH="/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-tzpath" >&5 +printf %s "checking for --with-tzpath... " >&6; } + +# Check whether --with-tzpath was given. +if test ${with_tzpath+y} +then : + withval=$with_tzpath; +case "$withval" in + yes) + as_fn_error $? "--with-tzpath requires a value" "$LINENO" 5 + ;; + *) + validate_tzpath "$withval" + TZPATH="$withval" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$withval\"" >&5 +printf "%s\n" "\"$withval\"" >&6; } + ;; +esac + +else case e in #( + e) validate_tzpath "$TZPATH" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$TZPATH\"" >&5 +printf "%s\n" "\"$TZPATH\"" >&6; } ;; +esac +fi + + + +# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5 +printf %s "checking for t_open in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_t_open+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char t_open (void); +int +main (void) +{ +return t_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_t_open=yes +else case e in #( + e) ac_cv_lib_nsl_t_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_t_open" >&5 +printf "%s\n" "$ac_cv_lib_nsl_t_open" >&6; } +if test "x$ac_cv_lib_nsl_t_open" = xyes +then : + LIBS="-lnsl $LIBS" +fi + # SVR4 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +printf %s "checking for socket in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_socket+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else case e in #( + e) ac_cv_lib_socket_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf "%s\n" "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + LIBS="-lsocket $LIBS" +fi + # SVR4 sockets + +case $ac_sys_system/$ac_sys_release in + Haiku*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lnetwork" >&5 +printf %s "checking for socket in -lnetwork... " >&6; } +if test ${ac_cv_lib_network_socket+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnetwork $LIBS $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_network_socket=yes +else case e in #( + e) ac_cv_lib_network_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_network_socket" >&5 +printf "%s\n" "$ac_cv_lib_network_socket" >&6; } +if test "x$ac_cv_lib_network_socket" = xyes +then : + LIBS="-lnetwork $LIBS" +fi + + ;; +esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-libs" >&5 +printf %s "checking for --with-libs... " >&6; } + +# Check whether --with-libs was given. +if test ${with_libs+y} +then : + withval=$with_libs; +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 +printf "%s\n" "$withval" >&6; } +LIBS="$withval $LIBS" + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi + + +# Check for use of the system expat library +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-system-expat" >&5 +printf %s "checking for --with-system-expat... " >&6; } + +# Check whether --with-system_expat was given. +if test ${with_system_expat+y} +then : + withval=$with_system_expat; +else case e in #( + e) with_system_expat="no" ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_system_expat" >&5 +printf "%s\n" "$with_system_expat" >&6; } + +if test "x$with_system_expat" = xyes +then : + + LIBEXPAT_CFLAGS=${LIBEXPAT_CFLAGS-""} + LIBEXPAT_LDFLAGS=${LIBEXPAT_LDFLAGS-"-lexpat"} + LIBEXPAT_INTERNAL= + +else case e in #( + e) + LIBEXPAT_CFLAGS="-I\$(srcdir)/Modules/expat" + LIBEXPAT_LDFLAGS="-lm \$(LIBEXPAT_A)" + LIBEXPAT_INTERNAL="\$(LIBEXPAT_HEADERS) \$(LIBEXPAT_A)" + ;; +esac +fi + + + + +have_libffi=missing +if test "x$ac_sys_system" = xDarwin +then : + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CFLAGS="-I${SDKROOT}/usr/include/ffi $CFLAGS" + ac_fn_c_check_header_compile "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default" +if test "x$ac_cv_header_ffi_h" = xyes +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5 +printf %s "checking for ffi_call in -lffi... " >&6; } +if test ${ac_cv_lib_ffi_ffi_call+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lffi $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char ffi_call (void); +int +main (void) +{ +return ffi_call (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_ffi_ffi_call=yes +else case e in #( + e) ac_cv_lib_ffi_ffi_call=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5 +printf "%s\n" "$ac_cv_lib_ffi_ffi_call" >&6; } +if test "x$ac_cv_lib_ffi_ffi_call" = xyes +then : + + have_libffi=yes + LIBFFI_CFLAGS="-I${SDKROOT}/usr/include/ffi -DUSING_APPLE_OS_LIBFFI=1" + LIBFFI_LIBS="-lffi" + +fi + + +fi + + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +fi +if test "x$have_libffi" = xmissing +then : + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libffi" >&5 +printf %s "checking for libffi... " >&6; } + +if test -n "$LIBFFI_CFLAGS"; then + pkg_cv_LIBFFI_CFLAGS="$LIBFFI_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libffi") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBFFI_CFLAGS=`$PKG_CONFIG --cflags "libffi" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBFFI_LIBS"; then + pkg_cv_LIBFFI_LIBS="$LIBFFI_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libffi") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBFFI_LIBS=`$PKG_CONFIG --libs "libffi" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBFFI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libffi" 2>&1` + else + LIBFFI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libffi" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBFFI_PKG_ERRORS" >&5 + + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBFFI_CFLAGS" + LIBS="$LIBS $LIBFFI_LIBS" + ac_fn_c_check_header_compile "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default" +if test "x$ac_cv_header_ffi_h" = xyes +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5 +printf %s "checking for ffi_call in -lffi... " >&6; } +if test ${ac_cv_lib_ffi_ffi_call+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lffi $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char ffi_call (void); +int +main (void) +{ +return ffi_call (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_ffi_ffi_call=yes +else case e in #( + e) ac_cv_lib_ffi_ffi_call=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5 +printf "%s\n" "$ac_cv_lib_ffi_ffi_call" >&6; } +if test "x$ac_cv_lib_ffi_ffi_call" = xyes +then : + + have_libffi=yes + LIBFFI_CFLAGS=${LIBFFI_CFLAGS-""} + LIBFFI_LIBS=${LIBFFI_LIBS-"-lffi"} + +else case e in #( + e) have_libffi=no ;; +esac +fi + + +fi + + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBFFI_CFLAGS" + LIBS="$LIBS $LIBFFI_LIBS" + ac_fn_c_check_header_compile "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default" +if test "x$ac_cv_header_ffi_h" = xyes +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5 +printf %s "checking for ffi_call in -lffi... " >&6; } +if test ${ac_cv_lib_ffi_ffi_call+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lffi $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char ffi_call (void); +int +main (void) +{ +return ffi_call (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_ffi_ffi_call=yes +else case e in #( + e) ac_cv_lib_ffi_ffi_call=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5 +printf "%s\n" "$ac_cv_lib_ffi_ffi_call" >&6; } +if test "x$ac_cv_lib_ffi_ffi_call" = xyes +then : + + have_libffi=yes + LIBFFI_CFLAGS=${LIBFFI_CFLAGS-""} + LIBFFI_LIBS=${LIBFFI_LIBS-"-lffi"} + +else case e in #( + e) have_libffi=no ;; +esac +fi + + +fi + + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +else + LIBFFI_CFLAGS=$pkg_cv_LIBFFI_CFLAGS + LIBFFI_LIBS=$pkg_cv_LIBFFI_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_libffi=yes +fi + +fi + +if test "x$have_libffi" = xyes +then : + + ctypes_malloc_closure=no + case $ac_sys_system in #( + Darwin) : + + ctypes_malloc_closure=yes + ;; #( + iOS) : + + ctypes_malloc_closure=yes + ;; #( + sunos5) : + as_fn_append LIBFFI_LIBS " -mimpure-text" + ;; #( + *) : + ;; +esac + if test "x$ctypes_malloc_closure" = xyes +then : + + MODULE__CTYPES_MALLOC_CLOSURE=_ctypes/malloc_closure.c + as_fn_append LIBFFI_CFLAGS " -DUSING_MALLOC_CLOSURE_DOT_C=1" + +fi + + + if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + as_fn_append LIBFFI_LIBS " -ldl" +fi + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CFLAGS="$CFLAGS $LIBFFI_CFLAGS" + LIBS="$LIBS $LIBFFI_LIBS" + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_prep_cif_var" >&5 +printf %s "checking for ffi_prep_cif_var... " >&6; } +if test ${ac_cv_func_ffi_prep_cif_var+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=ffi_prep_cif_var + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_ffi_prep_cif_var=yes +else case e in #( + e) ac_cv_func_ffi_prep_cif_var=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ffi_prep_cif_var" >&5 +printf "%s\n" "$ac_cv_func_ffi_prep_cif_var" >&6; } + if test "x$ac_cv_func_ffi_prep_cif_var" = xyes +then : + +printf "%s\n" "#define HAVE_FFI_PREP_CIF_VAR 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_prep_closure_loc" >&5 +printf %s "checking for ffi_prep_closure_loc... " >&6; } +if test ${ac_cv_func_ffi_prep_closure_loc+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=ffi_prep_closure_loc + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_ffi_prep_closure_loc=yes +else case e in #( + e) ac_cv_func_ffi_prep_closure_loc=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ffi_prep_closure_loc" >&5 +printf "%s\n" "$ac_cv_func_ffi_prep_closure_loc" >&6; } + if test "x$ac_cv_func_ffi_prep_closure_loc" = xyes +then : + +printf "%s\n" "#define HAVE_FFI_PREP_CLOSURE_LOC 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_closure_alloc" >&5 +printf %s "checking for ffi_closure_alloc... " >&6; } +if test ${ac_cv_func_ffi_closure_alloc+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=ffi_closure_alloc + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_ffi_closure_alloc=yes +else case e in #( + e) ac_cv_func_ffi_closure_alloc=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ffi_closure_alloc" >&5 +printf "%s\n" "$ac_cv_func_ffi_closure_alloc" >&6; } + if test "x$ac_cv_func_ffi_closure_alloc" = xyes +then : + +printf "%s\n" "#define HAVE_FFI_CLOSURE_ALLOC 1" >>confdefs.h + +fi + + + + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +fi + +# Check for libffi with real complex double support. +# This is a workaround, since FFI_TARGET_HAS_COMPLEX_TYPE was defined in libffi v3.2.1, +# but real support was provided only in libffi v3.3.0. +# See https://github.com/python/cpython/issues/125206 for more details. +# +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libffi has complex type support" >&5 +printf %s "checking libffi has complex type support... " >&6; } +if test ${ac_cv_ffi_complex_double_supported+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBFFI_CFLAGS" + LIBS="$LIBS $LIBFFI_LIBS" +if test "$cross_compiling" = yes +then : + ac_cv_ffi_complex_double_supported=no +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +int z_is_expected(double complex z) +{ + const double complex expected = 1.25 - 0.5 * I; + return z == expected; +} +int main(void) +{ + double complex z = 1.25 - 0.5 * I; + ffi_type *args[1] = {&ffi_type_complex_double}; + void *values[1] = {&z}; + ffi_cif cif; + if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_sint, args) != FFI_OK) + { + return 2; + } + ffi_arg rc; + ffi_call(&cif, FFI_FN(z_is_expected), &rc, values); + return !rc; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_ffi_complex_double_supported=yes +else case e in #( + e) ac_cv_ffi_complex_double_supported=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ffi_complex_double_supported" >&5 +printf "%s\n" "$ac_cv_ffi_complex_double_supported" >&6; } +if test "$ac_cv_ffi_complex_double_supported" = "yes"; then + +printf "%s\n" "#define _Py_FFI_SUPPORT_C_COMPLEX 1" >>confdefs.h + +fi + +# Check for use of the system libmpdec library +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-system-libmpdec" >&5 +printf %s "checking for --with-system-libmpdec... " >&6; } + + +# Check whether --with-system_libmpdec was given. +if test ${with_system_libmpdec+y} +then : + withval=$with_system_libmpdec; if test "x$with_system_libmpdec" = xno +then : + LIBMPDEC_CFLAGS="-I\$(srcdir)/Modules/_decimal/libmpdec" + LIBMPDEC_LIBS="-lm \$(LIBMPDEC_A)" + LIBMPDEC_INTERNAL="\$(LIBMPDEC_HEADERS) \$(LIBMPDEC_A)" + have_mpdec=yes + with_system_libmpdec=no +fi +else case e in #( + e) with_system_libmpdec="yes" ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_system_libmpdec" >&5 +printf "%s\n" "$with_system_libmpdec" >&6; } + +if test "x$with_system_libmpdec" = xyes +then : + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libmpdec >= 2.5.0" >&5 +printf %s "checking for libmpdec >= 2.5.0... " >&6; } + +if test -n "$LIBMPDEC_CFLAGS"; then + pkg_cv_LIBMPDEC_CFLAGS="$LIBMPDEC_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmpdec >= 2.5.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libmpdec >= 2.5.0") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBMPDEC_CFLAGS=`$PKG_CONFIG --cflags "libmpdec >= 2.5.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBMPDEC_LIBS"; then + pkg_cv_LIBMPDEC_LIBS="$LIBMPDEC_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmpdec >= 2.5.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libmpdec >= 2.5.0") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBMPDEC_LIBS=`$PKG_CONFIG --libs "libmpdec >= 2.5.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBMPDEC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libmpdec >= 2.5.0" 2>&1` + else + LIBMPDEC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libmpdec >= 2.5.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBMPDEC_PKG_ERRORS" >&5 + + LIBMPDEC_CFLAGS=${LIBMPDEC_CFLAGS-""} + LIBMPDEC_LIBS=${LIBMPDEC_LIBS-"-lmpdec -lm"} + LIBMPDEC_INTERNAL= +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + LIBMPDEC_CFLAGS=${LIBMPDEC_CFLAGS-""} + LIBMPDEC_LIBS=${LIBMPDEC_LIBS-"-lmpdec -lm"} + LIBMPDEC_INTERNAL= +else + LIBMPDEC_CFLAGS=$pkg_cv_LIBMPDEC_CFLAGS + LIBMPDEC_LIBS=$pkg_cv_LIBMPDEC_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +fi +fi + +if test "x$with_system_libmpdec" = xyes +then : + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBMPDEC_CFLAGS" + LIBS="$LIBS $LIBMPDEC_LIBS" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include + #if MPD_VERSION_HEX < 0x02050000 + # error "mpdecimal 2.5.0 or higher required" + #endif + +int +main (void) +{ +const char *x = mpd_version(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_mpdec=yes +else case e in #( + e) have_mpdec=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + +fi + +# Disable forced inlining in debug builds, see GH-94847 +if test "x$with_pydebug" = xyes +then : + as_fn_append LIBMPDEC_CFLAGS " -DTEST_COVERAGE" +fi + +# Check whether _decimal should use a coroutine-local or thread-local context +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-decimal-contextvar" >&5 +printf %s "checking for --with-decimal-contextvar... " >&6; } + +# Check whether --with-decimal_contextvar was given. +if test ${with_decimal_contextvar+y} +then : + withval=$with_decimal_contextvar; +else case e in #( + e) with_decimal_contextvar="yes" ;; +esac +fi + + +if test "$with_decimal_contextvar" != "no" +then + +printf "%s\n" "#define WITH_DECIMAL_CONTEXTVAR 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_decimal_contextvar" >&5 +printf "%s\n" "$with_decimal_contextvar" >&6; } + +if test "x$with_system_libmpdec" = xno +then : + # Check for libmpdec machine flavor + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for decimal libmpdec machine" >&5 +printf %s "checking for decimal libmpdec machine... " >&6; } + case $ac_sys_system in #( + Darwin*) : + libmpdec_system=Darwin ;; #( + SunOS*) : + libmpdec_system=sunos ;; #( + *) : + libmpdec_system=other + ;; +esac + + libmpdec_machine=unknown + if test "$libmpdec_system" = Darwin; then + # universal here means: build libmpdec with the same arch options + # the python interpreter was built with + libmpdec_machine=universal + elif test $ac_cv_sizeof_size_t -eq 8; then + if test "$ac_cv_gcc_asm_for_x64" = yes; then + libmpdec_machine=x64 + elif test "$ac_cv_type___uint128_t" = yes; then + libmpdec_machine=uint128 + else + libmpdec_machine=ansi64 + fi + elif test $ac_cv_sizeof_size_t -eq 4; then + if test "$ac_cv_gcc_asm_for_x87" = yes -a "$libmpdec_system" != sunos; then + case $ac_cv_cc_name in #( + *gcc*) : + libmpdec_machine=ppro ;; #( + *clang*) : + libmpdec_machine=ppro ;; #( + *) : + libmpdec_machine=ansi32 + ;; +esac + else + libmpdec_machine=ansi32 + fi + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libmpdec_machine" >&5 +printf "%s\n" "$libmpdec_machine" >&6; } + + case $libmpdec_machine in #( + x64) : + as_fn_append LIBMPDEC_CFLAGS " -DCONFIG_64=1 -DASM=1" ;; #( + uint128) : + as_fn_append LIBMPDEC_CFLAGS " -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1" ;; #( + ansi64) : + as_fn_append LIBMPDEC_CFLAGS " -DCONFIG_64=1 -DANSI=1" ;; #( + ppro) : + as_fn_append LIBMPDEC_CFLAGS " -DCONFIG_32=1 -DANSI=1 -DASM=1 -Wno-unknown-pragmas" ;; #( + ansi32) : + as_fn_append LIBMPDEC_CFLAGS " -DCONFIG_32=1 -DANSI=1" ;; #( + ansi-legacy) : + as_fn_append LIBMPDEC_CFLAGS " -DCONFIG_32=1 -DANSI=1 -DLEGACY_COMPILER=1" ;; #( + universal) : + as_fn_append LIBMPDEC_CFLAGS " -DUNIVERSAL=1" ;; #( + *) : + as_fn_error $? "_decimal: unsupported architecture" "$LINENO" 5 + ;; +esac +fi + +if test "$have_ipa_pure_const_bug" = yes; then + # Some versions of gcc miscompile inline asm: + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 + # https://gcc.gnu.org/ml/gcc/2010-11/msg00366.html + as_fn_append LIBMPDEC_CFLAGS " -fno-ipa-pure-const" +fi + +if test "$have_glibc_memmove_bug" = yes; then + # _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect: + # https://sourceware.org/ml/libc-alpha/2010-12/msg00009.html + as_fn_append LIBMPDEC_CFLAGS " -U_FORTIFY_SOURCE" +fi + + + + + + + + + if test "$ac_sys_system" = "Emscripten" -a -z "$LIBSQLITE3_CFLAGS" -a -z "$LIBSQLITE3_LIBS" +then : + + LIBSQLITE3_CFLAGS="-sUSE_SQLITE3" + LIBSQLITE3_LIBS="-sUSE_SQLITE3" + +fi + + + + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3 >= 3.15.2" >&5 +printf %s "checking for sqlite3 >= 3.15.2... " >&6; } + +if test -n "$LIBSQLITE3_CFLAGS"; then + pkg_cv_LIBSQLITE3_CFLAGS="$LIBSQLITE3_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.15.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.15.2") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBSQLITE3_CFLAGS=`$PKG_CONFIG --cflags "sqlite3 >= 3.15.2" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBSQLITE3_LIBS"; then + pkg_cv_LIBSQLITE3_LIBS="$LIBSQLITE3_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.15.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.15.2") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBSQLITE3_LIBS=`$PKG_CONFIG --libs "sqlite3 >= 3.15.2" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBSQLITE3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sqlite3 >= 3.15.2" 2>&1` + else + LIBSQLITE3_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sqlite3 >= 3.15.2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBSQLITE3_PKG_ERRORS" >&5 + + + LIBSQLITE3_CFLAGS=${LIBSQLITE3_CFLAGS-""} + LIBSQLITE3_LIBS=${LIBSQLITE3_LIBS-"-lsqlite3"} + + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + LIBSQLITE3_CFLAGS=${LIBSQLITE3_CFLAGS-""} + LIBSQLITE3_LIBS=${LIBSQLITE3_LIBS-"-lsqlite3"} + + +else + LIBSQLITE3_CFLAGS=$pkg_cv_LIBSQLITE3_CFLAGS + LIBSQLITE3_LIBS=$pkg_cv_LIBSQLITE3_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +fi +as_fn_append LIBSQLITE3_CFLAGS ' -I$(srcdir)/Modules/_sqlite' + + + +save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBSQLITE3_CFLAGS" + LIBS="$LIBS $LIBSQLITE3_LIBS" + + ac_fn_c_check_header_compile "$LINENO" "sqlite3.h" "ac_cv_header_sqlite3_h" "$ac_includes_default" +if test "x$ac_cv_header_sqlite3_h" = xyes +then : + + have_sqlite3=yes + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include + #if SQLITE_VERSION_NUMBER < 3015002 + # error "SQLite 3.15.2 or higher required" + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + have_supported_sqlite3=yes + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_bind_double in -lsqlite3" >&5 +printf %s "checking for sqlite3_bind_double in -lsqlite3... " >&6; } +if test ${ac_cv_lib_sqlite3_sqlite3_bind_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_bind_double (void); +int +main (void) +{ +return sqlite3_bind_double (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sqlite3_sqlite3_bind_double=yes +else case e in #( + e) ac_cv_lib_sqlite3_sqlite3_bind_double=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_bind_double" >&5 +printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_bind_double" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_bind_double" = xyes +then : + printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h + + LIBS="-lsqlite3 $LIBS" + +else case e in #( + e) + have_supported_sqlite3=no + ;; +esac +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_column_decltype in -lsqlite3" >&5 +printf %s "checking for sqlite3_column_decltype in -lsqlite3... " >&6; } +if test ${ac_cv_lib_sqlite3_sqlite3_column_decltype+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_column_decltype (void); +int +main (void) +{ +return sqlite3_column_decltype (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sqlite3_sqlite3_column_decltype=yes +else case e in #( + e) ac_cv_lib_sqlite3_sqlite3_column_decltype=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_column_decltype" >&5 +printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_column_decltype" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_column_decltype" = xyes +then : + printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h + + LIBS="-lsqlite3 $LIBS" + +else case e in #( + e) + have_supported_sqlite3=no + ;; +esac +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_column_double in -lsqlite3" >&5 +printf %s "checking for sqlite3_column_double in -lsqlite3... " >&6; } +if test ${ac_cv_lib_sqlite3_sqlite3_column_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_column_double (void); +int +main (void) +{ +return sqlite3_column_double (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sqlite3_sqlite3_column_double=yes +else case e in #( + e) ac_cv_lib_sqlite3_sqlite3_column_double=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_column_double" >&5 +printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_column_double" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_column_double" = xyes +then : + printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h + + LIBS="-lsqlite3 $LIBS" + +else case e in #( + e) + have_supported_sqlite3=no + ;; +esac +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_complete in -lsqlite3" >&5 +printf %s "checking for sqlite3_complete in -lsqlite3... " >&6; } +if test ${ac_cv_lib_sqlite3_sqlite3_complete+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_complete (void); +int +main (void) +{ +return sqlite3_complete (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sqlite3_sqlite3_complete=yes +else case e in #( + e) ac_cv_lib_sqlite3_sqlite3_complete=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_complete" >&5 +printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_complete" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_complete" = xyes +then : + printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h + + LIBS="-lsqlite3 $LIBS" + +else case e in #( + e) + have_supported_sqlite3=no + ;; +esac +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_progress_handler in -lsqlite3" >&5 +printf %s "checking for sqlite3_progress_handler in -lsqlite3... " >&6; } +if test ${ac_cv_lib_sqlite3_sqlite3_progress_handler+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_progress_handler (void); +int +main (void) +{ +return sqlite3_progress_handler (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sqlite3_sqlite3_progress_handler=yes +else case e in #( + e) ac_cv_lib_sqlite3_sqlite3_progress_handler=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_progress_handler" >&5 +printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_progress_handler" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_progress_handler" = xyes +then : + printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h + + LIBS="-lsqlite3 $LIBS" + +else case e in #( + e) + have_supported_sqlite3=no + ;; +esac +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_result_double in -lsqlite3" >&5 +printf %s "checking for sqlite3_result_double in -lsqlite3... " >&6; } +if test ${ac_cv_lib_sqlite3_sqlite3_result_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_result_double (void); +int +main (void) +{ +return sqlite3_result_double (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sqlite3_sqlite3_result_double=yes +else case e in #( + e) ac_cv_lib_sqlite3_sqlite3_result_double=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_result_double" >&5 +printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_result_double" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_result_double" = xyes +then : + printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h + + LIBS="-lsqlite3 $LIBS" + +else case e in #( + e) + have_supported_sqlite3=no + ;; +esac +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_set_authorizer in -lsqlite3" >&5 +printf %s "checking for sqlite3_set_authorizer in -lsqlite3... " >&6; } +if test ${ac_cv_lib_sqlite3_sqlite3_set_authorizer+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_set_authorizer (void); +int +main (void) +{ +return sqlite3_set_authorizer (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sqlite3_sqlite3_set_authorizer=yes +else case e in #( + e) ac_cv_lib_sqlite3_sqlite3_set_authorizer=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_set_authorizer" >&5 +printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_set_authorizer" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_set_authorizer" = xyes +then : + printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h + + LIBS="-lsqlite3 $LIBS" + +else case e in #( + e) + have_supported_sqlite3=no + ;; +esac +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_trace_v2 in -lsqlite3" >&5 +printf %s "checking for sqlite3_trace_v2 in -lsqlite3... " >&6; } +if test ${ac_cv_lib_sqlite3_sqlite3_trace_v2+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_trace_v2 (void); +int +main (void) +{ +return sqlite3_trace_v2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sqlite3_sqlite3_trace_v2=yes +else case e in #( + e) ac_cv_lib_sqlite3_sqlite3_trace_v2=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_trace_v2" >&5 +printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_trace_v2" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_trace_v2" = xyes +then : + printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h + + LIBS="-lsqlite3 $LIBS" + +else case e in #( + e) + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_trace in -lsqlite3" >&5 +printf %s "checking for sqlite3_trace in -lsqlite3... " >&6; } +if test ${ac_cv_lib_sqlite3_sqlite3_trace+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_trace (void); +int +main (void) +{ +return sqlite3_trace (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sqlite3_sqlite3_trace=yes +else case e in #( + e) ac_cv_lib_sqlite3_sqlite3_trace=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_trace" >&5 +printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_trace" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_trace" = xyes +then : + printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h + + LIBS="-lsqlite3 $LIBS" + +else case e in #( + e) + have_supported_sqlite3=no + ;; +esac +fi + + + + ;; +esac +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_value_double in -lsqlite3" >&5 +printf %s "checking for sqlite3_value_double in -lsqlite3... " >&6; } +if test ${ac_cv_lib_sqlite3_sqlite3_value_double+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_value_double (void); +int +main (void) +{ +return sqlite3_value_double (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sqlite3_sqlite3_value_double=yes +else case e in #( + e) ac_cv_lib_sqlite3_sqlite3_value_double=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_value_double" >&5 +printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_value_double" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_value_double" = xyes +then : + printf "%s\n" "#define HAVE_LIBSQLITE3 1" >>confdefs.h + + LIBS="-lsqlite3 $LIBS" + +else case e in #( + e) + have_supported_sqlite3=no + ;; +esac +fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_load_extension in -lsqlite3" >&5 +printf %s "checking for sqlite3_load_extension in -lsqlite3... " >&6; } +if test ${ac_cv_lib_sqlite3_sqlite3_load_extension+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_load_extension (void); +int +main (void) +{ +return sqlite3_load_extension (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sqlite3_sqlite3_load_extension=yes +else case e in #( + e) ac_cv_lib_sqlite3_sqlite3_load_extension=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_load_extension" >&5 +printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_load_extension" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_load_extension" = xyes +then : + have_sqlite3_load_extension=yes +else case e in #( + e) have_sqlite3_load_extension=no + ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sqlite3_serialize in -lsqlite3" >&5 +printf %s "checking for sqlite3_serialize in -lsqlite3... " >&6; } +if test ${ac_cv_lib_sqlite3_sqlite3_serialize+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_serialize (void); +int +main (void) +{ +return sqlite3_serialize (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_sqlite3_sqlite3_serialize=yes +else case e in #( + e) ac_cv_lib_sqlite3_sqlite3_serialize=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_serialize" >&5 +printf "%s\n" "$ac_cv_lib_sqlite3_sqlite3_serialize" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_serialize" = xyes +then : + + +printf "%s\n" "#define PY_SQLITE_HAVE_SERIALIZE 1" >>confdefs.h + + +fi + + +else case e in #( + e) + have_supported_sqlite3=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi + + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --enable-loadable-sqlite-extensions" >&5 +printf %s "checking for --enable-loadable-sqlite-extensions... " >&6; } +# Check whether --enable-loadable-sqlite-extensions was given. +if test ${enable_loadable_sqlite_extensions+y} +then : + enableval=$enable_loadable_sqlite_extensions; + if test "x$have_sqlite3_load_extension" = xno +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: n/a" >&5 +printf "%s\n" "n/a" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Your version of SQLite does not support loadable extensions" >&5 +printf "%s\n" "$as_me: WARNING: Your version of SQLite does not support loadable extensions" >&2;} + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define PY_SQLITE_ENABLE_LOAD_EXTENSION 1" >>confdefs.h + + ;; +esac +fi + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + ;; +esac +fi + + +found_tcltk=no +for _QUERY in \ + "tcl >= 8.5.12 tk >= 8.5.12" \ + "tcl8.6 tk8.6" \ + "tcl86 tk86" \ + "tcl8.5 >= 8.5.12 tk8.5 >= 8.5.12" \ + "tcl85 >= 8.5.12 tk85 >= 8.5.12" \ +; do + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$_QUERY\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$_QUERY") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $_QUERY" >&5 +printf %s "checking for $_QUERY... " >&6; } + +if test -n "$TCLTK_CFLAGS"; then + pkg_cv_TCLTK_CFLAGS="$TCLTK_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$_QUERY\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$_QUERY") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_TCLTK_CFLAGS=`$PKG_CONFIG --cflags "$_QUERY" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$TCLTK_LIBS"; then + pkg_cv_TCLTK_LIBS="$TCLTK_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$_QUERY\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$_QUERY") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_TCLTK_LIBS=`$PKG_CONFIG --libs "$_QUERY" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + TCLTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$_QUERY" 2>&1` + else + TCLTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$_QUERY" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$TCLTK_PKG_ERRORS" >&5 + + found_tcltk=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + found_tcltk=no +else + TCLTK_CFLAGS=$pkg_cv_TCLTK_CFLAGS + TCLTK_LIBS=$pkg_cv_TCLTK_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + found_tcltk=yes +fi + +fi + if test "x$found_tcltk" = xyes +then : + break +fi +done + +if test "x$found_tcltk" = xno +then : + + TCLTK_CFLAGS=${TCLTK_CFLAGS-""} + TCLTK_LIBS=${TCLTK_LIBS-""} + +fi + +case $ac_sys_system in #( + FreeBSD*) : + + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5 + ($PKG_CONFIG --exists --print-errors "x11") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for x11" >&5 +printf %s "checking for x11... " >&6; } + +if test -n "$X11_CFLAGS"; then + pkg_cv_X11_CFLAGS="$X11_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5 + ($PKG_CONFIG --exists --print-errors "x11") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_X11_CFLAGS=`$PKG_CONFIG --cflags "x11" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$X11_LIBS"; then + pkg_cv_X11_LIBS="$X11_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"x11\""; } >&5 + ($PKG_CONFIG --exists --print-errors "x11") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_X11_LIBS=`$PKG_CONFIG --libs "x11" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + X11_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "x11" 2>&1` + else + X11_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "x11" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$X11_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (x11) were not met: + +$X11_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables X11_CFLAGS +and X11_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables X11_CFLAGS +and X11_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See 'config.log' for more details" "$LINENO" 5; } +else + X11_CFLAGS=$pkg_cv_X11_CFLAGS + X11_LIBS=$pkg_cv_X11_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + TCLTK_CFLAGS="$TCLTK_CFLAGS $X11_CFLAGS" + TCLTK_LIBS="$TCLTK_LIBS $X11_LIBS" + +fi + +fi + + ;; #( + *) : + ;; +esac + +save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $TCLTK_CFLAGS" + LIBS="$LIBS $TCLTK_LIBS" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include + #include + #if defined(TK_HEX_VERSION) + # if TK_HEX_VERSION < 0x0805020c + # error "Tk older than 8.5.12 not supported" + # endif + #endif + #if (TCL_MAJOR_VERSION < 8) || \ + ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION < 5)) || \ + ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION == 5) && (TCL_RELEASE_SERIAL < 12)) + # error "Tcl older than 8.5.12 not supported" + #endif + #if (TK_MAJOR_VERSION < 8) || \ + ((TK_MAJOR_VERSION == 8) && (TK_MINOR_VERSION < 5)) || \ + ((TK_MAJOR_VERSION == 8) && (TK_MINOR_VERSION == 5) && (TK_RELEASE_SERIAL < 12)) + # error "Tk older than 8.5.12 not supported" + #endif + +int +main (void) +{ + + void *x1 = Tcl_Init; + void *x2 = Tk_Init; + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + have_tcltk=yes + as_fn_append TCLTK_CFLAGS " -Wno-strict-prototypes -DWITH_APPINIT=1" + +else case e in #( + e) + have_tcltk=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + + + +save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $GDBM_CFLAGS" + LIBS="$LIBS $GDBM_LIBS" + for ac_header in gdbm.h +do : + ac_fn_c_check_header_compile "$LINENO" "gdbm.h" "ac_cv_header_gdbm_h" "$ac_includes_default" +if test "x$ac_cv_header_gdbm_h" = xyes +then : + printf "%s\n" "#define HAVE_GDBM_H 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdbm_open in -lgdbm" >&5 +printf %s "checking for gdbm_open in -lgdbm... " >&6; } +if test ${ac_cv_lib_gdbm_gdbm_open+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lgdbm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gdbm_open (void); +int +main (void) +{ +return gdbm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_gdbm_gdbm_open=yes +else case e in #( + e) ac_cv_lib_gdbm_gdbm_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gdbm_gdbm_open" >&5 +printf "%s\n" "$ac_cv_lib_gdbm_gdbm_open" >&6; } +if test "x$ac_cv_lib_gdbm_gdbm_open" = xyes +then : + + have_gdbm=yes + GDBM_LIBS=${GDBM_LIBS-"-lgdbm"} + +else case e in #( + e) have_gdbm=no ;; +esac +fi + + +else case e in #( + e) have_gdbm=no ;; +esac +fi + +done + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + + for ac_header in ndbm.h +do : + ac_fn_c_check_header_compile "$LINENO" "ndbm.h" "ac_cv_header_ndbm_h" "$ac_includes_default" +if test "x$ac_cv_header_ndbm_h" = xyes +then : + printf "%s\n" "#define HAVE_NDBM_H 1" >>confdefs.h + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dbm_open" >&5 +printf %s "checking for library containing dbm_open... " >&6; } +if test ${ac_cv_search_dbm_open+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dbm_open (void); +int +main (void) +{ +return dbm_open (); + ; + return 0; +} +_ACEOF +for ac_lib in '' ndbm gdbm_compat +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_dbm_open=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dbm_open+y} +then : + break +fi +done +if test ${ac_cv_search_dbm_open+y} +then : + +else case e in #( + e) ac_cv_search_dbm_open=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dbm_open" >&5 +printf "%s\n" "$ac_cv_search_dbm_open" >&6; } +ac_res=$ac_cv_search_dbm_open +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +fi + +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ndbm presence and linker args" >&5 +printf %s "checking for ndbm presence and linker args... " >&6; } +case $ac_cv_search_dbm_open in #( + *ndbm*|*gdbm_compat*) : + + dbm_ndbm="$ac_cv_search_dbm_open" + have_ndbm=yes + ;; #( + none*) : + + dbm_ndbm="" + have_ndbm=yes + ;; #( + no) : + have_ndbm=no + ;; #( + *) : + ;; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_ndbm ($dbm_ndbm)" >&5 +printf "%s\n" "$have_ndbm ($dbm_ndbm)" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdbm/ndbm.h" >&5 +printf %s "checking for gdbm/ndbm.h... " >&6; } +if test ${ac_cv_header_gdbm_slash_ndbm_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + ac_cv_header_gdbm_slash_ndbm_h=yes +else case e in #( + e) ac_cv_header_gdbm_slash_ndbm_h=no ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_gdbm_slash_ndbm_h" >&5 +printf "%s\n" "$ac_cv_header_gdbm_slash_ndbm_h" >&6; } +if test "x$ac_cv_header_gdbm_slash_ndbm_h" = xyes +then : + + +printf "%s\n" "#define HAVE_GDBM_NDBM_H 1" >>confdefs.h + + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdbm-ndbm.h" >&5 +printf %s "checking for gdbm-ndbm.h... " >&6; } +if test ${ac_cv_header_gdbm_dash_ndbm_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + ac_cv_header_gdbm_dash_ndbm_h=yes +else case e in #( + e) ac_cv_header_gdbm_dash_ndbm_h=no ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_gdbm_dash_ndbm_h" >&5 +printf "%s\n" "$ac_cv_header_gdbm_dash_ndbm_h" >&6; } +if test "x$ac_cv_header_gdbm_dash_ndbm_h" = xyes +then : + + +printf "%s\n" "#define HAVE_GDBM_DASH_NDBM_H 1" >>confdefs.h + + +fi + +if test "$ac_cv_header_gdbm_slash_ndbm_h" = yes -o "$ac_cv_header_gdbm_dash_ndbm_h" = yes; then + { ac_cv_search_dbm_open=; unset ac_cv_search_dbm_open;} + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dbm_open" >&5 +printf %s "checking for library containing dbm_open... " >&6; } +if test ${ac_cv_search_dbm_open+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dbm_open (void); +int +main (void) +{ +return dbm_open (); + ; + return 0; +} +_ACEOF +for ac_lib in '' gdbm_compat +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_dbm_open=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dbm_open+y} +then : + break +fi +done +if test ${ac_cv_search_dbm_open+y} +then : + +else case e in #( + e) ac_cv_search_dbm_open=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dbm_open" >&5 +printf "%s\n" "$ac_cv_search_dbm_open" >&6; } +ac_res=$ac_cv_search_dbm_open +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + have_gdbm_compat=yes +else case e in #( + e) have_gdbm_compat=no ;; +esac +fi + + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + +fi + +# Check for libdb >= 5 with dbm_open() +# db.h re-defines the name of the function + for ac_header in db.h +do : + ac_fn_c_check_header_compile "$LINENO" "db.h" "ac_cv_header_db_h" "$ac_includes_default" +if test "x$ac_cv_header_db_h" = xyes +then : + printf "%s\n" "#define HAVE_DB_H 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libdb" >&5 +printf %s "checking for libdb... " >&6; } +if test ${ac_cv_have_libdb+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + LIBS="$LIBS -ldb" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define DB_DBM_HSEARCH 1 + #include + #if DB_VERSION_MAJOR < 5 + #error "dh.h: DB_VERSION_MAJOR < 5 is not supported." + #endif + +int +main (void) +{ +DBM *dbm = dbm_open(NULL, 0, 0) + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_have_libdb=yes +else case e in #( + e) ac_cv_have_libdb=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_libdb" >&5 +printf "%s\n" "$ac_cv_have_libdb" >&6; } + if test "x$ac_cv_have_libdb" = xyes +then : + + +printf "%s\n" "#define HAVE_LIBDB 1" >>confdefs.h + + +fi + +fi + +done + +# Check for --with-dbmliborder +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-dbmliborder" >&5 +printf %s "checking for --with-dbmliborder... " >&6; } + +# Check whether --with-dbmliborder was given. +if test ${with_dbmliborder+y} +then : + withval=$with_dbmliborder; +else case e in #( + e) with_dbmliborder=gdbm:ndbm:bdb ;; +esac +fi + + +have_gdbm_dbmliborder=no +as_save_IFS=$IFS +IFS=: +for db in $with_dbmliborder; do + case $db in #( + ndbm) : + ;; #( + gdbm) : + have_gdbm_dbmliborder=yes ;; #( + bdb) : + ;; #( + *) : + with_dbmliborder=error + ;; +esac +done +IFS=$as_save_IFS +if test "x$with_dbmliborder" = xerror +then : + + as_fn_error $? "proper usage is --with-dbmliborder=db1:db2:... (gdbm:ndbm:bdb)" "$LINENO" 5 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_dbmliborder" >&5 +printf "%s\n" "$with_dbmliborder" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _dbm module CFLAGS and LIBS" >&5 +printf %s "checking for _dbm module CFLAGS and LIBS... " >&6; } +have_dbm=no +as_save_IFS=$IFS +IFS=: +for db in $with_dbmliborder; do + case "$db" in + ndbm) + if test "$have_ndbm" = yes; then + DBM_CFLAGS="-DUSE_NDBM" + DBM_LIBS="$dbm_ndbm" + have_dbm=yes + break + fi + ;; + gdbm) + if test "$have_gdbm_compat" = yes; then + DBM_CFLAGS="-DUSE_GDBM_COMPAT" + DBM_LIBS="-lgdbm_compat" + have_dbm=yes + break + fi + ;; + bdb) + if test "$ac_cv_have_libdb" = yes; then + DBM_CFLAGS="-DUSE_BERKDB" + DBM_LIBS="-ldb" + have_dbm=yes + break + fi + ;; + esac +done +IFS=$as_save_IFS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DBM_CFLAGS $DBM_LIBS" >&5 +printf "%s\n" "$DBM_CFLAGS $DBM_LIBS" >&6; } + +# Templates for things AC_DEFINEd more than once. +# For a single AC_DEFINE, no template is needed. + + +if test "$ac_cv_pthread_is_default" = yes +then + # Defining _REENTRANT on system with POSIX threads should not hurt. + printf "%s\n" "#define _REENTRANT 1" >>confdefs.h + + posix_threads=yes + if test "$ac_sys_system" = "SunOS"; then + CFLAGS="$CFLAGS -D_REENTRANT" + fi +elif test "$ac_cv_kpthread" = "yes" +then + CC="$CC -Kpthread" + if test "$ac_cv_cxx_thread" = "yes"; then + CXX="$CXX -Kpthread" + fi + posix_threads=yes +elif test "$ac_cv_kthread" = "yes" +then + CC="$CC -Kthread" + if test "$ac_cv_cxx_thread" = "yes"; then + CXX="$CXX -Kthread" + fi + posix_threads=yes +elif test "$ac_cv_pthread" = "yes" +then + CC="$CC -pthread" + if test "$ac_cv_cxx_thread" = "yes"; then + CXX="$CXX -pthread" + fi + posix_threads=yes +else + if test ! -z "$withval" -a -d "$withval" + then LDFLAGS="$LDFLAGS -L$withval" + fi + + # According to the POSIX spec, a pthreads implementation must + # define _POSIX_THREADS in unistd.h. Some apparently don't + # (e.g. gnu pth with pthread emulation) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _POSIX_THREADS in unistd.h" >&5 +printf %s "checking for _POSIX_THREADS in unistd.h... " >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _POSIX_THREADS defined in unistd.h" >&5 +printf %s "checking for _POSIX_THREADS defined in unistd.h... " >&6; } +if test ${ac_cv_defined__POSIX_THREADS_unistd_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ + + #ifdef _POSIX_THREADS + int ok; + (void)ok; + #else + choke me + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_defined__POSIX_THREADS_unistd_h=yes +else case e in #( + e) ac_cv_defined__POSIX_THREADS_unistd_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined__POSIX_THREADS_unistd_h" >&5 +printf "%s\n" "$ac_cv_defined__POSIX_THREADS_unistd_h" >&6; } +if test $ac_cv_defined__POSIX_THREADS_unistd_h != "no" +then : + unistd_defines_pthreads=yes +else case e in #( + e) unistd_defines_pthreads=no ;; +esac +fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $unistd_defines_pthreads" >&5 +printf "%s\n" "$unistd_defines_pthreads" >&6; } + + printf "%s\n" "#define _REENTRANT 1" >>confdefs.h + + # Just looking for pthread_create in libpthread is not enough: + # on HP/UX, pthread.h renames pthread_create to a different symbol name. + # So we really have to include pthread.h, and then link. + _libs=$LIBS + LIBS="$LIBS -lpthread" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 +printf %s "checking for pthread_create in -lpthread... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +void * start_routine (void *arg) { exit (0); } +int +main (void) +{ + +pthread_create (NULL, NULL, start_routine, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + posix_threads=yes + +else case e in #( + e) + LIBS=$_libs + ac_fn_c_check_func "$LINENO" "pthread_detach" "ac_cv_func_pthread_detach" +if test "x$ac_cv_func_pthread_detach" = xyes +then : + + posix_threads=yes + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthreads" >&5 +printf %s "checking for pthread_create in -lpthreads... " >&6; } +if test ${ac_cv_lib_pthreads_pthread_create+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthreads $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_create (void); +int +main (void) +{ +return pthread_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_pthreads_pthread_create=yes +else case e in #( + e) ac_cv_lib_pthreads_pthread_create=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_pthread_create" >&5 +printf "%s\n" "$ac_cv_lib_pthreads_pthread_create" >&6; } +if test "x$ac_cv_lib_pthreads_pthread_create" = xyes +then : + + posix_threads=yes + LIBS="$LIBS -lpthreads" + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lc_r" >&5 +printf %s "checking for pthread_create in -lc_r... " >&6; } +if test ${ac_cv_lib_c_r_pthread_create+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lc_r $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_create (void); +int +main (void) +{ +return pthread_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_c_r_pthread_create=yes +else case e in #( + e) ac_cv_lib_c_r_pthread_create=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_create" >&5 +printf "%s\n" "$ac_cv_lib_c_r_pthread_create" >&6; } +if test "x$ac_cv_lib_c_r_pthread_create" = xyes +then : + + posix_threads=yes + LIBS="$LIBS -lc_r" + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __pthread_create_system in -lpthread" >&5 +printf %s "checking for __pthread_create_system in -lpthread... " >&6; } +if test ${ac_cv_lib_pthread___pthread_create_system+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char __pthread_create_system (void); +int +main (void) +{ +return __pthread_create_system (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_pthread___pthread_create_system=yes +else case e in #( + e) ac_cv_lib_pthread___pthread_create_system=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread___pthread_create_system" >&5 +printf "%s\n" "$ac_cv_lib_pthread___pthread_create_system" >&6; } +if test "x$ac_cv_lib_pthread___pthread_create_system" = xyes +then : + + posix_threads=yes + LIBS="$LIBS -lpthread" + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lcma" >&5 +printf %s "checking for pthread_create in -lcma... " >&6; } +if test ${ac_cv_lib_cma_pthread_create+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lcma $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_create (void); +int +main (void) +{ +return pthread_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_cma_pthread_create=yes +else case e in #( + e) ac_cv_lib_cma_pthread_create=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cma_pthread_create" >&5 +printf "%s\n" "$ac_cv_lib_cma_pthread_create" >&6; } +if test "x$ac_cv_lib_cma_pthread_create" = xyes +then : + + posix_threads=yes + LIBS="$LIBS -lcma" + +else case e in #( + e) + case $ac_sys_system in #( + WASI) : + posix_threads=stub ;; #( + *) : + as_fn_error $? "could not find pthreads on your system" "$LINENO" 5 + ;; +esac + ;; +esac +fi + ;; +esac +fi + ;; +esac +fi + ;; +esac +fi + ;; +esac +fi + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for usconfig in -lmpc" >&5 +printf %s "checking for usconfig in -lmpc... " >&6; } +if test ${ac_cv_lib_mpc_usconfig+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lmpc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char usconfig (void); +int +main (void) +{ +return usconfig (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_mpc_usconfig=yes +else case e in #( + e) ac_cv_lib_mpc_usconfig=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpc_usconfig" >&5 +printf "%s\n" "$ac_cv_lib_mpc_usconfig" >&6; } +if test "x$ac_cv_lib_mpc_usconfig" = xyes +then : + + LIBS="$LIBS -lmpc" + +fi + + +fi + +if test "$posix_threads" = "yes"; then + if test "$unistd_defines_pthreads" = "no"; then + +printf "%s\n" "#define _POSIX_THREADS 1" >>confdefs.h + + fi + + # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8. + case $ac_sys_system/$ac_sys_release in + SunOS/5.6) +printf "%s\n" "#define HAVE_PTHREAD_DESTRUCTOR 1" >>confdefs.h + + ;; + SunOS/5.8) +printf "%s\n" "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h + + ;; + AIX/*) +printf "%s\n" "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h + + ;; + NetBSD/*) +printf "%s\n" "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h + + ;; + esac + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if PTHREAD_SCOPE_SYSTEM is supported" >&5 +printf %s "checking if PTHREAD_SCOPE_SYSTEM is supported... " >&6; } +if test ${ac_cv_pthread_system_supported+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_pthread_system_supported=no +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + void *foo(void *parm) { + return NULL; + } + int main(void) { + pthread_attr_t attr; + pthread_t id; + if (pthread_attr_init(&attr)) return (-1); + if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) return (-1); + if (pthread_create(&id, &attr, foo, NULL)) return (-1); + if (pthread_join(id, NULL)) return (-1); + return (0); + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_pthread_system_supported=yes +else case e in #( + e) ac_cv_pthread_system_supported=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_system_supported" >&5 +printf "%s\n" "$ac_cv_pthread_system_supported" >&6; } + if test "$ac_cv_pthread_system_supported" = "yes"; then + +printf "%s\n" "#define PTHREAD_SYSTEM_SCHED_SUPPORTED 1" >>confdefs.h + + fi + + for ac_func in pthread_sigmask +do : + ac_fn_c_check_func "$LINENO" "pthread_sigmask" "ac_cv_func_pthread_sigmask" +if test "x$ac_cv_func_pthread_sigmask" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_SIGMASK 1" >>confdefs.h + case $ac_sys_system in + CYGWIN*) + +printf "%s\n" "#define HAVE_BROKEN_PTHREAD_SIGMASK 1" >>confdefs.h + + ;; + esac +fi + +done + ac_fn_c_check_func "$LINENO" "pthread_getcpuclockid" "ac_cv_func_pthread_getcpuclockid" +if test "x$ac_cv_func_pthread_getcpuclockid" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_GETCPUCLOCKID 1" >>confdefs.h + +fi + +fi + +if test "x$posix_threads" = xstub +then : + + +printf "%s\n" "#define HAVE_PTHREAD_STUBS 1" >>confdefs.h + + +fi + +# Check for enable-ipv6 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if --enable-ipv6 is specified" >&5 +printf %s "checking if --enable-ipv6 is specified... " >&6; } +# Check whether --enable-ipv6 was given. +if test ${enable_ipv6+y} +then : + enableval=$enable_ipv6; case "$enableval" in + no) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ipv6=no + ;; + *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + printf "%s\n" "#define ENABLE_IPV6 1" >>confdefs.h + + ipv6=yes + ;; + esac +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + /* AF_INET6 available check */ +#include +#include +int +main (void) +{ +int domain = AF_INET6; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + ipv6=yes + +else case e in #( + e) + ipv6=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +case $ac_sys_system in #( + WASI) : + ipv6=no + ;; #( + *) : + ;; +esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ipv6" >&5 +printf "%s\n" "$ipv6" >&6; } + +if test "$ipv6" = "yes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if RFC2553 API is available" >&5 +printf %s "checking if RFC2553 API is available... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include +#include +int +main (void) +{ +struct sockaddr_in6 x; + x.sin6_scope_id; + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + ipv6=yes + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ipv6=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +if test "$ipv6" = "yes"; then + printf "%s\n" "#define ENABLE_IPV6 1" >>confdefs.h + +fi + ;; +esac +fi + + +ipv6type=unknown +ipv6lib=none +ipv6trylibc=no + +if test "$ipv6" = yes -a "$cross_compiling" = no; then + for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta; + do + case $i in + inria) + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for IPV6_INRIA_VERSION defined in netinet/in.h" >&5 +printf %s "checking for IPV6_INRIA_VERSION defined in netinet/in.h... " >&6; } +if test ${ac_cv_defined_IPV6_INRIA_VERSION_netinet_in_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ + + #ifdef IPV6_INRIA_VERSION + int ok; + (void)ok; + #else + choke me + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_defined_IPV6_INRIA_VERSION_netinet_in_h=yes +else case e in #( + e) ac_cv_defined_IPV6_INRIA_VERSION_netinet_in_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined_IPV6_INRIA_VERSION_netinet_in_h" >&5 +printf "%s\n" "$ac_cv_defined_IPV6_INRIA_VERSION_netinet_in_h" >&6; } +if test $ac_cv_defined_IPV6_INRIA_VERSION_netinet_in_h != "no" +then : + ipv6type=$i +fi + ;; + kame) + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __KAME__ defined in netinet/in.h" >&5 +printf %s "checking for __KAME__ defined in netinet/in.h... " >&6; } +if test ${ac_cv_defined___KAME___netinet_in_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ + + #ifdef __KAME__ + int ok; + (void)ok; + #else + choke me + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_defined___KAME___netinet_in_h=yes +else case e in #( + e) ac_cv_defined___KAME___netinet_in_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined___KAME___netinet_in_h" >&5 +printf "%s\n" "$ac_cv_defined___KAME___netinet_in_h" >&6; } +if test $ac_cv_defined___KAME___netinet_in_h != "no" +then : + ipv6type=$i + ipv6lib=inet6 + ipv6libdir=/usr/local/v6/lib + ipv6trylibc=yes +fi + ;; + linux-glibc) + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __GLIBC__ defined in features.h" >&5 +printf %s "checking for __GLIBC__ defined in features.h... " >&6; } +if test ${ac_cv_defined___GLIBC___features_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ + + #ifdef __GLIBC__ + int ok; + (void)ok; + #else + choke me + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_defined___GLIBC___features_h=yes +else case e in #( + e) ac_cv_defined___GLIBC___features_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined___GLIBC___features_h" >&5 +printf "%s\n" "$ac_cv_defined___GLIBC___features_h" >&6; } +if test $ac_cv_defined___GLIBC___features_h != "no" +then : + ipv6type=$i + ipv6trylibc=yes +fi + ;; + linux-inet6) + if test -d /usr/inet6; then + ipv6type=$i + ipv6lib=inet6 + ipv6libdir=/usr/inet6/lib + BASECFLAGS="-I/usr/inet6/include $BASECFLAGS" + fi + ;; + solaris) + if test -f /etc/netconfig; then + if $GREP -q tcp6 /etc/netconfig; then + ipv6type=$i + ipv6trylibc=yes + fi + fi + ;; + toshiba) + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _TOSHIBA_INET6 defined in sys/param.h" >&5 +printf %s "checking for _TOSHIBA_INET6 defined in sys/param.h... " >&6; } +if test ${ac_cv_defined__TOSHIBA_INET6_sys_param_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ + + #ifdef _TOSHIBA_INET6 + int ok; + (void)ok; + #else + choke me + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_defined__TOSHIBA_INET6_sys_param_h=yes +else case e in #( + e) ac_cv_defined__TOSHIBA_INET6_sys_param_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined__TOSHIBA_INET6_sys_param_h" >&5 +printf "%s\n" "$ac_cv_defined__TOSHIBA_INET6_sys_param_h" >&6; } +if test $ac_cv_defined__TOSHIBA_INET6_sys_param_h != "no" +then : + ipv6type=$i + ipv6lib=inet6 + ipv6libdir=/usr/local/v6/lib +fi + ;; + v6d) + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __V6D__ defined in /usr/local/v6/include/sys/v6config.h" >&5 +printf %s "checking for __V6D__ defined in /usr/local/v6/include/sys/v6config.h... " >&6; } +if test ${ac_cv_defined___V6D____usr_local_v6_include_sys_v6config_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ + + #ifdef __V6D__ + int ok; + (void)ok; + #else + choke me + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_defined___V6D____usr_local_v6_include_sys_v6config_h=yes +else case e in #( + e) ac_cv_defined___V6D____usr_local_v6_include_sys_v6config_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined___V6D____usr_local_v6_include_sys_v6config_h" >&5 +printf "%s\n" "$ac_cv_defined___V6D____usr_local_v6_include_sys_v6config_h" >&6; } +if test $ac_cv_defined___V6D____usr_local_v6_include_sys_v6config_h != "no" +then : + ipv6type=$i + ipv6lib=v6 + ipv6libdir=/usr/local/v6/lib + BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS" +fi + ;; + zeta) + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _ZETA_MINAMI_INET6 defined in sys/param.h" >&5 +printf %s "checking for _ZETA_MINAMI_INET6 defined in sys/param.h... " >&6; } +if test ${ac_cv_defined__ZETA_MINAMI_INET6_sys_param_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ + + #ifdef _ZETA_MINAMI_INET6 + int ok; + (void)ok; + #else + choke me + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_defined__ZETA_MINAMI_INET6_sys_param_h=yes +else case e in #( + e) ac_cv_defined__ZETA_MINAMI_INET6_sys_param_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined__ZETA_MINAMI_INET6_sys_param_h" >&5 +printf "%s\n" "$ac_cv_defined__ZETA_MINAMI_INET6_sys_param_h" >&6; } +if test $ac_cv_defined__ZETA_MINAMI_INET6_sys_param_h != "no" +then : + ipv6type=$i + ipv6lib=inet6 + ipv6libdir=/usr/local/v6/lib +fi + ;; + esac + if test "$ipv6type" != "unknown"; then + break + fi + done + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ipv6 stack type" >&5 +printf %s "checking ipv6 stack type... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ipv6type" >&5 +printf "%s\n" "$ipv6type" >&6; } +fi + +if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ipv6 library" >&5 +printf %s "checking ipv6 library... " >&6; } + if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then + LIBS="-L$ipv6libdir -l$ipv6lib $LIBS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: lib$ipv6lib" >&5 +printf "%s\n" "lib$ipv6lib" >&6; } + else + if test "x$ipv6trylibc" = xyes +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: libc" >&5 +printf "%s\n" "libc" >&6; } + +else case e in #( + e) + as_fn_error $? "No $ipv6lib library found; cannot continue. You need to fetch lib$ipv6lib.a from appropriate ipv6 kit and compile beforehand." "$LINENO" 5 + ;; +esac +fi + fi +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CAN_RAW_FD_FRAMES" >&5 +printf %s "checking CAN_RAW_FD_FRAMES... " >&6; } +if test ${ac_cv_can_raw_fd_frames+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + /* CAN_RAW_FD_FRAMES available check */ +#include +int +main (void) +{ +int can_raw_fd_frames = CAN_RAW_FD_FRAMES; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_can_raw_fd_frames=yes +else case e in #( + e) ac_cv_can_raw_fd_frames=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_can_raw_fd_frames" >&5 +printf "%s\n" "$ac_cv_can_raw_fd_frames" >&6; } +if test "x$ac_cv_can_raw_fd_frames" = xyes +then : + + +printf "%s\n" "#define HAVE_LINUX_CAN_RAW_FD_FRAMES 1" >>confdefs.h + + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CAN_RAW_JOIN_FILTERS" >&5 +printf %s "checking for CAN_RAW_JOIN_FILTERS... " >&6; } +if test ${ac_cv_can_raw_join_filters+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +int +main (void) +{ +int can_raw_join_filters = CAN_RAW_JOIN_FILTERS; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_can_raw_join_filters=yes +else case e in #( + e) ac_cv_can_raw_join_filters=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_can_raw_join_filters" >&5 +printf "%s\n" "$ac_cv_can_raw_join_filters" >&6; } +if test "x$ac_cv_can_raw_join_filters" = xyes +then : + + +printf "%s\n" "#define HAVE_LINUX_CAN_RAW_JOIN_FILTERS 1" >>confdefs.h + + +fi + +# Check for --with-doc-strings +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-doc-strings" >&5 +printf %s "checking for --with-doc-strings... " >&6; } + +# Check whether --with-doc-strings was given. +if test ${with_doc_strings+y} +then : + withval=$with_doc_strings; +fi + + +if test -z "$with_doc_strings" +then with_doc_strings="yes" +fi +if test "$with_doc_strings" != "no" +then + +printf "%s\n" "#define WITH_DOC_STRINGS 1" >>confdefs.h + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_doc_strings" >&5 +printf "%s\n" "$with_doc_strings" >&6; } + +# Check for stdatomic.h, required for mimalloc. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdatomic.h" >&5 +printf %s "checking for stdatomic.h... " >&6; } +if test ${ac_cv_header_stdatomic_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include + atomic_int int_var; + atomic_uintptr_t uintptr_var; + int main() { + atomic_store_explicit(&int_var, 5, memory_order_relaxed); + atomic_store_explicit(&uintptr_var, 0, memory_order_relaxed); + int loaded_value = atomic_load_explicit(&int_var, memory_order_seq_cst); + return 0; + } + + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_header_stdatomic_h=yes +else case e in #( + e) ac_cv_header_stdatomic_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdatomic_h" >&5 +printf "%s\n" "$ac_cv_header_stdatomic_h" >&6; } + +if test "x$ac_cv_header_stdatomic_h" = xyes +then : + + +printf "%s\n" "#define HAVE_STD_ATOMIC 1" >>confdefs.h + + +fi + +# Check for GCC >= 4.7 and clang __atomic builtin functions +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for builtin __atomic_load_n and __atomic_store_n functions" >&5 +printf %s "checking for builtin __atomic_load_n and __atomic_store_n functions... " >&6; } +if test ${ac_cv_builtin_atomic+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + int val; + int main() { + __atomic_store_n(&val, 1, __ATOMIC_SEQ_CST); + (void)__atomic_load_n(&val, __ATOMIC_SEQ_CST); + return 0; + } + + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_builtin_atomic=yes +else case e in #( + e) ac_cv_builtin_atomic=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_builtin_atomic" >&5 +printf "%s\n" "$ac_cv_builtin_atomic" >&6; } + +if test "x$ac_cv_builtin_atomic" = xyes +then : + + +printf "%s\n" "#define HAVE_BUILTIN_ATOMIC 1" >>confdefs.h + + +fi + +# --with-mimalloc +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-mimalloc" >&5 +printf %s "checking for --with-mimalloc... " >&6; } + +# Check whether --with-mimalloc was given. +if test ${with_mimalloc+y} +then : + withval=$with_mimalloc; +else case e in #( + e) with_mimalloc="$ac_cv_header_stdatomic_h" + ;; +esac +fi + + +if test "$with_mimalloc" != no; then + if test "$ac_cv_header_stdatomic_h" != yes; then + # mimalloc-atomic.h wants C11 stdatomic.h on POSIX + as_fn_error $? "mimalloc requires stdatomic.h, use --without-mimalloc to disable mimalloc." "$LINENO" 5 + fi + with_mimalloc=yes + +printf "%s\n" "#define WITH_MIMALLOC 1" >>confdefs.h + + MIMALLOC_HEADERS='$(MIMALLOC_HEADERS)' + +elif test "$disable_gil" = "yes"; then + as_fn_error $? "--disable-gil requires mimalloc memory allocator (--with-mimalloc)." "$LINENO" 5 +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_mimalloc" >&5 +printf "%s\n" "$with_mimalloc" >&6; } +INSTALL_MIMALLOC=$with_mimalloc + + + +# Check for Python-specific malloc support +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-pymalloc" >&5 +printf %s "checking for --with-pymalloc... " >&6; } + +# Check whether --with-pymalloc was given. +if test ${with_pymalloc+y} +then : + withval=$with_pymalloc; +fi + + +if test -z "$with_pymalloc" +then + case $ac_sys_system in #( + Emscripten) : + with_pymalloc="no" ;; #( + WASI) : + with_pymalloc="no" ;; #( + *) : + with_pymalloc="yes" + ;; +esac +fi +if test "$with_pymalloc" != "no" +then + +printf "%s\n" "#define WITH_PYMALLOC 1" >>confdefs.h + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_pymalloc" >&5 +printf "%s\n" "$with_pymalloc" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-pymalloc-hugepages" >&5 +printf %s "checking for --with-pymalloc-hugepages... " >&6; } + +# Check whether --with-pymalloc-hugepages was given. +if test ${with_pymalloc_hugepages+y} +then : + withval=$with_pymalloc_hugepages; +fi + +if test "$with_pymalloc_hugepages" = "yes" +then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include + +int +main (void) +{ + +int flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB; +(void)flags; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +printf "%s\n" "#define PYMALLOC_USE_HUGEPAGES 1" >>confdefs.h + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --with-pymalloc-hugepages requested but MAP_HUGETLB not found" >&5 +printf "%s\n" "$as_me: WARNING: --with-pymalloc-hugepages requested but MAP_HUGETLB not found" >&2;} + with_pymalloc_hugepages=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${with_pymalloc_hugepages:-no}" >&5 +printf "%s\n" "${with_pymalloc_hugepages:-no}" >&6; } + +# Check for --with-c-locale-coercion +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-c-locale-coercion" >&5 +printf %s "checking for --with-c-locale-coercion... " >&6; } + +# Check whether --with-c-locale-coercion was given. +if test ${with_c_locale_coercion+y} +then : + withval=$with_c_locale_coercion; +fi + + +if test -z "$with_c_locale_coercion" +then + with_c_locale_coercion="yes" +fi +if test "$with_c_locale_coercion" != "no" +then + +printf "%s\n" "#define PY_COERCE_C_LOCALE 1" >>confdefs.h + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_c_locale_coercion" >&5 +printf "%s\n" "$with_c_locale_coercion" >&6; } + +# Check for Valgrind support +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-valgrind" >&5 +printf %s "checking for --with-valgrind... " >&6; } + +# Check whether --with-valgrind was given. +if test ${with_valgrind+y} +then : + withval=$with_valgrind; +else case e in #( + e) with_valgrind=no + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_valgrind" >&5 +printf "%s\n" "$with_valgrind" >&6; } +if test "$with_valgrind" != no; then + ac_fn_c_check_header_compile "$LINENO" "valgrind/valgrind.h" "ac_cv_header_valgrind_valgrind_h" "$ac_includes_default" +if test "x$ac_cv_header_valgrind_valgrind_h" = xyes +then : + +printf "%s\n" "#define WITH_VALGRIND 1" >>confdefs.h + +else case e in #( + e) as_fn_error $? "Valgrind support requested but headers not available" "$LINENO" 5 + ;; +esac +fi + + OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT" +fi + +# Check for DTrace support +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-dtrace" >&5 +printf %s "checking for --with-dtrace... " >&6; } + +# Check whether --with-dtrace was given. +if test ${with_dtrace+y} +then : + withval=$with_dtrace; +else case e in #( + e) with_dtrace=no ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_dtrace" >&5 +printf "%s\n" "$with_dtrace" >&6; } + + + + + +DTRACE= +DTRACE_HEADERS= +DTRACE_OBJS= + +if test "$with_dtrace" = "yes" +then + # Extract the first word of "dtrace", so it can be a program name with args. +set dummy dtrace; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_DTRACE+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $DTRACE in + [\\/]* | ?:[\\/]*) + ac_cv_path_DTRACE="$DTRACE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_DTRACE="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_DTRACE" && ac_cv_path_DTRACE="not found" + ;; +esac ;; +esac +fi +DTRACE=$ac_cv_path_DTRACE +if test -n "$DTRACE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5 +printf "%s\n" "$DTRACE" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test "$DTRACE" = "not found"; then + as_fn_error $? "dtrace command not found on \$PATH" "$LINENO" 5 + fi + +printf "%s\n" "#define WITH_DTRACE 1" >>confdefs.h + + DTRACE_HEADERS="Include/pydtrace_probes.h" + + # On OS X, DTrace providers do not need to be explicitly compiled and + # linked into the binary. Correspondingly, dtrace(1) is missing the ELF + # generation flag '-G'. We check for presence of this flag, rather than + # hardcoding support by OS, in the interest of robustness. + # + # NetBSD DTrace requires the -x nolibs flag to avoid system library conflicts + # and uses header generation for testing instead of object generation. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether DTrace probes require linking" >&5 +printf %s "checking whether DTrace probes require linking... " >&6; } +if test ${ac_cv_dtrace_link+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ac_cv_dtrace_link=no + echo 'BEGIN{}' > conftest.d + case $host in + *netbsd*) + DTRACE_TEST_FLAGS="-x nolibs -h" + ;; + *) + DTRACE_TEST_FLAGS="-G" + ;; + esac + "$DTRACE" $DFLAGS $DTRACE_TEST_FLAGS -s conftest.d -o conftest.o > /dev/null 2>&1 && \ + ac_cv_dtrace_link=yes + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dtrace_link" >&5 +printf "%s\n" "$ac_cv_dtrace_link" >&6; } + if test "$ac_cv_dtrace_link" = "yes"; then + DTRACE_OBJS="Python/pydtrace.o" + fi + # Set NetBSD-specific DTrace flags in DFLAGS + case $host in + *netbsd*) + DFLAGS="$DFLAGS -x nolibs" + ;; + esac +fi + +PLATFORM_HEADERS= +PLATFORM_OBJS= + +case $ac_sys_system in #( + Emscripten) : + + as_fn_append PLATFORM_OBJS ' Python/emscripten_signal.o Python/emscripten_trampoline.o Python/emscripten_trampoline_wasm.o Python/emscripten_syscalls.o' + as_fn_append PLATFORM_HEADERS ' $(srcdir)/Include/internal/pycore_emscripten_signal.h $(srcdir)/Include/internal/pycore_emscripten_trampoline.h' + ;; #( + *) : + ;; +esac + + + +# -I${DLINCLDIR} is added to the compile rule for importdl.o + +DLINCLDIR=. + +# the dlopen() function means we might want to use dynload_shlib.o. some +# platforms have dlopen(), but don't want to use it. +ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes +then : + printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h + +fi + + +# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic +# loading of modules. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking DYNLOADFILE" >&5 +printf %s "checking DYNLOADFILE... " >&6; } +if test -z "$DYNLOADFILE" +then + case $ac_sys_system/$ac_sys_release in + hp*|HP*) DYNLOADFILE="dynload_hpux.o";; + *) + # use dynload_shlib.c and dlopen() if we have it; otherwise stub + # out any dynamic loading + if test "$ac_cv_func_dlopen" = yes + then DYNLOADFILE="dynload_shlib.o" + else DYNLOADFILE="dynload_stub.o" + fi + ;; + esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DYNLOADFILE" >&5 +printf "%s\n" "$DYNLOADFILE" >&6; } +if test "$DYNLOADFILE" != "dynload_stub.o" +then + +printf "%s\n" "#define HAVE_DYNAMIC_LOADING 1" >>confdefs.h + +fi + +# MACHDEP_OBJS can be set to platform-specific object files needed by Python + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking MACHDEP_OBJS" >&5 +printf %s "checking MACHDEP_OBJS... " >&6; } +if test -z "$MACHDEP_OBJS" +then + MACHDEP_OBJS=$extra_machdep_objs +else + MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs" +fi +if test -z "$MACHDEP_OBJS"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf "%s\n" "none" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MACHDEP_OBJS" >&5 +printf "%s\n" "$MACHDEP_OBJS" >&6; } +fi + +if test "$ac_sys_system" = "Linux-android"; then + # When these functions are used in an unprivileged process, they crash rather + # than returning an error. + blocked_funcs="chroot initgroups setegid seteuid setgid sethostname + setregid setresgid setresuid setreuid setuid" + + # These functions are unimplemented and always return an error + # (https://android.googlesource.com/platform/system/sepolicy/+/refs/heads/android13-release/public/domain.te#1044) + blocked_funcs="$blocked_funcs sem_open sem_unlink" + + # Before API level 23, when fchmodat is called with the unimplemented flag + # AT_SYMLINK_NOFOLLOW, instead of returning ENOTSUP as it should, it actually + # follows the symlink. + if test "$ANDROID_API_LEVEL" -lt 23; then + blocked_funcs="$blocked_funcs fchmodat" + fi + + for name in $blocked_funcs; do + as_func_var=`printf "%s\n" "ac_cv_func_$name" | sed "$as_sed_sh"` + + eval "$as_func_var=no" + + done +fi + +# checks for library functions +ac_fn_c_check_func "$LINENO" "accept4" "ac_cv_func_accept4" +if test "x$ac_cv_func_accept4" = xyes +then : + printf "%s\n" "#define HAVE_ACCEPT4 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "alarm" "ac_cv_func_alarm" +if test "x$ac_cv_func_alarm" = xyes +then : + printf "%s\n" "#define HAVE_ALARM 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" +if test "x$ac_cv_func_bind_textdomain_codeset" = xyes +then : + printf "%s\n" "#define HAVE_BIND_TEXTDOMAIN_CODESET 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "chmod" "ac_cv_func_chmod" +if test "x$ac_cv_func_chmod" = xyes +then : + printf "%s\n" "#define HAVE_CHMOD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "chown" "ac_cv_func_chown" +if test "x$ac_cv_func_chown" = xyes +then : + printf "%s\n" "#define HAVE_CHOWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "clearenv" "ac_cv_func_clearenv" +if test "x$ac_cv_func_clearenv" = xyes +then : + printf "%s\n" "#define HAVE_CLEARENV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "clock" "ac_cv_func_clock" +if test "x$ac_cv_func_clock" = xyes +then : + printf "%s\n" "#define HAVE_CLOCK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "closefrom" "ac_cv_func_closefrom" +if test "x$ac_cv_func_closefrom" = xyes +then : + printf "%s\n" "#define HAVE_CLOSEFROM 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "close_range" "ac_cv_func_close_range" +if test "x$ac_cv_func_close_range" = xyes +then : + printf "%s\n" "#define HAVE_CLOSE_RANGE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "confstr" "ac_cv_func_confstr" +if test "x$ac_cv_func_confstr" = xyes +then : + printf "%s\n" "#define HAVE_CONFSTR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "copy_file_range" "ac_cv_func_copy_file_range" +if test "x$ac_cv_func_copy_file_range" = xyes +then : + printf "%s\n" "#define HAVE_COPY_FILE_RANGE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ctermid" "ac_cv_func_ctermid" +if test "x$ac_cv_func_ctermid" = xyes +then : + printf "%s\n" "#define HAVE_CTERMID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dladdr" "ac_cv_func_dladdr" +if test "x$ac_cv_func_dladdr" = xyes +then : + printf "%s\n" "#define HAVE_DLADDR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf "%s\n" "#define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup3" "ac_cv_func_dup3" +if test "x$ac_cv_func_dup3" = xyes +then : + printf "%s\n" "#define HAVE_DUP3 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "execv" "ac_cv_func_execv" +if test "x$ac_cv_func_execv" = xyes +then : + printf "%s\n" "#define HAVE_EXECV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero" +if test "x$ac_cv_func_explicit_bzero" = xyes +then : + printf "%s\n" "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "explicit_memset" "ac_cv_func_explicit_memset" +if test "x$ac_cv_func_explicit_memset" = xyes +then : + printf "%s\n" "#define HAVE_EXPLICIT_MEMSET 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "faccessat" "ac_cv_func_faccessat" +if test "x$ac_cv_func_faccessat" = xyes +then : + printf "%s\n" "#define HAVE_FACCESSAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fchmod" "ac_cv_func_fchmod" +if test "x$ac_cv_func_fchmod" = xyes +then : + printf "%s\n" "#define HAVE_FCHMOD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fchmodat" "ac_cv_func_fchmodat" +if test "x$ac_cv_func_fchmodat" = xyes +then : + printf "%s\n" "#define HAVE_FCHMODAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fchown" "ac_cv_func_fchown" +if test "x$ac_cv_func_fchown" = xyes +then : + printf "%s\n" "#define HAVE_FCHOWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fchownat" "ac_cv_func_fchownat" +if test "x$ac_cv_func_fchownat" = xyes +then : + printf "%s\n" "#define HAVE_FCHOWNAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopendir" "ac_cv_func_fdopendir" +if test "x$ac_cv_func_fdopendir" = xyes +then : + printf "%s\n" "#define HAVE_FDOPENDIR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdwalk" "ac_cv_func_fdwalk" +if test "x$ac_cv_func_fdwalk" = xyes +then : + printf "%s\n" "#define HAVE_FDWALK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fexecve" "ac_cv_func_fexecve" +if test "x$ac_cv_func_fexecve" = xyes +then : + printf "%s\n" "#define HAVE_FEXECVE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fork" "ac_cv_func_fork" +if test "x$ac_cv_func_fork" = xyes +then : + printf "%s\n" "#define HAVE_FORK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fork1" "ac_cv_func_fork1" +if test "x$ac_cv_func_fork1" = xyes +then : + printf "%s\n" "#define HAVE_FORK1 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fpathconf" "ac_cv_func_fpathconf" +if test "x$ac_cv_func_fpathconf" = xyes +then : + printf "%s\n" "#define HAVE_FPATHCONF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fstatat" "ac_cv_func_fstatat" +if test "x$ac_cv_func_fstatat" = xyes +then : + printf "%s\n" "#define HAVE_FSTATAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ftime" "ac_cv_func_ftime" +if test "x$ac_cv_func_ftime" = xyes +then : + printf "%s\n" "#define HAVE_FTIME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ftruncate" "ac_cv_func_ftruncate" +if test "x$ac_cv_func_ftruncate" = xyes +then : + printf "%s\n" "#define HAVE_FTRUNCATE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "futimens" "ac_cv_func_futimens" +if test "x$ac_cv_func_futimens" = xyes +then : + printf "%s\n" "#define HAVE_FUTIMENS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "futimes" "ac_cv_func_futimes" +if test "x$ac_cv_func_futimes" = xyes +then : + printf "%s\n" "#define HAVE_FUTIMES 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "futimesat" "ac_cv_func_futimesat" +if test "x$ac_cv_func_futimesat" = xyes +then : + printf "%s\n" "#define HAVE_FUTIMESAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "gai_strerror" "ac_cv_func_gai_strerror" +if test "x$ac_cv_func_gai_strerror" = xyes +then : + printf "%s\n" "#define HAVE_GAI_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getegid" "ac_cv_func_getegid" +if test "x$ac_cv_func_getegid" = xyes +then : + printf "%s\n" "#define HAVE_GETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "geteuid" "ac_cv_func_geteuid" +if test "x$ac_cv_func_geteuid" = xyes +then : + printf "%s\n" "#define HAVE_GETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgid" "ac_cv_func_getgid" +if test "x$ac_cv_func_getgid" = xyes +then : + printf "%s\n" "#define HAVE_GETGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgrent" "ac_cv_func_getgrent" +if test "x$ac_cv_func_getgrent" = xyes +then : + printf "%s\n" "#define HAVE_GETGRENT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgrgid" "ac_cv_func_getgrgid" +if test "x$ac_cv_func_getgrgid" = xyes +then : + printf "%s\n" "#define HAVE_GETGRGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgrgid_r" "ac_cv_func_getgrgid_r" +if test "x$ac_cv_func_getgrgid_r" = xyes +then : + printf "%s\n" "#define HAVE_GETGRGID_R 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgrnam_r" "ac_cv_func_getgrnam_r" +if test "x$ac_cv_func_getgrnam_r" = xyes +then : + printf "%s\n" "#define HAVE_GETGRNAM_R 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgrouplist" "ac_cv_func_getgrouplist" +if test "x$ac_cv_func_getgrouplist" = xyes +then : + printf "%s\n" "#define HAVE_GETGROUPLIST 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getitimer" "ac_cv_func_getitimer" +if test "x$ac_cv_func_getitimer" = xyes +then : + printf "%s\n" "#define HAVE_GETITIMER 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + printf "%s\n" "#define HAVE_GETLOADAVG 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getlogin" "ac_cv_func_getlogin" +if test "x$ac_cv_func_getlogin" = xyes +then : + printf "%s\n" "#define HAVE_GETLOGIN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getlogin_r" "ac_cv_func_getlogin_r" +if test "x$ac_cv_func_getlogin_r" = xyes +then : + printf "%s\n" "#define HAVE_GETLOGIN_R 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getpeername" "ac_cv_func_getpeername" +if test "x$ac_cv_func_getpeername" = xyes +then : + printf "%s\n" "#define HAVE_GETPEERNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getpgid" "ac_cv_func_getpgid" +if test "x$ac_cv_func_getpgid" = xyes +then : + printf "%s\n" "#define HAVE_GETPGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getpid" "ac_cv_func_getpid" +if test "x$ac_cv_func_getpid" = xyes +then : + printf "%s\n" "#define HAVE_GETPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getppid" "ac_cv_func_getppid" +if test "x$ac_cv_func_getppid" = xyes +then : + printf "%s\n" "#define HAVE_GETPPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getpriority" "ac_cv_func_getpriority" +if test "x$ac_cv_func_getpriority" = xyes +then : + printf "%s\n" "#define HAVE_GETPRIORITY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "_getpty" "ac_cv_func__getpty" +if test "x$ac_cv_func__getpty" = xyes +then : + printf "%s\n" "#define HAVE__GETPTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getpwent" "ac_cv_func_getpwent" +if test "x$ac_cv_func_getpwent" = xyes +then : + printf "%s\n" "#define HAVE_GETPWENT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getpwnam_r" "ac_cv_func_getpwnam_r" +if test "x$ac_cv_func_getpwnam_r" = xyes +then : + printf "%s\n" "#define HAVE_GETPWNAM_R 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getpwuid" "ac_cv_func_getpwuid" +if test "x$ac_cv_func_getpwuid" = xyes +then : + printf "%s\n" "#define HAVE_GETPWUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getpwuid_r" "ac_cv_func_getpwuid_r" +if test "x$ac_cv_func_getpwuid_r" = xyes +then : + printf "%s\n" "#define HAVE_GETPWUID_R 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getresgid" "ac_cv_func_getresgid" +if test "x$ac_cv_func_getresgid" = xyes +then : + printf "%s\n" "#define HAVE_GETRESGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getresuid" "ac_cv_func_getresuid" +if test "x$ac_cv_func_getresuid" = xyes +then : + printf "%s\n" "#define HAVE_GETRESUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrusage" "ac_cv_func_getrusage" +if test "x$ac_cv_func_getrusage" = xyes +then : + printf "%s\n" "#define HAVE_GETRUSAGE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getsid" "ac_cv_func_getsid" +if test "x$ac_cv_func_getsid" = xyes +then : + printf "%s\n" "#define HAVE_GETSID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getspent" "ac_cv_func_getspent" +if test "x$ac_cv_func_getspent" = xyes +then : + printf "%s\n" "#define HAVE_GETSPENT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getspnam" "ac_cv_func_getspnam" +if test "x$ac_cv_func_getspnam" = xyes +then : + printf "%s\n" "#define HAVE_GETSPNAM 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getuid" "ac_cv_func_getuid" +if test "x$ac_cv_func_getuid" = xyes +then : + printf "%s\n" "#define HAVE_GETUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getwd" "ac_cv_func_getwd" +if test "x$ac_cv_func_getwd" = xyes +then : + printf "%s\n" "#define HAVE_GETWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "grantpt" "ac_cv_func_grantpt" +if test "x$ac_cv_func_grantpt" = xyes +then : + printf "%s\n" "#define HAVE_GRANTPT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "if_nameindex" "ac_cv_func_if_nameindex" +if test "x$ac_cv_func_if_nameindex" = xyes +then : + printf "%s\n" "#define HAVE_IF_NAMEINDEX 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "initgroups" "ac_cv_func_initgroups" +if test "x$ac_cv_func_initgroups" = xyes +then : + printf "%s\n" "#define HAVE_INITGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "kill" "ac_cv_func_kill" +if test "x$ac_cv_func_kill" = xyes +then : + printf "%s\n" "#define HAVE_KILL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "killpg" "ac_cv_func_killpg" +if test "x$ac_cv_func_killpg" = xyes +then : + printf "%s\n" "#define HAVE_KILLPG 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lchown" "ac_cv_func_lchown" +if test "x$ac_cv_func_lchown" = xyes +then : + printf "%s\n" "#define HAVE_LCHOWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "linkat" "ac_cv_func_linkat" +if test "x$ac_cv_func_linkat" = xyes +then : + printf "%s\n" "#define HAVE_LINKAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lockf" "ac_cv_func_lockf" +if test "x$ac_cv_func_lockf" = xyes +then : + printf "%s\n" "#define HAVE_LOCKF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lutimes" "ac_cv_func_lutimes" +if test "x$ac_cv_func_lutimes" = xyes +then : + printf "%s\n" "#define HAVE_LUTIMES 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "madvise" "ac_cv_func_madvise" +if test "x$ac_cv_func_madvise" = xyes +then : + printf "%s\n" "#define HAVE_MADVISE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mbrtowc" "ac_cv_func_mbrtowc" +if test "x$ac_cv_func_mbrtowc" = xyes +then : + printf "%s\n" "#define HAVE_MBRTOWC 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf "%s\n" "#define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkdirat" "ac_cv_func_mkdirat" +if test "x$ac_cv_func_mkdirat" = xyes +then : + printf "%s\n" "#define HAVE_MKDIRAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf "%s\n" "#define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifoat" "ac_cv_func_mkfifoat" +if test "x$ac_cv_func_mkfifoat" = xyes +then : + printf "%s\n" "#define HAVE_MKFIFOAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mknod" "ac_cv_func_mknod" +if test "x$ac_cv_func_mknod" = xyes +then : + printf "%s\n" "#define HAVE_MKNOD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mknodat" "ac_cv_func_mknodat" +if test "x$ac_cv_func_mknodat" = xyes +then : + printf "%s\n" "#define HAVE_MKNODAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktime" "ac_cv_func_mktime" +if test "x$ac_cv_func_mktime" = xyes +then : + printf "%s\n" "#define HAVE_MKTIME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" +if test "x$ac_cv_func_mmap" = xyes +then : + printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mremap" "ac_cv_func_mremap" +if test "x$ac_cv_func_mremap" = xyes +then : + printf "%s\n" "#define HAVE_MREMAP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "nice" "ac_cv_func_nice" +if test "x$ac_cv_func_nice" = xyes +then : + printf "%s\n" "#define HAVE_NICE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "openat" "ac_cv_func_openat" +if test "x$ac_cv_func_openat" = xyes +then : + printf "%s\n" "#define HAVE_OPENAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "opendir" "ac_cv_func_opendir" +if test "x$ac_cv_func_opendir" = xyes +then : + printf "%s\n" "#define HAVE_OPENDIR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pathconf" "ac_cv_func_pathconf" +if test "x$ac_cv_func_pathconf" = xyes +then : + printf "%s\n" "#define HAVE_PATHCONF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pause" "ac_cv_func_pause" +if test "x$ac_cv_func_pause" = xyes +then : + printf "%s\n" "#define HAVE_PAUSE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf "%s\n" "#define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe2" "ac_cv_func_pipe2" +if test "x$ac_cv_func_pipe2" = xyes +then : + printf "%s\n" "#define HAVE_PIPE2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "plock" "ac_cv_func_plock" +if test "x$ac_cv_func_plock" = xyes +then : + printf "%s\n" "#define HAVE_PLOCK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "poll" "ac_cv_func_poll" +if test "x$ac_cv_func_poll" = xyes +then : + printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ppoll" "ac_cv_func_ppoll" +if test "x$ac_cv_func_ppoll" = xyes +then : + printf "%s\n" "#define HAVE_PPOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_fadvise" "ac_cv_func_posix_fadvise" +if test "x$ac_cv_func_posix_fadvise" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_FADVISE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_fallocate" "ac_cv_func_posix_fallocate" +if test "x$ac_cv_func_posix_fallocate" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_FALLOCATE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_openpt" "ac_cv_func_posix_openpt" +if test "x$ac_cv_func_posix_openpt" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_OPENPT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnp" "ac_cv_func_posix_spawnp" +if test "x$ac_cv_func_posix_spawnp" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_SPAWNP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn_file_actions_addclosefrom_np" "ac_cv_func_posix_spawn_file_actions_addclosefrom_np" +if test "x$ac_cv_func_posix_spawn_file_actions_addclosefrom_np" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSEFROM_NP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pread" "ac_cv_func_pread" +if test "x$ac_cv_func_pread" = xyes +then : + printf "%s\n" "#define HAVE_PREAD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "preadv" "ac_cv_func_preadv" +if test "x$ac_cv_func_preadv" = xyes +then : + printf "%s\n" "#define HAVE_PREADV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "preadv2" "ac_cv_func_preadv2" +if test "x$ac_cv_func_preadv2" = xyes +then : + printf "%s\n" "#define HAVE_PREADV2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "process_vm_readv" "ac_cv_func_process_vm_readv" +if test "x$ac_cv_func_process_vm_readv" = xyes +then : + printf "%s\n" "#define HAVE_PROCESS_VM_READV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_cond_timedwait_relative_np" "ac_cv_func_pthread_cond_timedwait_relative_np" +if test "x$ac_cv_func_pthread_cond_timedwait_relative_np" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_condattr_setclock" "ac_cv_func_pthread_condattr_setclock" +if test "x$ac_cv_func_pthread_condattr_setclock" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_init" "ac_cv_func_pthread_init" +if test "x$ac_cv_func_pthread_init" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_INIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_kill" "ac_cv_func_pthread_kill" +if test "x$ac_cv_func_pthread_kill" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_KILL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_get_name_np" "ac_cv_func_pthread_get_name_np" +if test "x$ac_cv_func_pthread_get_name_np" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_GET_NAME_NP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_getname_np" "ac_cv_func_pthread_getname_np" +if test "x$ac_cv_func_pthread_getname_np" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_GETNAME_NP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_set_name_np" "ac_cv_func_pthread_set_name_np" +if test "x$ac_cv_func_pthread_set_name_np" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_SET_NAME_NP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_setname_np" "ac_cv_func_pthread_setname_np" +if test "x$ac_cv_func_pthread_setname_np" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_SETNAME_NP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pthread_getattr_np" "ac_cv_func_pthread_getattr_np" +if test "x$ac_cv_func_pthread_getattr_np" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_GETATTR_NP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ptsname" "ac_cv_func_ptsname" +if test "x$ac_cv_func_ptsname" = xyes +then : + printf "%s\n" "#define HAVE_PTSNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ptsname_r" "ac_cv_func_ptsname_r" +if test "x$ac_cv_func_ptsname_r" = xyes +then : + printf "%s\n" "#define HAVE_PTSNAME_R 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pwrite" "ac_cv_func_pwrite" +if test "x$ac_cv_func_pwrite" = xyes +then : + printf "%s\n" "#define HAVE_PWRITE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pwritev" "ac_cv_func_pwritev" +if test "x$ac_cv_func_pwritev" = xyes +then : + printf "%s\n" "#define HAVE_PWRITEV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pwritev2" "ac_cv_func_pwritev2" +if test "x$ac_cv_func_pwritev2" = xyes +then : + printf "%s\n" "#define HAVE_PWRITEV2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf "%s\n" "#define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlinkat" "ac_cv_func_readlinkat" +if test "x$ac_cv_func_readlinkat" = xyes +then : + printf "%s\n" "#define HAVE_READLINKAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readv" "ac_cv_func_readv" +if test "x$ac_cv_func_readv" = xyes +then : + printf "%s\n" "#define HAVE_READV 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf "%s\n" "#define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "renameat" "ac_cv_func_renameat" +if test "x$ac_cv_func_renameat" = xyes +then : + printf "%s\n" "#define HAVE_RENAMEAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "rtpSpawn" "ac_cv_func_rtpSpawn" +if test "x$ac_cv_func_rtpSpawn" = xyes +then : + printf "%s\n" "#define HAVE_RTPSPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sched_get_priority_max" "ac_cv_func_sched_get_priority_max" +if test "x$ac_cv_func_sched_get_priority_max" = xyes +then : + printf "%s\n" "#define HAVE_SCHED_GET_PRIORITY_MAX 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sched_rr_get_interval" "ac_cv_func_sched_rr_get_interval" +if test "x$ac_cv_func_sched_rr_get_interval" = xyes +then : + printf "%s\n" "#define HAVE_SCHED_RR_GET_INTERVAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sched_setaffinity" "ac_cv_func_sched_setaffinity" +if test "x$ac_cv_func_sched_setaffinity" = xyes +then : + printf "%s\n" "#define HAVE_SCHED_SETAFFINITY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sched_setparam" "ac_cv_func_sched_setparam" +if test "x$ac_cv_func_sched_setparam" = xyes +then : + printf "%s\n" "#define HAVE_SCHED_SETPARAM 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sched_setscheduler" "ac_cv_func_sched_setscheduler" +if test "x$ac_cv_func_sched_setscheduler" = xyes +then : + printf "%s\n" "#define HAVE_SCHED_SETSCHEDULER 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sem_clockwait" "ac_cv_func_sem_clockwait" +if test "x$ac_cv_func_sem_clockwait" = xyes +then : + printf "%s\n" "#define HAVE_SEM_CLOCKWAIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sem_getvalue" "ac_cv_func_sem_getvalue" +if test "x$ac_cv_func_sem_getvalue" = xyes +then : + printf "%s\n" "#define HAVE_SEM_GETVALUE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sem_open" "ac_cv_func_sem_open" +if test "x$ac_cv_func_sem_open" = xyes +then : + printf "%s\n" "#define HAVE_SEM_OPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sem_timedwait" "ac_cv_func_sem_timedwait" +if test "x$ac_cv_func_sem_timedwait" = xyes +then : + printf "%s\n" "#define HAVE_SEM_TIMEDWAIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sem_unlink" "ac_cv_func_sem_unlink" +if test "x$ac_cv_func_sem_unlink" = xyes +then : + printf "%s\n" "#define HAVE_SEM_UNLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sendfile" "ac_cv_func_sendfile" +if test "x$ac_cv_func_sendfile" = xyes +then : + printf "%s\n" "#define HAVE_SENDFILE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf "%s\n" "#define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf "%s\n" "#define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setgid" "ac_cv_func_setgid" +if test "x$ac_cv_func_setgid" = xyes +then : + printf "%s\n" "#define HAVE_SETGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sethostname" "ac_cv_func_sethostname" +if test "x$ac_cv_func_sethostname" = xyes +then : + printf "%s\n" "#define HAVE_SETHOSTNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setitimer" "ac_cv_func_setitimer" +if test "x$ac_cv_func_setitimer" = xyes +then : + printf "%s\n" "#define HAVE_SETITIMER 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" +if test "x$ac_cv_func_setlocale" = xyes +then : + printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setpgid" "ac_cv_func_setpgid" +if test "x$ac_cv_func_setpgid" = xyes +then : + printf "%s\n" "#define HAVE_SETPGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setpgrp" "ac_cv_func_setpgrp" +if test "x$ac_cv_func_setpgrp" = xyes +then : + printf "%s\n" "#define HAVE_SETPGRP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setpriority" "ac_cv_func_setpriority" +if test "x$ac_cv_func_setpriority" = xyes +then : + printf "%s\n" "#define HAVE_SETPRIORITY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf "%s\n" "#define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setresgid" "ac_cv_func_setresgid" +if test "x$ac_cv_func_setresgid" = xyes +then : + printf "%s\n" "#define HAVE_SETRESGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setresuid" "ac_cv_func_setresuid" +if test "x$ac_cv_func_setresuid" = xyes +then : + printf "%s\n" "#define HAVE_SETRESUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf "%s\n" "#define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setsid" "ac_cv_func_setsid" +if test "x$ac_cv_func_setsid" = xyes +then : + printf "%s\n" "#define HAVE_SETSID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setuid" "ac_cv_func_setuid" +if test "x$ac_cv_func_setuid" = xyes +then : + printf "%s\n" "#define HAVE_SETUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf "%s\n" "#define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "shutdown" "ac_cv_func_shutdown" +if test "x$ac_cv_func_shutdown" = xyes +then : + printf "%s\n" "#define HAVE_SHUTDOWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaltstack" "ac_cv_func_sigaltstack" +if test "x$ac_cv_func_sigaltstack" = xyes +then : + printf "%s\n" "#define HAVE_SIGALTSTACK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigfillset" "ac_cv_func_sigfillset" +if test "x$ac_cv_func_sigfillset" = xyes +then : + printf "%s\n" "#define HAVE_SIGFILLSET 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "siginterrupt" "ac_cv_func_siginterrupt" +if test "x$ac_cv_func_siginterrupt" = xyes +then : + printf "%s\n" "#define HAVE_SIGINTERRUPT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigpending" "ac_cv_func_sigpending" +if test "x$ac_cv_func_sigpending" = xyes +then : + printf "%s\n" "#define HAVE_SIGPENDING 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigrelse" "ac_cv_func_sigrelse" +if test "x$ac_cv_func_sigrelse" = xyes +then : + printf "%s\n" "#define HAVE_SIGRELSE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigtimedwait" "ac_cv_func_sigtimedwait" +if test "x$ac_cv_func_sigtimedwait" = xyes +then : + printf "%s\n" "#define HAVE_SIGTIMEDWAIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigwait" "ac_cv_func_sigwait" +if test "x$ac_cv_func_sigwait" = xyes +then : + printf "%s\n" "#define HAVE_SIGWAIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigwaitinfo" "ac_cv_func_sigwaitinfo" +if test "x$ac_cv_func_sigwaitinfo" = xyes +then : + printf "%s\n" "#define HAVE_SIGWAITINFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" +if test "x$ac_cv_func_snprintf" = xyes +then : + printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "splice" "ac_cv_func_splice" +if test "x$ac_cv_func_splice" = xyes +then : + printf "%s\n" "#define HAVE_SPLICE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" +if test "x$ac_cv_func_strftime" = xyes +then : + printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy" +if test "x$ac_cv_func_strlcpy" = xyes +then : + printf "%s\n" "#define HAVE_STRLCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf "%s\n" "#define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "symlinkat" "ac_cv_func_symlinkat" +if test "x$ac_cv_func_symlinkat" = xyes +then : + printf "%s\n" "#define HAVE_SYMLINKAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sync" "ac_cv_func_sync" +if test "x$ac_cv_func_sync" = xyes +then : + printf "%s\n" "#define HAVE_SYNC 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sysconf" "ac_cv_func_sysconf" +if test "x$ac_cv_func_sysconf" = xyes +then : + printf "%s\n" "#define HAVE_SYSCONF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "tcgetpgrp" "ac_cv_func_tcgetpgrp" +if test "x$ac_cv_func_tcgetpgrp" = xyes +then : + printf "%s\n" "#define HAVE_TCGETPGRP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "tcsetpgrp" "ac_cv_func_tcsetpgrp" +if test "x$ac_cv_func_tcsetpgrp" = xyes +then : + printf "%s\n" "#define HAVE_TCSETPGRP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "tempnam" "ac_cv_func_tempnam" +if test "x$ac_cv_func_tempnam" = xyes +then : + printf "%s\n" "#define HAVE_TEMPNAM 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "timegm" "ac_cv_func_timegm" +if test "x$ac_cv_func_timegm" = xyes +then : + printf "%s\n" "#define HAVE_TIMEGM 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "times" "ac_cv_func_times" +if test "x$ac_cv_func_times" = xyes +then : + printf "%s\n" "#define HAVE_TIMES 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "tmpfile" "ac_cv_func_tmpfile" +if test "x$ac_cv_func_tmpfile" = xyes +then : + printf "%s\n" "#define HAVE_TMPFILE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "tmpnam" "ac_cv_func_tmpnam" +if test "x$ac_cv_func_tmpnam" = xyes +then : + printf "%s\n" "#define HAVE_TMPNAM 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "tmpnam_r" "ac_cv_func_tmpnam_r" +if test "x$ac_cv_func_tmpnam_r" = xyes +then : + printf "%s\n" "#define HAVE_TMPNAM_R 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "truncate" "ac_cv_func_truncate" +if test "x$ac_cv_func_truncate" = xyes +then : + printf "%s\n" "#define HAVE_TRUNCATE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname_r" "ac_cv_func_ttyname_r" +if test "x$ac_cv_func_ttyname_r" = xyes +then : + printf "%s\n" "#define HAVE_TTYNAME_R 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf "%s\n" "#define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "uname" "ac_cv_func_uname" +if test "x$ac_cv_func_uname" = xyes +then : + printf "%s\n" "#define HAVE_UNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "unlinkat" "ac_cv_func_unlinkat" +if test "x$ac_cv_func_unlinkat" = xyes +then : + printf "%s\n" "#define HAVE_UNLINKAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "unlockpt" "ac_cv_func_unlockpt" +if test "x$ac_cv_func_unlockpt" = xyes +then : + printf "%s\n" "#define HAVE_UNLOCKPT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "utimensat" "ac_cv_func_utimensat" +if test "x$ac_cv_func_utimensat" = xyes +then : + printf "%s\n" "#define HAVE_UTIMENSAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes" +if test "x$ac_cv_func_utimes" = xyes +then : + printf "%s\n" "#define HAVE_UTIMES 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "vfork" "ac_cv_func_vfork" +if test "x$ac_cv_func_vfork" = xyes +then : + printf "%s\n" "#define HAVE_VFORK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait" "ac_cv_func_wait" +if test "x$ac_cv_func_wait" = xyes +then : + printf "%s\n" "#define HAVE_WAIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf "%s\n" "#define HAVE_WAIT3 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait4" "ac_cv_func_wait4" +if test "x$ac_cv_func_wait4" = xyes +then : + printf "%s\n" "#define HAVE_WAIT4 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "waitid" "ac_cv_func_waitid" +if test "x$ac_cv_func_waitid" = xyes +then : + printf "%s\n" "#define HAVE_WAITID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf "%s\n" "#define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wcscoll" "ac_cv_func_wcscoll" +if test "x$ac_cv_func_wcscoll" = xyes +then : + printf "%s\n" "#define HAVE_WCSCOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wcsftime" "ac_cv_func_wcsftime" +if test "x$ac_cv_func_wcsftime" = xyes +then : + printf "%s\n" "#define HAVE_WCSFTIME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wcsxfrm" "ac_cv_func_wcsxfrm" +if test "x$ac_cv_func_wcsxfrm" = xyes +then : + printf "%s\n" "#define HAVE_WCSXFRM 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wmemcmp" "ac_cv_func_wmemcmp" +if test "x$ac_cv_func_wmemcmp" = xyes +then : + printf "%s\n" "#define HAVE_WMEMCMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "writev" "ac_cv_func_writev" +if test "x$ac_cv_func_writev" = xyes +then : + printf "%s\n" "#define HAVE_WRITEV 1" >>confdefs.h + +fi + + +# os.statx uses Linux's statx function. AIX also has a function named statx, +# but it's unrelated. Check only on Linux (including Android). +case $ac_sys_system in #( + Linux*) : + ac_fn_c_check_func "$LINENO" "statx" "ac_cv_func_statx" +if test "x$ac_cv_func_statx" = xyes +then : + printf "%s\n" "#define HAVE_STATX 1" >>confdefs.h + +fi + + ;; #( + *) : + ;; +esac + +# Force lchmod off for Linux. Linux disallows changing the mode of symbolic +# links. Some libc implementations have a stub lchmod implementation that always +# returns an error. +if test "$MACHDEP" != linux; then + ac_fn_c_check_func "$LINENO" "lchmod" "ac_cv_func_lchmod" +if test "x$ac_cv_func_lchmod" = xyes +then : + printf "%s\n" "#define HAVE_LCHMOD 1" >>confdefs.h + +fi + +fi + +# iOS defines some system methods that can be linked (so they are +# found by configure), but either raise a compilation error (because the +# header definition prevents usage - autoconf doesn't use the headers), or +# raise an error if used at runtime. Force these symbols off. +if test "$ac_sys_system" != "iOS" ; then + ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy" +if test "x$ac_cv_func_getentropy" = xyes +then : + printf "%s\n" "#define HAVE_GETENTROPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "system" "ac_cv_func_system" +if test "x$ac_cv_func_system" = xyes +then : + printf "%s\n" "#define HAVE_SYSTEM 1" >>confdefs.h + +fi + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in #( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See 'config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + +ac_fn_check_decl "$LINENO" "dirfd" "ac_cv_have_decl_dirfd" "#include + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dirfd" = xyes +then : + +printf "%s\n" "#define HAVE_DIRFD 1" >>confdefs.h + +fi + +# For some functions, having a definition is not sufficient, since +# we want to take their address. + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for chroot" >&5 +printf %s "checking for chroot... " >&6; } +if test ${ac_cv_func_chroot+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=chroot + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_chroot=yes +else case e in #( + e) ac_cv_func_chroot=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chroot" >&5 +printf "%s\n" "$ac_cv_func_chroot" >&6; } + if test "x$ac_cv_func_chroot" = xyes +then : + +printf "%s\n" "#define HAVE_CHROOT 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for link" >&5 +printf %s "checking for link... " >&6; } +if test ${ac_cv_func_link+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=link + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_link=yes +else case e in #( + e) ac_cv_func_link=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_link" >&5 +printf "%s\n" "$ac_cv_func_link" >&6; } + if test "x$ac_cv_func_link" = xyes +then : + +printf "%s\n" "#define HAVE_LINK 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for symlink" >&5 +printf %s "checking for symlink... " >&6; } +if test ${ac_cv_func_symlink+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=symlink + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_symlink=yes +else case e in #( + e) ac_cv_func_symlink=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_symlink" >&5 +printf "%s\n" "$ac_cv_func_symlink" >&6; } + if test "x$ac_cv_func_symlink" = xyes +then : + +printf "%s\n" "#define HAVE_SYMLINK 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fchdir" >&5 +printf %s "checking for fchdir... " >&6; } +if test ${ac_cv_func_fchdir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=fchdir + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_fchdir=yes +else case e in #( + e) ac_cv_func_fchdir=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fchdir" >&5 +printf "%s\n" "$ac_cv_func_fchdir" >&6; } + if test "x$ac_cv_func_fchdir" = xyes +then : + +printf "%s\n" "#define HAVE_FCHDIR 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fsync" >&5 +printf %s "checking for fsync... " >&6; } +if test ${ac_cv_func_fsync+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=fsync + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_fsync=yes +else case e in #( + e) ac_cv_func_fsync=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fsync" >&5 +printf "%s\n" "$ac_cv_func_fsync" >&6; } + if test "x$ac_cv_func_fsync" = xyes +then : + +printf "%s\n" "#define HAVE_FSYNC 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fdatasync" >&5 +printf %s "checking for fdatasync... " >&6; } +if test ${ac_cv_func_fdatasync+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=fdatasync + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_fdatasync=yes +else case e in #( + e) ac_cv_func_fdatasync=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fdatasync" >&5 +printf "%s\n" "$ac_cv_func_fdatasync" >&6; } + if test "x$ac_cv_func_fdatasync" = xyes +then : + +printf "%s\n" "#define HAVE_FDATASYNC 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for epoll_create" >&5 +printf %s "checking for epoll_create... " >&6; } +if test ${ac_cv_func_epoll_create+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=epoll_create + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_epoll_create=yes +else case e in #( + e) ac_cv_func_epoll_create=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_epoll_create" >&5 +printf "%s\n" "$ac_cv_func_epoll_create" >&6; } + if test "x$ac_cv_func_epoll_create" = xyes +then : + +printf "%s\n" "#define HAVE_EPOLL 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for epoll_create1" >&5 +printf %s "checking for epoll_create1... " >&6; } +if test ${ac_cv_func_epoll_create1+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=epoll_create1 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_epoll_create1=yes +else case e in #( + e) ac_cv_func_epoll_create1=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_epoll_create1" >&5 +printf "%s\n" "$ac_cv_func_epoll_create1" >&6; } + if test "x$ac_cv_func_epoll_create1" = xyes +then : + +printf "%s\n" "#define HAVE_EPOLL_CREATE1 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kqueue" >&5 +printf %s "checking for kqueue... " >&6; } +if test ${ac_cv_func_kqueue+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +void *x=kqueue + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_kqueue=yes +else case e in #( + e) ac_cv_func_kqueue=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_kqueue" >&5 +printf "%s\n" "$ac_cv_func_kqueue" >&6; } + if test "x$ac_cv_func_kqueue" = xyes +then : + +printf "%s\n" "#define HAVE_KQUEUE 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for prlimit" >&5 +printf %s "checking for prlimit... " >&6; } +if test ${ac_cv_func_prlimit+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +void *x=prlimit + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_prlimit=yes +else case e in #( + e) ac_cv_func_prlimit=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_prlimit" >&5 +printf "%s\n" "$ac_cv_func_prlimit" >&6; } + if test "x$ac_cv_func_prlimit" = xyes +then : + +printf "%s\n" "#define HAVE_PRLIMIT 1" >>confdefs.h + +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _dyld_shared_cache_contains_path" >&5 +printf %s "checking for _dyld_shared_cache_contains_path... " >&6; } +if test ${ac_cv_func__dyld_shared_cache_contains_path+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=_dyld_shared_cache_contains_path + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func__dyld_shared_cache_contains_path=yes +else case e in #( + e) ac_cv_func__dyld_shared_cache_contains_path=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func__dyld_shared_cache_contains_path" >&5 +printf "%s\n" "$ac_cv_func__dyld_shared_cache_contains_path" >&6; } + if test "x$ac_cv_func__dyld_shared_cache_contains_path" = xyes +then : + +printf "%s\n" "#define HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH 1" >>confdefs.h + +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for memfd_create" >&5 +printf %s "checking for memfd_create... " >&6; } +if test ${ac_cv_func_memfd_create+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_SYS_MMAN_H +#include +#endif +#ifdef HAVE_SYS_MEMFD_H +#include +#endif + +int +main (void) +{ +void *x=memfd_create + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_memfd_create=yes +else case e in #( + e) ac_cv_func_memfd_create=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memfd_create" >&5 +printf "%s\n" "$ac_cv_func_memfd_create" >&6; } + if test "x$ac_cv_func_memfd_create" = xyes +then : + +printf "%s\n" "#define HAVE_MEMFD_CREATE 1" >>confdefs.h + +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for eventfd" >&5 +printf %s "checking for eventfd... " >&6; } +if test ${ac_cv_func_eventfd+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_SYS_EVENTFD_H +#include +#endif + +int +main (void) +{ +void *x=eventfd + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_eventfd=yes +else case e in #( + e) ac_cv_func_eventfd=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_eventfd" >&5 +printf "%s\n" "$ac_cv_func_eventfd" >&6; } + if test "x$ac_cv_func_eventfd" = xyes +then : + +printf "%s\n" "#define HAVE_EVENTFD 1" >>confdefs.h + +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for timerfd_create" >&5 +printf %s "checking for timerfd_create... " >&6; } +if test ${ac_cv_func_timerfd_create+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_SYS_TIMERFD_H +#include +#endif + +int +main (void) +{ +void *x=timerfd_create + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_timerfd_create=yes +else case e in #( + e) ac_cv_func_timerfd_create=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_timerfd_create" >&5 +printf "%s\n" "$ac_cv_func_timerfd_create" >&6; } + if test "x$ac_cv_func_timerfd_create" = xyes +then : + +printf "%s\n" "#define HAVE_TIMERFD_CREATE 1" >>confdefs.h + +fi + + + + +# On some systems (eg. FreeBSD 5), we would find a definition of the +# functions ctermid_r, setgroups in the library, but no prototype +# (e.g. because we use _XOPEN_SOURCE). See whether we can take their +# address to avoid compiler warnings and potential miscompilations +# because of the missing prototypes. + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ctermid_r" >&5 +printf %s "checking for ctermid_r... " >&6; } +if test ${ac_cv_func_ctermid_r+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=ctermid_r + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_ctermid_r=yes +else case e in #( + e) ac_cv_func_ctermid_r=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_ctermid_r" >&5 +printf "%s\n" "$ac_cv_func_ctermid_r" >&6; } + if test "x$ac_cv_func_ctermid_r" = xyes +then : + +printf "%s\n" "#define HAVE_CTERMID_R 1" >>confdefs.h + +fi + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flock declaration" >&5 +printf %s "checking for flock declaration... " >&6; } +if test ${ac_cv_flock_decl+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void* p = flock + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_flock_decl=yes +else case e in #( + e) ac_cv_flock_decl=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_flock_decl" >&5 +printf "%s\n" "$ac_cv_flock_decl" >&6; } +if test "x$ac_cv_flock_decl" = xyes +then : + + for ac_func in flock +do : + ac_fn_c_check_func "$LINENO" "flock" "ac_cv_func_flock" +if test "x$ac_cv_func_flock" = xyes +then : + printf "%s\n" "#define HAVE_FLOCK 1" >>confdefs.h + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flock in -lbsd" >&5 +printf %s "checking for flock in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_flock+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char flock (void); +int +main (void) +{ +return flock (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_flock=yes +else case e in #( + e) ac_cv_lib_bsd_flock=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_flock" >&5 +printf "%s\n" "$ac_cv_lib_bsd_flock" >&6; } +if test "x$ac_cv_lib_bsd_flock" = xyes +then : + FCNTL_LIBS="-lbsd" +fi + ;; +esac +fi + +done +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpagesize" >&5 +printf %s "checking for getpagesize... " >&6; } +if test ${ac_cv_func_getpagesize+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=getpagesize + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_getpagesize=yes +else case e in #( + e) ac_cv_func_getpagesize=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpagesize" >&5 +printf "%s\n" "$ac_cv_func_getpagesize" >&6; } + if test "x$ac_cv_func_getpagesize" = xyes +then : + +printf "%s\n" "#define HAVE_GETPAGESIZE 1" >>confdefs.h + +fi + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken unsetenv" >&5 +printf %s "checking for broken unsetenv... " >&6; } +if test ${ac_cv_broken_unsetenv+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +int res = unsetenv("DUMMY") + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_broken_unsetenv=no +else case e in #( + e) ac_cv_broken_unsetenv=yes + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_unsetenv" >&5 +printf "%s\n" "$ac_cv_broken_unsetenv" >&6; } +if test "x$ac_cv_broken_unsetenv" = xyes +then : + + +printf "%s\n" "#define HAVE_BROKEN_UNSETENV 1" >>confdefs.h + + +fi + +for ac_prog in true +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_TRUE+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$TRUE"; then + ac_cv_prog_TRUE="$TRUE" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_TRUE="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +TRUE=$ac_cv_prog_TRUE +if test -n "$TRUE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TRUE" >&5 +printf "%s\n" "$TRUE" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$TRUE" && break +done +test -n "$TRUE" || TRUE="/bin/true" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_aton in -lc" >&5 +printf %s "checking for inet_aton in -lc... " >&6; } +if test ${ac_cv_lib_c_inet_aton+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char inet_aton (void); +int +main (void) +{ +return inet_aton (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_c_inet_aton=yes +else case e in #( + e) ac_cv_lib_c_inet_aton=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_inet_aton" >&5 +printf "%s\n" "$ac_cv_lib_c_inet_aton" >&6; } +if test "x$ac_cv_lib_c_inet_aton" = xyes +then : + $ac_cv_prog_TRUE +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_aton in -lresolv" >&5 +printf %s "checking for inet_aton in -lresolv... " >&6; } +if test ${ac_cv_lib_resolv_inet_aton+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lresolv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char inet_aton (void); +int +main (void) +{ +return inet_aton (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_resolv_inet_aton=yes +else case e in #( + e) ac_cv_lib_resolv_inet_aton=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_inet_aton" >&5 +printf "%s\n" "$ac_cv_lib_resolv_inet_aton" >&6; } +if test "x$ac_cv_lib_resolv_inet_aton" = xyes +then : + SOCKET_LIBS="-lresolv" +fi + + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hstrerror in -lc" >&5 +printf %s "checking for hstrerror in -lc... " >&6; } +if test ${ac_cv_lib_c_hstrerror+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char hstrerror (void); +int +main (void) +{ +return hstrerror (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_c_hstrerror=yes +else case e in #( + e) ac_cv_lib_c_hstrerror=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_hstrerror" >&5 +printf "%s\n" "$ac_cv_lib_c_hstrerror" >&6; } +if test "x$ac_cv_lib_c_hstrerror" = xyes +then : + $ac_cv_prog_TRUE +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hstrerror in -lresolv" >&5 +printf %s "checking for hstrerror in -lresolv... " >&6; } +if test ${ac_cv_lib_resolv_hstrerror+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lresolv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char hstrerror (void); +int +main (void) +{ +return hstrerror (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_resolv_hstrerror=yes +else case e in #( + e) ac_cv_lib_resolv_hstrerror=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_hstrerror" >&5 +printf "%s\n" "$ac_cv_lib_resolv_hstrerror" >&6; } +if test "x$ac_cv_lib_resolv_hstrerror" = xyes +then : + SOCKET_LIBS="-lresolv" +fi + + ;; +esac +fi + + +# On Tru64, chflags seems to be present, but calling it will +# exit Python +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for chflags" >&5 +printf %s "checking for chflags... " >&6; } +if test ${ac_cv_have_chflags+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_have_chflags=cross +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +int main(int argc, char *argv[]) +{ + if(chflags(argv[0], 0) != 0) + return 1; + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_have_chflags=yes +else case e in #( + e) ac_cv_have_chflags=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_chflags" >&5 +printf "%s\n" "$ac_cv_have_chflags" >&6; } +if test "$ac_cv_have_chflags" = cross ; then + ac_fn_c_check_func "$LINENO" "chflags" "ac_cv_func_chflags" +if test "x$ac_cv_func_chflags" = xyes +then : + ac_cv_have_chflags="yes" +else case e in #( + e) ac_cv_have_chflags="no" ;; +esac +fi + +fi +if test "$ac_cv_have_chflags" = yes ; then + +printf "%s\n" "#define HAVE_CHFLAGS 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lchflags" >&5 +printf %s "checking for lchflags... " >&6; } +if test ${ac_cv_have_lchflags+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_have_lchflags=cross +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +int main(int argc, char *argv[]) +{ + if(lchflags(argv[0], 0) != 0) + return 1; + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_have_lchflags=yes +else case e in #( + e) ac_cv_have_lchflags=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_lchflags" >&5 +printf "%s\n" "$ac_cv_have_lchflags" >&6; } +if test "$ac_cv_have_lchflags" = cross ; then + ac_fn_c_check_func "$LINENO" "lchflags" "ac_cv_func_lchflags" +if test "x$ac_cv_func_lchflags" = xyes +then : + ac_cv_have_lchflags="yes" +else case e in #( + e) ac_cv_have_lchflags="no" ;; +esac +fi + +fi +if test "$ac_cv_have_lchflags" = yes ; then + +printf "%s\n" "#define HAVE_LCHFLAGS 1" >>confdefs.h + +fi + + + + + + + if test "$ac_sys_system" = "Emscripten" -a -z "$ZLIB_CFLAGS" -a -z "$ZLIB_LIBS" +then : + + ZLIB_CFLAGS="-sUSE_ZLIB" + ZLIB_LIBS="-sUSE_ZLIB" + +fi + + + + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zlib >= 1.2.2.1" >&5 +printf %s "checking for zlib >= 1.2.2.1... " >&6; } + +if test -n "$ZLIB_CFLAGS"; then + pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.2.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.2.1") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib >= 1.2.2.1" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$ZLIB_LIBS"; then + pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.2.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.2.1") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib >= 1.2.2.1" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "zlib >= 1.2.2.1" 2>&1` + else + ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "zlib >= 1.2.2.1" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$ZLIB_PKG_ERRORS" >&5 + + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS" + LIBS="$LIBS $ZLIB_LIBS" + for ac_header in zlib.h +do : + ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes +then : + printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h + + py_check_lib_save_LIBS=$LIBS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5 +printf %s "checking for gzread in -lz... " >&6; } +if test ${ac_cv_lib_z_gzread+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gzread (void); +int +main (void) +{ +return gzread (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_z_gzread=yes +else case e in #( + e) ac_cv_lib_z_gzread=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzread" >&5 +printf "%s\n" "$ac_cv_lib_z_gzread" >&6; } +if test "x$ac_cv_lib_z_gzread" = xyes +then : + have_zlib=yes +else case e in #( + e) have_zlib=no ;; +esac +fi + +LIBS=$py_check_lib_save_LIBS + + +else case e in #( + e) have_zlib=no ;; +esac +fi + +done + if test "x$have_zlib" = xyes +then : + + ZLIB_CFLAGS=${ZLIB_CFLAGS-""} + ZLIB_LIBS=${ZLIB_LIBS-"-lz"} + py_check_lib_save_LIBS=$LIBS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inflateCopy in -lz" >&5 +printf %s "checking for inflateCopy in -lz... " >&6; } +if test ${ac_cv_lib_z_inflateCopy+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char inflateCopy (void); +int +main (void) +{ +return inflateCopy (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_z_inflateCopy=yes +else case e in #( + e) ac_cv_lib_z_inflateCopy=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateCopy" >&5 +printf "%s\n" "$ac_cv_lib_z_inflateCopy" >&6; } +if test "x$ac_cv_lib_z_inflateCopy" = xyes +then : + printf "%s\n" "#define HAVE_ZLIB_COPY 1" >>confdefs.h + +fi + +LIBS=$py_check_lib_save_LIBS + + +fi + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS" + LIBS="$LIBS $ZLIB_LIBS" + for ac_header in zlib.h +do : + ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes +then : + printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h + + py_check_lib_save_LIBS=$LIBS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5 +printf %s "checking for gzread in -lz... " >&6; } +if test ${ac_cv_lib_z_gzread+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gzread (void); +int +main (void) +{ +return gzread (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_z_gzread=yes +else case e in #( + e) ac_cv_lib_z_gzread=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzread" >&5 +printf "%s\n" "$ac_cv_lib_z_gzread" >&6; } +if test "x$ac_cv_lib_z_gzread" = xyes +then : + have_zlib=yes +else case e in #( + e) have_zlib=no ;; +esac +fi + +LIBS=$py_check_lib_save_LIBS + + +else case e in #( + e) have_zlib=no ;; +esac +fi + +done + if test "x$have_zlib" = xyes +then : + + ZLIB_CFLAGS=${ZLIB_CFLAGS-""} + ZLIB_LIBS=${ZLIB_LIBS-"-lz"} + py_check_lib_save_LIBS=$LIBS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inflateCopy in -lz" >&5 +printf %s "checking for inflateCopy in -lz... " >&6; } +if test ${ac_cv_lib_z_inflateCopy+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char inflateCopy (void); +int +main (void) +{ +return inflateCopy (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_z_inflateCopy=yes +else case e in #( + e) ac_cv_lib_z_inflateCopy=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateCopy" >&5 +printf "%s\n" "$ac_cv_lib_z_inflateCopy" >&6; } +if test "x$ac_cv_lib_z_inflateCopy" = xyes +then : + printf "%s\n" "#define HAVE_ZLIB_COPY 1" >>confdefs.h + +fi + +LIBS=$py_check_lib_save_LIBS + + +fi + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +else + ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS + ZLIB_LIBS=$pkg_cv_ZLIB_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + have_zlib=yes + printf "%s\n" "#define HAVE_ZLIB_COPY 1" >>confdefs.h + + +fi + +if test "x$have_zlib" = xyes +then : + + BINASCII_CFLAGS="-DUSE_ZLIB_CRC32 $ZLIB_CFLAGS" + BINASCII_LIBS="$ZLIB_LIBS" + +fi + + + + + if test "$ac_sys_system" = "Emscripten" -a -z "$BZIP2_CFLAGS" -a -z "$BZIP2_LIBS" +then : + + BZIP2_CFLAGS="-sUSE_BZIP2" + BZIP2_LIBS="-sUSE_BZIP2" + +fi + + + + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bzip2" >&5 +printf %s "checking for bzip2... " >&6; } + +if test -n "$BZIP2_CFLAGS"; then + pkg_cv_BZIP2_CFLAGS="$BZIP2_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bzip2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "bzip2") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_BZIP2_CFLAGS=`$PKG_CONFIG --cflags "bzip2" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$BZIP2_LIBS"; then + pkg_cv_BZIP2_LIBS="$BZIP2_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bzip2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "bzip2") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_BZIP2_LIBS=`$PKG_CONFIG --libs "bzip2" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + BZIP2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "bzip2" 2>&1` + else + BZIP2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "bzip2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$BZIP2_PKG_ERRORS" >&5 + + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $BZIP2_CFLAGS" + LIBS="$LIBS $BZIP2_LIBS" + for ac_header in bzlib.h +do : + ac_fn_c_check_header_compile "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default" +if test "x$ac_cv_header_bzlib_h" = xyes +then : + printf "%s\n" "#define HAVE_BZLIB_H 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzCompress in -lbz2" >&5 +printf %s "checking for BZ2_bzCompress in -lbz2... " >&6; } +if test ${ac_cv_lib_bz2_BZ2_bzCompress+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbz2 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char BZ2_bzCompress (void); +int +main (void) +{ +return BZ2_bzCompress (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bz2_BZ2_bzCompress=yes +else case e in #( + e) ac_cv_lib_bz2_BZ2_bzCompress=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzCompress" >&5 +printf "%s\n" "$ac_cv_lib_bz2_BZ2_bzCompress" >&6; } +if test "x$ac_cv_lib_bz2_BZ2_bzCompress" = xyes +then : + have_bzip2=yes +else case e in #( + e) have_bzip2=no ;; +esac +fi + + +else case e in #( + e) have_bzip2=no ;; +esac +fi + +done + if test "x$have_bzip2" = xyes +then : + + BZIP2_CFLAGS=${BZIP2_CFLAGS-""} + BZIP2_LIBS=${BZIP2_LIBS-"-lbz2"} + +fi + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $BZIP2_CFLAGS" + LIBS="$LIBS $BZIP2_LIBS" + for ac_header in bzlib.h +do : + ac_fn_c_check_header_compile "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default" +if test "x$ac_cv_header_bzlib_h" = xyes +then : + printf "%s\n" "#define HAVE_BZLIB_H 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzCompress in -lbz2" >&5 +printf %s "checking for BZ2_bzCompress in -lbz2... " >&6; } +if test ${ac_cv_lib_bz2_BZ2_bzCompress+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbz2 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char BZ2_bzCompress (void); +int +main (void) +{ +return BZ2_bzCompress (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bz2_BZ2_bzCompress=yes +else case e in #( + e) ac_cv_lib_bz2_BZ2_bzCompress=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzCompress" >&5 +printf "%s\n" "$ac_cv_lib_bz2_BZ2_bzCompress" >&6; } +if test "x$ac_cv_lib_bz2_BZ2_bzCompress" = xyes +then : + have_bzip2=yes +else case e in #( + e) have_bzip2=no ;; +esac +fi + + +else case e in #( + e) have_bzip2=no ;; +esac +fi + +done + if test "x$have_bzip2" = xyes +then : + + BZIP2_CFLAGS=${BZIP2_CFLAGS-""} + BZIP2_LIBS=${BZIP2_LIBS-"-lbz2"} + +fi + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +else + BZIP2_CFLAGS=$pkg_cv_BZIP2_CFLAGS + BZIP2_LIBS=$pkg_cv_BZIP2_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_bzip2=yes +fi + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for liblzma" >&5 +printf %s "checking for liblzma... " >&6; } + +if test -n "$LIBLZMA_CFLAGS"; then + pkg_cv_LIBLZMA_CFLAGS="$LIBLZMA_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblzma\""; } >&5 + ($PKG_CONFIG --exists --print-errors "liblzma") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBLZMA_CFLAGS=`$PKG_CONFIG --cflags "liblzma" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBLZMA_LIBS"; then + pkg_cv_LIBLZMA_LIBS="$LIBLZMA_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblzma\""; } >&5 + ($PKG_CONFIG --exists --print-errors "liblzma") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBLZMA_LIBS=`$PKG_CONFIG --libs "liblzma" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBLZMA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "liblzma" 2>&1` + else + LIBLZMA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "liblzma" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBLZMA_PKG_ERRORS" >&5 + + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBLZMA_CFLAGS" + LIBS="$LIBS $LIBLZMA_LIBS" + for ac_header in lzma.h +do : + ac_fn_c_check_header_compile "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default" +if test "x$ac_cv_header_lzma_h" = xyes +then : + printf "%s\n" "#define HAVE_LZMA_H 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lzma_easy_encoder in -llzma" >&5 +printf %s "checking for lzma_easy_encoder in -llzma... " >&6; } +if test ${ac_cv_lib_lzma_lzma_easy_encoder+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-llzma $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char lzma_easy_encoder (void); +int +main (void) +{ +return lzma_easy_encoder (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_lzma_lzma_easy_encoder=yes +else case e in #( + e) ac_cv_lib_lzma_lzma_easy_encoder=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_easy_encoder" >&5 +printf "%s\n" "$ac_cv_lib_lzma_lzma_easy_encoder" >&6; } +if test "x$ac_cv_lib_lzma_lzma_easy_encoder" = xyes +then : + have_liblzma=yes +else case e in #( + e) have_liblzma=no ;; +esac +fi + + +else case e in #( + e) have_liblzma=no ;; +esac +fi + +done + if test "x$have_liblzma" = xyes +then : + + LIBLZMA_CFLAGS=${LIBLZMA_CFLAGS-""} + LIBLZMA_LIBS=${LIBLZMA_LIBS-"-llzma"} + +fi + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBLZMA_CFLAGS" + LIBS="$LIBS $LIBLZMA_LIBS" + for ac_header in lzma.h +do : + ac_fn_c_check_header_compile "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default" +if test "x$ac_cv_header_lzma_h" = xyes +then : + printf "%s\n" "#define HAVE_LZMA_H 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lzma_easy_encoder in -llzma" >&5 +printf %s "checking for lzma_easy_encoder in -llzma... " >&6; } +if test ${ac_cv_lib_lzma_lzma_easy_encoder+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-llzma $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char lzma_easy_encoder (void); +int +main (void) +{ +return lzma_easy_encoder (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_lzma_lzma_easy_encoder=yes +else case e in #( + e) ac_cv_lib_lzma_lzma_easy_encoder=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_easy_encoder" >&5 +printf "%s\n" "$ac_cv_lib_lzma_lzma_easy_encoder" >&6; } +if test "x$ac_cv_lib_lzma_lzma_easy_encoder" = xyes +then : + have_liblzma=yes +else case e in #( + e) have_liblzma=no ;; +esac +fi + + +else case e in #( + e) have_liblzma=no ;; +esac +fi + +done + if test "x$have_liblzma" = xyes +then : + + LIBLZMA_CFLAGS=${LIBLZMA_CFLAGS-""} + LIBLZMA_LIBS=${LIBLZMA_LIBS-"-llzma"} + +fi + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +else + LIBLZMA_CFLAGS=$pkg_cv_LIBLZMA_CFLAGS + LIBLZMA_LIBS=$pkg_cv_LIBLZMA_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_liblzma=yes +fi + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libzstd >= 1.4.5" >&5 +printf %s "checking for libzstd >= 1.4.5... " >&6; } + +if test -n "$LIBZSTD_CFLAGS"; then + pkg_cv_LIBZSTD_CFLAGS="$LIBZSTD_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd >= 1.4.5\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libzstd >= 1.4.5") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBZSTD_CFLAGS=`$PKG_CONFIG --cflags "libzstd >= 1.4.5" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBZSTD_LIBS"; then + pkg_cv_LIBZSTD_LIBS="$LIBZSTD_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd >= 1.4.5\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libzstd >= 1.4.5") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBZSTD_LIBS=`$PKG_CONFIG --libs "libzstd >= 1.4.5" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBZSTD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libzstd >= 1.4.5" 2>&1` + else + LIBZSTD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libzstd >= 1.4.5" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBZSTD_PKG_ERRORS" >&5 + + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBZSTD_CFLAGS" + CFLAGS="$CFLAGS $LIBZSTD_CFLAGS" + LIBS="$LIBS $LIBZSTD_LIBS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing ZDICT_finalizeDictionary" >&5 +printf %s "checking for library containing ZDICT_finalizeDictionary... " >&6; } +if test ${ac_cv_search_ZDICT_finalizeDictionary+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char ZDICT_finalizeDictionary (void); +int +main (void) +{ +return ZDICT_finalizeDictionary (); + ; + return 0; +} +_ACEOF +for ac_lib in '' zstd +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_ZDICT_finalizeDictionary=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_ZDICT_finalizeDictionary+y} +then : + break +fi +done +if test ${ac_cv_search_ZDICT_finalizeDictionary+y} +then : + +else case e in #( + e) ac_cv_search_ZDICT_finalizeDictionary=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ZDICT_finalizeDictionary" >&5 +printf "%s\n" "$ac_cv_search_ZDICT_finalizeDictionary" >&6; } +ac_res=$ac_cv_search_ZDICT_finalizeDictionary +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ZSTD_VERSION_NUMBER >= 1.4.5" >&5 +printf %s "checking ZSTD_VERSION_NUMBER >= 1.4.5... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include "zstd.h" +int +main (void) +{ + + #if ZSTD_VERSION_NUMBER < 10405 + # error "zstd version is too old" + #endif + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + for ac_header in zstd.h zdict.h +do : + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_sh"` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1 +_ACEOF + have_libzstd=yes +else case e in #( + e) have_libzstd=no ;; +esac +fi + +done + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_libzstd=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in #( + e) have_libzstd=no ;; +esac +fi + + if test "x$have_libzstd" = xyes +then : + + LIBZSTD_CFLAGS=${LIBZSTD_CFLAGS-""} + LIBZSTD_LIBS=${LIBZSTD_LIBS-"-lzstd"} + +fi + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBZSTD_CFLAGS" + CFLAGS="$CFLAGS $LIBZSTD_CFLAGS" + LIBS="$LIBS $LIBZSTD_LIBS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing ZDICT_finalizeDictionary" >&5 +printf %s "checking for library containing ZDICT_finalizeDictionary... " >&6; } +if test ${ac_cv_search_ZDICT_finalizeDictionary+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char ZDICT_finalizeDictionary (void); +int +main (void) +{ +return ZDICT_finalizeDictionary (); + ; + return 0; +} +_ACEOF +for ac_lib in '' zstd +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_ZDICT_finalizeDictionary=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_ZDICT_finalizeDictionary+y} +then : + break +fi +done +if test ${ac_cv_search_ZDICT_finalizeDictionary+y} +then : + +else case e in #( + e) ac_cv_search_ZDICT_finalizeDictionary=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ZDICT_finalizeDictionary" >&5 +printf "%s\n" "$ac_cv_search_ZDICT_finalizeDictionary" >&6; } +ac_res=$ac_cv_search_ZDICT_finalizeDictionary +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ZSTD_VERSION_NUMBER >= 1.4.5" >&5 +printf %s "checking ZSTD_VERSION_NUMBER >= 1.4.5... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include "zstd.h" +int +main (void) +{ + + #if ZSTD_VERSION_NUMBER < 10405 + # error "zstd version is too old" + #endif + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + for ac_header in zstd.h zdict.h +do : + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_sh"` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1 +_ACEOF + have_libzstd=yes +else case e in #( + e) have_libzstd=no ;; +esac +fi + +done + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_libzstd=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in #( + e) have_libzstd=no ;; +esac +fi + + if test "x$have_libzstd" = xyes +then : + + LIBZSTD_CFLAGS=${LIBZSTD_CFLAGS-""} + LIBZSTD_LIBS=${LIBZSTD_LIBS-"-lzstd"} + +fi + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +else + LIBZSTD_CFLAGS=$pkg_cv_LIBZSTD_CFLAGS + LIBZSTD_LIBS=$pkg_cv_LIBZSTD_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_libzstd=yes +fi + +if test "x$have_libzstd" = xyes +then : + + REMOTE_DEBUGGING_CFLAGS="-DHAVE_ZSTD $LIBZSTD_CFLAGS" + REMOTE_DEBUGGING_LIBS="$LIBZSTD_LIBS" + +else case e in #( + e) + REMOTE_DEBUGGING_CFLAGS="" + REMOTE_DEBUGGING_LIBS="" + ;; +esac +fi + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hstrerror" >&5 +printf %s "checking for hstrerror... " >&6; } +if test ${ac_cv_func_hstrerror+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=hstrerror + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_hstrerror=yes +else case e in #( + e) ac_cv_func_hstrerror=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_hstrerror" >&5 +printf "%s\n" "$ac_cv_func_hstrerror" >&6; } + if test "x$ac_cv_func_hstrerror" = xyes +then : + +printf "%s\n" "#define HAVE_HSTRERROR 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getservbyname" >&5 +printf %s "checking for getservbyname... " >&6; } +if test ${ac_cv_func_getservbyname+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=getservbyname + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_getservbyname=yes +else case e in #( + e) ac_cv_func_getservbyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getservbyname" >&5 +printf "%s\n" "$ac_cv_func_getservbyname" >&6; } + if test "x$ac_cv_func_getservbyname" = xyes +then : + +printf "%s\n" "#define HAVE_GETSERVBYNAME 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getservbyport" >&5 +printf %s "checking for getservbyport... " >&6; } +if test ${ac_cv_func_getservbyport+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=getservbyport + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_getservbyport=yes +else case e in #( + e) ac_cv_func_getservbyport=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getservbyport" >&5 +printf "%s\n" "$ac_cv_func_getservbyport" >&6; } + if test "x$ac_cv_func_getservbyport" = xyes +then : + +printf "%s\n" "#define HAVE_GETSERVBYPORT 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname" >&5 +printf %s "checking for gethostbyname... " >&6; } +if test ${ac_cv_func_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=gethostbyname + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_gethostbyname=yes +else case e in #( + e) ac_cv_func_gethostbyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gethostbyname" >&5 +printf "%s\n" "$ac_cv_func_gethostbyname" >&6; } + if test "x$ac_cv_func_gethostbyname" = xyes +then : + +printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyaddr" >&5 +printf %s "checking for gethostbyaddr... " >&6; } +if test ${ac_cv_func_gethostbyaddr+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=gethostbyaddr + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_gethostbyaddr=yes +else case e in #( + e) ac_cv_func_gethostbyaddr=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gethostbyaddr" >&5 +printf "%s\n" "$ac_cv_func_gethostbyaddr" >&6; } + if test "x$ac_cv_func_gethostbyaddr" = xyes +then : + +printf "%s\n" "#define HAVE_GETHOSTBYADDR 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getprotobyname" >&5 +printf %s "checking for getprotobyname... " >&6; } +if test ${ac_cv_func_getprotobyname+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +void *x=getprotobyname + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_getprotobyname=yes +else case e in #( + e) ac_cv_func_getprotobyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getprotobyname" >&5 +printf "%s\n" "$ac_cv_func_getprotobyname" >&6; } + if test "x$ac_cv_func_getprotobyname" = xyes +then : + +printf "%s\n" "#define HAVE_GETPROTOBYNAME 1" >>confdefs.h + +fi + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_aton" >&5 +printf %s "checking for inet_aton... " >&6; } +if test ${ac_cv_func_inet_aton+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=inet_aton + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_inet_aton=yes +else case e in #( + e) ac_cv_func_inet_aton=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_aton" >&5 +printf "%s\n" "$ac_cv_func_inet_aton" >&6; } + if test "x$ac_cv_func_inet_aton" = xyes +then : + +printf "%s\n" "#define HAVE_INET_ATON 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_ntoa" >&5 +printf %s "checking for inet_ntoa... " >&6; } +if test ${ac_cv_func_inet_ntoa+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=inet_ntoa + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_inet_ntoa=yes +else case e in #( + e) ac_cv_func_inet_ntoa=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_ntoa" >&5 +printf "%s\n" "$ac_cv_func_inet_ntoa" >&6; } + if test "x$ac_cv_func_inet_ntoa" = xyes +then : + +printf "%s\n" "#define HAVE_INET_NTOA 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_pton" >&5 +printf %s "checking for inet_pton... " >&6; } +if test ${ac_cv_func_inet_pton+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=inet_pton + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_inet_pton=yes +else case e in #( + e) ac_cv_func_inet_pton=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_inet_pton" >&5 +printf "%s\n" "$ac_cv_func_inet_pton" >&6; } + if test "x$ac_cv_func_inet_pton" = xyes +then : + +printf "%s\n" "#define HAVE_INET_PTON 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpeername" >&5 +printf %s "checking for getpeername... " >&6; } +if test ${ac_cv_func_getpeername+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=getpeername + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_getpeername=yes +else case e in #( + e) ac_cv_func_getpeername=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpeername" >&5 +printf "%s\n" "$ac_cv_func_getpeername" >&6; } + if test "x$ac_cv_func_getpeername" = xyes +then : + +printf "%s\n" "#define HAVE_GETPEERNAME 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getsockname" >&5 +printf %s "checking for getsockname... " >&6; } +if test ${ac_cv_func_getsockname+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=getsockname + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_getsockname=yes +else case e in #( + e) ac_cv_func_getsockname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getsockname" >&5 +printf "%s\n" "$ac_cv_func_getsockname" >&6; } + if test "x$ac_cv_func_getsockname" = xyes +then : + +printf "%s\n" "#define HAVE_GETSOCKNAME 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for accept" >&5 +printf %s "checking for accept... " >&6; } +if test ${ac_cv_func_accept+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=accept + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_accept=yes +else case e in #( + e) ac_cv_func_accept=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_accept" >&5 +printf "%s\n" "$ac_cv_func_accept" >&6; } + if test "x$ac_cv_func_accept" = xyes +then : + +printf "%s\n" "#define HAVE_ACCEPT 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bind" >&5 +printf %s "checking for bind... " >&6; } +if test ${ac_cv_func_bind+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=bind + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_bind=yes +else case e in #( + e) ac_cv_func_bind=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_bind" >&5 +printf "%s\n" "$ac_cv_func_bind" >&6; } + if test "x$ac_cv_func_bind" = xyes +then : + +printf "%s\n" "#define HAVE_BIND 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for connect" >&5 +printf %s "checking for connect... " >&6; } +if test ${ac_cv_func_connect+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=connect + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_connect=yes +else case e in #( + e) ac_cv_func_connect=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_connect" >&5 +printf "%s\n" "$ac_cv_func_connect" >&6; } + if test "x$ac_cv_func_connect" = xyes +then : + +printf "%s\n" "#define HAVE_CONNECT 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for listen" >&5 +printf %s "checking for listen... " >&6; } +if test ${ac_cv_func_listen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=listen + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_listen=yes +else case e in #( + e) ac_cv_func_listen=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_listen" >&5 +printf "%s\n" "$ac_cv_func_listen" >&6; } + if test "x$ac_cv_func_listen" = xyes +then : + +printf "%s\n" "#define HAVE_LISTEN 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for recvfrom" >&5 +printf %s "checking for recvfrom... " >&6; } +if test ${ac_cv_func_recvfrom+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=recvfrom + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_recvfrom=yes +else case e in #( + e) ac_cv_func_recvfrom=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_recvfrom" >&5 +printf "%s\n" "$ac_cv_func_recvfrom" >&6; } + if test "x$ac_cv_func_recvfrom" = xyes +then : + +printf "%s\n" "#define HAVE_RECVFROM 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sendto" >&5 +printf %s "checking for sendto... " >&6; } +if test ${ac_cv_func_sendto+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=sendto + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_sendto=yes +else case e in #( + e) ac_cv_func_sendto=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_sendto" >&5 +printf "%s\n" "$ac_cv_func_sendto" >&6; } + if test "x$ac_cv_func_sendto" = xyes +then : + +printf "%s\n" "#define HAVE_SENDTO 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setsockopt" >&5 +printf %s "checking for setsockopt... " >&6; } +if test ${ac_cv_func_setsockopt+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=setsockopt + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_setsockopt=yes +else case e in #( + e) ac_cv_func_setsockopt=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_setsockopt" >&5 +printf "%s\n" "$ac_cv_func_setsockopt" >&6; } + if test "x$ac_cv_func_setsockopt" = xyes +then : + +printf "%s\n" "#define HAVE_SETSOCKOPT 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket" >&5 +printf %s "checking for socket... " >&6; } +if test ${ac_cv_func_socket+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +void *x=socket + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_socket=yes +else case e in #( + e) ac_cv_func_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_socket" >&5 +printf "%s\n" "$ac_cv_func_socket" >&6; } + if test "x$ac_cv_func_socket" = xyes +then : + +printf "%s\n" "#define HAVE_SOCKET 1" >>confdefs.h + +fi + + + + +# On some systems, setgroups is in unistd.h, on others, in grp.h + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setgroups" >&5 +printf %s "checking for setgroups... " >&6; } +if test ${ac_cv_func_setgroups+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef HAVE_GRP_H +#include +#endif + +int +main (void) +{ +void *x=setgroups + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_setgroups=yes +else case e in #( + e) ac_cv_func_setgroups=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_setgroups" >&5 +printf "%s\n" "$ac_cv_func_setgroups" >&6; } + if test "x$ac_cv_func_setgroups" = xyes +then : + +printf "%s\n" "#define HAVE_SETGROUPS 1" >>confdefs.h + +fi + + + + +ac_fn_check_decl "$LINENO" "MAXLOGNAME" "ac_cv_have_decl_MAXLOGNAME" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_MAXLOGNAME" = xyes +then : + +printf "%s\n" "#define HAVE_MAXLOGNAME 1" >>confdefs.h + +fi + +ac_fn_check_decl "$LINENO" "UT_NAMESIZE" "ac_cv_have_decl_UT_NAMESIZE" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_UT_NAMESIZE" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_UT_NAMESIZE $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +printf "%s\n" "#define HAVE_UT_NAMESIZE 1" >>confdefs.h + +fi + +# musl libc redefines struct prctl_mm_map and conflicts with linux/prctl.h +if test "$ac_cv_libc" != musl +then : + +ac_fn_check_decl "$LINENO" "PR_SET_VMA_ANON_NAME" "ac_cv_have_decl_PR_SET_VMA_ANON_NAME" "#include + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_PR_SET_VMA_ANON_NAME" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_PR_SET_VMA_ANON_NAME $ac_have_decl" >>confdefs.h +if test $ac_have_decl = 1 +then : + +printf "%s\n" "#define HAVE_PR_SET_VMA_ANON_NAME 1" >>confdefs.h + +fi + + +fi +# check for openpty, login_tty, and forkpty + + + for ac_func in openpty +do : + ac_fn_c_check_func "$LINENO" "openpty" "ac_cv_func_openpty" +if test "x$ac_cv_func_openpty" = xyes +then : + printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5 +printf %s "checking for openpty in -lutil... " >&6; } +if test ${ac_cv_lib_util_openpty+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char openpty (void); +int +main (void) +{ +return openpty (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_openpty=yes +else case e in #( + e) ac_cv_lib_util_openpty=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_openpty" >&5 +printf "%s\n" "$ac_cv_lib_util_openpty" >&6; } +if test "x$ac_cv_lib_util_openpty" = xyes +then : + printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h + LIBS="$LIBS -lutil" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openpty in -lbsd" >&5 +printf %s "checking for openpty in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_openpty+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char openpty (void); +int +main (void) +{ +return openpty (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_openpty=yes +else case e in #( + e) ac_cv_lib_bsd_openpty=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_openpty" >&5 +printf "%s\n" "$ac_cv_lib_bsd_openpty" >&6; } +if test "x$ac_cv_lib_bsd_openpty" = xyes +then : + printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h + LIBS="$LIBS -lbsd" +fi + ;; +esac +fi + ;; +esac +fi + +done +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing login_tty" >&5 +printf %s "checking for library containing login_tty... " >&6; } +if test ${ac_cv_search_login_tty+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char login_tty (void); +int +main (void) +{ +return login_tty (); + ; + return 0; +} +_ACEOF +for ac_lib in '' util +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_login_tty=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_login_tty+y} +then : + break +fi +done +if test ${ac_cv_search_login_tty+y} +then : + +else case e in #( + e) ac_cv_search_login_tty=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_login_tty" >&5 +printf "%s\n" "$ac_cv_search_login_tty" >&6; } +ac_res=$ac_cv_search_login_tty +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +printf "%s\n" "#define HAVE_LOGIN_TTY 1" >>confdefs.h + + +fi + + + for ac_func in forkpty +do : + ac_fn_c_check_func "$LINENO" "forkpty" "ac_cv_func_forkpty" +if test "x$ac_cv_func_forkpty" = xyes +then : + printf "%s\n" "#define HAVE_FORKPTY 1" >>confdefs.h + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for forkpty in -lutil" >&5 +printf %s "checking for forkpty in -lutil... " >&6; } +if test ${ac_cv_lib_util_forkpty+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char forkpty (void); +int +main (void) +{ +return forkpty (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_forkpty=yes +else case e in #( + e) ac_cv_lib_util_forkpty=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_forkpty" >&5 +printf "%s\n" "$ac_cv_lib_util_forkpty" >&6; } +if test "x$ac_cv_lib_util_forkpty" = xyes +then : + printf "%s\n" "#define HAVE_FORKPTY 1" >>confdefs.h + LIBS="$LIBS -lutil" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for forkpty in -lbsd" >&5 +printf %s "checking for forkpty in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_forkpty+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char forkpty (void); +int +main (void) +{ +return forkpty (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_forkpty=yes +else case e in #( + e) ac_cv_lib_bsd_forkpty=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_forkpty" >&5 +printf "%s\n" "$ac_cv_lib_bsd_forkpty" >&6; } +if test "x$ac_cv_lib_bsd_forkpty" = xyes +then : + printf "%s\n" "#define HAVE_FORKPTY 1" >>confdefs.h + LIBS="$LIBS -lbsd" +fi + ;; +esac +fi + ;; +esac +fi + +done + +# check for long file support functions +ac_fn_c_check_func "$LINENO" "fseek64" "ac_cv_func_fseek64" +if test "x$ac_cv_func_fseek64" = xyes +then : + printf "%s\n" "#define HAVE_FSEEK64 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fseeko" "ac_cv_func_fseeko" +if test "x$ac_cv_func_fseeko" = xyes +then : + printf "%s\n" "#define HAVE_FSEEKO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fstatvfs" "ac_cv_func_fstatvfs" +if test "x$ac_cv_func_fstatvfs" = xyes +then : + printf "%s\n" "#define HAVE_FSTATVFS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ftell64" "ac_cv_func_ftell64" +if test "x$ac_cv_func_ftell64" = xyes +then : + printf "%s\n" "#define HAVE_FTELL64 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ftello" "ac_cv_func_ftello" +if test "x$ac_cv_func_ftello" = xyes +then : + printf "%s\n" "#define HAVE_FTELLO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "statvfs" "ac_cv_func_statvfs" +if test "x$ac_cv_func_statvfs" = xyes +then : + printf "%s\n" "#define HAVE_STATVFS 1" >>confdefs.h + +fi + + +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf "%s\n" "#define HAVE_DUP2 1" >>confdefs.h + +else case e in #( + e) case " $LIBOBJS " in + *" dup2.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS dup2.$ac_objext" + ;; +esac + ;; +esac +fi + + + for ac_func in getpgrp +do : + ac_fn_c_check_func "$LINENO" "getpgrp" "ac_cv_func_getpgrp" +if test "x$ac_cv_func_getpgrp" = xyes +then : + printf "%s\n" "#define HAVE_GETPGRP 1" >>confdefs.h + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +getpgrp(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +printf "%s\n" "#define GETPGRP_HAVE_ARG 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +done + + for ac_func in setpgrp +do : + ac_fn_c_check_func "$LINENO" "setpgrp" "ac_cv_func_setpgrp" +if test "x$ac_cv_func_setpgrp" = xyes +then : + printf "%s\n" "#define HAVE_SETPGRP 1" >>confdefs.h + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +setpgrp(0,0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +printf "%s\n" "#define SETPGRP_HAVE_ARG 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +done + +# check for namespace functions +ac_fn_c_check_func "$LINENO" "setns" "ac_cv_func_setns" +if test "x$ac_cv_func_setns" = xyes +then : + printf "%s\n" "#define HAVE_SETNS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "unshare" "ac_cv_func_unshare" +if test "x$ac_cv_func_unshare" = xyes +then : + printf "%s\n" "#define HAVE_UNSHARE 1" >>confdefs.h + +fi + + + + for ac_func in clock_gettime +do : + ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" +if test "x$ac_cv_func_clock_gettime" = xyes +then : + printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 +printf %s "checking for clock_gettime in -lrt... " >&6; } +if test ${ac_cv_lib_rt_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_rt_clock_gettime=yes +else case e in #( + e) ac_cv_lib_rt_clock_gettime=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 +printf "%s\n" "$ac_cv_lib_rt_clock_gettime" >&6; } +if test "x$ac_cv_lib_rt_clock_gettime" = xyes +then : + + LIBS="$LIBS -lrt" + printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +printf "%s\n" "#define TIMEMODULE_LIB rt" >>confdefs.h + + +fi + + ;; +esac +fi + +done + + + for ac_func in clock_getres +do : + ac_fn_c_check_func "$LINENO" "clock_getres" "ac_cv_func_clock_getres" +if test "x$ac_cv_func_clock_getres" = xyes +then : + printf "%s\n" "#define HAVE_CLOCK_GETRES 1" >>confdefs.h + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_getres in -lrt" >&5 +printf %s "checking for clock_getres in -lrt... " >&6; } +if test ${ac_cv_lib_rt_clock_getres+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_getres (void); +int +main (void) +{ +return clock_getres (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_rt_clock_getres=yes +else case e in #( + e) ac_cv_lib_rt_clock_getres=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_getres" >&5 +printf "%s\n" "$ac_cv_lib_rt_clock_getres" >&6; } +if test "x$ac_cv_lib_rt_clock_getres" = xyes +then : + + printf "%s\n" "#define HAVE_CLOCK_GETRES 1" >>confdefs.h + + +fi + + ;; +esac +fi + +done + +# On Android and iOS, clock_settime can be linked (so it is found by +# configure), but when used in an unprivileged process, it crashes rather than +# returning an error. Force the symbol off. +if test "$ac_sys_system" != "Linux-android" && test "$ac_sys_system" != "iOS" +then + + for ac_func in clock_settime +do : + ac_fn_c_check_func "$LINENO" "clock_settime" "ac_cv_func_clock_settime" +if test "x$ac_cv_func_clock_settime" = xyes +then : + printf "%s\n" "#define HAVE_CLOCK_SETTIME 1" >>confdefs.h + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_settime in -lrt" >&5 +printf %s "checking for clock_settime in -lrt... " >&6; } +if test ${ac_cv_lib_rt_clock_settime+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_settime (void); +int +main (void) +{ +return clock_settime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_rt_clock_settime=yes +else case e in #( + e) ac_cv_lib_rt_clock_settime=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_settime" >&5 +printf "%s\n" "$ac_cv_lib_rt_clock_settime" >&6; } +if test "x$ac_cv_lib_rt_clock_settime" = xyes +then : + + printf "%s\n" "#define HAVE_CLOCK_SETTIME 1" >>confdefs.h + + +fi + + ;; +esac +fi + +done +fi + +# On Android before API level 23, clock_nanosleep returns the wrong value when +# interrupted by a signal (https://issuetracker.google.com/issues/216495770). +if ! { test "$ac_sys_system" = "Linux-android" && + test "$ANDROID_API_LEVEL" -lt 23; }; then + + for ac_func in clock_nanosleep +do : + ac_fn_c_check_func "$LINENO" "clock_nanosleep" "ac_cv_func_clock_nanosleep" +if test "x$ac_cv_func_clock_nanosleep" = xyes +then : + printf "%s\n" "#define HAVE_CLOCK_NANOSLEEP 1" >>confdefs.h + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_nanosleep in -lrt" >&5 +printf %s "checking for clock_nanosleep in -lrt... " >&6; } +if test ${ac_cv_lib_rt_clock_nanosleep+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_nanosleep (void); +int +main (void) +{ +return clock_nanosleep (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_rt_clock_nanosleep=yes +else case e in #( + e) ac_cv_lib_rt_clock_nanosleep=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_nanosleep" >&5 +printf "%s\n" "$ac_cv_lib_rt_clock_nanosleep" >&6; } +if test "x$ac_cv_lib_rt_clock_nanosleep" = xyes +then : + + printf "%s\n" "#define HAVE_CLOCK_NANOSLEEP 1" >>confdefs.h + + +fi + + ;; +esac +fi + +done +fi + + + for ac_func in nanosleep +do : + ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep" +if test "x$ac_cv_func_nanosleep" = xyes +then : + printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nanosleep in -lrt" >&5 +printf %s "checking for nanosleep in -lrt... " >&6; } +if test ${ac_cv_lib_rt_nanosleep+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char nanosleep (void); +int +main (void) +{ +return nanosleep (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_rt_nanosleep=yes +else case e in #( + e) ac_cv_lib_rt_nanosleep=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_nanosleep" >&5 +printf "%s\n" "$ac_cv_lib_rt_nanosleep" >&6; } +if test "x$ac_cv_lib_rt_nanosleep" = xyes +then : + + printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h + + +fi + + ;; +esac +fi + +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for major, minor, and makedev" >&5 +printf %s "checking for major, minor, and makedev... " >&6; } +if test ${ac_cv_device_macros+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined(MAJOR_IN_MKDEV) +#include +#elif defined(MAJOR_IN_SYSMACROS) +#include +#include +#else +#include +#endif + +int +main (void) +{ + + makedev(major(0),minor(0)); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_device_macros=yes +else case e in #( + e) ac_cv_device_macros=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_device_macros" >&5 +printf "%s\n" "$ac_cv_device_macros" >&6; } +if test "x$ac_cv_device_macros" = xyes +then : + + +printf "%s\n" "#define HAVE_DEVICE_MACROS 1" >>confdefs.h + + +fi + + +printf "%s\n" "#define SYS_SELECT_WITH_SYS_TIME 1" >>confdefs.h + + +# On OSF/1 V5.1, getaddrinfo is available, but a define +# for [no]getaddrinfo in netdb.h. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5 +printf %s "checking for getaddrinfo... " >&6; } +if test ${ac_cv_func_getaddrinfo+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +int +main (void) +{ +getaddrinfo(NULL, NULL, NULL, NULL); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_getaddrinfo=yes +else case e in #( + e) ac_cv_func_getaddrinfo=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getaddrinfo" >&5 +printf "%s\n" "$ac_cv_func_getaddrinfo" >&6; } + +if test "x$ac_cv_func_getaddrinfo" = xyes +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking getaddrinfo bug" >&5 +printf %s "checking getaddrinfo bug... " >&6; } +if test ${ac_cv_buggy_getaddrinfo+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + +if test "$ac_sys_system" = "Linux-android" || test "$ac_sys_system" = "iOS"; then + ac_cv_buggy_getaddrinfo="no" +elif test "${enable_ipv6+set}" = set; then + ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6" +else + ac_cv_buggy_getaddrinfo=yes +fi +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include +#include +#include + +int main(void) +{ + int passive, gaierr, inet4 = 0, inet6 = 0; + struct addrinfo hints, *ai, *aitop; + char straddr[INET6_ADDRSTRLEN], strport[16]; + + for (passive = 0; passive <= 1; passive++) { + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; + hints.ai_flags = passive ? AI_PASSIVE : 0; + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = IPPROTO_TCP; + if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) { + (void)gai_strerror(gaierr); + goto bad; + } + for (ai = aitop; ai; ai = ai->ai_next) { + if (ai->ai_addr == NULL || + ai->ai_addrlen == 0 || + getnameinfo(ai->ai_addr, ai->ai_addrlen, + straddr, sizeof(straddr), strport, sizeof(strport), + NI_NUMERICHOST|NI_NUMERICSERV) != 0) { + goto bad; + } + switch (ai->ai_family) { + case AF_INET: + if (strcmp(strport, "54321") != 0) { + goto bad; + } + if (passive) { + if (strcmp(straddr, "0.0.0.0") != 0) { + goto bad; + } + } else { + if (strcmp(straddr, "127.0.0.1") != 0) { + goto bad; + } + } + inet4++; + break; + case AF_INET6: + if (strcmp(strport, "54321") != 0) { + goto bad; + } + if (passive) { + if (strcmp(straddr, "::") != 0) { + goto bad; + } + } else { + if (strcmp(straddr, "::1") != 0) { + goto bad; + } + } + inet6++; + break; + case AF_UNSPEC: + goto bad; + break; + default: + /* another family support? */ + break; + } + } + freeaddrinfo(aitop); + aitop = NULL; + } + + if (!(inet4 == 0 || inet4 == 2)) + goto bad; + if (!(inet6 == 0 || inet6 == 2)) + goto bad; + + if (aitop) + freeaddrinfo(aitop); + return 0; + + bad: + if (aitop) + freeaddrinfo(aitop); + return 1; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_buggy_getaddrinfo=no +else case e in #( + e) ac_cv_buggy_getaddrinfo=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_buggy_getaddrinfo" >&5 +printf "%s\n" "$ac_cv_buggy_getaddrinfo" >&6; } + + +fi + +if test "$ac_cv_func_getaddrinfo" = no -o "$ac_cv_buggy_getaddrinfo" = yes +then + if test "x$ipv6" = xyes +then : + + as_fn_error $? "You must get working getaddrinfo() function or pass the \"--disable-ipv6\" option to configure." "$LINENO" 5 + +fi +else + +printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "getnameinfo" "ac_cv_func_getnameinfo" +if test "x$ac_cv_func_getnameinfo" = xyes +then : + printf "%s\n" "#define HAVE_GETNAMEINFO 1" >>confdefs.h + +fi + + +# checks for structures +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if test ${ac_cv_struct_tm+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main (void) +{ +struct tm tm; + int *p = &tm.tm_sec; + return !p; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_tm=time.h +else case e in #( + e) ac_cv_struct_tm=sys/time.h ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +printf "%s\n" "$ac_cv_struct_tm" >&6; } +if test $ac_cv_struct_tm = sys/time.h; then + +printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h + +fi + +ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include +#include <$ac_cv_struct_tm> + +" +if test "x$ac_cv_member_struct_tm_tm_zone" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_TM_TM_ZONE 1" >>confdefs.h + + +fi + +if test "$ac_cv_member_struct_tm_tm_zone" = yes; then + +printf "%s\n" "#define HAVE_TM_ZONE 1" >>confdefs.h + +else + ac_fn_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_tzname" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_TZNAME $ac_have_decl" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 +printf %s "checking for tzname... " >&6; } +if test ${ac_cv_var_tzname+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if !HAVE_DECL_TZNAME +extern char *tzname[]; +#endif + +int +main (void) +{ +return tzname[0][0]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_var_tzname=yes +else case e in #( + e) ac_cv_var_tzname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 +printf "%s\n" "$ac_cv_var_tzname" >&6; } + if test $ac_cv_var_tzname = yes; then + +printf "%s\n" "#define HAVE_TZNAME 1" >>confdefs.h + + fi +fi + +ac_fn_c_check_member "$LINENO" "struct stat" "st_rdev" "ac_cv_member_struct_stat_st_rdev" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_rdev" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_RDEV 1" >>confdefs.h + + +fi + +ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_blksize" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BLKSIZE 1" >>confdefs.h + + +fi + +ac_fn_c_check_member "$LINENO" "struct stat" "st_flags" "ac_cv_member_struct_stat_st_flags" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_flags" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_FLAGS 1" >>confdefs.h + + +fi + +ac_fn_c_check_member "$LINENO" "struct stat" "st_gen" "ac_cv_member_struct_stat_st_gen" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_gen" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_GEN 1" >>confdefs.h + + +fi + +ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtime" "ac_cv_member_struct_stat_st_birthtime" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_birthtime" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BIRTHTIME 1" >>confdefs.h + + +fi + +ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_blocks" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BLOCKS 1" >>confdefs.h + + +fi + +ac_fn_c_check_member "$LINENO" "struct passwd" "pw_gecos" "ac_cv_member_struct_passwd_pw_gecos" " + #include + #include + +" +if test "x$ac_cv_member_struct_passwd_pw_gecos" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_PASSWD_PW_GECOS 1" >>confdefs.h + + +fi +ac_fn_c_check_member "$LINENO" "struct passwd" "pw_passwd" "ac_cv_member_struct_passwd_pw_passwd" " + #include + #include + +" +if test "x$ac_cv_member_struct_passwd_pw_passwd" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_PASSWD_PW_PASSWD 1" >>confdefs.h + + +fi + +# Issue #21085: In Cygwin, siginfo_t does not have si_band field. +ac_fn_c_check_member "$LINENO" "siginfo_t" "si_band" "ac_cv_member_siginfo_t_si_band" "#include +" +if test "x$ac_cv_member_siginfo_t_si_band" = xyes +then : + +printf "%s\n" "#define HAVE_SIGINFO_T_SI_BAND 1" >>confdefs.h + + +fi + + +if test "$ac_cv_func_statx" = yes; then + # Some systems have the definitions of the mask bits without having the + # corresponding members in struct statx. Check for members added after Linux + # 4.11 (when statx itself was added). + ac_fn_c_check_member "$LINENO" "struct statx" "stx_mnt_id" "ac_cv_member_struct_statx_stx_mnt_id" "$ac_includes_default" +if test "x$ac_cv_member_struct_statx_stx_mnt_id" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STATX_STX_MNT_ID 1" >>confdefs.h + + +fi + + ac_fn_c_check_member "$LINENO" "struct statx" "stx_dio_mem_align" "ac_cv_member_struct_statx_stx_dio_mem_align" "$ac_includes_default" +if test "x$ac_cv_member_struct_statx_stx_dio_mem_align" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STATX_STX_DIO_MEM_ALIGN 1" >>confdefs.h + + +fi + + # stx_dio_offset_align was added together with stx_dio_mem_align + ac_fn_c_check_member "$LINENO" "struct statx" "stx_subvol" "ac_cv_member_struct_statx_stx_subvol" "$ac_includes_default" +if test "x$ac_cv_member_struct_statx_stx_subvol" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STATX_STX_SUBVOL 1" >>confdefs.h + + +fi + + ac_fn_c_check_member "$LINENO" "struct statx" "stx_atomic_write_unit_min" "ac_cv_member_struct_statx_stx_atomic_write_unit_min" "$ac_includes_default" +if test "x$ac_cv_member_struct_statx_stx_atomic_write_unit_min" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STATX_STX_ATOMIC_WRITE_UNIT_MIN 1" >>confdefs.h + + +fi + + # stx_atomic_write_unit_max and stx_atomic_write_segments_max were added + # together with stx_atomic_write_unit_min + ac_fn_c_check_member "$LINENO" "struct statx" "stx_dio_read_offset_align" "ac_cv_member_struct_statx_stx_dio_read_offset_align" "$ac_includes_default" +if test "x$ac_cv_member_struct_statx_stx_dio_read_offset_align" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STATX_STX_DIO_READ_OFFSET_ALIGN 1" >>confdefs.h + + +fi + + # stx_atomic_write_unit_max_opt was added in Linux 6.16, but is controlled by + # the STATX_WRITE_ATOMIC mask bit added in Linux 6.11, so having the mask bit + # doesn't imply having the member. + ac_fn_c_check_member "$LINENO" "struct statx" "stx_atomic_write_unit_max_opt" "ac_cv_member_struct_statx_stx_atomic_write_unit_max_opt" "$ac_includes_default" +if test "x$ac_cv_member_struct_statx_stx_atomic_write_unit_max_opt" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STATX_STX_ATOMIC_WRITE_UNIT_MAX_OPT 1" >>confdefs.h + + +fi + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for time.h that defines altzone" >&5 +printf %s "checking for time.h that defines altzone... " >&6; } +if test ${ac_cv_header_time_altzone+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return altzone; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_time_altzone=yes +else case e in #( + e) ac_cv_header_time_altzone=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time_altzone" >&5 +printf "%s\n" "$ac_cv_header_time_altzone" >&6; } +if test $ac_cv_header_time_altzone = yes; then + +printf "%s\n" "#define HAVE_ALTZONE 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for addrinfo" >&5 +printf %s "checking for addrinfo... " >&6; } +if test ${ac_cv_struct_addrinfo+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct addrinfo a + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_addrinfo=yes +else case e in #( + e) ac_cv_struct_addrinfo=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_addrinfo" >&5 +printf "%s\n" "$ac_cv_struct_addrinfo" >&6; } +if test $ac_cv_struct_addrinfo = yes; then + +printf "%s\n" "#define HAVE_ADDRINFO 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sockaddr_storage" >&5 +printf %s "checking for sockaddr_storage... " >&6; } +if test ${ac_cv_struct_sockaddr_storage+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# include +# include +int +main (void) +{ +struct sockaddr_storage s + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_sockaddr_storage=yes +else case e in #( + e) ac_cv_struct_sockaddr_storage=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_sockaddr_storage" >&5 +printf "%s\n" "$ac_cv_struct_sockaddr_storage" >&6; } +if test $ac_cv_struct_sockaddr_storage = yes; then + +printf "%s\n" "#define HAVE_SOCKADDR_STORAGE 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sockaddr_alg" >&5 +printf %s "checking for sockaddr_alg... " >&6; } +if test ${ac_cv_struct_sockaddr_alg+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# include +# include +# include +int +main (void) +{ +struct sockaddr_alg s + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_sockaddr_alg=yes +else case e in #( + e) ac_cv_struct_sockaddr_alg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_sockaddr_alg" >&5 +printf "%s\n" "$ac_cv_struct_sockaddr_alg" >&6; } +if test $ac_cv_struct_sockaddr_alg = yes; then + +printf "%s\n" "#define HAVE_SOCKADDR_ALG 1" >>confdefs.h + +fi + +# checks for compiler characteristics + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in #( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf "%s\n" "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf "%s\n" "#define const /**/" >>confdefs.h + +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working signed char" >&5 +printf %s "checking for working signed char... " >&6; } +if test ${ac_cv_working_signed_char_c+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +signed char c; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_working_signed_char_c=yes +else case e in #( + e) ac_cv_working_signed_char_c=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_signed_char_c" >&5 +printf "%s\n" "$ac_cv_working_signed_char_c" >&6; } +if test "x$ac_cv_working_signed_char_c" = xno +then : + + +printf "%s\n" "#define signed /**/" >>confdefs.h + + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for prototypes" >&5 +printf %s "checking for prototypes... " >&6; } +if test ${ac_cv_function_prototypes+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo(int x) { return 0; } +int +main (void) +{ +return foo(10); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_function_prototypes=yes +else case e in #( + e) ac_cv_function_prototypes=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_function_prototypes" >&5 +printf "%s\n" "$ac_cv_function_prototypes" >&6; } +if test "x$ac_cv_function_prototypes" = xyes +then : + + +printf "%s\n" "#define HAVE_PROTOTYPES 1" >>confdefs.h + + +fi + + +# check for socketpair + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socketpair" >&5 +printf %s "checking for socketpair... " >&6; } +if test ${ac_cv_func_socketpair+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +void *x=socketpair + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_socketpair=yes +else case e in #( + e) ac_cv_func_socketpair=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_socketpair" >&5 +printf "%s\n" "$ac_cv_func_socketpair" >&6; } + if test "x$ac_cv_func_socketpair" = xyes +then : + +printf "%s\n" "#define HAVE_SOCKETPAIR 1" >>confdefs.h + +fi + + + + +# check if sockaddr has sa_len member +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sockaddr has sa_len member" >&5 +printf %s "checking if sockaddr has sa_len member... " >&6; } +if test ${ac_cv_struct_sockaddr_sa_len+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +struct sockaddr x; +x.sa_len = 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_sockaddr_sa_len=yes +else case e in #( + e) ac_cv_struct_sockaddr_sa_len=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_sockaddr_sa_len" >&5 +printf "%s\n" "$ac_cv_struct_sockaddr_sa_len" >&6; } +if test "x$ac_cv_struct_sockaddr_sa_len" = xyes +then : + + +printf "%s\n" "#define HAVE_SOCKADDR_SA_LEN 1" >>confdefs.h + + +fi + +# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-( + + +ac_fn_c_check_func "$LINENO" "gethostbyname_r" "ac_cv_func_gethostbyname_r" +if test "x$ac_cv_func_gethostbyname_r" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking gethostbyname_r with 6 args" >&5 +printf %s "checking gethostbyname_r with 6 args... " >&6; } + OLD_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# include + +int +main (void) +{ + + char *name; + struct hostent *he, *res; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop) + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + printf "%s\n" "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h + + +printf "%s\n" "#define HAVE_GETHOSTBYNAME_R_6_ARG 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking gethostbyname_r with 5 args" >&5 +printf %s "checking gethostbyname_r with 5 args... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# include + +int +main (void) +{ + + char *name; + struct hostent *he; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop) + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + printf "%s\n" "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h + + +printf "%s\n" "#define HAVE_GETHOSTBYNAME_R_5_ARG 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking gethostbyname_r with 3 args" >&5 +printf %s "checking gethostbyname_r with 3 args... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# include + +int +main (void) +{ + + char *name; + struct hostent *he; + struct hostent_data data; + + (void) gethostbyname_r(name, he, &data); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + printf "%s\n" "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h + + +printf "%s\n" "#define HAVE_GETHOSTBYNAME_R_3_ARG 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$OLD_CFLAGS + +else case e in #( + e) + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +fi + + ;; +esac +fi + + + + + + + +# checks for system services +# (none yet) + +# Linux requires this for correct f.p. operations +ac_fn_c_check_func "$LINENO" "__fpu_control" "ac_cv_func___fpu_control" +if test "x$ac_cv_func___fpu_control" = xyes +then : + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __fpu_control in -lieee" >&5 +printf %s "checking for __fpu_control in -lieee... " >&6; } +if test ${ac_cv_lib_ieee___fpu_control+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lieee $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char __fpu_control (void); +int +main (void) +{ +return __fpu_control (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_ieee___fpu_control=yes +else case e in #( + e) ac_cv_lib_ieee___fpu_control=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ieee___fpu_control" >&5 +printf "%s\n" "$ac_cv_lib_ieee___fpu_control" >&6; } +if test "x$ac_cv_lib_ieee___fpu_control" = xyes +then : + printf "%s\n" "#define HAVE_LIBIEEE 1" >>confdefs.h + + LIBS="-lieee $LIBS" + +fi + + ;; +esac +fi + + +# check for --with-libm=... + +case $ac_sys_system in +Darwin) ;; +*) LIBM=-lm +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-libm=STRING" >&5 +printf %s "checking for --with-libm=STRING... " >&6; } + +# Check whether --with-libm was given. +if test ${with_libm+y} +then : + withval=$with_libm; +if test "$withval" = no +then LIBM= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: force LIBM empty" >&5 +printf "%s\n" "force LIBM empty" >&6; } +elif test "$withval" != yes +then LIBM=$withval + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: set LIBM=\"$withval\"" >&5 +printf "%s\n" "set LIBM=\"$withval\"" >&6; } +else as_fn_error $? "proper usage is --with-libm=STRING" "$LINENO" 5 +fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: default LIBM=\"$LIBM\"" >&5 +printf "%s\n" "default LIBM=\"$LIBM\"" >&6; } ;; +esac +fi + + +# check for --with-libc=... + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-libc=STRING" >&5 +printf %s "checking for --with-libc=STRING... " >&6; } + +# Check whether --with-libc was given. +if test ${with_libc+y} +then : + withval=$with_libc; +if test "$withval" = no +then LIBC= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: force LIBC empty" >&5 +printf "%s\n" "force LIBC empty" >&6; } +elif test "$withval" != yes +then LIBC=$withval + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: set LIBC=\"$withval\"" >&5 +printf "%s\n" "set LIBC=\"$withval\"" >&6; } +else as_fn_error $? "proper usage is --with-libc=STRING" "$LINENO" 5 +fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: default LIBC=\"$LIBC\"" >&5 +printf "%s\n" "default LIBC=\"$LIBC\"" >&6; } ;; +esac +fi + + +# ************************************** +# * Check for gcc x64 inline assembler * +# ************************************** + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for x64 gcc inline assembler" >&5 +printf %s "checking for x64 gcc inline assembler... " >&6; } +if test ${ac_cv_gcc_asm_for_x64+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + __asm__ __volatile__ ("movq %rcx, %rax"); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_gcc_asm_for_x64=yes +else case e in #( + e) ac_cv_gcc_asm_for_x64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_asm_for_x64" >&5 +printf "%s\n" "$ac_cv_gcc_asm_for_x64" >&6; } + +if test "x$ac_cv_gcc_asm_for_x64" = xyes +then : + + +printf "%s\n" "#define HAVE_GCC_ASM_FOR_X64 1" >>confdefs.h + + +fi + +# ************************************************** +# * Check for various properties of floating point * +# ************************************************** + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether float word ordering is bigendian" >&5 +printf %s "checking whether float word ordering is bigendian... " >&6; } +if test ${ax_cv_c_float_words_bigendian+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + +ax_cv_c_float_words_bigendian=unknown +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +#include + +static double m[] = {9.090423496703681e+223, 0.0}; + +int main (int argc, char *argv[]) +{ + m[atoi (argv[1])] += atof (argv[2]); + return m[atoi (argv[3])] > 0.0; +} + + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + +if grep noonsees conftest* > /dev/null ; then + ax_cv_c_float_words_bigendian=yes +fi +if grep seesnoon conftest* >/dev/null ; then + if test "$ax_cv_c_float_words_bigendian" = unknown; then + ax_cv_c_float_words_bigendian=no + else + ax_cv_c_float_words_bigendian=unknown + fi +fi + + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_float_words_bigendian" >&5 +printf "%s\n" "$ax_cv_c_float_words_bigendian" >&6; } + +case $ax_cv_c_float_words_bigendian in + yes) + +printf "%s\n" "#define DOUBLE_IS_BIG_ENDIAN_IEEE754 1" >>confdefs.h + ;; + no) + +printf "%s\n" "#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1" >>confdefs.h + ;; + *) + case $host_cpu in #( + *arm*) : + # Some ARM platforms use a mixed-endian representation for + # doubles. While Python doesn't currently have full support + # for these platforms (see e.g., issue 1762561), we can at + # least make sure that float <-> string conversions work. + # FLOAT_WORDS_BIGENDIAN doesn't actually detect this case, + # but if it's not big or little, then it must be this? + +printf "%s\n" "#define DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 1" >>confdefs.h + ;; #( + *) : + as_fn_error $? "Unknown float word ordering. You need to manually preset ax_cv_c_float_words_bigendian=no (or yes) according to your system." "$LINENO" 5 ;; +esac ;; +esac + + + +# The short float repr introduced in Python 3.1 requires the +# correctly-rounded string <-> double conversion functions from +# Python/dtoa.c, which in turn require that the FPU uses 53-bit +# rounding; this is a problem on x86, where the x87 FPU has a default +# rounding precision of 64 bits. For gcc/x86, we can fix this by +# using inline assembler to get and set the x87 FPU control word. + +# This inline assembler syntax may also work for suncc and icc, +# so we try it on all platforms. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we can use gcc inline assembler to get and set x87 control word" >&5 +printf %s "checking whether we can use gcc inline assembler to get and set x87 control word... " >&6; } +if test ${ac_cv_gcc_asm_for_x87+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + unsigned short cw; + __asm__ __volatile__ ("fnstcw %0" : "=m" (cw)); + __asm__ __volatile__ ("fldcw %0" : : "m" (cw)); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_gcc_asm_for_x87=yes +else case e in #( + e) ac_cv_gcc_asm_for_x87=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_asm_for_x87" >&5 +printf "%s\n" "$ac_cv_gcc_asm_for_x87" >&6; } +if test "x$ac_cv_gcc_asm_for_x87" = xyes +then : + + +printf "%s\n" "#define HAVE_GCC_ASM_FOR_X87 1" >>confdefs.h + + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we can use gcc inline assembler to get and set mc68881 fpcr" >&5 +printf %s "checking whether we can use gcc inline assembler to get and set mc68881 fpcr... " >&6; } +if test ${ac_cv_gcc_asm_for_mc68881+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + unsigned int fpcr; + __asm__ __volatile__ ("fmove.l %%fpcr,%0" : "=dm" (fpcr)); + __asm__ __volatile__ ("fmove.l %0,%%fpcr" : : "dm" (fpcr)); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_gcc_asm_for_mc68881=yes +else case e in #( + e) ac_cv_gcc_asm_for_mc68881=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_asm_for_mc68881" >&5 +printf "%s\n" "$ac_cv_gcc_asm_for_mc68881" >&6; } +if test "x$ac_cv_gcc_asm_for_mc68881" = xyes +then : + + +printf "%s\n" "#define HAVE_GCC_ASM_FOR_MC68881 1" >>confdefs.h + + +fi + +# Detect whether system arithmetic is subject to x87-style double +# rounding issues. The result of this test has little meaning on non +# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding +# mode is round-to-nearest and double rounding issues are present, and +# 0 otherwise. See https://github.com/python/cpython/issues/47186 for more info. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for x87-style double rounding" >&5 +printf %s "checking for x87-style double rounding... " >&6; } +if test ${ac_cv_x87_double_rounding+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +# $BASECFLAGS may affect the result +ac_save_cc="$CC" +CC="$CC $BASECFLAGS" +if test "$cross_compiling" = yes +then : + ac_cv_x87_double_rounding=no +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +int main(void) { + volatile double x, y, z; + /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */ + x = 0.99999999999999989; /* 1-2**-53 */ + y = 1./x; + if (y != 1.) + exit(0); + /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */ + x = 1e16; + y = 2.99999; + z = x + y; + if (z != 1e16+4.) + exit(0); + /* both tests show evidence of double rounding */ + exit(1); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_x87_double_rounding=no +else case e in #( + e) ac_cv_x87_double_rounding=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + +CC="$ac_save_cc" + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_x87_double_rounding" >&5 +printf "%s\n" "$ac_cv_x87_double_rounding" >&6; } + +if test "x$ac_cv_x87_double_rounding" = xyes +then : + + +printf "%s\n" "#define X87_DOUBLE_ROUNDING 1" >>confdefs.h + + +fi + +# ************************************ +# * Check for mathematical functions * +# ************************************ + +LIBS_SAVE=$LIBS +LIBS="$LIBS $LIBM" + + + for ac_func in acosh asinh atanh erf erfc expm1 log1p log2 +do : + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 +_ACEOF + +else case e in #( + e) as_fn_error $? "Python requires C99 compatible libm" "$LINENO" 5 + ;; +esac +fi + +done +LIBS=$LIBS_SAVE + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX semaphores are enabled" >&5 +printf %s "checking whether POSIX semaphores are enabled... " >&6; } +if test ${ac_cv_posix_semaphores_enabled+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_posix_semaphores_enabled=yes +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include + #include + #include + #include + #include + + int main(void) { + sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0); + if (a == SEM_FAILED) { + perror("sem_open"); + return 1; + } + sem_close(a); + sem_unlink("/autoconf"); + return 0; + } + + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_posix_semaphores_enabled=yes +else case e in #( + e) ac_cv_posix_semaphores_enabled=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_posix_semaphores_enabled" >&5 +printf "%s\n" "$ac_cv_posix_semaphores_enabled" >&6; } +if test "x$ac_cv_posix_semaphores_enabled" = xno +then : + + +printf "%s\n" "#define POSIX_SEMAPHORES_NOT_ENABLED 1" >>confdefs.h + + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken sem_getvalue" >&5 +printf %s "checking for broken sem_getvalue... " >&6; } +if test ${ac_cv_broken_sem_getvalue+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_broken_sem_getvalue=yes +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include + #include + #include + #include + #include + + int main(void){ + sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0); + int count; + int res; + if(a==SEM_FAILED){ + perror("sem_open"); + return 1; + + } + res = sem_getvalue(a, &count); + sem_close(a); + sem_unlink("/autocftw"); + return res==-1 ? 1 : 0; + } + + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_broken_sem_getvalue=no +else case e in #( + e) ac_cv_broken_sem_getvalue=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_sem_getvalue" >&5 +printf "%s\n" "$ac_cv_broken_sem_getvalue" >&6; } +if test "x$ac_cv_broken_sem_getvalue" = xyes +then : + + +printf "%s\n" "#define HAVE_BROKEN_SEM_GETVALUE 1" >>confdefs.h + + +fi + +ac_fn_check_decl "$LINENO" "RTLD_LAZY" "ac_cv_have_decl_RTLD_LAZY" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_RTLD_LAZY" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_RTLD_LAZY $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "RTLD_NOW" "ac_cv_have_decl_RTLD_NOW" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_RTLD_NOW" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_RTLD_NOW $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "RTLD_GLOBAL" "ac_cv_have_decl_RTLD_GLOBAL" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_RTLD_GLOBAL" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_RTLD_GLOBAL $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "RTLD_LOCAL" "ac_cv_have_decl_RTLD_LOCAL" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_RTLD_LOCAL" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_RTLD_LOCAL $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "RTLD_NODELETE" "ac_cv_have_decl_RTLD_NODELETE" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_RTLD_NODELETE" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_RTLD_NODELETE $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "RTLD_NOLOAD" "ac_cv_have_decl_RTLD_NOLOAD" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_RTLD_NOLOAD" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_RTLD_NOLOAD $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "RTLD_DEEPBIND" "ac_cv_have_decl_RTLD_DEEPBIND" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_RTLD_DEEPBIND" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_RTLD_DEEPBIND $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "RTLD_MEMBER" "ac_cv_have_decl_RTLD_MEMBER" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_RTLD_MEMBER" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_RTLD_MEMBER $ac_have_decl" >>confdefs.h + + +# determine what size digit to use for Python's longs +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking digit size for Python's longs" >&5 +printf %s "checking digit size for Python's longs... " >&6; } +# Check whether --enable-big-digits was given. +if test ${enable_big_digits+y} +then : + enableval=$enable_big_digits; case $enable_big_digits in +yes) + enable_big_digits=30 ;; +no) + enable_big_digits=15 ;; +15|30) + ;; +*) + as_fn_error $? "bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30" "$LINENO" 5 ;; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_big_digits" >&5 +printf "%s\n" "$enable_big_digits" >&6; } + +printf "%s\n" "#define PYLONG_BITS_IN_DIGIT $enable_big_digits" >>confdefs.h + + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no value specified" >&5 +printf "%s\n" "no value specified" >&6; } ;; +esac +fi + + +# check for wchar.h +ac_fn_c_check_header_compile "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" +if test "x$ac_cv_header_wchar_h" = xyes +then : + + +printf "%s\n" "#define HAVE_WCHAR_H 1" >>confdefs.h + + wchar_h="yes" + +else case e in #( + e) wchar_h="no" + ;; +esac +fi + + +# determine wchar_t size +if test "$wchar_h" = yes +then + # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5 +printf %s "checking size of wchar_t... " >&6; } +if test ${ac_cv_sizeof_wchar_t+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "#include +" +then : + +else case e in #( + e) if test "$ac_cv_type_wchar_t" = yes; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (wchar_t) +See 'config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_wchar_t=0 + fi ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5 +printf "%s\n" "$ac_cv_sizeof_wchar_t" >&6; } + + + +printf "%s\n" "#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t" >>confdefs.h + + +fi + +# check whether wchar_t is signed or not +if test "$wchar_h" = yes +then + # check whether wchar_t is signed or not + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wchar_t is signed" >&5 +printf %s "checking whether wchar_t is signed... " >&6; } +if test ${ac_cv_wchar_t_signed+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + if test "$cross_compiling" = yes +then : + ac_cv_wchar_t_signed=yes +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + int main() + { + /* Success: exit code 0 */ + return ((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); + } + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_wchar_t_signed=yes +else case e in #( + e) ac_cv_wchar_t_signed=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_wchar_t_signed" >&5 +printf "%s\n" "$ac_cv_wchar_t_signed" >&6; } +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wchar_t is usable" >&5 +printf %s "checking whether wchar_t is usable... " >&6; } +# wchar_t is only usable if it maps to an unsigned type +if test "$ac_cv_sizeof_wchar_t" -ge 2 \ + -a "$ac_cv_wchar_t_signed" = "no" +then + +printf "%s\n" "#define HAVE_USABLE_WCHAR_T 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + +case $ac_sys_system/$ac_sys_release in +SunOS/*) + if test -f /etc/os-release; then + OS_NAME=$(awk -F= '/^NAME=/ {print substr($2,2,length($2)-2)}' /etc/os-release) + if test "x$OS_NAME" = "xOracle Solaris"; then + # bpo-43667: In Oracle Solaris, the internal form of wchar_t in + # non-Unicode locales is not Unicode and hence cannot be used directly. + # https://docs.oracle.com/cd/E37838_01/html/E61053/gmwke.html + +printf "%s\n" "#define HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION 1" >>confdefs.h + + fi + fi + ;; +esac + +# check for endianness + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in #( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in #( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else case e in #( + e) ac_cv_c_bigendian=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf "%s\n" "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# ABI version string for Python extension modules. This appears between the +# periods in shared library file names, e.g. foo..so. It is calculated +# from the following attributes which affect the ABI of this Python build (in +# this order): +# +# * The Python implementation (always 'cpython-' for us) +# * The major and minor version numbers +# * --disable-gil (adds a 't') +# * --with-pydebug (adds a 'd') +# +# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc, +# would get a shared library ABI version tag of 'cpython-32dmu' and shared +# libraries would be named 'foo.cpython-32dmu.so'. +# +# In Python 3.2 and older, --with-wide-unicode added a 'u' flag. +# In Python 3.7 and older, --with-pymalloc added a 'm' flag. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ABIFLAGS" >&5 +printf %s "checking ABIFLAGS... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ABIFLAGS" >&5 +printf "%s\n" "$ABIFLAGS" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking SOABI" >&5 +printf %s "checking SOABI... " >&6; } +SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${SOABI_PLATFORM:+-$SOABI_PLATFORM} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SOABI" >&5 +printf "%s\n" "$SOABI" >&6; } + +# Release build, debug build (Py_DEBUG), and trace refs build (Py_TRACE_REFS) +# are ABI compatible +if test "$Py_DEBUG" = 'true'; then + # Similar to SOABI but remove "d" flag from ABIFLAGS + + ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${SOABI_PLATFORM:+-$SOABI_PLATFORM} + +printf "%s\n" "#define ALT_SOABI \"${ALT_SOABI}\"" >>confdefs.h + +fi + + +EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LDVERSION" >&5 +printf %s "checking LDVERSION... " >&6; } +LDVERSION='$(VERSION)$(ABIFLAGS)' +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LDVERSION" >&5 +printf "%s\n" "$LDVERSION" >&6; } + +# Configure the flags and dependencies used when compiling shared modules. +# Do not rename LIBPYTHON - it's accessed via sysconfig by package build +# systems (e.g. Meson) to decide whether to link extension modules against +# libpython. + + +MODULE_DEPS_SHARED='$(MODULE_DEPS_STATIC) $(EXPORTSYMS)' +LIBPYTHON='' + +# On Android and Cygwin the shared libraries must be linked with libpython. +if test "$PY_ENABLE_SHARED" = "1" && ( test -n "$ANDROID_API_LEVEL" || test "$MACHDEP" = "cygwin"); then + MODULE_DEPS_SHARED="$MODULE_DEPS_SHARED \$(LDLIBRARY)" + LIBPYTHON="\$(BLDLIBRARY)" +fi + +# On iOS the shared libraries must be linked with the Python framework +if test "$ac_sys_system" = "iOS"; then + MODULE_DEPS_SHARED="$MODULE_DEPS_SHARED \$(PYTHONFRAMEWORKDIR)/\$(PYTHONFRAMEWORK)" +fi + +# Check for --with-platlibdir +# /usr/$PLATLIBDIR/python$(VERSION)$(ABI_THREAD) + +PLATLIBDIR="lib" # XXX: We should probably calculate the defauly from libdir, if defined. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-platlibdir" >&5 +printf %s "checking for --with-platlibdir... " >&6; } + +# Check whether --with-platlibdir was given. +if test ${with_platlibdir+y} +then : + withval=$with_platlibdir; +# ignore 3 options: +# --with-platlibdir +# --with-platlibdir= +# --without-platlibdir +if test -n "$withval" -a "$withval" != yes -a "$withval" != no +then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + PLATLIBDIR="$withval" +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi + + + + +LIBDEST='${prefix}/${PLATLIBDIR}/python$(VERSION)$(ABI_THREAD)' +BINLIBDEST='${exec_prefix}/${PLATLIBDIR}/python$(VERSION)$(ABI_THREAD)' + + +if test x$PLATFORM_TRIPLET = x; then + LIBPL='$(LIBDEST)'"/config-${LDVERSION}" +else + LIBPL='$(LIBDEST)'"/config-${LDVERSION}-${PLATFORM_TRIPLET}" +fi + + +# Check for --with-wheel-pkg-dir=PATH + +WHEEL_PKG_DIR="" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-wheel-pkg-dir" >&5 +printf %s "checking for --with-wheel-pkg-dir... " >&6; } + +# Check whether --with-wheel-pkg-dir was given. +if test ${with_wheel_pkg_dir+y} +then : + withval=$with_wheel_pkg_dir; +if test -n "$withval"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + WHEEL_PKG_DIR="$withval" +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi + + +# Check whether right shifting a negative integer extends the sign bit +# or fills with zeros (like the Cray J90, according to Tim Peters). +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether right shift extends the sign bit" >&5 +printf %s "checking whether right shift extends the sign bit... " >&6; } +if test ${ac_cv_rshift_extends_sign+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +if test "$cross_compiling" = yes +then : + ac_cv_rshift_extends_sign=yes +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int main(void) +{ + return (((-1)>>3 == -1) ? 0 : 1); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_rshift_extends_sign=yes +else case e in #( + e) ac_cv_rshift_extends_sign=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rshift_extends_sign" >&5 +printf "%s\n" "$ac_cv_rshift_extends_sign" >&6; } +if test "$ac_cv_rshift_extends_sign" = no +then + +printf "%s\n" "#define SIGNED_RIGHT_SHIFT_ZERO_FILLS 1" >>confdefs.h + +fi + +# check for getc_unlocked and related locking functions +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getc_unlocked() and friends" >&5 +printf %s "checking for getc_unlocked() and friends... " >&6; } +if test ${ac_cv_have_getc_unlocked+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ + + FILE *f = fopen("/dev/null", "r"); + flockfile(f); + getc_unlocked(f); + funlockfile(f); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_have_getc_unlocked=yes +else case e in #( + e) ac_cv_have_getc_unlocked=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_getc_unlocked" >&5 +printf "%s\n" "$ac_cv_have_getc_unlocked" >&6; } +if test "$ac_cv_have_getc_unlocked" = yes +then + +printf "%s\n" "#define HAVE_GETC_UNLOCKED 1" >>confdefs.h + +fi + + + + + +# Check whether --with-readline was given. +if test ${with_readline+y} +then : + withval=$with_readline; + case $with_readline in #( + editline|edit) : + with_readline=edit ;; #( + yes|readline) : + with_readline=readline ;; #( + no) : + ;; #( + *) : + as_fn_error $? "proper usage is --with(out)-readline[=editline|readline|no]" "$LINENO" 5 + ;; +esac + +else case e in #( + e) with_readline=readline + ;; +esac +fi + + +if test "x$with_readline" = xreadline +then : + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline" >&5 +printf %s "checking for readline... " >&6; } + +if test -n "$LIBREADLINE_CFLAGS"; then + pkg_cv_LIBREADLINE_CFLAGS="$LIBREADLINE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"readline\""; } >&5 + ($PKG_CONFIG --exists --print-errors "readline") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBREADLINE_CFLAGS=`$PKG_CONFIG --cflags "readline" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBREADLINE_LIBS"; then + pkg_cv_LIBREADLINE_LIBS="$LIBREADLINE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"readline\""; } >&5 + ($PKG_CONFIG --exists --print-errors "readline") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBREADLINE_LIBS=`$PKG_CONFIG --libs "readline" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBREADLINE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "readline" 2>&1` + else + LIBREADLINE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "readline" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBREADLINE_PKG_ERRORS" >&5 + + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBREADLINE_CFLAGS" + LIBS="$LIBS $LIBREADLINE_LIBS" + for ac_header in readline/readline.h +do : + ac_fn_c_check_header_compile "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default" +if test "x$ac_cv_header_readline_readline_h" = xyes +then : + printf "%s\n" "#define HAVE_READLINE_READLINE_H 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5 +printf %s "checking for readline in -lreadline... " >&6; } +if test ${ac_cv_lib_readline_readline+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lreadline $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char readline (void); +int +main (void) +{ +return readline (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_readline_readline=yes +else case e in #( + e) ac_cv_lib_readline_readline=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5 +printf "%s\n" "$ac_cv_lib_readline_readline" >&6; } +if test "x$ac_cv_lib_readline_readline" = xyes +then : + + LIBREADLINE=readline + READLINE_CFLAGS=${LIBREADLINE_CFLAGS-""} + READLINE_LIBS=${LIBREADLINE_LIBS-"-lreadline"} + +else case e in #( + e) with_readline=no ;; +esac +fi + + +else case e in #( + e) with_readline=no ;; +esac +fi + +done + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBREADLINE_CFLAGS" + LIBS="$LIBS $LIBREADLINE_LIBS" + for ac_header in readline/readline.h +do : + ac_fn_c_check_header_compile "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default" +if test "x$ac_cv_header_readline_readline_h" = xyes +then : + printf "%s\n" "#define HAVE_READLINE_READLINE_H 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5 +printf %s "checking for readline in -lreadline... " >&6; } +if test ${ac_cv_lib_readline_readline+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lreadline $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char readline (void); +int +main (void) +{ +return readline (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_readline_readline=yes +else case e in #( + e) ac_cv_lib_readline_readline=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5 +printf "%s\n" "$ac_cv_lib_readline_readline" >&6; } +if test "x$ac_cv_lib_readline_readline" = xyes +then : + + LIBREADLINE=readline + READLINE_CFLAGS=${LIBREADLINE_CFLAGS-""} + READLINE_LIBS=${LIBREADLINE_LIBS-"-lreadline"} + +else case e in #( + e) with_readline=no ;; +esac +fi + + +else case e in #( + e) with_readline=no ;; +esac +fi + +done + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +else + LIBREADLINE_CFLAGS=$pkg_cv_LIBREADLINE_CFLAGS + LIBREADLINE_LIBS=$pkg_cv_LIBREADLINE_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + LIBREADLINE=readline + READLINE_CFLAGS=$LIBREADLINE_CFLAGS + READLINE_LIBS=$LIBREADLINE_LIBS + +fi + +fi + +if test "x$with_readline" = xedit +then : + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libedit" >&5 +printf %s "checking for libedit... " >&6; } + +if test -n "$LIBEDIT_CFLAGS"; then + pkg_cv_LIBEDIT_CFLAGS="$LIBEDIT_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libedit\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libedit") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBEDIT_CFLAGS=`$PKG_CONFIG --cflags "libedit" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBEDIT_LIBS"; then + pkg_cv_LIBEDIT_LIBS="$LIBEDIT_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libedit\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libedit") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBEDIT_LIBS=`$PKG_CONFIG --libs "libedit" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libedit" 2>&1` + else + LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libedit" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBEDIT_PKG_ERRORS" >&5 + + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBEDIT_CFLAGS" + LIBS="$LIBS $LIBEDIT_LIBS" + for ac_header in editline/readline.h +do : + ac_fn_c_check_header_compile "$LINENO" "editline/readline.h" "ac_cv_header_editline_readline_h" "$ac_includes_default" +if test "x$ac_cv_header_editline_readline_h" = xyes +then : + printf "%s\n" "#define HAVE_EDITLINE_READLINE_H 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline in -ledit" >&5 +printf %s "checking for readline in -ledit... " >&6; } +if test ${ac_cv_lib_edit_readline+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ledit $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char readline (void); +int +main (void) +{ +return readline (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_edit_readline=yes +else case e in #( + e) ac_cv_lib_edit_readline=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_readline" >&5 +printf "%s\n" "$ac_cv_lib_edit_readline" >&6; } +if test "x$ac_cv_lib_edit_readline" = xyes +then : + + LIBREADLINE=edit + printf "%s\n" "#define WITH_EDITLINE 1" >>confdefs.h + + READLINE_CFLAGS=${LIBEDIT_CFLAGS-""} + READLINE_LIBS=${LIBEDIT_LIBS-"-ledit"} + +else case e in #( + e) with_readline=no ;; +esac +fi + + +else case e in #( + e) with_readline=no ;; +esac +fi + +done + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $LIBEDIT_CFLAGS" + LIBS="$LIBS $LIBEDIT_LIBS" + for ac_header in editline/readline.h +do : + ac_fn_c_check_header_compile "$LINENO" "editline/readline.h" "ac_cv_header_editline_readline_h" "$ac_includes_default" +if test "x$ac_cv_header_editline_readline_h" = xyes +then : + printf "%s\n" "#define HAVE_EDITLINE_READLINE_H 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for readline in -ledit" >&5 +printf %s "checking for readline in -ledit... " >&6; } +if test ${ac_cv_lib_edit_readline+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ledit $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char readline (void); +int +main (void) +{ +return readline (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_edit_readline=yes +else case e in #( + e) ac_cv_lib_edit_readline=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_readline" >&5 +printf "%s\n" "$ac_cv_lib_edit_readline" >&6; } +if test "x$ac_cv_lib_edit_readline" = xyes +then : + + LIBREADLINE=edit + printf "%s\n" "#define WITH_EDITLINE 1" >>confdefs.h + + READLINE_CFLAGS=${LIBEDIT_CFLAGS-""} + READLINE_LIBS=${LIBEDIT_LIBS-"-ledit"} + +else case e in #( + e) with_readline=no ;; +esac +fi + + +else case e in #( + e) with_readline=no ;; +esac +fi + +done + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +else + LIBEDIT_CFLAGS=$pkg_cv_LIBEDIT_CFLAGS + LIBEDIT_LIBS=$pkg_cv_LIBEDIT_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + + printf "%s\n" "#define WITH_EDITLINE 1" >>confdefs.h + + LIBREADLINE=edit + READLINE_CFLAGS=$LIBEDIT_CFLAGS + READLINE_LIBS=$LIBEDIT_LIBS + +fi + +fi + +READLINE_CFLAGS=$(echo $READLINE_CFLAGS | sed 's/-D_XOPEN_SOURCE=600//g') + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link readline" >&5 +printf %s "checking how to link readline... " >&6; } +if test "x$with_readline" = xno +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_readline (CFLAGS: $READLINE_CFLAGS, LIBS: $READLINE_LIBS)" >&5 +printf "%s\n" "$with_readline (CFLAGS: $READLINE_CFLAGS, LIBS: $READLINE_LIBS)" >&6; } + + save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + CPPFLAGS="$CPPFLAGS $READLINE_CFLAGS" + LIBS="$LIBS $READLINE_LIBS" + LIBS_SAVE=$LIBS + + + + # check for readline 2.2 + ac_fn_check_decl "$LINENO" "rl_completion_append_character" "ac_cv_have_decl_rl_completion_append_character" " + #include /* Must be first for Gnu Readline */ + #ifdef WITH_EDITLINE + # include + #else + # include + # include + #endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_rl_completion_append_character" = xyes +then : + + +printf "%s\n" "#define HAVE_RL_COMPLETION_APPEND_CHARACTER 1" >>confdefs.h + + +fi + + ac_fn_check_decl "$LINENO" "rl_completion_suppress_append" "ac_cv_have_decl_rl_completion_suppress_append" " + #include /* Must be first for Gnu Readline */ + #ifdef WITH_EDITLINE + # include + #else + # include + # include + #endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_rl_completion_suppress_append" = xyes +then : + + +printf "%s\n" "#define HAVE_RL_COMPLETION_SUPPRESS_APPEND 1" >>confdefs.h + + +fi + + # check for readline 4.0 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_pre_input_hook in -l$LIBREADLINE" >&5 +printf %s "checking for rl_pre_input_hook in -l$LIBREADLINE... " >&6; } +if test ${ac_cv_readline_rl_pre_input_hook+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include /* Must be first for Gnu Readline */ + #ifdef WITH_EDITLINE + # include + #else + # include + # include + #endif + +int +main (void) +{ +void *x = rl_pre_input_hook + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_readline_rl_pre_input_hook=yes +else case e in #( + e) ac_cv_readline_rl_pre_input_hook=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_rl_pre_input_hook" >&5 +printf "%s\n" "$ac_cv_readline_rl_pre_input_hook" >&6; } + if test "x$ac_cv_readline_rl_pre_input_hook" = xyes +then : + + +printf "%s\n" "#define HAVE_RL_PRE_INPUT_HOOK 1" >>confdefs.h + + +fi + + # also in 4.0 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_completion_display_matches_hook in -l$LIBREADLINE" >&5 +printf %s "checking for rl_completion_display_matches_hook in -l$LIBREADLINE... " >&6; } +if test ${ac_cv_readline_rl_completion_display_matches_hook+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include /* Must be first for Gnu Readline */ + #ifdef WITH_EDITLINE + # include + #else + # include + # include + #endif + +int +main (void) +{ +void *x = rl_completion_display_matches_hook + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_readline_rl_completion_display_matches_hook=yes +else case e in #( + e) ac_cv_readline_rl_completion_display_matches_hook=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_rl_completion_display_matches_hook" >&5 +printf "%s\n" "$ac_cv_readline_rl_completion_display_matches_hook" >&6; } + if test "x$ac_cv_readline_rl_completion_display_matches_hook" = xyes +then : + + +printf "%s\n" "#define HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK 1" >>confdefs.h + + +fi + + # also in 4.0, but not in editline + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_resize_terminal in -l$LIBREADLINE" >&5 +printf %s "checking for rl_resize_terminal in -l$LIBREADLINE... " >&6; } +if test ${ac_cv_readline_rl_resize_terminal+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include /* Must be first for Gnu Readline */ + #ifdef WITH_EDITLINE + # include + #else + # include + # include + #endif + +int +main (void) +{ +void *x = rl_resize_terminal + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_readline_rl_resize_terminal=yes +else case e in #( + e) ac_cv_readline_rl_resize_terminal=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_rl_resize_terminal" >&5 +printf "%s\n" "$ac_cv_readline_rl_resize_terminal" >&6; } + if test "x$ac_cv_readline_rl_resize_terminal" = xyes +then : + + +printf "%s\n" "#define HAVE_RL_RESIZE_TERMINAL 1" >>confdefs.h + + +fi + + # check for readline 4.2 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_completion_matches in -l$LIBREADLINE" >&5 +printf %s "checking for rl_completion_matches in -l$LIBREADLINE... " >&6; } +if test ${ac_cv_readline_rl_completion_matches+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include /* Must be first for Gnu Readline */ + #ifdef WITH_EDITLINE + # include + #else + # include + # include + #endif + +int +main (void) +{ +void *x = rl_completion_matches + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_readline_rl_completion_matches=yes +else case e in #( + e) ac_cv_readline_rl_completion_matches=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_rl_completion_matches" >&5 +printf "%s\n" "$ac_cv_readline_rl_completion_matches" >&6; } + if test "x$ac_cv_readline_rl_completion_matches" = xyes +then : + + +printf "%s\n" "#define HAVE_RL_COMPLETION_MATCHES 1" >>confdefs.h + + +fi + + # also in readline 4.2 + ac_fn_check_decl "$LINENO" "rl_catch_signals" "ac_cv_have_decl_rl_catch_signals" " + #include /* Must be first for Gnu Readline */ + #ifdef WITH_EDITLINE + # include + #else + # include + # include + #endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_rl_catch_signals" = xyes +then : + + +printf "%s\n" "#define HAVE_RL_CATCH_SIGNAL 1" >>confdefs.h + + +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for append_history in -l$LIBREADLINE" >&5 +printf %s "checking for append_history in -l$LIBREADLINE... " >&6; } +if test ${ac_cv_readline_append_history+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include /* Must be first for Gnu Readline */ + #ifdef WITH_EDITLINE + # include + #else + # include + # include + #endif + +int +main (void) +{ +void *x = append_history + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_readline_append_history=yes +else case e in #( + e) ac_cv_readline_append_history=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_append_history" >&5 +printf "%s\n" "$ac_cv_readline_append_history" >&6; } + if test "x$ac_cv_readline_append_history" = xyes +then : + + +printf "%s\n" "#define HAVE_RL_APPEND_HISTORY 1" >>confdefs.h + + +fi + + # in readline as well as newer editline (April 2023) + ac_fn_c_check_type "$LINENO" "rl_compdisp_func_t" "ac_cv_type_rl_compdisp_func_t" " + #include /* Must be first for Gnu Readline */ + #ifdef WITH_EDITLINE + # include + #else + # include + # include + #endif + +" +if test "x$ac_cv_type_rl_compdisp_func_t" = xyes +then : + +printf "%s\n" "#define HAVE_RL_COMPDISP_FUNC_T 1" >>confdefs.h + + +fi + + + # Some editline versions declare rl_startup_hook as taking no args, others + # declare it as taking 2. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if rl_startup_hook takes arguments" >&5 +printf %s "checking if rl_startup_hook takes arguments... " >&6; } +if test ${ac_cv_readline_rl_startup_hook_takes_args+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include /* Must be first for Gnu Readline */ + #ifdef WITH_EDITLINE + # include + #else + # include + # include + #endif + + extern int test_hook_func(const char *text, int state); +int +main (void) +{ +rl_startup_hook=test_hook_func; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_readline_rl_startup_hook_takes_args=yes +else case e in #( + e) ac_cv_readline_rl_startup_hook_takes_args=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_readline_rl_startup_hook_takes_args" >&5 +printf "%s\n" "$ac_cv_readline_rl_startup_hook_takes_args" >&6; } + if test "x$ac_cv_readline_rl_startup_hook_takes_args" = xyes +then : + + +printf "%s\n" "#define Py_RL_STARTUP_HOOK_TAKES_ARGS 1" >>confdefs.h + + +fi + + + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken nice()" >&5 +printf %s "checking for broken nice()... " >&6; } +if test ${ac_cv_broken_nice+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +if test "$cross_compiling" = yes +then : + ac_cv_broken_nice=no +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +int main(void) +{ + int val1 = nice(1); + if (val1 != -1 && val1 == nice(2)) + exit(0); + exit(1); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_broken_nice=yes +else case e in #( + e) ac_cv_broken_nice=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_nice" >&5 +printf "%s\n" "$ac_cv_broken_nice" >&6; } +if test "$ac_cv_broken_nice" = yes +then + +printf "%s\n" "#define HAVE_BROKEN_NICE 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken poll()" >&5 +printf %s "checking for broken poll()... " >&6; } +if test ${ac_cv_broken_poll+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_broken_poll=no +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int main(void) +{ + struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 }; + int poll_test; + + close (42); + + poll_test = poll(&poll_struct, 1, 0); + if (poll_test < 0) + return 0; + else if (poll_test == 0 && poll_struct.revents != POLLNVAL) + return 0; + else + return 1; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_broken_poll=yes +else case e in #( + e) ac_cv_broken_poll=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_poll" >&5 +printf "%s\n" "$ac_cv_broken_poll" >&6; } +if test "$ac_cv_broken_poll" = yes +then + +printf "%s\n" "#define HAVE_BROKEN_POLL 1" >>confdefs.h + +fi + +# check tzset(3) exists and works like we expect it to +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working tzset()" >&5 +printf %s "checking for working tzset()... " >&6; } +if test ${ac_cv_working_tzset+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +if test "$cross_compiling" = yes +then : + ac_cv_working_tzset=no +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +#if HAVE_TZNAME +extern char *tzname[]; +#endif + +int main(void) +{ + /* Note that we need to ensure that not only does tzset(3) + do 'something' with localtime, but it works as documented + in the library reference and as expected by the test suite. + This includes making sure that tzname is set properly if + tm->tm_zone does not exist since it is the alternative way + of getting timezone info. + + Red Hat 6.2 doesn't understand the southern hemisphere + after New Year's Day. + */ + + time_t groundhogday = 1044144000; /* GMT-based */ + time_t midyear = groundhogday + (365 * 24 * 3600 / 2); + + putenv("TZ=UTC+0"); + tzset(); + if (localtime(&groundhogday)->tm_hour != 0) + exit(1); +#if HAVE_TZNAME + /* For UTC, tzname[1] is sometimes "", sometimes " " */ + if (strcmp(tzname[0], "UTC") || + (tzname[1][0] != 0 && tzname[1][0] != ' ')) + exit(1); +#endif + + putenv("TZ=EST+5EDT,M4.1.0,M10.5.0"); + tzset(); + if (localtime(&groundhogday)->tm_hour != 19) + exit(1); +#if HAVE_TZNAME + if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT")) + exit(1); +#endif + + putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0"); + tzset(); + if (localtime(&groundhogday)->tm_hour != 11) + exit(1); +#if HAVE_TZNAME + if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT")) + exit(1); +#endif + +#if HAVE_STRUCT_TM_TM_ZONE + if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT")) + exit(1); + if (strcmp(localtime(&midyear)->tm_zone, "AEST")) + exit(1); +#endif + + exit(0); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_working_tzset=yes +else case e in #( + e) ac_cv_working_tzset=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_tzset" >&5 +printf "%s\n" "$ac_cv_working_tzset" >&6; } +if test "$ac_cv_working_tzset" = yes +then + +printf "%s\n" "#define HAVE_WORKING_TZSET 1" >>confdefs.h + +fi + +# Look for subsecond timestamps in struct stat +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tv_nsec in struct stat" >&5 +printf %s "checking for tv_nsec in struct stat... " >&6; } +if test ${ac_cv_stat_tv_nsec+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ + +struct stat st; +st.st_mtim.tv_nsec = 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_stat_tv_nsec=yes +else case e in #( + e) ac_cv_stat_tv_nsec=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_stat_tv_nsec" >&5 +printf "%s\n" "$ac_cv_stat_tv_nsec" >&6; } +if test "$ac_cv_stat_tv_nsec" = yes +then + +printf "%s\n" "#define HAVE_STAT_TV_NSEC 1" >>confdefs.h + +fi + +# Look for BSD style subsecond timestamps in struct stat +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tv_nsec2 in struct stat" >&5 +printf %s "checking for tv_nsec2 in struct stat... " >&6; } +if test ${ac_cv_stat_tv_nsec2+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ + +struct stat st; +st.st_mtimespec.tv_nsec = 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_stat_tv_nsec2=yes +else case e in #( + e) ac_cv_stat_tv_nsec2=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_stat_tv_nsec2" >&5 +printf "%s\n" "$ac_cv_stat_tv_nsec2" >&6; } +if test "$ac_cv_stat_tv_nsec2" = yes +then + +printf "%s\n" "#define HAVE_STAT_TV_NSEC2 1" >>confdefs.h + +fi + +have_curses=no +have_panel=no + + + +# Check for ncursesw/panelw first. If that fails, try ncurses/panel. + + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ncursesw" >&5 +printf %s "checking for ncursesw... " >&6; } + +if test -n "$CURSES_CFLAGS"; then + pkg_cv_CURSES_CFLAGS="$CURSES_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncursesw\""; } >&5 + ($PKG_CONFIG --exists --print-errors "ncursesw") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CURSES_CFLAGS=`$PKG_CONFIG --cflags "ncursesw" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CURSES_LIBS"; then + pkg_cv_CURSES_LIBS="$CURSES_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncursesw\""; } >&5 + ($PKG_CONFIG --exists --print-errors "ncursesw") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CURSES_LIBS=`$PKG_CONFIG --libs "ncursesw" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CURSES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ncursesw" 2>&1` + else + CURSES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ncursesw" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$CURSES_PKG_ERRORS" >&5 + + have_curses=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_curses=no +else + CURSES_CFLAGS=$pkg_cv_CURSES_CFLAGS + CURSES_LIBS=$pkg_cv_CURSES_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_NCURSESW 1" >>confdefs.h + + have_curses=yes + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for panelw" >&5 +printf %s "checking for panelw... " >&6; } + +if test -n "$PANEL_CFLAGS"; then + pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panelw\""; } >&5 + ($PKG_CONFIG --exists --print-errors "panelw") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "panelw" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANEL_LIBS"; then + pkg_cv_PANEL_LIBS="$PANEL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panelw\""; } >&5 + ($PKG_CONFIG --exists --print-errors "panelw") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "panelw" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "panelw" 2>&1` + else + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "panelw" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PANEL_PKG_ERRORS" >&5 + + have_panel=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_panel=no +else + PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS + PANEL_LIBS=$pkg_cv_PANEL_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_PANELW 1" >>confdefs.h + + have_panel=yes +fi +fi + + +if test "x$have_curses" = xno +then : + + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ncurses" >&5 +printf %s "checking for ncurses... " >&6; } + +if test -n "$CURSES_CFLAGS"; then + pkg_cv_CURSES_CFLAGS="$CURSES_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncurses\""; } >&5 + ($PKG_CONFIG --exists --print-errors "ncurses") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CURSES_CFLAGS=`$PKG_CONFIG --cflags "ncurses" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CURSES_LIBS"; then + pkg_cv_CURSES_LIBS="$CURSES_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ncurses\""; } >&5 + ($PKG_CONFIG --exists --print-errors "ncurses") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CURSES_LIBS=`$PKG_CONFIG --libs "ncurses" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CURSES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ncurses" 2>&1` + else + CURSES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ncurses" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$CURSES_PKG_ERRORS" >&5 + + have_curses=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_curses=no +else + CURSES_CFLAGS=$pkg_cv_CURSES_CFLAGS + CURSES_LIBS=$pkg_cv_CURSES_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_NCURSES 1" >>confdefs.h + + have_curses=yes + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for panel" >&5 +printf %s "checking for panel... " >&6; } + +if test -n "$PANEL_CFLAGS"; then + pkg_cv_PANEL_CFLAGS="$PANEL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "panel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "panel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANEL_LIBS"; then + pkg_cv_PANEL_LIBS="$PANEL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"panel\""; } >&5 + ($PKG_CONFIG --exists --print-errors "panel") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "panel" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANEL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "panel" 2>&1` + else + PANEL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "panel" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PANEL_PKG_ERRORS" >&5 + + have_panel=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_panel=no +else + PANEL_CFLAGS=$pkg_cv_PANEL_CFLAGS + PANEL_LIBS=$pkg_cv_PANEL_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_PANEL 1" >>confdefs.h + + have_panel=yes +fi +fi + + +fi + +save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + # Make sure we've got the header defines. + as_fn_append CPPFLAGS " $CURSES_CFLAGS $PANEL_CFLAGS" + ac_fn_c_check_header_compile "$LINENO" "ncursesw/curses.h" "ac_cv_header_ncursesw_curses_h" "$ac_includes_default" +if test "x$ac_cv_header_ncursesw_curses_h" = xyes +then : + printf "%s\n" "#define HAVE_NCURSESW_CURSES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "ncursesw/ncurses.h" "ac_cv_header_ncursesw_ncurses_h" "$ac_includes_default" +if test "x$ac_cv_header_ncursesw_ncurses_h" = xyes +then : + printf "%s\n" "#define HAVE_NCURSESW_NCURSES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "ncursesw/panel.h" "ac_cv_header_ncursesw_panel_h" "$ac_includes_default" +if test "x$ac_cv_header_ncursesw_panel_h" = xyes +then : + printf "%s\n" "#define HAVE_NCURSESW_PANEL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "ncurses/curses.h" "ac_cv_header_ncurses_curses_h" "$ac_includes_default" +if test "x$ac_cv_header_ncurses_curses_h" = xyes +then : + printf "%s\n" "#define HAVE_NCURSES_CURSES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "ncurses/ncurses.h" "ac_cv_header_ncurses_ncurses_h" "$ac_includes_default" +if test "x$ac_cv_header_ncurses_ncurses_h" = xyes +then : + printf "%s\n" "#define HAVE_NCURSES_NCURSES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "ncurses/panel.h" "ac_cv_header_ncurses_panel_h" "$ac_includes_default" +if test "x$ac_cv_header_ncurses_panel_h" = xyes +then : + printf "%s\n" "#define HAVE_NCURSES_PANEL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "curses.h" "ac_cv_header_curses_h" "$ac_includes_default" +if test "x$ac_cv_header_curses_h" = xyes +then : + printf "%s\n" "#define HAVE_CURSES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "ncurses.h" "ac_cv_header_ncurses_h" "$ac_includes_default" +if test "x$ac_cv_header_ncurses_h" = xyes +then : + printf "%s\n" "#define HAVE_NCURSES_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "panel.h" "ac_cv_header_panel_h" "$ac_includes_default" +if test "x$ac_cv_header_panel_h" = xyes +then : + printf "%s\n" "#define HAVE_PANEL_H 1" >>confdefs.h + +fi + + + # Check that we're able to link with crucial curses/panel functions. This + # also serves as a fallback in case pkg-config failed. + as_fn_append LIBS " $CURSES_LIBS $PANEL_LIBS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing initscr" >&5 +printf %s "checking for library containing initscr... " >&6; } +if test ${ac_cv_search_initscr+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char initscr (void); +int +main (void) +{ +return initscr (); + ; + return 0; +} +_ACEOF +for ac_lib in '' ncursesw ncurses +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_initscr=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_initscr+y} +then : + break +fi +done +if test ${ac_cv_search_initscr+y} +then : + +else case e in #( + e) ac_cv_search_initscr=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_initscr" >&5 +printf "%s\n" "$ac_cv_search_initscr" >&6; } +ac_res=$ac_cv_search_initscr +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + if test "x$have_curses" = xno +then : + have_curses=yes + CURSES_LIBS=${CURSES_LIBS-"$ac_cv_search_initscr"} +fi +else case e in #( + e) have_curses=no ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing update_panels" >&5 +printf %s "checking for library containing update_panels... " >&6; } +if test ${ac_cv_search_update_panels+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char update_panels (void); +int +main (void) +{ +return update_panels (); + ; + return 0; +} +_ACEOF +for ac_lib in '' panelw panel +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_update_panels=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_update_panels+y} +then : + break +fi +done +if test ${ac_cv_search_update_panels+y} +then : + +else case e in #( + e) ac_cv_search_update_panels=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_update_panels" >&5 +printf "%s\n" "$ac_cv_search_update_panels" >&6; } +ac_res=$ac_cv_search_update_panels +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + if test "x$have_panel" = xno +then : + have_panel=yes + PANEL_LIBS=${PANEL_LIBS-"$ac_cv_search_update_panels"} +fi +else case e in #( + e) have_panel=no ;; +esac +fi + + + + +if test "have_curses" != "no" +then : + +CURSES_CFLAGS=$(echo $CURSES_CFLAGS | sed 's/-D_XOPEN_SOURCE=600//g') + +if test "x$ac_sys_system" = xDarwin +then : + + + as_fn_append CURSES_CFLAGS " -D_XOPEN_SOURCE_EXTENDED=1" + +fi + +PANEL_CFLAGS=$(echo $PANEL_CFLAGS | sed 's/-D_XOPEN_SOURCE=600//g') + +# On Solaris, term.h requires curses.h +ac_fn_c_check_header_compile "$LINENO" "term.h" "ac_cv_header_term_h" " +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +" +if test "x$ac_cv_header_term_h" = xyes +then : + printf "%s\n" "#define HAVE_TERM_H 1" >>confdefs.h + +fi + + +# On HP/UX 11.0, mvwdelch is a block with a return statement +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mvwdelch is an expression" >&5 +printf %s "checking whether mvwdelch is an expression... " >&6; } +if test ${ac_cv_mvwdelch_is_expression+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + int rtn; + rtn = mvwdelch(0,0,0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_mvwdelch_is_expression=yes +else case e in #( + e) ac_cv_mvwdelch_is_expression=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mvwdelch_is_expression" >&5 +printf "%s\n" "$ac_cv_mvwdelch_is_expression" >&6; } + +if test "$ac_cv_mvwdelch_is_expression" = yes +then + +printf "%s\n" "#define MVWDELCH_IS_EXPRESSION 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether WINDOW has _flags" >&5 +printf %s "checking whether WINDOW has _flags... " >&6; } +if test ${ac_cv_window_has_flags+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + WINDOW *w; + w->_flags = 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_window_has_flags=yes +else case e in #( + e) ac_cv_window_has_flags=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_window_has_flags" >&5 +printf "%s\n" "$ac_cv_window_has_flags" >&6; } + + +if test "$ac_cv_window_has_flags" = yes +then + +printf "%s\n" "#define WINDOW_HAS_FLAGS 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function is_pad" >&5 +printf %s "checking for curses function is_pad... " >&6; } +if test ${ac_cv_lib_curses_is_pad+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef is_pad + void *x=is_pad + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_is_pad=yes +else case e in #( + e) ac_cv_lib_curses_is_pad=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_is_pad" >&5 +printf "%s\n" "$ac_cv_lib_curses_is_pad" >&6; } + if test "x$ac_cv_lib_curses_is_pad" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_IS_PAD 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function is_term_resized" >&5 +printf %s "checking for curses function is_term_resized... " >&6; } +if test ${ac_cv_lib_curses_is_term_resized+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef is_term_resized + void *x=is_term_resized + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_is_term_resized=yes +else case e in #( + e) ac_cv_lib_curses_is_term_resized=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_is_term_resized" >&5 +printf "%s\n" "$ac_cv_lib_curses_is_term_resized" >&6; } + if test "x$ac_cv_lib_curses_is_term_resized" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_IS_TERM_RESIZED 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function resize_term" >&5 +printf %s "checking for curses function resize_term... " >&6; } +if test ${ac_cv_lib_curses_resize_term+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef resize_term + void *x=resize_term + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_resize_term=yes +else case e in #( + e) ac_cv_lib_curses_resize_term=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_resize_term" >&5 +printf "%s\n" "$ac_cv_lib_curses_resize_term" >&6; } + if test "x$ac_cv_lib_curses_resize_term" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_RESIZE_TERM 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function resizeterm" >&5 +printf %s "checking for curses function resizeterm... " >&6; } +if test ${ac_cv_lib_curses_resizeterm+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef resizeterm + void *x=resizeterm + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_resizeterm=yes +else case e in #( + e) ac_cv_lib_curses_resizeterm=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_resizeterm" >&5 +printf "%s\n" "$ac_cv_lib_curses_resizeterm" >&6; } + if test "x$ac_cv_lib_curses_resizeterm" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_RESIZETERM 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function immedok" >&5 +printf %s "checking for curses function immedok... " >&6; } +if test ${ac_cv_lib_curses_immedok+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef immedok + void *x=immedok + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_immedok=yes +else case e in #( + e) ac_cv_lib_curses_immedok=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_immedok" >&5 +printf "%s\n" "$ac_cv_lib_curses_immedok" >&6; } + if test "x$ac_cv_lib_curses_immedok" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_IMMEDOK 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function syncok" >&5 +printf %s "checking for curses function syncok... " >&6; } +if test ${ac_cv_lib_curses_syncok+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef syncok + void *x=syncok + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_syncok=yes +else case e in #( + e) ac_cv_lib_curses_syncok=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_syncok" >&5 +printf "%s\n" "$ac_cv_lib_curses_syncok" >&6; } + if test "x$ac_cv_lib_curses_syncok" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_SYNCOK 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function wchgat" >&5 +printf %s "checking for curses function wchgat... " >&6; } +if test ${ac_cv_lib_curses_wchgat+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef wchgat + void *x=wchgat + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_wchgat=yes +else case e in #( + e) ac_cv_lib_curses_wchgat=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_wchgat" >&5 +printf "%s\n" "$ac_cv_lib_curses_wchgat" >&6; } + if test "x$ac_cv_lib_curses_wchgat" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_WCHGAT 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function filter" >&5 +printf %s "checking for curses function filter... " >&6; } +if test ${ac_cv_lib_curses_filter+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef filter + void *x=filter + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_filter=yes +else case e in #( + e) ac_cv_lib_curses_filter=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_filter" >&5 +printf "%s\n" "$ac_cv_lib_curses_filter" >&6; } + if test "x$ac_cv_lib_curses_filter" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_FILTER 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function has_key" >&5 +printf %s "checking for curses function has_key... " >&6; } +if test ${ac_cv_lib_curses_has_key+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef has_key + void *x=has_key + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_has_key=yes +else case e in #( + e) ac_cv_lib_curses_has_key=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_has_key" >&5 +printf "%s\n" "$ac_cv_lib_curses_has_key" >&6; } + if test "x$ac_cv_lib_curses_has_key" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_HAS_KEY 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function typeahead" >&5 +printf %s "checking for curses function typeahead... " >&6; } +if test ${ac_cv_lib_curses_typeahead+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef typeahead + void *x=typeahead + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_typeahead=yes +else case e in #( + e) ac_cv_lib_curses_typeahead=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_typeahead" >&5 +printf "%s\n" "$ac_cv_lib_curses_typeahead" >&6; } + if test "x$ac_cv_lib_curses_typeahead" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_TYPEAHEAD 1" >>confdefs.h + +fi + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curses function use_env" >&5 +printf %s "checking for curses function use_env... " >&6; } +if test ${ac_cv_lib_curses_use_env+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define NCURSES_OPAQUE 0 +#if defined(HAVE_NCURSESW_NCURSES_H) +# include +#elif defined(HAVE_NCURSESW_CURSES_H) +# include +#elif defined(HAVE_NCURSES_NCURSES_H) +# include +#elif defined(HAVE_NCURSES_CURSES_H) +# include +#elif defined(HAVE_NCURSES_H) +# include +#elif defined(HAVE_CURSES_H) +# include +#endif + +int +main (void) +{ + + #ifndef use_env + void *x=use_env + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_lib_curses_use_env=yes +else case e in #( + e) ac_cv_lib_curses_use_env=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_use_env" >&5 +printf "%s\n" "$ac_cv_lib_curses_use_env" >&6; } + if test "x$ac_cv_lib_curses_use_env" = xyes +then : + +printf "%s\n" "#define HAVE_CURSES_USE_ENV 1" >>confdefs.h + +fi + + + +CPPFLAGS=$ac_save_cppflags + +fi +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for device files" >&5 +printf "%s\n" "$as_me: checking for device files" >&6;} + +if test "$ac_sys_system" = "Linux-android" || test "$ac_sys_system" = "iOS"; then + ac_cv_file__dev_ptmx=no + ac_cv_file__dev_ptc=no +else + if test "x$cross_compiling" = xyes; then + if test "${ac_cv_file__dev_ptmx+set}" != set; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /dev/ptmx" >&5 +printf %s "checking for /dev/ptmx... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not set" >&5 +printf "%s\n" "not set" >&6; } + as_fn_error $? "set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling" "$LINENO" 5 + fi + if test "${ac_cv_file__dev_ptc+set}" != set; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /dev/ptc" >&5 +printf %s "checking for /dev/ptc... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not set" >&5 +printf "%s\n" "not set" >&6; } + as_fn_error $? "set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling" "$LINENO" 5 + fi + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /dev/ptmx" >&5 +printf %s "checking for /dev/ptmx... " >&6; } +if test ${ac_cv_file__dev_ptmx+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) test "$cross_compiling" = yes && + as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 +if test -r "/dev/ptmx"; then + ac_cv_file__dev_ptmx=yes +else + ac_cv_file__dev_ptmx=no +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_ptmx" >&5 +printf "%s\n" "$ac_cv_file__dev_ptmx" >&6; } +if test "x$ac_cv_file__dev_ptmx" = xyes +then : + +fi + + if test "x$ac_cv_file__dev_ptmx" = xyes; then + +printf "%s\n" "#define HAVE_DEV_PTMX 1" >>confdefs.h + + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /dev/ptc" >&5 +printf %s "checking for /dev/ptc... " >&6; } +if test ${ac_cv_file__dev_ptc+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) test "$cross_compiling" = yes && + as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 +if test -r "/dev/ptc"; then + ac_cv_file__dev_ptc=yes +else + ac_cv_file__dev_ptc=no +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_ptc" >&5 +printf "%s\n" "$ac_cv_file__dev_ptc" >&6; } +if test "x$ac_cv_file__dev_ptc" = xyes +then : + +fi + + if test "x$ac_cv_file__dev_ptc" = xyes; then + +printf "%s\n" "#define HAVE_DEV_PTC 1" >>confdefs.h + + fi +fi + +if test $ac_sys_system = Darwin +then + LIBS="$LIBS -framework CoreFoundation" +fi + +ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" " +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +" +if test "x$ac_cv_type_socklen_t" = xyes +then : + +printf "%s\n" "#define HAVE_SOCKLEN_T 1" >>confdefs.h + + +else case e in #( + e) +printf "%s\n" "#define socklen_t int" >>confdefs.h + ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken mbstowcs" >&5 +printf %s "checking for broken mbstowcs... " >&6; } +if test ${ac_cv_broken_mbstowcs+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_broken_mbstowcs=no +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +int main(void) { + size_t len = -1; + const char *str = "text"; + len = mbstowcs(NULL, str, 0); + return (len != 4); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_broken_mbstowcs=no +else case e in #( + e) ac_cv_broken_mbstowcs=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_mbstowcs" >&5 +printf "%s\n" "$ac_cv_broken_mbstowcs" >&6; } +if test "$ac_cv_broken_mbstowcs" = yes +then + +printf "%s\n" "#define HAVE_BROKEN_MBSTOWCS 1" >>confdefs.h + +fi + +# Check for --with-computed-gotos +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-computed-gotos" >&5 +printf %s "checking for --with-computed-gotos... " >&6; } + +# Check whether --with-computed-gotos was given. +if test ${with_computed_gotos+y} +then : + withval=$with_computed_gotos; +if test "$withval" = yes +then + +printf "%s\n" "#define USE_COMPUTED_GOTOS 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +if test "$withval" = no +then + +printf "%s\n" "#define USE_COMPUTED_GOTOS 0" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no value specified" >&5 +printf "%s\n" "no value specified" >&6; } ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports computed gotos" >&5 +printf %s "checking whether $CC supports computed gotos... " >&6; } +if test ${ac_cv_computed_gotos+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + if test "${with_computed_gotos+set}" = set; then + ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos" + else + ac_cv_computed_gotos=no + fi +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int main(int argc, char **argv) +{ + static void *targets[1] = { &&LABEL1 }; + goto LABEL2; +LABEL1: + return 0; +LABEL2: + goto *targets[0]; + return 1; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_computed_gotos=yes +else case e in #( + e) ac_cv_computed_gotos=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_computed_gotos" >&5 +printf "%s\n" "$ac_cv_computed_gotos" >&6; } +case "$ac_cv_computed_gotos" in yes*) + +printf "%s\n" "#define HAVE_COMPUTED_GOTOS 1" >>confdefs.h + +esac + +# Check for --with-tail-call-interp +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-tail-call-interp" >&5 +printf %s "checking for --with-tail-call-interp... " >&6; } + +# Check whether --with-tail-call-interp was given. +if test ${with_tail_call_interp+y} +then : + withval=$with_tail_call_interp; +if test "$withval" = yes +then + +printf "%s\n" "#define _Py_TAIL_CALL_INTERP 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +if test "$withval" = no +then + +printf "%s\n" "#define _Py_TAIL_CALL_INTERP 0" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no value specified" >&5 +printf "%s\n" "no value specified" >&6; } ;; +esac +fi + + +# Check for --with-remote-debug +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-remote-debug" >&5 +printf %s "checking for --with-remote-debug... " >&6; } + +# Check whether --with-remote-debug was given. +if test ${with_remote_debug+y} +then : + withval=$with_remote_debug; +else case e in #( + e) with_remote_debug=yes ;; +esac +fi + + +if test "$with_remote_debug" = yes; then + +printf "%s\n" "#define Py_REMOTE_DEBUG 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +case $ac_sys_system in +AIX*) + +printf "%s\n" "#define HAVE_BROKEN_PIPE_BUF 1" >>confdefs.h + ;; +esac + + + + +for h in `(cd $srcdir;echo Python/thread_*.h)` +do + THREADHEADERS="$THREADHEADERS \$(srcdir)/$h" +done + + +SRCDIRS="\ + Modules \ + Modules/_ctypes \ + Modules/_decimal \ + Modules/_decimal/libmpdec \ + Modules/_hacl \ + Modules/_io \ + Modules/_multiprocessing \ + Modules/_remote_debugging \ + Modules/_sqlite \ + Modules/_sre \ + Modules/_testcapi \ + Modules/_testinternalcapi \ + Modules/_testlimitedcapi \ + Modules/_xxtestfuzz \ + Modules/_zstd \ + Modules/cjkcodecs \ + Modules/expat \ + Objects \ + Objects/mimalloc \ + Objects/mimalloc/prim \ + Parser \ + Parser/tokenizer \ + Parser/lexer \ + Programs \ + Python \ + Python/frozen_modules" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for build directories" >&5 +printf %s "checking for build directories... " >&6; } +for dir in $SRCDIRS; do + if test ! -d $dir; then + mkdir $dir + fi +done +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } + +# Availability of -O2: +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -O2" >&5 +printf %s "checking for -O2... " >&6; } +if test ${ac_cv_compile_o2+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +saved_cflags="$CFLAGS" +CFLAGS="-O2" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_compile_o2=yes +else case e in #( + e) ac_cv_compile_o2=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +CFLAGS="$saved_cflags" + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_compile_o2" >&5 +printf "%s\n" "$ac_cv_compile_o2" >&6; } + +# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect: +# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for glibc _FORTIFY_SOURCE/memmove bug" >&5 +printf %s "checking for glibc _FORTIFY_SOURCE/memmove bug... " >&6; } +saved_cflags="$CFLAGS" +CFLAGS="-O2 -D_FORTIFY_SOURCE=2" +if test "$ac_cv_compile_o2" = no; then + CFLAGS="" +fi +if test "$cross_compiling" = yes +then : + have_glibc_memmove_bug=undefined +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +void foo(void *p, void *q) { memmove(p, q, 19); } +int main(void) { + char a[32] = "123456789000000000"; + foo(&a[9], a); + if (strcmp(a, "123456789123456789000000000") != 0) + return 1; + foo(a, &a[9]); + if (strcmp(a, "123456789000000000") != 0) + return 1; + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + have_glibc_memmove_bug=no +else case e in #( + e) have_glibc_memmove_bug=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + +CFLAGS="$saved_cflags" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_glibc_memmove_bug" >&5 +printf "%s\n" "$have_glibc_memmove_bug" >&6; } +if test "$have_glibc_memmove_bug" = yes; then + +printf "%s\n" "#define HAVE_GLIBC_MEMMOVE_BUG 1" >>confdefs.h + +fi + +if test "$ac_cv_gcc_asm_for_x87" = yes; then + # Some versions of gcc miscompile inline asm: + # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 + # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html + case $ac_cv_cc_name in + gcc) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gcc ipa-pure-const bug" >&5 +printf %s "checking for gcc ipa-pure-const bug... " >&6; } + saved_cflags="$CFLAGS" + CFLAGS="-O2" + if test "$cross_compiling" = yes +then : + have_ipa_pure_const_bug=undefined +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + __attribute__((noinline)) int + foo(int *p) { + int r; + asm ( "movl \$6, (%1)\n\t" + "xorl %0, %0\n\t" + : "=r" (r) : "r" (p) : "memory" + ); + return r; + } + int main(void) { + int p = 8; + if ((foo(&p) ? : p) != 6) + return 1; + return 0; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + have_ipa_pure_const_bug=no +else case e in #( + e) have_ipa_pure_const_bug=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + CFLAGS="$saved_cflags" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_ipa_pure_const_bug" >&5 +printf "%s\n" "$have_ipa_pure_const_bug" >&6; } + if test "$have_ipa_pure_const_bug" = yes; then + +printf "%s\n" "#define HAVE_IPA_PURE_CONST_BUG 1" >>confdefs.h + + fi + ;; + esac +fi + +# ensurepip option +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ensurepip" >&5 +printf %s "checking for ensurepip... " >&6; } + +# Check whether --with-ensurepip was given. +if test ${with_ensurepip+y} +then : + withval=$with_ensurepip; +else case e in #( + e) + case $ac_sys_system in #( + Emscripten) : + with_ensurepip=no ;; #( + WASI) : + with_ensurepip=no ;; #( + iOS) : + with_ensurepip=no ;; #( + *) : + with_ensurepip=upgrade + ;; +esac + ;; +esac +fi + +case $with_ensurepip in #( + yes|upgrade) : + ENSUREPIP=upgrade ;; #( + install) : + ENSUREPIP=install ;; #( + no) : + ENSUREPIP=no ;; #( + *) : + as_fn_error $? "--with-ensurepip=upgrade|install|no" "$LINENO" 5 ;; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ENSUREPIP" >&5 +printf "%s\n" "$ENSUREPIP" >&6; } + + +# check if the dirent structure of a d_type field and DT_UNKNOWN is defined +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the dirent structure of a d_type field" >&5 +printf %s "checking if the dirent structure of a d_type field... " >&6; } +if test ${ac_cv_dirent_d_type+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include + + int main(void) { + struct dirent entry; + return entry.d_type == DT_UNKNOWN; + } + + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_dirent_d_type=yes +else case e in #( + e) ac_cv_dirent_d_type=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dirent_d_type" >&5 +printf "%s\n" "$ac_cv_dirent_d_type" >&6; } + +if test "x$ac_cv_dirent_d_type" = xyes +then : + + +printf "%s\n" "#define HAVE_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + +# check if the Linux getrandom() syscall is available +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the Linux getrandom() syscall" >&5 +printf %s "checking for the Linux getrandom() syscall... " >&6; } +if test ${ac_cv_getrandom_syscall+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include + #include + #include + #include + + int main(void) { + char buffer[1]; + const size_t buflen = sizeof(buffer); + const int flags = GRND_NONBLOCK; + /* ignore the result, Python checks for ENOSYS and EAGAIN at runtime */ + (void)syscall(SYS_getrandom, buffer, buflen, flags); + return 0; + } + + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_getrandom_syscall=yes +else case e in #( + e) ac_cv_getrandom_syscall=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_getrandom_syscall" >&5 +printf "%s\n" "$ac_cv_getrandom_syscall" >&6; } + +if test "x$ac_cv_getrandom_syscall" = xyes +then : + + +printf "%s\n" "#define HAVE_GETRANDOM_SYSCALL 1" >>confdefs.h + + +fi + +# check if the getrandom() function is available +# the test was written for the Solaris function of +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the getrandom() function" >&5 +printf %s "checking for the getrandom() function... " >&6; } +if test ${ac_cv_func_getrandom+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include + #include + + int main(void) { + char buffer[1]; + const size_t buflen = sizeof(buffer); + const int flags = 0; + /* ignore the result, Python checks for ENOSYS at runtime */ + (void)getrandom(buffer, buflen, flags); + return 0; + } + + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_getrandom=yes +else case e in #( + e) ac_cv_func_getrandom=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getrandom" >&5 +printf "%s\n" "$ac_cv_func_getrandom" >&6; } + +if test "x$ac_cv_func_getrandom" = xyes +then : + + +printf "%s\n" "#define HAVE_GETRANDOM 1" >>confdefs.h + + +fi + +# checks for POSIX shared memory, used by Modules/_multiprocessing/posixshmem.c +# shm_* may only be available if linking against librt +POSIXSHMEM_CFLAGS='-I$(srcdir)/Modules/_multiprocessing' +save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing shm_open" >&5 +printf %s "checking for library containing shm_open... " >&6; } +if test ${ac_cv_search_shm_open+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char shm_open (void); +int +main (void) +{ +return shm_open (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_shm_open=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_shm_open+y} +then : + break +fi +done +if test ${ac_cv_search_shm_open+y} +then : + +else case e in #( + e) ac_cv_search_shm_open=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_shm_open" >&5 +printf "%s\n" "$ac_cv_search_shm_open" >&6; } +ac_res=$ac_cv_search_shm_open +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "x$ac_cv_search_shm_open" = x-lrt +then : + POSIXSHMEM_LIBS="-lrt" +fi + + save_ac_includes_default=$ac_includes_default + ac_includes_default="\ + ${ac_includes_default} + #ifndef __cplusplus + # ifdef HAVE_SYS_MMAN_H + # include + # endif + #endif + " + + for ac_func in shm_open shm_unlink +do : + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 +_ACEOF + have_posix_shmem=yes +else case e in #( + e) have_posix_shmem=no ;; +esac +fi + +done + ac_includes_default=$save_ac_includes_default + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +# Check for usable OpenSSL + + found=false + +# Check whether --with-openssl was given. +if test ${with_openssl+y} +then : + withval=$with_openssl; + case "$withval" in + "" | y | ye | yes | n | no) + as_fn_error $? "Invalid --with-openssl value" "$LINENO" 5 + ;; + *) ssldirs="$withval" + ;; + esac + +else case e in #( + e) + # if pkg-config is installed and openssl has installed a .pc file, + # then use that information and don't search ssldirs + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$PKG_CONFIG"; then + ac_cv_prog_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PKG_CONFIG="${ac_tool_prefix}pkg-config" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +PKG_CONFIG=$ac_cv_prog_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_PKG_CONFIG"; then + ac_ct_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_PKG_CONFIG"; then + ac_cv_prog_ac_ct_PKG_CONFIG="$ac_ct_PKG_CONFIG" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_PKG_CONFIG="pkg-config" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_PKG_CONFIG=$ac_cv_prog_ac_ct_PKG_CONFIG +if test -n "$ac_ct_PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_PKG_CONFIG" >&5 +printf "%s\n" "$ac_ct_PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_ct_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_prog_PKG_CONFIG" +fi + + if test x"$PKG_CONFIG" != x""; then + OPENSSL_LDFLAGS=`$PKG_CONFIG openssl --libs-only-L 2>/dev/null` + if test $? = 0; then + OPENSSL_LIBS=`$PKG_CONFIG openssl --libs-only-l 2>/dev/null` + OPENSSL_INCLUDES=`$PKG_CONFIG openssl --cflags-only-I 2>/dev/null` + found=true + fi + fi + + # no such luck; use some default ssldirs + if ! $found; then + ssldirs="/usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr" + fi + + ;; +esac +fi + + + + # note that we #include , so the OpenSSL headers have to be in + # an 'openssl' subdirectory + + if ! $found; then + OPENSSL_INCLUDES= + for ssldir in $ssldirs; do + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for include/openssl/ssl.h in $ssldir" >&5 +printf %s "checking for include/openssl/ssl.h in $ssldir... " >&6; } + if test -f "$ssldir/include/openssl/ssl.h"; then + OPENSSL_INCLUDES="-I$ssldir/include" + OPENSSL_LDFLAGS="-L$ssldir/lib" + OPENSSL_LIBS="-lssl -lcrypto" + found=true + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + break + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + fi + done + + # if the file wasn't found, well, go ahead and try the link anyway -- maybe + # it will just work! + fi + + # try the preprocessor and linker with our new flags, + # being careful not to pollute the global LIBS, LDFLAGS, and CPPFLAGS + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether compiling and linking against OpenSSL works" >&5 +printf %s "checking whether compiling and linking against OpenSSL works... " >&6; } + echo "Trying link with OPENSSL_LDFLAGS=$OPENSSL_LDFLAGS;" \ + "OPENSSL_LIBS=$OPENSSL_LIBS; OPENSSL_INCLUDES=$OPENSSL_INCLUDES" >&5 + + save_LIBS="$LIBS" + save_LDFLAGS="$LDFLAGS" + save_CPPFLAGS="$CPPFLAGS" + LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" + LIBS="$OPENSSL_LIBS $LIBS" + CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +SSL_new(NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_openssl=yes + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_openssl=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + + + + + + +# rpath to libssl and libcrypto +if test "x$GNULD" = xyes +then : + + rpath_arg="-Wl,--enable-new-dtags,-rpath=" + +else case e in #( + e) + if test "$ac_sys_system" = "Darwin" + then + rpath_arg="-Wl,-rpath," + else + rpath_arg="-Wl,-rpath=" + fi + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-openssl-rpath" >&5 +printf %s "checking for --with-openssl-rpath... " >&6; } + +# Check whether --with-openssl-rpath was given. +if test ${with_openssl_rpath+y} +then : + withval=$with_openssl_rpath; +else case e in #( + e) with_openssl_rpath=no + ;; +esac +fi + +case $with_openssl_rpath in #( + auto|yes) : + + OPENSSL_RPATH=auto + for arg in "$OPENSSL_LDFLAGS"; do + case $arg in #( + -L*) : + OPENSSL_LDFLAGS_RPATH="$OPENSSL_LDFLAGS_RPATH ${rpath_arg}$(echo $arg | cut -c3-)" + ;; #( + *) : + ;; +esac + done + ;; #( + no) : + OPENSSL_RPATH= ;; #( + *) : + if test -d "$with_openssl_rpath" +then : + + OPENSSL_RPATH="$with_openssl_rpath" + OPENSSL_LDFLAGS_RPATH="${rpath_arg}$with_openssl_rpath" + +else case e in #( + e) as_fn_error $? "--with-openssl-rpath \"$with_openssl_rpath\" is not a directory" "$LINENO" 5 ;; +esac +fi + + ;; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OPENSSL_RPATH" >&5 +printf "%s\n" "$OPENSSL_RPATH" >&6; } + +# This static linking is NOT OFFICIALLY SUPPORTED and not advertised. +# Requires static OpenSSL build with position-independent code. Some features +# like DSO engines or external OSSL providers don't work. Only tested with GCC +# and clang on X86_64. +if test "x$PY_UNSUPPORTED_OPENSSL_BUILD" = xstatic +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsupported static openssl build" >&5 +printf %s "checking for unsupported static openssl build... " >&6; } + new_OPENSSL_LIBS= + for arg in $OPENSSL_LIBS; do + case $arg in #( + -l*) : + + libname=$(echo $arg | cut -c3-) + new_OPENSSL_LIBS="$new_OPENSSL_LIBS -l:lib${libname}.a -Wl,--exclude-libs,lib${libname}.a" + ;; #( + *) : + new_OPENSSL_LIBS="$new_OPENSSL_LIBS $arg" + ;; +esac + done + OPENSSL_LIBS="$new_OPENSSL_LIBS $ZLIB_LIBS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OPENSSL_LIBS" >&5 +printf "%s\n" "$OPENSSL_LIBS" >&6; } + +fi + +LIBCRYPTO_LIBS= +for arg in $OPENSSL_LIBS; do + case $arg in #( + -l*ssl*|-Wl*ssl*) : + ;; #( + *) : + LIBCRYPTO_LIBS="$LIBCRYPTO_LIBS $arg" + ;; +esac +done + +# check if OpenSSL libraries work as expected +save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + LIBS="$LIBS $OPENSSL_LIBS" + CFLAGS="$CFLAGS $OPENSSL_INCLUDES" + LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides required ssl module APIs" >&5 +printf %s "checking whether OpenSSL provides required ssl module APIs... " >&6; } +if test ${ac_cv_working_openssl_ssl+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #if OPENSSL_VERSION_NUMBER < 0x10101000L + #error "OpenSSL >= 1.1.1 is required" + #endif + static void keylog_cb(const SSL *ssl, const char *line) {} + +int +main (void) +{ + + SSL_CTX *ctx = SSL_CTX_new(TLS_client_method()); + SSL_CTX_set_keylog_callback(ctx, keylog_cb); + SSL *ssl = SSL_new(ctx); + X509_VERIFY_PARAM *param = SSL_get0_param(ssl); + X509_VERIFY_PARAM_set1_host(param, "python.org", 0); + SSL_free(ssl); + SSL_CTX_free(ctx); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_openssl_ssl=yes +else case e in #( + e) ac_cv_working_openssl_ssl=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_openssl_ssl" >&5 +printf "%s\n" "$ac_cv_working_openssl_ssl" >&6; } + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +save_CFLAGS=$CFLAGS +save_CPPFLAGS=$CPPFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS + + + LIBS="$LIBS $LIBCRYPTO_LIBS" + CFLAGS="$CFLAGS $OPENSSL_INCLUDES" + LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides required hashlib module APIs" >&5 +printf %s "checking whether OpenSSL provides required hashlib module APIs... " >&6; } +if test ${ac_cv_working_openssl_hashlib+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #if OPENSSL_VERSION_NUMBER < 0x10101000L + #error "OpenSSL >= 1.1.1 is required" + #endif + +int +main (void) +{ + + OBJ_nid2sn(NID_md5); + OBJ_nid2sn(NID_sha1); + OBJ_nid2sn(NID_sha512); + OBJ_nid2sn(NID_sha3_512); + EVP_PBE_scrypt(NULL, 0, NULL, 0, 2, 8, 1, 0, NULL, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_openssl_hashlib=yes +else case e in #( + e) ac_cv_working_openssl_hashlib=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_openssl_hashlib" >&5 +printf "%s\n" "$ac_cv_working_openssl_hashlib" >&6; } + +CFLAGS=$save_CFLAGS +CPPFLAGS=$save_CPPFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS + + + +# ssl module default cipher suite string + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-ssl-default-suites" >&5 +printf %s "checking for --with-ssl-default-suites... " >&6; } + +# Check whether --with-ssl-default-suites was given. +if test ${with_ssl_default_suites+y} +then : + withval=$with_ssl_default_suites; +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 +printf "%s\n" "$withval" >&6; } +case "$withval" in + python) + printf "%s\n" "#define PY_SSL_DEFAULT_CIPHERS 1" >>confdefs.h + + ;; + openssl) + printf "%s\n" "#define PY_SSL_DEFAULT_CIPHERS 2" >>confdefs.h + + ;; + *) + printf "%s\n" "#define PY_SSL_DEFAULT_CIPHERS 0" >>confdefs.h + + printf "%s\n" "#define PY_SSL_DEFAULT_CIPHER_STRING \"$withval\"" >>confdefs.h + + ;; +esac + +else case e in #( + e) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: python" >&5 +printf "%s\n" "python" >&6; } +printf "%s\n" "#define PY_SSL_DEFAULT_CIPHERS 1" >>confdefs.h + + ;; +esac +fi + + +# builtin hash modules +default_hashlib_hashes="md5,sha1,sha2,sha3,blake2" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --with-builtin-hashlib-hashes" >&5 +printf %s "checking for --with-builtin-hashlib-hashes... " >&6; } + +# Check whether --with-builtin-hashlib-hashes was given. +if test ${with_builtin_hashlib_hashes+y} +then : + withval=$with_builtin_hashlib_hashes; + case $with_builtin_hashlib_hashes in #( + yes) : + with_builtin_hashlib_hashes=$default_hashlib_hashes ;; #( + no) : + with_builtin_hashlib_hashes="" + ;; #( + *) : + ;; +esac + +else case e in #( + e) with_builtin_hashlib_hashes=$default_hashlib_hashes ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_builtin_hashlib_hashes" >&5 +printf "%s\n" "$with_builtin_hashlib_hashes" >&6; } + +printf "%s\n" "#define PY_BUILTIN_HASHLIB_HASHES \"$with_builtin_hashlib_hashes\"" >>confdefs.h + + +as_save_IFS=$IFS +IFS=, +for builtin_hash in $with_builtin_hashlib_hashes; do + case $builtin_hash in #( + md5) : + with_builtin_md5=yes ;; #( + sha1) : + with_builtin_sha1=yes ;; #( + sha2) : + with_builtin_sha2=yes ;; #( + sha3) : + with_builtin_sha3=yes ;; #( + blake2) : + with_builtin_blake2=yes + ;; #( + *) : + ;; +esac +done +IFS=$as_save_IFS + +# Check whether to disable test modules. Once set, setup.py will not build +# test extension modules and "make install" will not install test suites. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --disable-test-modules" >&5 +printf %s "checking for --disable-test-modules... " >&6; } +# Check whether --enable-test-modules was given. +if test ${enable_test_modules+y} +then : + enableval=$enable_test_modules; + if test "x$enable_test_modules" = xyes +then : + TEST_MODULES=yes +else case e in #( + e) TEST_MODULES=no ;; +esac +fi + +else case e in #( + e) TEST_MODULES=yes ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEST_MODULES" >&5 +printf "%s\n" "$TEST_MODULES" >&6; } + + +# gh-109054: Check if -latomic is needed to get atomic functions. +# On Linux aarch64, GCC may require programs and libraries to be linked +# explicitly to libatomic. Call _Py_atomic_or_uint64() which may require +# libatomic __atomic_fetch_or_8(), or not, depending on the C compiler and the +# compiler flags. +# +# gh-112779: On RISC-V, GCC 12 and earlier require libatomic support for 1-byte +# and 2-byte operations, but not for 8-byte operations. +# +# Avoid #include or #include . The header +# requires header which is only written below by AC_OUTPUT below. +# If the check is done after AC_OUTPUT, modifying LIBS has no effect +# anymore. cannot be included alone, it's designed to be included +# by : it expects other includes and macros to be defined. +save_CPPFLAGS=$CPPFLAGS +CPPFLAGS="${BASECPPFLAGS} -I. -I${srcdir}/Include ${CPPFLAGS}" + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether libatomic is needed by " >&5 +printf %s "checking whether libatomic is needed by ... " >&6; } +if test ${ac_cv_libatomic_needed+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +// pyatomic.h needs uint64_t and Py_ssize_t types +#include // int64_t, intptr_t +#ifdef HAVE_SYS_TYPES_H +# include // ssize_t +#endif +// Code adapted from Include/pyport.h +#if HAVE_SSIZE_T +typedef ssize_t Py_ssize_t; +#elif SIZEOF_VOID_P == SIZEOF_SIZE_T +typedef intptr_t Py_ssize_t; +#else +# error "unable to define Py_ssize_t" +#endif + +#include "pyatomic.h" + +int main() +{ + uint64_t value; + _Py_atomic_store_uint64(&value, 2); + if (_Py_atomic_or_uint64(&value, 8) != 2) { + return 1; // error + } + if (_Py_atomic_load_uint64(&value) != 10) { + return 1; // error + } + uint8_t byte = 0xb8; + if (_Py_atomic_or_uint8(&byte, 0x2d) != 0xb8) { + return 1; // error + } + if (_Py_atomic_load_uint8(&byte) != 0xbd) { + return 1; // error + } + return 0; // all good +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_libatomic_needed=no +else case e in #( + e) ac_cv_libatomic_needed=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libatomic_needed" >&5 +printf "%s\n" "$ac_cv_libatomic_needed" >&6; } + +if test "x$ac_cv_libatomic_needed" = xyes +then : + LIBS="${LIBS} -latomic" + LIBATOMIC=${LIBATOMIC-"-latomic"} +fi +CPPFLAGS=$save_CPPFLAGS + + +# gh-59705: Maximum length in bytes of a thread name +case "$ac_sys_system" in + Linux*) _PYTHREAD_NAME_MAXLEN=15;; # Linux and Android + SunOS*) _PYTHREAD_NAME_MAXLEN=31;; + NetBSD*) _PYTHREAD_NAME_MAXLEN=15;; # gh-131268 + Darwin) _PYTHREAD_NAME_MAXLEN=63;; + iOS) _PYTHREAD_NAME_MAXLEN=63;; + FreeBSD*) _PYTHREAD_NAME_MAXLEN=19;; # gh-131268 + OpenBSD*) _PYTHREAD_NAME_MAXLEN=23;; # gh-131268 + *) _PYTHREAD_NAME_MAXLEN=;; +esac +if test -n "$_PYTHREAD_NAME_MAXLEN"; then + +printf "%s\n" "#define _PYTHREAD_NAME_MAXLEN $_PYTHREAD_NAME_MAXLEN" >>confdefs.h + +fi + + + +# stdlib + + +# stdlib not available +case $ac_sys_system in #( + AIX) : + + + py_cv_module__scproxy=n/a + ;; #( + VxWorks*) : + + + py_cv_module__scproxy=n/a + py_cv_module_termios=n/a + py_cv_module_grp=n/a + ;; #( + Darwin) : + ;; #( + iOS) : + + + + py_cv_module__curses=n/a + py_cv_module__curses_panel=n/a + py_cv_module__gdbm=n/a + py_cv_module__multiprocessing=n/a + py_cv_module__posixshmem=n/a + py_cv_module__posixsubprocess=n/a + py_cv_module__scproxy=n/a + py_cv_module__tkinter=n/a + py_cv_module_grp=n/a + py_cv_module_nis=n/a + py_cv_module_readline=n/a + py_cv_module_pwd=n/a + py_cv_module_spwd=n/a + py_cv_module_syslog=n/a + py_cv_module_=n/a + + ;; #( + CYGWIN*) : + + + py_cv_module__scproxy=n/a + ;; #( + QNX*) : + + + py_cv_module__scproxy=n/a + ;; #( + FreeBSD*) : + + + py_cv_module__scproxy=n/a + ;; #( + Emscripten) : + + + + py_cv_module__curses=n/a + py_cv_module__curses_panel=n/a + py_cv_module__dbm=n/a + py_cv_module__gdbm=n/a + py_cv_module__multiprocessing=n/a + py_cv_module__posixshmem=n/a + py_cv_module__posixsubprocess=n/a + py_cv_module__scproxy=n/a + py_cv_module__tkinter=n/a + py_cv_module__interpreters=n/a + py_cv_module__interpchannels=n/a + py_cv_module__interpqueues=n/a + py_cv_module_grp=n/a + py_cv_module_pwd=n/a + py_cv_module_resource=n/a + py_cv_module_syslog=n/a + py_cv_module_=n/a + + + + py_cv_module_readline=n/a + py_cv_module_=n/a + + ;; #( + WASI) : + + + + py_cv_module__curses=n/a + py_cv_module__curses_panel=n/a + py_cv_module__dbm=n/a + py_cv_module__gdbm=n/a + py_cv_module__multiprocessing=n/a + py_cv_module__posixshmem=n/a + py_cv_module__posixsubprocess=n/a + py_cv_module__scproxy=n/a + py_cv_module__tkinter=n/a + py_cv_module__interpreters=n/a + py_cv_module__interpchannels=n/a + py_cv_module__interpqueues=n/a + py_cv_module_grp=n/a + py_cv_module_pwd=n/a + py_cv_module_resource=n/a + py_cv_module_syslog=n/a + py_cv_module_=n/a + + + + py_cv_module__ctypes_test=n/a + py_cv_module__remote_debugging=n/a + py_cv_module__testimportmultiple=n/a + py_cv_module__testmultiphase=n/a + py_cv_module__testsinglephase=n/a + py_cv_module_fcntl=n/a + py_cv_module_mmap=n/a + py_cv_module_termios=n/a + py_cv_module_xxlimited=n/a + py_cv_module_xxlimited_35=n/a + py_cv_module_=n/a + + ;; #( + *) : + + + py_cv_module__scproxy=n/a + + ;; +esac + + +case $host_cpu in #( + wasm32|wasm64) : + MODULE_BUILDTYPE=static ;; #( + *) : + MODULE_BUILDTYPE=${MODULE_BUILDTYPE:-shared} + ;; +esac + + + +MODULE_BLOCK= + + + + + + + if test "$py_cv_module__io" != "n/a" +then : + py_cv_module__io=yes +fi + if test "$py_cv_module__io" = yes; then + MODULE__IO_TRUE= + MODULE__IO_FALSE='#' +else + MODULE__IO_TRUE='#' + MODULE__IO_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__IO_STATE=$py_cv_module__io$as_nl" + if test "x$py_cv_module__io" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__IO_CFLAGS=-I\$(srcdir)/Modules/_io$as_nl" + + +fi + + + if test "$py_cv_module_time" != "n/a" +then : + py_cv_module_time=yes +fi + if test "$py_cv_module_time" = yes; then + MODULE_TIME_TRUE= + MODULE_TIME_FALSE='#' +else + MODULE_TIME_TRUE='#' + MODULE_TIME_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE_TIME_STATE=$py_cv_module_time$as_nl" + if test "x$py_cv_module_time" = xyes +then : + + + as_fn_append MODULE_BLOCK "MODULE_TIME_LDFLAGS=$TIMEMODULE_LIB$as_nl" + +fi + + + + if test "$py_cv_module_array" != "n/a" +then : + py_cv_module_array=yes +fi + if test "$py_cv_module_array" = yes; then + MODULE_ARRAY_TRUE= + MODULE_ARRAY_FALSE='#' +else + MODULE_ARRAY_TRUE='#' + MODULE_ARRAY_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE_ARRAY_STATE=$py_cv_module_array$as_nl" + if test "x$py_cv_module_array" = xyes +then : + + + + +fi + + + if test "$py_cv_module__math_integer" != "n/a" +then : + py_cv_module__math_integer=yes +fi + if test "$py_cv_module__math_integer" = yes; then + MODULE__MATH_INTEGER_TRUE= + MODULE__MATH_INTEGER_FALSE='#' +else + MODULE__MATH_INTEGER_TRUE='#' + MODULE__MATH_INTEGER_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__MATH_INTEGER_STATE=$py_cv_module__math_integer$as_nl" + if test "x$py_cv_module__math_integer" = xyes +then : + + + + +fi + + + if test "$py_cv_module__asyncio" != "n/a" +then : + py_cv_module__asyncio=yes +fi + if test "$py_cv_module__asyncio" = yes; then + MODULE__ASYNCIO_TRUE= + MODULE__ASYNCIO_FALSE='#' +else + MODULE__ASYNCIO_TRUE='#' + MODULE__ASYNCIO_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__ASYNCIO_STATE=$py_cv_module__asyncio$as_nl" + if test "x$py_cv_module__asyncio" = xyes +then : + + + + +fi + + + if test "$py_cv_module__bisect" != "n/a" +then : + py_cv_module__bisect=yes +fi + if test "$py_cv_module__bisect" = yes; then + MODULE__BISECT_TRUE= + MODULE__BISECT_FALSE='#' +else + MODULE__BISECT_TRUE='#' + MODULE__BISECT_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__BISECT_STATE=$py_cv_module__bisect$as_nl" + if test "x$py_cv_module__bisect" = xyes +then : + + + + +fi + + + if test "$py_cv_module__csv" != "n/a" +then : + py_cv_module__csv=yes +fi + if test "$py_cv_module__csv" = yes; then + MODULE__CSV_TRUE= + MODULE__CSV_FALSE='#' +else + MODULE__CSV_TRUE='#' + MODULE__CSV_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__CSV_STATE=$py_cv_module__csv$as_nl" + if test "x$py_cv_module__csv" = xyes +then : + + + + +fi + + + if test "$py_cv_module__heapq" != "n/a" +then : + py_cv_module__heapq=yes +fi + if test "$py_cv_module__heapq" = yes; then + MODULE__HEAPQ_TRUE= + MODULE__HEAPQ_FALSE='#' +else + MODULE__HEAPQ_TRUE='#' + MODULE__HEAPQ_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__HEAPQ_STATE=$py_cv_module__heapq$as_nl" + if test "x$py_cv_module__heapq" = xyes +then : + + + + +fi + + + if test "$py_cv_module__json" != "n/a" +then : + py_cv_module__json=yes +fi + if test "$py_cv_module__json" = yes; then + MODULE__JSON_TRUE= + MODULE__JSON_FALSE='#' +else + MODULE__JSON_TRUE='#' + MODULE__JSON_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__JSON_STATE=$py_cv_module__json$as_nl" + if test "x$py_cv_module__json" = xyes +then : + + + + +fi + + + if test "$py_cv_module__lsprof" != "n/a" +then : + py_cv_module__lsprof=yes +fi + if test "$py_cv_module__lsprof" = yes; then + MODULE__LSPROF_TRUE= + MODULE__LSPROF_FALSE='#' +else + MODULE__LSPROF_TRUE='#' + MODULE__LSPROF_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__LSPROF_STATE=$py_cv_module__lsprof$as_nl" + if test "x$py_cv_module__lsprof" = xyes +then : + + + + +fi + + + if test "$py_cv_module__pickle" != "n/a" +then : + py_cv_module__pickle=yes +fi + if test "$py_cv_module__pickle" = yes; then + MODULE__PICKLE_TRUE= + MODULE__PICKLE_FALSE='#' +else + MODULE__PICKLE_TRUE='#' + MODULE__PICKLE_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__PICKLE_STATE=$py_cv_module__pickle$as_nl" + if test "x$py_cv_module__pickle" = xyes +then : + + + + +fi + + + if test "$py_cv_module__posixsubprocess" != "n/a" +then : + py_cv_module__posixsubprocess=yes +fi + if test "$py_cv_module__posixsubprocess" = yes; then + MODULE__POSIXSUBPROCESS_TRUE= + MODULE__POSIXSUBPROCESS_FALSE='#' +else + MODULE__POSIXSUBPROCESS_TRUE='#' + MODULE__POSIXSUBPROCESS_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__POSIXSUBPROCESS_STATE=$py_cv_module__posixsubprocess$as_nl" + if test "x$py_cv_module__posixsubprocess" = xyes +then : + + + + +fi + + + if test "$py_cv_module__queue" != "n/a" +then : + py_cv_module__queue=yes +fi + if test "$py_cv_module__queue" = yes; then + MODULE__QUEUE_TRUE= + MODULE__QUEUE_FALSE='#' +else + MODULE__QUEUE_TRUE='#' + MODULE__QUEUE_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__QUEUE_STATE=$py_cv_module__queue$as_nl" + if test "x$py_cv_module__queue" = xyes +then : + + + + +fi + + + if test "$py_cv_module__random" != "n/a" +then : + py_cv_module__random=yes +fi + if test "$py_cv_module__random" = yes; then + MODULE__RANDOM_TRUE= + MODULE__RANDOM_FALSE='#' +else + MODULE__RANDOM_TRUE='#' + MODULE__RANDOM_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__RANDOM_STATE=$py_cv_module__random$as_nl" + if test "x$py_cv_module__random" = xyes +then : + + + + +fi + + + if test "$py_cv_module__remote_debugging" != "n/a" +then : + py_cv_module__remote_debugging=yes +fi + if test "$py_cv_module__remote_debugging" = yes; then + MODULE__REMOTE_DEBUGGING_TRUE= + MODULE__REMOTE_DEBUGGING_FALSE='#' +else + MODULE__REMOTE_DEBUGGING_TRUE='#' + MODULE__REMOTE_DEBUGGING_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__REMOTE_DEBUGGING_STATE=$py_cv_module__remote_debugging$as_nl" + if test "x$py_cv_module__remote_debugging" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__REMOTE_DEBUGGING_CFLAGS=$REMOTE_DEBUGGING_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__REMOTE_DEBUGGING_LDFLAGS=$REMOTE_DEBUGGING_LIBS$as_nl" + +fi + + + if test "$py_cv_module_select" != "n/a" +then : + py_cv_module_select=yes +fi + if test "$py_cv_module_select" = yes; then + MODULE_SELECT_TRUE= + MODULE_SELECT_FALSE='#' +else + MODULE_SELECT_TRUE='#' + MODULE_SELECT_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE_SELECT_STATE=$py_cv_module_select$as_nl" + if test "x$py_cv_module_select" = xyes +then : + + + + +fi + + + if test "$py_cv_module__struct" != "n/a" +then : + py_cv_module__struct=yes +fi + if test "$py_cv_module__struct" = yes; then + MODULE__STRUCT_TRUE= + MODULE__STRUCT_FALSE='#' +else + MODULE__STRUCT_TRUE='#' + MODULE__STRUCT_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__STRUCT_STATE=$py_cv_module__struct$as_nl" + if test "x$py_cv_module__struct" = xyes +then : + + + + +fi + + + if test "$py_cv_module__types" != "n/a" +then : + py_cv_module__types=yes +fi + if test "$py_cv_module__types" = yes; then + MODULE__TYPES_TRUE= + MODULE__TYPES_FALSE='#' +else + MODULE__TYPES_TRUE='#' + MODULE__TYPES_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__TYPES_STATE=$py_cv_module__types$as_nl" + if test "x$py_cv_module__types" = xyes +then : + + + + +fi + + + if test "$py_cv_module__typing" != "n/a" +then : + py_cv_module__typing=yes +fi + if test "$py_cv_module__typing" = yes; then + MODULE__TYPING_TRUE= + MODULE__TYPING_FALSE='#' +else + MODULE__TYPING_TRUE='#' + MODULE__TYPING_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__TYPING_STATE=$py_cv_module__typing$as_nl" + if test "x$py_cv_module__typing" = xyes +then : + + + + +fi + + + if test "$py_cv_module__interpreters" != "n/a" +then : + py_cv_module__interpreters=yes +fi + if test "$py_cv_module__interpreters" = yes; then + MODULE__INTERPRETERS_TRUE= + MODULE__INTERPRETERS_FALSE='#' +else + MODULE__INTERPRETERS_TRUE='#' + MODULE__INTERPRETERS_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__INTERPRETERS_STATE=$py_cv_module__interpreters$as_nl" + if test "x$py_cv_module__interpreters" = xyes +then : + + + + +fi + + + if test "$py_cv_module__interpchannels" != "n/a" +then : + py_cv_module__interpchannels=yes +fi + if test "$py_cv_module__interpchannels" = yes; then + MODULE__INTERPCHANNELS_TRUE= + MODULE__INTERPCHANNELS_FALSE='#' +else + MODULE__INTERPCHANNELS_TRUE='#' + MODULE__INTERPCHANNELS_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__INTERPCHANNELS_STATE=$py_cv_module__interpchannels$as_nl" + if test "x$py_cv_module__interpchannels" = xyes +then : + + + + +fi + + + if test "$py_cv_module__interpqueues" != "n/a" +then : + py_cv_module__interpqueues=yes +fi + if test "$py_cv_module__interpqueues" = yes; then + MODULE__INTERPQUEUES_TRUE= + MODULE__INTERPQUEUES_FALSE='#' +else + MODULE__INTERPQUEUES_TRUE='#' + MODULE__INTERPQUEUES_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__INTERPQUEUES_STATE=$py_cv_module__interpqueues$as_nl" + if test "x$py_cv_module__interpqueues" = xyes +then : + + + + +fi + + + if test "$py_cv_module__zoneinfo" != "n/a" +then : + py_cv_module__zoneinfo=yes +fi + if test "$py_cv_module__zoneinfo" = yes; then + MODULE__ZONEINFO_TRUE= + MODULE__ZONEINFO_FALSE='#' +else + MODULE__ZONEINFO_TRUE='#' + MODULE__ZONEINFO_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__ZONEINFO_STATE=$py_cv_module__zoneinfo$as_nl" + if test "x$py_cv_module__zoneinfo" = xyes +then : + + + + +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _multiprocessing" >&5 +printf %s "checking for stdlib extension module _multiprocessing... " >&6; } + if test "$py_cv_module__multiprocessing" != "n/a" +then : + + if true +then : + if test "$ac_cv_func_sem_unlink" = "yes" +then : + py_cv_module__multiprocessing=yes +else case e in #( + e) py_cv_module__multiprocessing=missing ;; +esac +fi +else case e in #( + e) py_cv_module__multiprocessing=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__MULTIPROCESSING_STATE=$py_cv_module__multiprocessing$as_nl" + if test "x$py_cv_module__multiprocessing" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__MULTIPROCESSING_CFLAGS=-I\$(srcdir)/Modules/_multiprocessing$as_nl" + + +fi + if test "$py_cv_module__multiprocessing" = yes; then + MODULE__MULTIPROCESSING_TRUE= + MODULE__MULTIPROCESSING_FALSE='#' +else + MODULE__MULTIPROCESSING_TRUE='#' + MODULE__MULTIPROCESSING_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__multiprocessing" >&5 +printf "%s\n" "$py_cv_module__multiprocessing" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _posixshmem" >&5 +printf %s "checking for stdlib extension module _posixshmem... " >&6; } + if test "$py_cv_module__posixshmem" != "n/a" +then : + + if true +then : + if test "$have_posix_shmem" = "yes" +then : + py_cv_module__posixshmem=yes +else case e in #( + e) py_cv_module__posixshmem=missing ;; +esac +fi +else case e in #( + e) py_cv_module__posixshmem=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__POSIXSHMEM_STATE=$py_cv_module__posixshmem$as_nl" + if test "x$py_cv_module__posixshmem" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__POSIXSHMEM_CFLAGS=$POSIXSHMEM_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__POSIXSHMEM_LDFLAGS=$POSIXSHMEM_LIBS$as_nl" + +fi + if test "$py_cv_module__posixshmem" = yes; then + MODULE__POSIXSHMEM_TRUE= + MODULE__POSIXSHMEM_FALSE='#' +else + MODULE__POSIXSHMEM_TRUE='#' + MODULE__POSIXSHMEM_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__posixshmem" >&5 +printf "%s\n" "$py_cv_module__posixshmem" >&6; } + + + + if test "$py_cv_module__statistics" != "n/a" +then : + py_cv_module__statistics=yes +fi + if test "$py_cv_module__statistics" = yes; then + MODULE__STATISTICS_TRUE= + MODULE__STATISTICS_FALSE='#' +else + MODULE__STATISTICS_TRUE='#' + MODULE__STATISTICS_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__STATISTICS_STATE=$py_cv_module__statistics$as_nl" + if test "x$py_cv_module__statistics" = xyes +then : + + + as_fn_append MODULE_BLOCK "MODULE__STATISTICS_LDFLAGS=$LIBM$as_nl" + +fi + + + if test "$py_cv_module_cmath" != "n/a" +then : + py_cv_module_cmath=yes +fi + if test "$py_cv_module_cmath" = yes; then + MODULE_CMATH_TRUE= + MODULE_CMATH_FALSE='#' +else + MODULE_CMATH_TRUE='#' + MODULE_CMATH_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE_CMATH_STATE=$py_cv_module_cmath$as_nl" + if test "x$py_cv_module_cmath" = xyes +then : + + + as_fn_append MODULE_BLOCK "MODULE_CMATH_LDFLAGS=$LIBM$as_nl" + +fi + + + if test "$py_cv_module_math" != "n/a" +then : + py_cv_module_math=yes +fi + if test "$py_cv_module_math" = yes; then + MODULE_MATH_TRUE= + MODULE_MATH_FALSE='#' +else + MODULE_MATH_TRUE='#' + MODULE_MATH_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE_MATH_STATE=$py_cv_module_math$as_nl" + if test "x$py_cv_module_math" = xyes +then : + + + as_fn_append MODULE_BLOCK "MODULE_MATH_LDFLAGS=$LIBM$as_nl" + +fi + + + + if test "$py_cv_module__datetime" != "n/a" +then : + py_cv_module__datetime=yes +fi + if test "$py_cv_module__datetime" = yes; then + MODULE__DATETIME_TRUE= + MODULE__DATETIME_FALSE='#' +else + MODULE__DATETIME_TRUE='#' + MODULE__DATETIME_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__DATETIME_STATE=$py_cv_module__datetime$as_nl" + if test "x$py_cv_module__datetime" = xyes +then : + + + as_fn_append MODULE_BLOCK "MODULE__DATETIME_LDFLAGS=$TIMEMODULE_LIB $LIBM$as_nl" + +fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module fcntl" >&5 +printf %s "checking for stdlib extension module fcntl... " >&6; } + if test "$py_cv_module_fcntl" != "n/a" +then : + + if true +then : + if test "$ac_cv_header_sys_ioctl_h" = "yes" -a "$ac_cv_header_fcntl_h" = "yes" +then : + py_cv_module_fcntl=yes +else case e in #( + e) py_cv_module_fcntl=missing ;; +esac +fi +else case e in #( + e) py_cv_module_fcntl=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_FCNTL_STATE=$py_cv_module_fcntl$as_nl" + if test "x$py_cv_module_fcntl" = xyes +then : + + + as_fn_append MODULE_BLOCK "MODULE_FCNTL_LDFLAGS=$FCNTL_LIBS$as_nl" + +fi + if test "$py_cv_module_fcntl" = yes; then + MODULE_FCNTL_TRUE= + MODULE_FCNTL_FALSE='#' +else + MODULE_FCNTL_TRUE='#' + MODULE_FCNTL_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_fcntl" >&5 +printf "%s\n" "$py_cv_module_fcntl" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module mmap" >&5 +printf %s "checking for stdlib extension module mmap... " >&6; } + if test "$py_cv_module_mmap" != "n/a" +then : + + if true +then : + if test "$ac_cv_header_sys_mman_h" = "yes" -a "$ac_cv_header_sys_stat_h" = "yes" +then : + py_cv_module_mmap=yes +else case e in #( + e) py_cv_module_mmap=missing ;; +esac +fi +else case e in #( + e) py_cv_module_mmap=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_MMAP_STATE=$py_cv_module_mmap$as_nl" + if test "x$py_cv_module_mmap" = xyes +then : + + + + +fi + if test "$py_cv_module_mmap" = yes; then + MODULE_MMAP_TRUE= + MODULE_MMAP_FALSE='#' +else + MODULE_MMAP_TRUE='#' + MODULE_MMAP_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_mmap" >&5 +printf "%s\n" "$py_cv_module_mmap" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _socket" >&5 +printf %s "checking for stdlib extension module _socket... " >&6; } + if test "$py_cv_module__socket" != "n/a" +then : + + if true +then : + if test "$ac_cv_header_sys_socket_h" = "yes" -a "$ac_cv_header_sys_types_h" = "yes" -a "$ac_cv_header_netinet_in_h" = "yes" +then : + py_cv_module__socket=yes +else case e in #( + e) py_cv_module__socket=missing ;; +esac +fi +else case e in #( + e) py_cv_module__socket=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__SOCKET_STATE=$py_cv_module__socket$as_nl" + if test "x$py_cv_module__socket" = xyes +then : + + + as_fn_append MODULE_BLOCK "MODULE__SOCKET_LDFLAGS=$SOCKET_LIBS$as_nl" + +fi + if test "$py_cv_module__socket" = yes; then + MODULE__SOCKET_TRUE= + MODULE__SOCKET_FALSE='#' +else + MODULE__SOCKET_TRUE='#' + MODULE__SOCKET_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__socket" >&5 +printf "%s\n" "$py_cv_module__socket" >&6; } + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module grp" >&5 +printf %s "checking for stdlib extension module grp... " >&6; } + if test "$py_cv_module_grp" != "n/a" +then : + + if true +then : + if test "$ac_cv_func_getgrent" = "yes" && + { test "$ac_cv_func_getgrgid" = "yes" || test "$ac_cv_func_getgrgid_r" = "yes"; } +then : + py_cv_module_grp=yes +else case e in #( + e) py_cv_module_grp=missing ;; +esac +fi +else case e in #( + e) py_cv_module_grp=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_GRP_STATE=$py_cv_module_grp$as_nl" + if test "x$py_cv_module_grp" = xyes +then : + + + + +fi + if test "$py_cv_module_grp" = yes; then + MODULE_GRP_TRUE= + MODULE_GRP_FALSE='#' +else + MODULE_GRP_TRUE='#' + MODULE_GRP_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_grp" >&5 +printf "%s\n" "$py_cv_module_grp" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module pwd" >&5 +printf %s "checking for stdlib extension module pwd... " >&6; } + if test "$py_cv_module_pwd" != "n/a" +then : + + if true +then : + if test "$ac_cv_func_getpwuid" = yes -o "$ac_cv_func_getpwuid_r" = yes +then : + py_cv_module_pwd=yes +else case e in #( + e) py_cv_module_pwd=missing ;; +esac +fi +else case e in #( + e) py_cv_module_pwd=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_PWD_STATE=$py_cv_module_pwd$as_nl" + if test "x$py_cv_module_pwd" = xyes +then : + + + + +fi + if test "$py_cv_module_pwd" = yes; then + MODULE_PWD_TRUE= + MODULE_PWD_FALSE='#' +else + MODULE_PWD_TRUE='#' + MODULE_PWD_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_pwd" >&5 +printf "%s\n" "$py_cv_module_pwd" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module resource" >&5 +printf %s "checking for stdlib extension module resource... " >&6; } + if test "$py_cv_module_resource" != "n/a" +then : + + if true +then : + if test "$ac_cv_header_sys_resource_h" = yes +then : + py_cv_module_resource=yes +else case e in #( + e) py_cv_module_resource=missing ;; +esac +fi +else case e in #( + e) py_cv_module_resource=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_RESOURCE_STATE=$py_cv_module_resource$as_nl" + if test "x$py_cv_module_resource" = xyes +then : + + + + +fi + if test "$py_cv_module_resource" = yes; then + MODULE_RESOURCE_TRUE= + MODULE_RESOURCE_FALSE='#' +else + MODULE_RESOURCE_TRUE='#' + MODULE_RESOURCE_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_resource" >&5 +printf "%s\n" "$py_cv_module_resource" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _scproxy" >&5 +printf %s "checking for stdlib extension module _scproxy... " >&6; } + if test "$py_cv_module__scproxy" != "n/a" +then : + + if test "$ac_sys_system" = "Darwin" +then : + if true +then : + py_cv_module__scproxy=yes +else case e in #( + e) py_cv_module__scproxy=missing ;; +esac +fi +else case e in #( + e) py_cv_module__scproxy=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__SCPROXY_STATE=$py_cv_module__scproxy$as_nl" + if test "x$py_cv_module__scproxy" = xyes +then : + + + as_fn_append MODULE_BLOCK "MODULE__SCPROXY_LDFLAGS=-framework SystemConfiguration -framework CoreFoundation$as_nl" + +fi + if test "$py_cv_module__scproxy" = yes; then + MODULE__SCPROXY_TRUE= + MODULE__SCPROXY_FALSE='#' +else + MODULE__SCPROXY_TRUE='#' + MODULE__SCPROXY_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__scproxy" >&5 +printf "%s\n" "$py_cv_module__scproxy" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module syslog" >&5 +printf %s "checking for stdlib extension module syslog... " >&6; } + if test "$py_cv_module_syslog" != "n/a" +then : + + if true +then : + if test "$ac_cv_header_syslog_h" = yes +then : + py_cv_module_syslog=yes +else case e in #( + e) py_cv_module_syslog=missing ;; +esac +fi +else case e in #( + e) py_cv_module_syslog=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_SYSLOG_STATE=$py_cv_module_syslog$as_nl" + if test "x$py_cv_module_syslog" = xyes +then : + + + + +fi + if test "$py_cv_module_syslog" = yes; then + MODULE_SYSLOG_TRUE= + MODULE_SYSLOG_FALSE='#' +else + MODULE_SYSLOG_TRUE='#' + MODULE_SYSLOG_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_syslog" >&5 +printf "%s\n" "$py_cv_module_syslog" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module termios" >&5 +printf %s "checking for stdlib extension module termios... " >&6; } + if test "$py_cv_module_termios" != "n/a" +then : + + if true +then : + if test "$ac_cv_header_termios_h" = yes +then : + py_cv_module_termios=yes +else case e in #( + e) py_cv_module_termios=missing ;; +esac +fi +else case e in #( + e) py_cv_module_termios=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_TERMIOS_STATE=$py_cv_module_termios$as_nl" + if test "x$py_cv_module_termios" = xyes +then : + + + + +fi + if test "$py_cv_module_termios" = yes; then + MODULE_TERMIOS_TRUE= + MODULE_TERMIOS_FALSE='#' +else + MODULE_TERMIOS_TRUE='#' + MODULE_TERMIOS_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_termios" >&5 +printf "%s\n" "$py_cv_module_termios" >&6; } + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module pyexpat" >&5 +printf %s "checking for stdlib extension module pyexpat... " >&6; } + if test "$py_cv_module_pyexpat" != "n/a" +then : + + if true +then : + if test "$ac_cv_header_sys_time_h" = "yes" +then : + py_cv_module_pyexpat=yes +else case e in #( + e) py_cv_module_pyexpat=missing ;; +esac +fi +else case e in #( + e) py_cv_module_pyexpat=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_PYEXPAT_STATE=$py_cv_module_pyexpat$as_nl" + if test "x$py_cv_module_pyexpat" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE_PYEXPAT_CFLAGS=$LIBEXPAT_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE_PYEXPAT_LDFLAGS=$LIBEXPAT_LDFLAGS$as_nl" + +fi + if test "$py_cv_module_pyexpat" = yes; then + MODULE_PYEXPAT_TRUE= + MODULE_PYEXPAT_FALSE='#' +else + MODULE_PYEXPAT_TRUE='#' + MODULE_PYEXPAT_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_pyexpat" >&5 +printf "%s\n" "$py_cv_module_pyexpat" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _elementtree" >&5 +printf %s "checking for stdlib extension module _elementtree... " >&6; } + if test "$py_cv_module__elementtree" != "n/a" +then : + + if true +then : + if true +then : + py_cv_module__elementtree=yes +else case e in #( + e) py_cv_module__elementtree=missing ;; +esac +fi +else case e in #( + e) py_cv_module__elementtree=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__ELEMENTTREE_STATE=$py_cv_module__elementtree$as_nl" + if test "x$py_cv_module__elementtree" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__ELEMENTTREE_CFLAGS=$LIBEXPAT_CFLAGS$as_nl" + + +fi + if test "$py_cv_module__elementtree" = yes; then + MODULE__ELEMENTTREE_TRUE= + MODULE__ELEMENTTREE_FALSE='#' +else + MODULE__ELEMENTTREE_TRUE='#' + MODULE__ELEMENTTREE_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__elementtree" >&5 +printf "%s\n" "$py_cv_module__elementtree" >&6; } + + + if test "$py_cv_module__codecs_cn" != "n/a" +then : + py_cv_module__codecs_cn=yes +fi + if test "$py_cv_module__codecs_cn" = yes; then + MODULE__CODECS_CN_TRUE= + MODULE__CODECS_CN_FALSE='#' +else + MODULE__CODECS_CN_TRUE='#' + MODULE__CODECS_CN_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__CODECS_CN_STATE=$py_cv_module__codecs_cn$as_nl" + if test "x$py_cv_module__codecs_cn" = xyes +then : + + + + +fi + + + if test "$py_cv_module__codecs_hk" != "n/a" +then : + py_cv_module__codecs_hk=yes +fi + if test "$py_cv_module__codecs_hk" = yes; then + MODULE__CODECS_HK_TRUE= + MODULE__CODECS_HK_FALSE='#' +else + MODULE__CODECS_HK_TRUE='#' + MODULE__CODECS_HK_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__CODECS_HK_STATE=$py_cv_module__codecs_hk$as_nl" + if test "x$py_cv_module__codecs_hk" = xyes +then : + + + + +fi + + + if test "$py_cv_module__codecs_iso2022" != "n/a" +then : + py_cv_module__codecs_iso2022=yes +fi + if test "$py_cv_module__codecs_iso2022" = yes; then + MODULE__CODECS_ISO2022_TRUE= + MODULE__CODECS_ISO2022_FALSE='#' +else + MODULE__CODECS_ISO2022_TRUE='#' + MODULE__CODECS_ISO2022_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__CODECS_ISO2022_STATE=$py_cv_module__codecs_iso2022$as_nl" + if test "x$py_cv_module__codecs_iso2022" = xyes +then : + + + + +fi + + + if test "$py_cv_module__codecs_jp" != "n/a" +then : + py_cv_module__codecs_jp=yes +fi + if test "$py_cv_module__codecs_jp" = yes; then + MODULE__CODECS_JP_TRUE= + MODULE__CODECS_JP_FALSE='#' +else + MODULE__CODECS_JP_TRUE='#' + MODULE__CODECS_JP_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__CODECS_JP_STATE=$py_cv_module__codecs_jp$as_nl" + if test "x$py_cv_module__codecs_jp" = xyes +then : + + + + +fi + + + if test "$py_cv_module__codecs_kr" != "n/a" +then : + py_cv_module__codecs_kr=yes +fi + if test "$py_cv_module__codecs_kr" = yes; then + MODULE__CODECS_KR_TRUE= + MODULE__CODECS_KR_FALSE='#' +else + MODULE__CODECS_KR_TRUE='#' + MODULE__CODECS_KR_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__CODECS_KR_STATE=$py_cv_module__codecs_kr$as_nl" + if test "x$py_cv_module__codecs_kr" = xyes +then : + + + + +fi + + + if test "$py_cv_module__codecs_tw" != "n/a" +then : + py_cv_module__codecs_tw=yes +fi + if test "$py_cv_module__codecs_tw" = yes; then + MODULE__CODECS_TW_TRUE= + MODULE__CODECS_TW_FALSE='#' +else + MODULE__CODECS_TW_TRUE='#' + MODULE__CODECS_TW_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__CODECS_TW_STATE=$py_cv_module__codecs_tw$as_nl" + if test "x$py_cv_module__codecs_tw" = xyes +then : + + + + +fi + + + if test "$py_cv_module__multibytecodec" != "n/a" +then : + py_cv_module__multibytecodec=yes +fi + if test "$py_cv_module__multibytecodec" = yes; then + MODULE__MULTIBYTECODEC_TRUE= + MODULE__MULTIBYTECODEC_FALSE='#' +else + MODULE__MULTIBYTECODEC_TRUE='#' + MODULE__MULTIBYTECODEC_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE__MULTIBYTECODEC_STATE=$py_cv_module__multibytecodec$as_nl" + if test "x$py_cv_module__multibytecodec" = xyes +then : + + + + +fi + + + if test "$py_cv_module_unicodedata" != "n/a" +then : + py_cv_module_unicodedata=yes +fi + if test "$py_cv_module_unicodedata" = yes; then + MODULE_UNICODEDATA_TRUE= + MODULE_UNICODEDATA_FALSE='#' +else + MODULE_UNICODEDATA_TRUE='#' + MODULE_UNICODEDATA_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE_UNICODEDATA_STATE=$py_cv_module_unicodedata$as_nl" + if test "x$py_cv_module_unicodedata" = xyes +then : + + + + +fi + + +############################################################################### +# HACL* compilation and linking configuration (contact: @picnixz) +# +# Used by the HACL*-based implementations of cryptographic primitives. +# +# CPython provides a vendored copy of a subset of the HACL* project used +# to build extension modules of cryptographic primitives. On WASI, HACL* +# sources must be statically linked with the extension modules; on other +# platforms, the extension modules may assume that HACL* has been compiled +# as a shared library. +# +# Example for MD5: +# +# * Compile Modules/_hacl/Hacl_Hash_MD5.c into Modules/_hacl/Hacl_Hash_MD5.o. +# * Decide whether the object files are to be passed to the linker (emulate +# a shared library without having to install it) or if we need to create +# a static library for WASI. The following summarizes the values taken by +# the MODULE__LDFLAGS variable depending on the linkage type: +# - shared: MODULE__MD5_LDFLAGS is set to LIBHACL_MD5_OBJS +# - static: MODULE__MD5_LDFLAGS is set to Modules/_hacl/libHacl_Hash_MD5.a +# * Compile Modules/md5module.c into Modules/md5module.o. +# * Link Modules/md5module.o using $(MODULE__MD5_LDFLAGS) +# and get Modules/_md5$(EXT_SUFFIX). +# +# LIBHACL_FLAG_I: '-I' flags passed to $(CC) for HACL* and HACL*-based modules +# LIBHACL_FLAG_D: '-D' flags passed to $(CC) for HACL* and HACL*-based modules +# LIBHACL_CFLAGS: compiler flags passed for HACL* and HACL*-based modules +# LIBHACL_LDFLAGS: linker flags passed for HACL* and HACL*-based modules +LIBHACL_FLAG_I='-I$(srcdir)/Modules/_hacl -I$(srcdir)/Modules/_hacl/include' +LIBHACL_FLAG_D='-D_BSD_SOURCE -D_DEFAULT_SOURCE' +case "$ac_sys_system" in + Linux*) + if test "$ac_cv_func_explicit_bzero" = "no"; then + LIBHACL_FLAG_D="${LIBHACL_FLAG_D} -DLINUX_NO_EXPLICIT_BZERO" + fi + ;; +esac +LIBHACL_CFLAGS="${LIBHACL_FLAG_I} ${LIBHACL_FLAG_D} \$(PY_STDMODULE_CFLAGS) \$(CCSHARED)" + +LIBHACL_LDFLAGS= # for now, no specific linker flags are needed + + +if test "$UNIVERSAL_ARCHS" = "universal2" -o \ + \( "$build_cpu" = "aarch64" -a "$build_vendor" = "apple" \) +then + use_hacl_universal2_impl=yes +else + use_hacl_universal2_impl=no +fi + +# The SIMD files use aligned_alloc, which is not available on older versions of +# Android. +# The *mmintrin.h headers are x86-family-specific, so can't be used on WASI. +if test "$ac_sys_system" != "Linux-android" -a "$ac_sys_system" != "WASI" || \ + { test -n "$ANDROID_API_LEVEL" && test "$ANDROID_API_LEVEL" -ge 28; } +then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse -msse2 -msse3 -msse4.1 -msse4.2" >&5 +printf %s "checking whether C compiler accepts -msse -msse2 -msse3 -msse4.1 -msse4.2... " >&6; } +if test ${ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror -msse -msse2 -msse3 -msse4.1 -msse4.2" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2=yes +else case e in #( + e) ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2" >&5 +printf "%s\n" "$ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2" >&6; } +if test "x$ax_cv_check_cflags__Werror__msse__msse2__msse3__msse4_1__msse4_2" = xyes +then : + + LIBHACL_SIMD128_FLAGS="-msse -msse2 -msse3 -msse4.1 -msse4.2" + + +printf "%s\n" "#define _Py_HACL_CAN_COMPILE_VEC128 1" >>confdefs.h + + + # macOS universal2 builds *support* the -msse etc flags because they're + # available on x86_64. However, performance of the HACL SIMD128 implementation + # isn't great, so it's disabled on ARM64. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HACL* SIMD128 implementation" >&5 +printf %s "checking for HACL* SIMD128 implementation... " >&6; } + if test "$use_hacl_universal2_impl" = "yes"; then + LIBHACL_BLAKE2_SIMD128_OBJS="Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.o" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: universal2" >&5 +printf "%s\n" "universal2" >&6; } + else + LIBHACL_BLAKE2_SIMD128_OBJS="Modules/_hacl/Hacl_Hash_Blake2s_Simd128.o" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: standard" >&5 +printf "%s\n" "standard" >&6; } + fi + + +else case e in #( + e) : ;; +esac +fi + +fi + + + +# The SIMD files use aligned_alloc, which is not available on older versions of +# Android. +# The *mmintrin.h headers are x86-family-specific, so can't be used on WASI. +# +# Although AVX support is not guaranteed on Android +# (https://developer.android.com/ndk/guides/abis#86-64), this is safe because we do a +# runtime CPUID check. +if test "$ac_sys_system" != "Linux-android" -a "$ac_sys_system" != "WASI" || \ + { test -n "$ANDROID_API_LEVEL" && test "$ANDROID_API_LEVEL" -ge 28; } +then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mavx2" >&5 +printf %s "checking whether C compiler accepts -mavx2... " >&6; } +if test ${ax_cv_check_cflags__Werror__mavx2+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror -mavx2" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags__Werror__mavx2=yes +else case e in #( + e) ax_cv_check_cflags__Werror__mavx2=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__mavx2" >&5 +printf "%s\n" "$ax_cv_check_cflags__Werror__mavx2" >&6; } +if test "x$ax_cv_check_cflags__Werror__mavx2" = xyes +then : + + LIBHACL_SIMD256_FLAGS="-mavx2" + +printf "%s\n" "#define _Py_HACL_CAN_COMPILE_VEC256 1" >>confdefs.h + + + # macOS universal2 builds *support* the -mavx2 compiler flag because it's + # available on x86_64; but the HACL SIMD256 build then fails because the + # implementation requires symbols that aren't available on ARM64. Use a + # wrapped implementation if we're building for universal2. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HACL* SIMD256 implementation" >&5 +printf %s "checking for HACL* SIMD256 implementation... " >&6; } + if test "$use_hacl_universal2_impl" = "yes"; then + LIBHACL_BLAKE2_SIMD256_OBJS="Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.o" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: universal2" >&5 +printf "%s\n" "universal2" >&6; } + else + LIBHACL_BLAKE2_SIMD256_OBJS="Modules/_hacl/Hacl_Hash_Blake2b_Simd256.o" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: standard" >&5 +printf "%s\n" "standard" >&6; } + fi + +else case e in #( + e) : ;; +esac +fi + +fi + + +### end(HACL* configuration) + +############################################################################### +# HACL*-based cryptographic primitives + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HACL* library linking type" >&5 +printf %s "checking for HACL* library linking type... " >&6; } +if test "$ac_sys_system" = "WASI"; then + LIBHACL_LDEPS_LIBTYPE=STATIC + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: static" >&5 +printf "%s\n" "static" >&6; } +else + LIBHACL_LDEPS_LIBTYPE=SHARED + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: shared" >&5 +printf "%s\n" "shared" >&6; } +fi +# Used to complete the "MODULE__LDEPS" Makefile variable. +# The LDEPS variable is a Makefile rule prerequisite. + + + + + + + LIBHACL_MD5_LDFLAGS=LIBHACL_MD5_LIB_${LIBHACL_LDEPS_LIBTYPE} + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _md5" >&5 +printf %s "checking for stdlib extension module _md5... " >&6; } + if test "$py_cv_module__md5" != "n/a" +then : + + if test "$with_builtin_md5" = yes +then : + if true +then : + py_cv_module__md5=yes +else case e in #( + e) py_cv_module__md5=missing ;; +esac +fi +else case e in #( + e) py_cv_module__md5=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__MD5_STATE=$py_cv_module__md5$as_nl" + if test "x$py_cv_module__md5" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__MD5_CFLAGS=$LIBHACL_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__MD5_LDFLAGS=\$($LIBHACL_MD5_LDFLAGS)$as_nl" + +fi + if test "$py_cv_module__md5" = yes; then + MODULE__MD5_TRUE= + MODULE__MD5_FALSE='#' +else + MODULE__MD5_TRUE='#' + MODULE__MD5_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__md5" >&5 +printf "%s\n" "$py_cv_module__md5" >&6; } + + + + + + LIBHACL_SHA1_LDFLAGS=LIBHACL_SHA1_LIB_${LIBHACL_LDEPS_LIBTYPE} + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _sha1" >&5 +printf %s "checking for stdlib extension module _sha1... " >&6; } + if test "$py_cv_module__sha1" != "n/a" +then : + + if test "$with_builtin_sha1" = yes +then : + if true +then : + py_cv_module__sha1=yes +else case e in #( + e) py_cv_module__sha1=missing ;; +esac +fi +else case e in #( + e) py_cv_module__sha1=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__SHA1_STATE=$py_cv_module__sha1$as_nl" + if test "x$py_cv_module__sha1" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__SHA1_CFLAGS=$LIBHACL_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SHA1_LDFLAGS=\$($LIBHACL_SHA1_LDFLAGS)$as_nl" + +fi + if test "$py_cv_module__sha1" = yes; then + MODULE__SHA1_TRUE= + MODULE__SHA1_FALSE='#' +else + MODULE__SHA1_TRUE='#' + MODULE__SHA1_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__sha1" >&5 +printf "%s\n" "$py_cv_module__sha1" >&6; } + + + + + + LIBHACL_SHA2_LDFLAGS=LIBHACL_SHA2_LIB_${LIBHACL_LDEPS_LIBTYPE} + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _sha2" >&5 +printf %s "checking for stdlib extension module _sha2... " >&6; } + if test "$py_cv_module__sha2" != "n/a" +then : + + if test "$with_builtin_sha2" = yes +then : + if true +then : + py_cv_module__sha2=yes +else case e in #( + e) py_cv_module__sha2=missing ;; +esac +fi +else case e in #( + e) py_cv_module__sha2=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__SHA2_STATE=$py_cv_module__sha2$as_nl" + if test "x$py_cv_module__sha2" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__SHA2_CFLAGS=$LIBHACL_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SHA2_LDFLAGS=\$($LIBHACL_SHA2_LDFLAGS)$as_nl" + +fi + if test "$py_cv_module__sha2" = yes; then + MODULE__SHA2_TRUE= + MODULE__SHA2_FALSE='#' +else + MODULE__SHA2_TRUE='#' + MODULE__SHA2_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__sha2" >&5 +printf "%s\n" "$py_cv_module__sha2" >&6; } + + + + + + LIBHACL_SHA3_LDFLAGS=LIBHACL_SHA3_LIB_${LIBHACL_LDEPS_LIBTYPE} + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _sha3" >&5 +printf %s "checking for stdlib extension module _sha3... " >&6; } + if test "$py_cv_module__sha3" != "n/a" +then : + + if test "$with_builtin_sha3" = yes +then : + if true +then : + py_cv_module__sha3=yes +else case e in #( + e) py_cv_module__sha3=missing ;; +esac +fi +else case e in #( + e) py_cv_module__sha3=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__SHA3_STATE=$py_cv_module__sha3$as_nl" + if test "x$py_cv_module__sha3" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__SHA3_CFLAGS=$LIBHACL_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SHA3_LDFLAGS=\$($LIBHACL_SHA3_LDFLAGS)$as_nl" + +fi + if test "$py_cv_module__sha3" = yes; then + MODULE__SHA3_TRUE= + MODULE__SHA3_FALSE='#' +else + MODULE__SHA3_TRUE='#' + MODULE__SHA3_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__sha3" >&5 +printf "%s\n" "$py_cv_module__sha3" >&6; } + + + + + + LIBHACL_BLAKE2_LDFLAGS=LIBHACL_BLAKE2_LIB_${LIBHACL_LDEPS_LIBTYPE} + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _blake2" >&5 +printf %s "checking for stdlib extension module _blake2... " >&6; } + if test "$py_cv_module__blake2" != "n/a" +then : + + if test "$with_builtin_blake2" = yes +then : + if true +then : + py_cv_module__blake2=yes +else case e in #( + e) py_cv_module__blake2=missing ;; +esac +fi +else case e in #( + e) py_cv_module__blake2=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__BLAKE2_STATE=$py_cv_module__blake2$as_nl" + if test "x$py_cv_module__blake2" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__BLAKE2_CFLAGS=$LIBHACL_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__BLAKE2_LDFLAGS=\$($LIBHACL_BLAKE2_LDFLAGS)$as_nl" + +fi + if test "$py_cv_module__blake2" = yes; then + MODULE__BLAKE2_TRUE= + MODULE__BLAKE2_FALSE='#' +else + MODULE__BLAKE2_TRUE='#' + MODULE__BLAKE2_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__blake2" >&5 +printf "%s\n" "$py_cv_module__blake2" >&6; } + + + + + + + LIBHACL_HMAC_LDFLAGS=LIBHACL_HMAC_LIB_${LIBHACL_LDEPS_LIBTYPE} + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _hmac" >&5 +printf %s "checking for stdlib extension module _hmac... " >&6; } + if test "$py_cv_module__hmac" != "n/a" +then : + + if test "$ac_sys_system" != "Emscripten" +then : + if true +then : + py_cv_module__hmac=yes +else case e in #( + e) py_cv_module__hmac=missing ;; +esac +fi +else case e in #( + e) py_cv_module__hmac=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__HMAC_STATE=$py_cv_module__hmac$as_nl" + if test "x$py_cv_module__hmac" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__HMAC_CFLAGS=$LIBHACL_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__HMAC_LDFLAGS=\$($LIBHACL_HMAC_LDFLAGS)$as_nl" + +fi + if test "$py_cv_module__hmac" = yes; then + MODULE__HMAC_TRUE= + MODULE__HMAC_FALSE='#' +else + MODULE__HMAC_TRUE='#' + MODULE__HMAC_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__hmac" >&5 +printf "%s\n" "$py_cv_module__hmac" >&6; } + + + +### end(cryptographic primitives) + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _ctypes" >&5 +printf %s "checking for stdlib extension module _ctypes... " >&6; } + if test "$py_cv_module__ctypes" != "n/a" +then : + + if true +then : + if test "$have_libffi" = yes +then : + py_cv_module__ctypes=yes +else case e in #( + e) py_cv_module__ctypes=missing ;; +esac +fi +else case e in #( + e) py_cv_module__ctypes=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__CTYPES_STATE=$py_cv_module__ctypes$as_nl" + if test "x$py_cv_module__ctypes" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__CTYPES_CFLAGS=$NO_STRICT_OVERFLOW_CFLAGS $LIBFFI_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__CTYPES_LDFLAGS=$LIBFFI_LIBS$as_nl" + +fi + if test "$py_cv_module__ctypes" = yes; then + MODULE__CTYPES_TRUE= + MODULE__CTYPES_FALSE='#' +else + MODULE__CTYPES_TRUE='#' + MODULE__CTYPES_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__ctypes" >&5 +printf "%s\n" "$py_cv_module__ctypes" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _curses" >&5 +printf %s "checking for stdlib extension module _curses... " >&6; } + if test "$py_cv_module__curses" != "n/a" +then : + + if true +then : + if test "$have_curses" = "yes" +then : + py_cv_module__curses=yes +else case e in #( + e) py_cv_module__curses=missing ;; +esac +fi +else case e in #( + e) py_cv_module__curses=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__CURSES_STATE=$py_cv_module__curses$as_nl" + if test "x$py_cv_module__curses" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__CURSES_CFLAGS=$CURSES_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__CURSES_LDFLAGS=$CURSES_LIBS +$as_nl" + +fi + if test "$py_cv_module__curses" = yes; then + MODULE__CURSES_TRUE= + MODULE__CURSES_FALSE='#' +else + MODULE__CURSES_TRUE='#' + MODULE__CURSES_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__curses" >&5 +printf "%s\n" "$py_cv_module__curses" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _curses_panel" >&5 +printf %s "checking for stdlib extension module _curses_panel... " >&6; } + if test "$py_cv_module__curses_panel" != "n/a" +then : + + if true +then : + if test "$have_curses" = "yes" && test "$have_panel" = "yes" +then : + py_cv_module__curses_panel=yes +else case e in #( + e) py_cv_module__curses_panel=missing ;; +esac +fi +else case e in #( + e) py_cv_module__curses_panel=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__CURSES_PANEL_STATE=$py_cv_module__curses_panel$as_nl" + if test "x$py_cv_module__curses_panel" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__CURSES_PANEL_CFLAGS=$PANEL_CFLAGS $CURSES_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__CURSES_PANEL_LDFLAGS=$PANEL_LIBS $CURSES_LIBS +$as_nl" + +fi + if test "$py_cv_module__curses_panel" = yes; then + MODULE__CURSES_PANEL_TRUE= + MODULE__CURSES_PANEL_FALSE='#' +else + MODULE__CURSES_PANEL_TRUE='#' + MODULE__CURSES_PANEL_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__curses_panel" >&5 +printf "%s\n" "$py_cv_module__curses_panel" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _decimal" >&5 +printf %s "checking for stdlib extension module _decimal... " >&6; } + if test "$py_cv_module__decimal" != "n/a" +then : + + if true +then : + if test "$have_mpdec" = "yes" +then : + py_cv_module__decimal=yes +else case e in #( + e) py_cv_module__decimal=missing ;; +esac +fi +else case e in #( + e) py_cv_module__decimal=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__DECIMAL_STATE=$py_cv_module__decimal$as_nl" + if test "x$py_cv_module__decimal" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__DECIMAL_CFLAGS=$LIBMPDEC_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__DECIMAL_LDFLAGS=$LIBMPDEC_LIBS$as_nl" + +fi + if test "$py_cv_module__decimal" = yes; then + MODULE__DECIMAL_TRUE= + MODULE__DECIMAL_FALSE='#' +else + MODULE__DECIMAL_TRUE='#' + MODULE__DECIMAL_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__decimal" >&5 +printf "%s\n" "$py_cv_module__decimal" >&6; } + + +if test "x$with_system_libmpdec" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: the bundled copy of libmpdec is scheduled for removal in Python 3.16; consider using a system installed mpdecimal library." >&5 +printf "%s\n" "$as_me: WARNING: the bundled copy of libmpdec is scheduled for removal in Python 3.16; consider using a system installed mpdecimal library." >&2;} +fi +if test "$with_system_libmpdec" = "yes" && test "$have_mpdec" = "no" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: no system libmpdec found; falling back to pure-Python version for the decimal module" >&5 +printf "%s\n" "$as_me: WARNING: no system libmpdec found; falling back to pure-Python version for the decimal module" >&2;} +fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _dbm" >&5 +printf %s "checking for stdlib extension module _dbm... " >&6; } + if test "$py_cv_module__dbm" != "n/a" +then : + + if test -n "$with_dbmliborder" +then : + if test "$have_dbm" != "no" +then : + py_cv_module__dbm=yes +else case e in #( + e) py_cv_module__dbm=missing ;; +esac +fi +else case e in #( + e) py_cv_module__dbm=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__DBM_STATE=$py_cv_module__dbm$as_nl" + if test "x$py_cv_module__dbm" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__DBM_CFLAGS=$DBM_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__DBM_LDFLAGS=$DBM_LIBS$as_nl" + +fi + if test "$py_cv_module__dbm" = yes; then + MODULE__DBM_TRUE= + MODULE__DBM_FALSE='#' +else + MODULE__DBM_TRUE='#' + MODULE__DBM_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__dbm" >&5 +printf "%s\n" "$py_cv_module__dbm" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _gdbm" >&5 +printf %s "checking for stdlib extension module _gdbm... " >&6; } + if test "$py_cv_module__gdbm" != "n/a" +then : + + if test "$have_gdbm_dbmliborder" = yes +then : + if test "$have_gdbm" = yes +then : + py_cv_module__gdbm=yes +else case e in #( + e) py_cv_module__gdbm=missing ;; +esac +fi +else case e in #( + e) py_cv_module__gdbm=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__GDBM_STATE=$py_cv_module__gdbm$as_nl" + if test "x$py_cv_module__gdbm" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__GDBM_CFLAGS=$GDBM_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__GDBM_LDFLAGS=$GDBM_LIBS$as_nl" + +fi + if test "$py_cv_module__gdbm" = yes; then + MODULE__GDBM_TRUE= + MODULE__GDBM_FALSE='#' +else + MODULE__GDBM_TRUE='#' + MODULE__GDBM_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__gdbm" >&5 +printf "%s\n" "$py_cv_module__gdbm" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module readline" >&5 +printf %s "checking for stdlib extension module readline... " >&6; } + if test "$py_cv_module_readline" != "n/a" +then : + + if true +then : + if test "$with_readline" != "no" +then : + py_cv_module_readline=yes +else case e in #( + e) py_cv_module_readline=missing ;; +esac +fi +else case e in #( + e) py_cv_module_readline=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_READLINE_STATE=$py_cv_module_readline$as_nl" + if test "x$py_cv_module_readline" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE_READLINE_CFLAGS=$READLINE_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE_READLINE_LDFLAGS=$READLINE_LIBS$as_nl" + +fi + if test "$py_cv_module_readline" = yes; then + MODULE_READLINE_TRUE= + MODULE_READLINE_FALSE='#' +else + MODULE_READLINE_TRUE='#' + MODULE_READLINE_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_readline" >&5 +printf "%s\n" "$py_cv_module_readline" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _sqlite3" >&5 +printf %s "checking for stdlib extension module _sqlite3... " >&6; } + if test "$py_cv_module__sqlite3" != "n/a" +then : + + if test "$have_sqlite3" = "yes" +then : + if test "$have_supported_sqlite3" = "yes" +then : + py_cv_module__sqlite3=yes +else case e in #( + e) py_cv_module__sqlite3=missing ;; +esac +fi +else case e in #( + e) py_cv_module__sqlite3=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__SQLITE3_STATE=$py_cv_module__sqlite3$as_nl" + if test "x$py_cv_module__sqlite3" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__SQLITE3_CFLAGS=$LIBSQLITE3_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SQLITE3_LDFLAGS=$LIBSQLITE3_LIBS$as_nl" + +fi + if test "$py_cv_module__sqlite3" = yes; then + MODULE__SQLITE3_TRUE= + MODULE__SQLITE3_FALSE='#' +else + MODULE__SQLITE3_TRUE='#' + MODULE__SQLITE3_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__sqlite3" >&5 +printf "%s\n" "$py_cv_module__sqlite3" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _tkinter" >&5 +printf %s "checking for stdlib extension module _tkinter... " >&6; } + if test "$py_cv_module__tkinter" != "n/a" +then : + + if true +then : + if test "$have_tcltk" = "yes" +then : + py_cv_module__tkinter=yes +else case e in #( + e) py_cv_module__tkinter=missing ;; +esac +fi +else case e in #( + e) py_cv_module__tkinter=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__TKINTER_STATE=$py_cv_module__tkinter$as_nl" + if test "x$py_cv_module__tkinter" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__TKINTER_CFLAGS=$TCLTK_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__TKINTER_LDFLAGS=$TCLTK_LIBS$as_nl" + +fi + if test "$py_cv_module__tkinter" = yes; then + MODULE__TKINTER_TRUE= + MODULE__TKINTER_FALSE='#' +else + MODULE__TKINTER_TRUE='#' + MODULE__TKINTER_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__tkinter" >&5 +printf "%s\n" "$py_cv_module__tkinter" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _uuid" >&5 +printf %s "checking for stdlib extension module _uuid... " >&6; } + if test "$py_cv_module__uuid" != "n/a" +then : + + if true +then : + if test "$have_uuid" = "yes" +then : + py_cv_module__uuid=yes +else case e in #( + e) py_cv_module__uuid=missing ;; +esac +fi +else case e in #( + e) py_cv_module__uuid=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__UUID_STATE=$py_cv_module__uuid$as_nl" + if test "x$py_cv_module__uuid" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__UUID_CFLAGS=$LIBUUID_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__UUID_LDFLAGS=$LIBUUID_LIBS$as_nl" + +fi + if test "$py_cv_module__uuid" = yes; then + MODULE__UUID_TRUE= + MODULE__UUID_FALSE='#' +else + MODULE__UUID_TRUE='#' + MODULE__UUID_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__uuid" >&5 +printf "%s\n" "$py_cv_module__uuid" >&6; } + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module zlib" >&5 +printf %s "checking for stdlib extension module zlib... " >&6; } + if test "$py_cv_module_zlib" != "n/a" +then : + + if true +then : + if test "$have_zlib" = yes +then : + py_cv_module_zlib=yes +else case e in #( + e) py_cv_module_zlib=missing ;; +esac +fi +else case e in #( + e) py_cv_module_zlib=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_ZLIB_STATE=$py_cv_module_zlib$as_nl" + if test "x$py_cv_module_zlib" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE_ZLIB_CFLAGS=$ZLIB_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE_ZLIB_LDFLAGS=$ZLIB_LIBS$as_nl" + +fi + if test "$py_cv_module_zlib" = yes; then + MODULE_ZLIB_TRUE= + MODULE_ZLIB_FALSE='#' +else + MODULE_ZLIB_TRUE='#' + MODULE_ZLIB_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_zlib" >&5 +printf "%s\n" "$py_cv_module_zlib" >&6; } + + + if test "$py_cv_module_binascii" != "n/a" +then : + py_cv_module_binascii=yes +fi + if test "$py_cv_module_binascii" = yes; then + MODULE_BINASCII_TRUE= + MODULE_BINASCII_FALSE='#' +else + MODULE_BINASCII_TRUE='#' + MODULE_BINASCII_FALSE= +fi + + as_fn_append MODULE_BLOCK "MODULE_BINASCII_STATE=$py_cv_module_binascii$as_nl" + if test "x$py_cv_module_binascii" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE_BINASCII_CFLAGS=$BINASCII_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE_BINASCII_LDFLAGS=$BINASCII_LIBS$as_nl" + +fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _bz2" >&5 +printf %s "checking for stdlib extension module _bz2... " >&6; } + if test "$py_cv_module__bz2" != "n/a" +then : + + if true +then : + if test "$have_bzip2" = yes +then : + py_cv_module__bz2=yes +else case e in #( + e) py_cv_module__bz2=missing ;; +esac +fi +else case e in #( + e) py_cv_module__bz2=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__BZ2_STATE=$py_cv_module__bz2$as_nl" + if test "x$py_cv_module__bz2" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__BZ2_CFLAGS=$BZIP2_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__BZ2_LDFLAGS=$BZIP2_LIBS$as_nl" + +fi + if test "$py_cv_module__bz2" = yes; then + MODULE__BZ2_TRUE= + MODULE__BZ2_FALSE='#' +else + MODULE__BZ2_TRUE='#' + MODULE__BZ2_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__bz2" >&5 +printf "%s\n" "$py_cv_module__bz2" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _lzma" >&5 +printf %s "checking for stdlib extension module _lzma... " >&6; } + if test "$py_cv_module__lzma" != "n/a" +then : + + if true +then : + if test "$have_liblzma" = yes +then : + py_cv_module__lzma=yes +else case e in #( + e) py_cv_module__lzma=missing ;; +esac +fi +else case e in #( + e) py_cv_module__lzma=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__LZMA_STATE=$py_cv_module__lzma$as_nl" + if test "x$py_cv_module__lzma" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__LZMA_CFLAGS=$LIBLZMA_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__LZMA_LDFLAGS=$LIBLZMA_LIBS$as_nl" + +fi + if test "$py_cv_module__lzma" = yes; then + MODULE__LZMA_TRUE= + MODULE__LZMA_FALSE='#' +else + MODULE__LZMA_TRUE='#' + MODULE__LZMA_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__lzma" >&5 +printf "%s\n" "$py_cv_module__lzma" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _zstd" >&5 +printf %s "checking for stdlib extension module _zstd... " >&6; } + if test "$py_cv_module__zstd" != "n/a" +then : + + if true +then : + if test "$have_libzstd" = yes +then : + py_cv_module__zstd=yes +else case e in #( + e) py_cv_module__zstd=missing ;; +esac +fi +else case e in #( + e) py_cv_module__zstd=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__ZSTD_STATE=$py_cv_module__zstd$as_nl" + if test "x$py_cv_module__zstd" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__ZSTD_CFLAGS=$LIBZSTD_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__ZSTD_LDFLAGS=$LIBZSTD_LIBS$as_nl" + +fi + if test "$py_cv_module__zstd" = yes; then + MODULE__ZSTD_TRUE= + MODULE__ZSTD_FALSE='#' +else + MODULE__ZSTD_TRUE='#' + MODULE__ZSTD_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__zstd" >&5 +printf "%s\n" "$py_cv_module__zstd" >&6; } + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _ssl" >&5 +printf %s "checking for stdlib extension module _ssl... " >&6; } + if test "$py_cv_module__ssl" != "n/a" +then : + + if true +then : + if test "$ac_cv_working_openssl_ssl" = yes +then : + py_cv_module__ssl=yes +else case e in #( + e) py_cv_module__ssl=missing ;; +esac +fi +else case e in #( + e) py_cv_module__ssl=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__SSL_STATE=$py_cv_module__ssl$as_nl" + if test "x$py_cv_module__ssl" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__SSL_CFLAGS=$OPENSSL_INCLUDES$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SSL_LDFLAGS=$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $OPENSSL_LIBS$as_nl" + +fi + if test "$py_cv_module__ssl" = yes; then + MODULE__SSL_TRUE= + MODULE__SSL_FALSE='#' +else + MODULE__SSL_TRUE='#' + MODULE__SSL_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__ssl" >&5 +printf "%s\n" "$py_cv_module__ssl" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _hashlib" >&5 +printf %s "checking for stdlib extension module _hashlib... " >&6; } + if test "$py_cv_module__hashlib" != "n/a" +then : + + if true +then : + if test "$ac_cv_working_openssl_hashlib" = yes +then : + py_cv_module__hashlib=yes +else case e in #( + e) py_cv_module__hashlib=missing ;; +esac +fi +else case e in #( + e) py_cv_module__hashlib=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__HASHLIB_STATE=$py_cv_module__hashlib$as_nl" + if test "x$py_cv_module__hashlib" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__HASHLIB_CFLAGS=$OPENSSL_INCLUDES$as_nl" + as_fn_append MODULE_BLOCK "MODULE__HASHLIB_LDFLAGS=$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $LIBCRYPTO_LIBS$as_nl" + +fi + if test "$py_cv_module__hashlib" = yes; then + MODULE__HASHLIB_TRUE= + MODULE__HASHLIB_FALSE='#' +else + MODULE__HASHLIB_TRUE='#' + MODULE__HASHLIB_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__hashlib" >&5 +printf "%s\n" "$py_cv_module__hashlib" >&6; } + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testcapi" >&5 +printf %s "checking for stdlib extension module _testcapi... " >&6; } + if test "$py_cv_module__testcapi" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if true +then : + py_cv_module__testcapi=yes +else case e in #( + e) py_cv_module__testcapi=missing ;; +esac +fi +else case e in #( + e) py_cv_module__testcapi=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__TESTCAPI_STATE=$py_cv_module__testcapi$as_nl" + if test "x$py_cv_module__testcapi" = xyes +then : + + + as_fn_append MODULE_BLOCK "MODULE__TESTCAPI_LDFLAGS=$LIBATOMIC$as_nl" + +fi + if test "$py_cv_module__testcapi" = yes; then + MODULE__TESTCAPI_TRUE= + MODULE__TESTCAPI_FALSE='#' +else + MODULE__TESTCAPI_TRUE='#' + MODULE__TESTCAPI_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testcapi" >&5 +printf "%s\n" "$py_cv_module__testcapi" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testclinic" >&5 +printf %s "checking for stdlib extension module _testclinic... " >&6; } + if test "$py_cv_module__testclinic" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if true +then : + py_cv_module__testclinic=yes +else case e in #( + e) py_cv_module__testclinic=missing ;; +esac +fi +else case e in #( + e) py_cv_module__testclinic=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__TESTCLINIC_STATE=$py_cv_module__testclinic$as_nl" + if test "x$py_cv_module__testclinic" = xyes +then : + + + + +fi + if test "$py_cv_module__testclinic" = yes; then + MODULE__TESTCLINIC_TRUE= + MODULE__TESTCLINIC_FALSE='#' +else + MODULE__TESTCLINIC_TRUE='#' + MODULE__TESTCLINIC_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testclinic" >&5 +printf "%s\n" "$py_cv_module__testclinic" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testclinic_limited" >&5 +printf %s "checking for stdlib extension module _testclinic_limited... " >&6; } + if test "$py_cv_module__testclinic_limited" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if true +then : + py_cv_module__testclinic_limited=yes +else case e in #( + e) py_cv_module__testclinic_limited=missing ;; +esac +fi +else case e in #( + e) py_cv_module__testclinic_limited=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__TESTCLINIC_LIMITED_STATE=$py_cv_module__testclinic_limited$as_nl" + if test "x$py_cv_module__testclinic_limited" = xyes +then : + + + + +fi + if test "$py_cv_module__testclinic_limited" = yes; then + MODULE__TESTCLINIC_LIMITED_TRUE= + MODULE__TESTCLINIC_LIMITED_FALSE='#' +else + MODULE__TESTCLINIC_LIMITED_TRUE='#' + MODULE__TESTCLINIC_LIMITED_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testclinic_limited" >&5 +printf "%s\n" "$py_cv_module__testclinic_limited" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testlimitedcapi" >&5 +printf %s "checking for stdlib extension module _testlimitedcapi... " >&6; } + if test "$py_cv_module__testlimitedcapi" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if true +then : + py_cv_module__testlimitedcapi=yes +else case e in #( + e) py_cv_module__testlimitedcapi=missing ;; +esac +fi +else case e in #( + e) py_cv_module__testlimitedcapi=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__TESTLIMITEDCAPI_STATE=$py_cv_module__testlimitedcapi$as_nl" + if test "x$py_cv_module__testlimitedcapi" = xyes +then : + + + + +fi + if test "$py_cv_module__testlimitedcapi" = yes; then + MODULE__TESTLIMITEDCAPI_TRUE= + MODULE__TESTLIMITEDCAPI_FALSE='#' +else + MODULE__TESTLIMITEDCAPI_TRUE='#' + MODULE__TESTLIMITEDCAPI_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testlimitedcapi" >&5 +printf "%s\n" "$py_cv_module__testlimitedcapi" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testinternalcapi" >&5 +printf %s "checking for stdlib extension module _testinternalcapi... " >&6; } + if test "$py_cv_module__testinternalcapi" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if true +then : + py_cv_module__testinternalcapi=yes +else case e in #( + e) py_cv_module__testinternalcapi=missing ;; +esac +fi +else case e in #( + e) py_cv_module__testinternalcapi=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__TESTINTERNALCAPI_STATE=$py_cv_module__testinternalcapi$as_nl" + if test "x$py_cv_module__testinternalcapi" = xyes +then : + + + + +fi + if test "$py_cv_module__testinternalcapi" = yes; then + MODULE__TESTINTERNALCAPI_TRUE= + MODULE__TESTINTERNALCAPI_FALSE='#' +else + MODULE__TESTINTERNALCAPI_TRUE='#' + MODULE__TESTINTERNALCAPI_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testinternalcapi" >&5 +printf "%s\n" "$py_cv_module__testinternalcapi" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testbuffer" >&5 +printf %s "checking for stdlib extension module _testbuffer... " >&6; } + if test "$py_cv_module__testbuffer" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if true +then : + py_cv_module__testbuffer=yes +else case e in #( + e) py_cv_module__testbuffer=missing ;; +esac +fi +else case e in #( + e) py_cv_module__testbuffer=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__TESTBUFFER_STATE=$py_cv_module__testbuffer$as_nl" + if test "x$py_cv_module__testbuffer" = xyes +then : + + + + +fi + if test "$py_cv_module__testbuffer" = yes; then + MODULE__TESTBUFFER_TRUE= + MODULE__TESTBUFFER_FALSE='#' +else + MODULE__TESTBUFFER_TRUE='#' + MODULE__TESTBUFFER_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testbuffer" >&5 +printf "%s\n" "$py_cv_module__testbuffer" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testimportmultiple" >&5 +printf %s "checking for stdlib extension module _testimportmultiple... " >&6; } + if test "$py_cv_module__testimportmultiple" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if test "$ac_cv_func_dlopen" = yes +then : + py_cv_module__testimportmultiple=yes +else case e in #( + e) py_cv_module__testimportmultiple=missing ;; +esac +fi +else case e in #( + e) py_cv_module__testimportmultiple=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__TESTIMPORTMULTIPLE_STATE=$py_cv_module__testimportmultiple$as_nl" + if test "x$py_cv_module__testimportmultiple" = xyes +then : + + + + +fi + if test "$py_cv_module__testimportmultiple" = yes; then + MODULE__TESTIMPORTMULTIPLE_TRUE= + MODULE__TESTIMPORTMULTIPLE_FALSE='#' +else + MODULE__TESTIMPORTMULTIPLE_TRUE='#' + MODULE__TESTIMPORTMULTIPLE_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testimportmultiple" >&5 +printf "%s\n" "$py_cv_module__testimportmultiple" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testmultiphase" >&5 +printf %s "checking for stdlib extension module _testmultiphase... " >&6; } + if test "$py_cv_module__testmultiphase" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if test "$ac_cv_func_dlopen" = yes +then : + py_cv_module__testmultiphase=yes +else case e in #( + e) py_cv_module__testmultiphase=missing ;; +esac +fi +else case e in #( + e) py_cv_module__testmultiphase=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__TESTMULTIPHASE_STATE=$py_cv_module__testmultiphase$as_nl" + if test "x$py_cv_module__testmultiphase" = xyes +then : + + + + +fi + if test "$py_cv_module__testmultiphase" = yes; then + MODULE__TESTMULTIPHASE_TRUE= + MODULE__TESTMULTIPHASE_FALSE='#' +else + MODULE__TESTMULTIPHASE_TRUE='#' + MODULE__TESTMULTIPHASE_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testmultiphase" >&5 +printf "%s\n" "$py_cv_module__testmultiphase" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _testsinglephase" >&5 +printf %s "checking for stdlib extension module _testsinglephase... " >&6; } + if test "$py_cv_module__testsinglephase" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if test "$ac_cv_func_dlopen" = yes +then : + py_cv_module__testsinglephase=yes +else case e in #( + e) py_cv_module__testsinglephase=missing ;; +esac +fi +else case e in #( + e) py_cv_module__testsinglephase=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__TESTSINGLEPHASE_STATE=$py_cv_module__testsinglephase$as_nl" + if test "x$py_cv_module__testsinglephase" = xyes +then : + + + + +fi + if test "$py_cv_module__testsinglephase" = yes; then + MODULE__TESTSINGLEPHASE_TRUE= + MODULE__TESTSINGLEPHASE_FALSE='#' +else + MODULE__TESTSINGLEPHASE_TRUE='#' + MODULE__TESTSINGLEPHASE_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__testsinglephase" >&5 +printf "%s\n" "$py_cv_module__testsinglephase" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module xxsubtype" >&5 +printf %s "checking for stdlib extension module xxsubtype... " >&6; } + if test "$py_cv_module_xxsubtype" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if true +then : + py_cv_module_xxsubtype=yes +else case e in #( + e) py_cv_module_xxsubtype=missing ;; +esac +fi +else case e in #( + e) py_cv_module_xxsubtype=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_XXSUBTYPE_STATE=$py_cv_module_xxsubtype$as_nl" + if test "x$py_cv_module_xxsubtype" = xyes +then : + + + + +fi + if test "$py_cv_module_xxsubtype" = yes; then + MODULE_XXSUBTYPE_TRUE= + MODULE_XXSUBTYPE_FALSE='#' +else + MODULE_XXSUBTYPE_TRUE='#' + MODULE_XXSUBTYPE_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_xxsubtype" >&5 +printf "%s\n" "$py_cv_module_xxsubtype" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _xxtestfuzz" >&5 +printf %s "checking for stdlib extension module _xxtestfuzz... " >&6; } + if test "$py_cv_module__xxtestfuzz" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if true +then : + py_cv_module__xxtestfuzz=yes +else case e in #( + e) py_cv_module__xxtestfuzz=missing ;; +esac +fi +else case e in #( + e) py_cv_module__xxtestfuzz=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__XXTESTFUZZ_STATE=$py_cv_module__xxtestfuzz$as_nl" + if test "x$py_cv_module__xxtestfuzz" = xyes +then : + + + + +fi + if test "$py_cv_module__xxtestfuzz" = yes; then + MODULE__XXTESTFUZZ_TRUE= + MODULE__XXTESTFUZZ_FALSE='#' +else + MODULE__XXTESTFUZZ_TRUE='#' + MODULE__XXTESTFUZZ_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__xxtestfuzz" >&5 +printf "%s\n" "$py_cv_module__xxtestfuzz" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _ctypes_test" >&5 +printf %s "checking for stdlib extension module _ctypes_test... " >&6; } + if test "$py_cv_module__ctypes_test" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if test "$have_libffi" = yes -a "$ac_cv_func_dlopen" = yes +then : + py_cv_module__ctypes_test=yes +else case e in #( + e) py_cv_module__ctypes_test=missing ;; +esac +fi +else case e in #( + e) py_cv_module__ctypes_test=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE__CTYPES_TEST_STATE=$py_cv_module__ctypes_test$as_nl" + if test "x$py_cv_module__ctypes_test" = xyes +then : + + as_fn_append MODULE_BLOCK "MODULE__CTYPES_TEST_CFLAGS=$LIBFFI_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__CTYPES_TEST_LDFLAGS=$LIBFFI_LIBS $LIBM$as_nl" + +fi + if test "$py_cv_module__ctypes_test" = yes; then + MODULE__CTYPES_TEST_TRUE= + MODULE__CTYPES_TEST_FALSE='#' +else + MODULE__CTYPES_TEST_TRUE='#' + MODULE__CTYPES_TEST_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module__ctypes_test" >&5 +printf "%s\n" "$py_cv_module__ctypes_test" >&6; } + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module xxlimited" >&5 +printf %s "checking for stdlib extension module xxlimited... " >&6; } + if test "$py_cv_module_xxlimited" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if test "$ac_cv_func_dlopen" = yes +then : + py_cv_module_xxlimited=yes +else case e in #( + e) py_cv_module_xxlimited=missing ;; +esac +fi +else case e in #( + e) py_cv_module_xxlimited=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_XXLIMITED_STATE=$py_cv_module_xxlimited$as_nl" + if test "x$py_cv_module_xxlimited" = xyes +then : + + + + +fi + if test "$py_cv_module_xxlimited" = yes; then + MODULE_XXLIMITED_TRUE= + MODULE_XXLIMITED_FALSE='#' +else + MODULE_XXLIMITED_TRUE='#' + MODULE_XXLIMITED_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_xxlimited" >&5 +printf "%s\n" "$py_cv_module_xxlimited" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module xxlimited_35" >&5 +printf %s "checking for stdlib extension module xxlimited_35... " >&6; } + if test "$py_cv_module_xxlimited_35" != "n/a" +then : + + if test "$TEST_MODULES" = yes +then : + if test "$ac_cv_func_dlopen" = yes +then : + py_cv_module_xxlimited_35=yes +else case e in #( + e) py_cv_module_xxlimited_35=missing ;; +esac +fi +else case e in #( + e) py_cv_module_xxlimited_35=disabled ;; +esac +fi + +fi + as_fn_append MODULE_BLOCK "MODULE_XXLIMITED_35_STATE=$py_cv_module_xxlimited_35$as_nl" + if test "x$py_cv_module_xxlimited_35" = xyes +then : + + + + +fi + if test "$py_cv_module_xxlimited_35" = yes; then + MODULE_XXLIMITED_35_TRUE= + MODULE_XXLIMITED_35_FALSE='#' +else + MODULE_XXLIMITED_35_TRUE='#' + MODULE_XXLIMITED_35_FALSE= +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_xxlimited_35" >&5 +printf "%s\n" "$py_cv_module_xxlimited_35" >&6; } + + +# Determine JIT stencils header files based on target platform +JIT_STENCILS_H="" +if test "x$enable_experimental_jit" = xno +then : + +else case e in #( + e) case "$host" in + aarch64-apple-darwin*) + JIT_STENCILS_H="jit_stencils-aarch64-apple-darwin.h" + ;; + x86_64-apple-darwin*) + JIT_STENCILS_H="jit_stencils-x86_64-apple-darwin.h" + ;; + aarch64-pc-windows-msvc) + JIT_STENCILS_H="jit_stencils-aarch64-pc-windows-msvc.h" + ;; + i686-pc-windows-msvc) + JIT_STENCILS_H="jit_stencils-i686-pc-windows-msvc.h" + ;; + x86_64-pc-windows-msvc) + JIT_STENCILS_H="jit_stencils-x86_64-pc-windows-msvc.h" + ;; + aarch64-*-linux-gnu) + JIT_STENCILS_H="jit_stencils-aarch64-unknown-linux-gnu.h" + ;; + x86_64-*-linux-gnu) + JIT_STENCILS_H="jit_stencils-x86_64-unknown-linux-gnu.h" + ;; + esac ;; +esac +fi + + + +# substitute multiline block, must come after last PY_STDLIB_MOD() + + +# generate output files +ac_config_files="$ac_config_files Makefile.pre Misc/python.pc Misc/python-embed.pc Misc/python-config.sh" + +ac_config_files="$ac_config_files Modules/Setup.bootstrap Modules/Setup.stdlib" + +ac_config_files="$ac_config_files Modules/ld_so_aix" + +# Generate files like pyconfig.h +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +if test -z "${MODULE__IO_TRUE}" && test -z "${MODULE__IO_FALSE}"; then + as_fn_error $? "conditional \"MODULE__IO\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_TIME_TRUE}" && test -z "${MODULE_TIME_FALSE}"; then + as_fn_error $? "conditional \"MODULE_TIME\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_ARRAY_TRUE}" && test -z "${MODULE_ARRAY_FALSE}"; then + as_fn_error $? "conditional \"MODULE_ARRAY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__MATH_INTEGER_TRUE}" && test -z "${MODULE__MATH_INTEGER_FALSE}"; then + as_fn_error $? "conditional \"MODULE__MATH_INTEGER\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__ASYNCIO_TRUE}" && test -z "${MODULE__ASYNCIO_FALSE}"; then + as_fn_error $? "conditional \"MODULE__ASYNCIO\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__BISECT_TRUE}" && test -z "${MODULE__BISECT_FALSE}"; then + as_fn_error $? "conditional \"MODULE__BISECT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__CSV_TRUE}" && test -z "${MODULE__CSV_FALSE}"; then + as_fn_error $? "conditional \"MODULE__CSV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__HEAPQ_TRUE}" && test -z "${MODULE__HEAPQ_FALSE}"; then + as_fn_error $? "conditional \"MODULE__HEAPQ\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__JSON_TRUE}" && test -z "${MODULE__JSON_FALSE}"; then + as_fn_error $? "conditional \"MODULE__JSON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__LSPROF_TRUE}" && test -z "${MODULE__LSPROF_FALSE}"; then + as_fn_error $? "conditional \"MODULE__LSPROF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__PICKLE_TRUE}" && test -z "${MODULE__PICKLE_FALSE}"; then + as_fn_error $? "conditional \"MODULE__PICKLE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__POSIXSUBPROCESS_TRUE}" && test -z "${MODULE__POSIXSUBPROCESS_FALSE}"; then + as_fn_error $? "conditional \"MODULE__POSIXSUBPROCESS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__QUEUE_TRUE}" && test -z "${MODULE__QUEUE_FALSE}"; then + as_fn_error $? "conditional \"MODULE__QUEUE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__RANDOM_TRUE}" && test -z "${MODULE__RANDOM_FALSE}"; then + as_fn_error $? "conditional \"MODULE__RANDOM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__REMOTE_DEBUGGING_TRUE}" && test -z "${MODULE__REMOTE_DEBUGGING_FALSE}"; then + as_fn_error $? "conditional \"MODULE__REMOTE_DEBUGGING\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_SELECT_TRUE}" && test -z "${MODULE_SELECT_FALSE}"; then + as_fn_error $? "conditional \"MODULE_SELECT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__STRUCT_TRUE}" && test -z "${MODULE__STRUCT_FALSE}"; then + as_fn_error $? "conditional \"MODULE__STRUCT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__TYPES_TRUE}" && test -z "${MODULE__TYPES_FALSE}"; then + as_fn_error $? "conditional \"MODULE__TYPES\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__TYPING_TRUE}" && test -z "${MODULE__TYPING_FALSE}"; then + as_fn_error $? "conditional \"MODULE__TYPING\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__INTERPRETERS_TRUE}" && test -z "${MODULE__INTERPRETERS_FALSE}"; then + as_fn_error $? "conditional \"MODULE__INTERPRETERS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__INTERPCHANNELS_TRUE}" && test -z "${MODULE__INTERPCHANNELS_FALSE}"; then + as_fn_error $? "conditional \"MODULE__INTERPCHANNELS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__INTERPQUEUES_TRUE}" && test -z "${MODULE__INTERPQUEUES_FALSE}"; then + as_fn_error $? "conditional \"MODULE__INTERPQUEUES\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__ZONEINFO_TRUE}" && test -z "${MODULE__ZONEINFO_FALSE}"; then + as_fn_error $? "conditional \"MODULE__ZONEINFO\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__MULTIPROCESSING_TRUE}" && test -z "${MODULE__MULTIPROCESSING_FALSE}"; then + as_fn_error $? "conditional \"MODULE__MULTIPROCESSING\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__POSIXSHMEM_TRUE}" && test -z "${MODULE__POSIXSHMEM_FALSE}"; then + as_fn_error $? "conditional \"MODULE__POSIXSHMEM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__STATISTICS_TRUE}" && test -z "${MODULE__STATISTICS_FALSE}"; then + as_fn_error $? "conditional \"MODULE__STATISTICS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_CMATH_TRUE}" && test -z "${MODULE_CMATH_FALSE}"; then + as_fn_error $? "conditional \"MODULE_CMATH\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_MATH_TRUE}" && test -z "${MODULE_MATH_FALSE}"; then + as_fn_error $? "conditional \"MODULE_MATH\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__DATETIME_TRUE}" && test -z "${MODULE__DATETIME_FALSE}"; then + as_fn_error $? "conditional \"MODULE__DATETIME\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_FCNTL_TRUE}" && test -z "${MODULE_FCNTL_FALSE}"; then + as_fn_error $? "conditional \"MODULE_FCNTL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_MMAP_TRUE}" && test -z "${MODULE_MMAP_FALSE}"; then + as_fn_error $? "conditional \"MODULE_MMAP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__SOCKET_TRUE}" && test -z "${MODULE__SOCKET_FALSE}"; then + as_fn_error $? "conditional \"MODULE__SOCKET\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_GRP_TRUE}" && test -z "${MODULE_GRP_FALSE}"; then + as_fn_error $? "conditional \"MODULE_GRP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_PWD_TRUE}" && test -z "${MODULE_PWD_FALSE}"; then + as_fn_error $? "conditional \"MODULE_PWD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_RESOURCE_TRUE}" && test -z "${MODULE_RESOURCE_FALSE}"; then + as_fn_error $? "conditional \"MODULE_RESOURCE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__SCPROXY_TRUE}" && test -z "${MODULE__SCPROXY_FALSE}"; then + as_fn_error $? "conditional \"MODULE__SCPROXY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_SYSLOG_TRUE}" && test -z "${MODULE_SYSLOG_FALSE}"; then + as_fn_error $? "conditional \"MODULE_SYSLOG\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_TERMIOS_TRUE}" && test -z "${MODULE_TERMIOS_FALSE}"; then + as_fn_error $? "conditional \"MODULE_TERMIOS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_PYEXPAT_TRUE}" && test -z "${MODULE_PYEXPAT_FALSE}"; then + as_fn_error $? "conditional \"MODULE_PYEXPAT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__ELEMENTTREE_TRUE}" && test -z "${MODULE__ELEMENTTREE_FALSE}"; then + as_fn_error $? "conditional \"MODULE__ELEMENTTREE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__CODECS_CN_TRUE}" && test -z "${MODULE__CODECS_CN_FALSE}"; then + as_fn_error $? "conditional \"MODULE__CODECS_CN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__CODECS_HK_TRUE}" && test -z "${MODULE__CODECS_HK_FALSE}"; then + as_fn_error $? "conditional \"MODULE__CODECS_HK\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__CODECS_ISO2022_TRUE}" && test -z "${MODULE__CODECS_ISO2022_FALSE}"; then + as_fn_error $? "conditional \"MODULE__CODECS_ISO2022\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__CODECS_JP_TRUE}" && test -z "${MODULE__CODECS_JP_FALSE}"; then + as_fn_error $? "conditional \"MODULE__CODECS_JP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__CODECS_KR_TRUE}" && test -z "${MODULE__CODECS_KR_FALSE}"; then + as_fn_error $? "conditional \"MODULE__CODECS_KR\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__CODECS_TW_TRUE}" && test -z "${MODULE__CODECS_TW_FALSE}"; then + as_fn_error $? "conditional \"MODULE__CODECS_TW\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__MULTIBYTECODEC_TRUE}" && test -z "${MODULE__MULTIBYTECODEC_FALSE}"; then + as_fn_error $? "conditional \"MODULE__MULTIBYTECODEC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_UNICODEDATA_TRUE}" && test -z "${MODULE_UNICODEDATA_FALSE}"; then + as_fn_error $? "conditional \"MODULE_UNICODEDATA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__MD5_TRUE}" && test -z "${MODULE__MD5_FALSE}"; then + as_fn_error $? "conditional \"MODULE__MD5\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__SHA1_TRUE}" && test -z "${MODULE__SHA1_FALSE}"; then + as_fn_error $? "conditional \"MODULE__SHA1\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__SHA2_TRUE}" && test -z "${MODULE__SHA2_FALSE}"; then + as_fn_error $? "conditional \"MODULE__SHA2\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__SHA3_TRUE}" && test -z "${MODULE__SHA3_FALSE}"; then + as_fn_error $? "conditional \"MODULE__SHA3\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__BLAKE2_TRUE}" && test -z "${MODULE__BLAKE2_FALSE}"; then + as_fn_error $? "conditional \"MODULE__BLAKE2\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__HMAC_TRUE}" && test -z "${MODULE__HMAC_FALSE}"; then + as_fn_error $? "conditional \"MODULE__HMAC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__CTYPES_TRUE}" && test -z "${MODULE__CTYPES_FALSE}"; then + as_fn_error $? "conditional \"MODULE__CTYPES\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__CURSES_TRUE}" && test -z "${MODULE__CURSES_FALSE}"; then + as_fn_error $? "conditional \"MODULE__CURSES\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__CURSES_PANEL_TRUE}" && test -z "${MODULE__CURSES_PANEL_FALSE}"; then + as_fn_error $? "conditional \"MODULE__CURSES_PANEL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__DECIMAL_TRUE}" && test -z "${MODULE__DECIMAL_FALSE}"; then + as_fn_error $? "conditional \"MODULE__DECIMAL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__DBM_TRUE}" && test -z "${MODULE__DBM_FALSE}"; then + as_fn_error $? "conditional \"MODULE__DBM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__GDBM_TRUE}" && test -z "${MODULE__GDBM_FALSE}"; then + as_fn_error $? "conditional \"MODULE__GDBM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_READLINE_TRUE}" && test -z "${MODULE_READLINE_FALSE}"; then + as_fn_error $? "conditional \"MODULE_READLINE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__SQLITE3_TRUE}" && test -z "${MODULE__SQLITE3_FALSE}"; then + as_fn_error $? "conditional \"MODULE__SQLITE3\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__TKINTER_TRUE}" && test -z "${MODULE__TKINTER_FALSE}"; then + as_fn_error $? "conditional \"MODULE__TKINTER\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__UUID_TRUE}" && test -z "${MODULE__UUID_FALSE}"; then + as_fn_error $? "conditional \"MODULE__UUID\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_ZLIB_TRUE}" && test -z "${MODULE_ZLIB_FALSE}"; then + as_fn_error $? "conditional \"MODULE_ZLIB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_BINASCII_TRUE}" && test -z "${MODULE_BINASCII_FALSE}"; then + as_fn_error $? "conditional \"MODULE_BINASCII\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__BZ2_TRUE}" && test -z "${MODULE__BZ2_FALSE}"; then + as_fn_error $? "conditional \"MODULE__BZ2\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__LZMA_TRUE}" && test -z "${MODULE__LZMA_FALSE}"; then + as_fn_error $? "conditional \"MODULE__LZMA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__ZSTD_TRUE}" && test -z "${MODULE__ZSTD_FALSE}"; then + as_fn_error $? "conditional \"MODULE__ZSTD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__SSL_TRUE}" && test -z "${MODULE__SSL_FALSE}"; then + as_fn_error $? "conditional \"MODULE__SSL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__HASHLIB_TRUE}" && test -z "${MODULE__HASHLIB_FALSE}"; then + as_fn_error $? "conditional \"MODULE__HASHLIB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__TESTCAPI_TRUE}" && test -z "${MODULE__TESTCAPI_FALSE}"; then + as_fn_error $? "conditional \"MODULE__TESTCAPI\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__TESTCLINIC_TRUE}" && test -z "${MODULE__TESTCLINIC_FALSE}"; then + as_fn_error $? "conditional \"MODULE__TESTCLINIC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__TESTCLINIC_LIMITED_TRUE}" && test -z "${MODULE__TESTCLINIC_LIMITED_FALSE}"; then + as_fn_error $? "conditional \"MODULE__TESTCLINIC_LIMITED\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__TESTLIMITEDCAPI_TRUE}" && test -z "${MODULE__TESTLIMITEDCAPI_FALSE}"; then + as_fn_error $? "conditional \"MODULE__TESTLIMITEDCAPI\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__TESTINTERNALCAPI_TRUE}" && test -z "${MODULE__TESTINTERNALCAPI_FALSE}"; then + as_fn_error $? "conditional \"MODULE__TESTINTERNALCAPI\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__TESTBUFFER_TRUE}" && test -z "${MODULE__TESTBUFFER_FALSE}"; then + as_fn_error $? "conditional \"MODULE__TESTBUFFER\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__TESTIMPORTMULTIPLE_TRUE}" && test -z "${MODULE__TESTIMPORTMULTIPLE_FALSE}"; then + as_fn_error $? "conditional \"MODULE__TESTIMPORTMULTIPLE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__TESTMULTIPHASE_TRUE}" && test -z "${MODULE__TESTMULTIPHASE_FALSE}"; then + as_fn_error $? "conditional \"MODULE__TESTMULTIPHASE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__TESTSINGLEPHASE_TRUE}" && test -z "${MODULE__TESTSINGLEPHASE_FALSE}"; then + as_fn_error $? "conditional \"MODULE__TESTSINGLEPHASE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_XXSUBTYPE_TRUE}" && test -z "${MODULE_XXSUBTYPE_FALSE}"; then + as_fn_error $? "conditional \"MODULE_XXSUBTYPE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__XXTESTFUZZ_TRUE}" && test -z "${MODULE__XXTESTFUZZ_FALSE}"; then + as_fn_error $? "conditional \"MODULE__XXTESTFUZZ\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE__CTYPES_TEST_TRUE}" && test -z "${MODULE__CTYPES_TEST_FALSE}"; then + as_fn_error $? "conditional \"MODULE__CTYPES_TEST\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_XXLIMITED_TRUE}" && test -z "${MODULE_XXLIMITED_FALSE}"; then + as_fn_error $? "conditional \"MODULE_XXLIMITED\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MODULE_XXLIMITED_35_TRUE}" && test -z "${MODULE_XXLIMITED_35_FALSE}"; then + as_fn_error $? "conditional \"MODULE_XXLIMITED_35\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by python $as_me 3.15, which was +generated by GNU Autoconf 2.72. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +python config.status 3.15 +configured by $0, generated by GNU Autoconf 2.72, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2023 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "pyconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS pyconfig.h" ;; + "Mac/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/Makefile" ;; + "Mac/PythonLauncher/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/PythonLauncher/Makefile" ;; + "Mac/Resources/framework/Info.plist") CONFIG_FILES="$CONFIG_FILES Mac/Resources/framework/Info.plist" ;; + "Mac/Resources/app/Info.plist") CONFIG_FILES="$CONFIG_FILES Mac/Resources/app/Info.plist" ;; + "Apple/iOS/Resources/Info.plist") CONFIG_FILES="$CONFIG_FILES Apple/iOS/Resources/Info.plist" ;; + "Makefile.pre") CONFIG_FILES="$CONFIG_FILES Makefile.pre" ;; + "Misc/python.pc") CONFIG_FILES="$CONFIG_FILES Misc/python.pc" ;; + "Misc/python-embed.pc") CONFIG_FILES="$CONFIG_FILES Misc/python-embed.pc" ;; + "Misc/python-config.sh") CONFIG_FILES="$CONFIG_FILES Misc/python-config.sh" ;; + "Modules/Setup.bootstrap") CONFIG_FILES="$CONFIG_FILES Modules/Setup.bootstrap" ;; + "Modules/Setup.stdlib") CONFIG_FILES="$CONFIG_FILES Modules/Setup.stdlib" ;; + "Modules/ld_so_aix") CONFIG_FILES="$CONFIG_FILES Modules/ld_so_aix" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + + esac + + + case $ac_file$ac_mode in + "Modules/ld_so_aix":F) chmod +x Modules/ld_so_aix ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating Modules/Setup.local" >&5 +printf "%s\n" "$as_me: creating Modules/Setup.local" >&6;} +if test ! -f Modules/Setup.local +then + echo "# Edit this file for local setup changes" >Modules/Setup.local +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating Makefile" >&5 +printf "%s\n" "$as_me: creating Makefile" >&6;} +$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \ + -s Modules \ + Modules/Setup.local Modules/Setup.stdlib Modules/Setup.bootstrap $srcdir/Modules/Setup +if test $? -ne 0; then + as_fn_error $? "makesetup failed" "$LINENO" 5 +fi + +mv config.c Modules + +if test -z "$PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: pkg-config is missing. Some dependencies may not be detected correctly." >&5 +printf "%s\n" "$as_me: WARNING: pkg-config is missing. Some dependencies may not be detected correctly." >&2;} +fi + +if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: + +If you want a release build with all stable optimizations active (PGO, etc), +please run ./configure --enable-optimizations +" >&5 +printf "%s\n" "$as_me: + +If you want a release build with all stable optimizations active (PGO, etc), +please run ./configure --enable-optimizations +" >&6;} +fi + +if test "x$PY_SUPPORT_TIER" = x0 +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: + +Platform \"$host\" with compiler \"$ac_cv_cc_name\" is not supported by the +CPython core team, see https://peps.python.org/pep-0011/ for more information. +" >&5 +printf "%s\n" "$as_me: WARNING: + +Platform \"$host\" with compiler \"$ac_cv_cc_name\" is not supported by the +CPython core team, see https://peps.python.org/pep-0011/ for more information. +" >&2;} +fi + +if test "$ac_cv_header_stdatomic_h" != "yes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Your compiler or platform does have a working C11 stdatomic.h. A future version of Python may require stdatomic.h." >&5 +printf "%s\n" "$as_me: Your compiler or platform does have a working C11 stdatomic.h. A future version of Python may require stdatomic.h." >&6;} +fi + From 28d935d73b95dc650f56ee478797ecddf01e99bb Mon Sep 17 00:00:00 2001 From: Neil Schemenauer Date: Mon, 16 Mar 2026 11:38:10 -0700 Subject: [PATCH 2/6] Add configure-new (transpiled configure.py). --- configure-new | 8133 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 8133 insertions(+) create mode 100755 configure-new diff --git a/configure-new b/configure-new new file mode 100755 index 00000000000000..1b3e6f3e57a7bb --- /dev/null +++ b/configure-new @@ -0,0 +1,8133 @@ +#!/bin/sh +# Generated by transpile.py -- do not edit. +# This is a POSIX shell wrapper around an embedded AWK program. +# Run: /bin/sh configure [options] + +_tmpf=$(mktemp "${TMPDIR:-/tmp}/configure.XXXXXXXXXX") || exit 1 +trap 'rm -f "$_tmpf"' EXIT +sed '1,/^#---AWK-START---$/d' "$0" > "$_tmpf" +exec awk -f "$_tmpf" -- "$@" +#---AWK-START--- +# === pyconf.awk runtime === +# pyconf.awk — AWK runtime library for the configure transpiler. +# +# POSIX AWK equivalent of pyconf.sh. All configure logic runs inside +# a single AWK process, using associative arrays for state. +# +# Data structures: +# V[] - configuration variables (replaces flat shell namespace) +# ENV[] - shadow environment (init from ENVIRON[]) +# MODIFIED_ENV[] - tracks which env vars were modified +# DEFINES[] - pyconfig.h defines: name -> value +# DEFINE_DESC[] - pyconfig.h define descriptions +# DEFINE_QUOTED[]- whether define value needs quoting +# CACHE[] - probe cache (ac_cv_*) +# OPT_VAL[] - option values +# OPT_GIVEN[] - option given flags (0/1) +# OPT_KIND[] - option kind ("enable" or "with") +# OPT_DEFAULT[] - option defaults +# OPT_HELP[] - option help text +# OPT_METAVAR[] - option metavar +# OPT_VAR[] - option env variable binding +# OPT_FALSE_IS[] - option false_is value +# SUBST[] - Makefile substitution variables +# CONFIG_FILES[] - list of config files to process +# CONFIG_FILES_X[] - config files needing chmod +x + +# --------------------------------------------------------------------------- +# Initialization +# --------------------------------------------------------------------------- + +function pyconf_init( k) { + # Shadow ENVIRON into ENV[] + for (k in ENVIRON) + ENV[k] = ENVIRON[k] + _pyconf_tmpdir = "" + _pyconf_verbose = 0 + _pyconf_srcdir = "." + _pyconf_cross_compiling = "no" + _pyconf_config_file_count = 0 + _pyconf_config_file_x_count = 0 + SUBST["LIBOBJS"] = "" + _pyconf_opt_count = 0 + _pyconf_checking_msg = "" + _pyconf_deferred_result = "" + _pyconf_defines_order_n = 0 + # Create temp directory + pyconf_mktmpdir() +} + +function pyconf_mktmpdir( cmd, line) { + cmd = "mktemp -d /tmp/pyconf.XXXXXX 2>/dev/null || echo /tmp/pyconf.$$" + if ((cmd | getline line) > 0) + _pyconf_tmpdir = line + close(cmd) + if (_pyconf_tmpdir == "" || substr(_pyconf_tmpdir, 1, 1) != "/") { + cmd = "echo /tmp/pyconf.$$" + if ((cmd | getline line) > 0) + _pyconf_tmpdir = line + close(cmd) + } + system("mkdir -p " _pyconf_tmpdir) +} + +function pyconf_cleanup() { + if (_pyconf_tmpdir != "") + system("rm -rf " _pyconf_tmpdir) +} + +# --------------------------------------------------------------------------- +# Logging / messaging +# --------------------------------------------------------------------------- + +function pyconf_checking(msg) { + _pyconf_checking_msg = msg + printf "checking %s... ", msg +} + +function pyconf_result(val) { + printf "%s\n", val + _pyconf_checking_msg = "" +} + +function _pyconf_flush_result() { + if (_pyconf_deferred_result != "") { + pyconf_result(_pyconf_deferred_result) + _pyconf_deferred_result = "" + } +} + +function _pyconf_print_cached(val) { + printf "%s (cached)\n", val +} + +function pyconf_warn(msg) { + printf "WARNING: %s\n", msg > "/dev/stderr" +} + +function pyconf_notice(msg) { + printf "%s\n", msg +} + +function pyconf_error(msg) { + printf "configure: error: %s\n", msg > "/dev/stderr" + exit 1 +} + +function pyconf_fatal(msg) { + printf "configure: error: %s\n", msg > "/dev/stderr" + exit 1 +} + +# --------------------------------------------------------------------------- +# Defines (pyconfig.h) +# --------------------------------------------------------------------------- + +function _pyconf_init_defines() { + # Nothing needed — arrays are auto-initialized +} + +function pyconf_define(name, value, quoted, desc) { + if (!(name in DEFINES)) { + _pyconf_defines_order_n++ + _pyconf_defines_order[_pyconf_defines_order_n] = name + } + DEFINES[name] = value + if (desc != "") DEFINE_DESC[name] = desc + DEFINE_QUOTED[name] = quoted + 0 +} + +function pyconf_define_unquoted(name, value, desc) { + pyconf_define(name, value, 0, desc) +} + +function pyconf_define_template(name, desc) { + if (!(name in DEFINES)) { + _pyconf_defines_order_n++ + _pyconf_defines_order[_pyconf_defines_order_n] = name + } + if (desc != "") DEFINE_DESC[name] = desc + # Template only — no value set yet +} + +function _pyconf_define_remove(name) { + delete DEFINES[name] + delete DEFINE_DESC[name] + delete DEFINE_QUOTED[name] +} + +function _pyconf_define_get(name) { + if (name in DEFINES) + return DEFINES[name] + return "" +} + +function pyconf_is_defined(name) { + return (name in DEFINES) +} + +# --------------------------------------------------------------------------- +# Substitution variables +# --------------------------------------------------------------------------- + +function pyconf_subst_set(name, value) { + SUBST[name] = value +} + +function pyconf_subst_get(name) { + if (name in SUBST) + return SUBST[name] + return "" +} + +function pyconf_export(name, value) { + V[name] = value + ENV[name] = value + MODIFIED_ENV[name] = 1 +} + +function v_export(name) { + ENV[name] = V[name] + MODIFIED_ENV[name] = 1 +} + +# --------------------------------------------------------------------------- +# Cache +# --------------------------------------------------------------------------- + +function _pyconf_cache_set(key, value) { + CACHE[key] = value +} + +function _pyconf_cache_get(key) { + if (key in CACHE) + return CACHE[key] + return "" +} + +function _pyconf_cache_has(key) { + return (key in CACHE) +} + +# --------------------------------------------------------------------------- +# Command execution helpers +# --------------------------------------------------------------------------- + +function _arr_join(arr, sep, n, i, result) { + n = arr[0] + 0 + result = "" + for (i = 1; i <= n; i++) + result = result (i > 1 ? sep : "") arr[i] + return result +} + +function _arr_join_quoted(arr, sep, n, i, result) { + n = arr[0] + 0 + result = "" + for (i = 1; i <= n; i++) + result = result (i > 1 ? sep : "") _shell_quote(arr[i]) + return result +} + +# Expand $VAR and ${VAR} references in a command string from V[], falling +# back to ENVIRON[]. Mirrors what Python's pyconf.run() does with its +# vars= parameter: the command template contains shell-style variable +# references that must be resolved before execution. +function _expand_cmd_vars(cmd, result, i, n, c, varname, brace) { + result = "" + n = length(cmd) + i = 1 + while (i <= n) { + c = substr(cmd, i, 1) + if (c == "$" && i < n) { + # Check for ${VAR} or $VAR + if (substr(cmd, i + 1, 1) == "{") { + brace = 1 + i += 2 + varname = "" + while (i <= n && substr(cmd, i, 1) != "}") { + varname = varname substr(cmd, i, 1) + i++ + } + if (i <= n) i++ # skip closing } + } else { + brace = 0 + i++ + varname = "" + while (i <= n && substr(cmd, i, 1) ~ /[A-Za-z0-9_]/) { + varname = varname substr(cmd, i, 1) + i++ + } + } + if (varname == "") { + result = result "$" + if (brace) result = result "{" + } else if (varname in V) { + result = result V[varname] + } else if (varname in ENVIRON) { + result = result ENVIRON[varname] + } + # else: unknown var expands to empty (matches shell behaviour) + } else { + result = result c + i++ + } + } + return result +} + +function _cmd_output(cmd, line, result) { + result = "" + while ((cmd | getline line) > 0) + result = result (result != "" ? "\n" : "") line + close(cmd) + return result +} + +function _cmd_output_oneline(cmd, line) { + line = "" + cmd | getline line + close(cmd) + return line +} + +function _cmd_exit_code(cmd) { + return system(cmd " >/dev/null 2>&1") +} + +function _pyconf_env_prefix( k, prefix) { + prefix = "" + for (k in MODIFIED_ENV) { + prefix = prefix k "=" _shell_quote(ENV[k]) " " + } + return prefix +} + +function _shell_quote(s, r) { + r = s + gsub(/'/, "'\\''", r) + return "'" r "'" +} + +# --------------------------------------------------------------------------- +# Compiler checks +# --------------------------------------------------------------------------- + +function _pyconf_confdefs( result, k, i, name, val) { + result = "" + for (i = 1; i <= _pyconf_defines_order_n; i++) { + name = _pyconf_defines_order[i] + if (name in DEFINES) { + val = DEFINES[name] + if (DEFINE_QUOTED[name]) + result = result "#define " name " \"" val "\"\n" + else + result = result "#define " name " " val "\n" + } + } + return result +} + +function _split_cc_lib_flags(extra_flags, pre, post, n, arr, i) { + # Split extra_flags: -l/-L/-Wl, flags go into post (after source), + # everything else goes into pre (before source). + # This matches GNU ld ordering requirements. + pre[0] = "" + post[0] = "" + n = split(extra_flags, arr, " ") + for (i = 1; i <= n; i++) { + if (arr[i] == "") continue + if (substr(arr[i], 1, 2) == "-l" || substr(arr[i], 1, 2) == "-L" || substr(arr[i], 1, 4) == "-Wl,") + post[0] = post[0] (post[0] != "" ? " " : "") arr[i] + else + pre[0] = pre[0] (pre[0] != "" ? " " : "") arr[i] + } +} + +function _pyconf_run_cc(source, extra_flags, mode, conftest, cmd, rc, pre, post) { + conftest = _pyconf_tmpdir "/conftest.c" + printf "%s", source > conftest + close(conftest) + + cmd = _pyconf_env_prefix() + if (mode == "compile") + cmd = cmd V["CC"] " " V["CPPFLAGS"] " " V["CFLAGS"] " " extra_flags " -c " conftest " -o " _pyconf_tmpdir "/conftest.o 2>/dev/null" + else { + _split_cc_lib_flags(extra_flags, pre, post) + cmd = cmd V["CC"] " " V["CPPFLAGS"] " " V["CFLAGS"] " " V["LDFLAGS"] " " pre[0] " " conftest " -o " _pyconf_tmpdir "/conftest " post[0] " " V["LIBS"] " 2>/dev/null" + } + + rc = system(cmd) + system("rm -f " _pyconf_tmpdir "/conftest.c " _pyconf_tmpdir "/conftest.o " _pyconf_tmpdir "/conftest") + return rc +} + +function _pyconf_compile_test(source, extra_flags) { + return (_pyconf_run_cc(source, extra_flags, "compile") == 0) +} + +function _pyconf_link_test(source, extra_flags) { + return (_pyconf_run_cc(source, extra_flags, "link") == 0) +} + +function _pyconf_run_test(source, extra_flags, conftest, cmd, rc, line, result, outf, pre, post) { + conftest = _pyconf_tmpdir "/conftest.c" + printf "%s", source > conftest + close(conftest) + + cmd = _pyconf_env_prefix() + _split_cc_lib_flags(extra_flags, pre, post) + cmd = cmd V["CC"] " " V["CPPFLAGS"] " " V["CFLAGS"] " " V["LDFLAGS"] " " pre[0] " " conftest " -o " _pyconf_tmpdir "/conftest " post[0] " " V["LIBS"] " 2>/dev/null" + if (system(cmd) != 0) { + system("rm -f " conftest " " _pyconf_tmpdir "/conftest") + _pyconf_run_test_rc = 1 + return "" + } + + outf = _pyconf_tmpdir "/conftest_out" + rc = system(_pyconf_tmpdir "/conftest > " outf " 2>/dev/null") + _pyconf_run_test_rc = rc + result = "" + cmd = "cat " outf + while ((cmd | getline line) > 0) + result = result (result != "" ? "\n" : "") line + close(cmd) + system("rm -f " conftest " " _pyconf_tmpdir "/conftest " outf) + return result +} + +# --------------------------------------------------------------------------- +# High-level check functions +# --------------------------------------------------------------------------- + +function pyconf_compile_check(desc, source, extra_flags, compiler, rc, saved_cc) { + if (desc != "") pyconf_checking(desc) + if (compiler != "") { saved_cc = V["CC"]; V["CC"] = compiler } + rc = _pyconf_compile_test(_pyconf_confdefs() "\n" source, extra_flags) + if (compiler != "") V["CC"] = saved_cc + if (desc != "") pyconf_result(rc ? "yes" : "no") + return rc +} + +function pyconf_link_check(desc, source, extra_flags, compiler, rc, saved_cc) { + if (desc != "") pyconf_checking(desc) + if (compiler != "") { saved_cc = V["CC"]; V["CC"] = compiler } + rc = _pyconf_link_test(_pyconf_confdefs() "\n" source, extra_flags) + if (compiler != "") V["CC"] = saved_cc + if (desc != "") pyconf_result(rc ? "yes" : "no") + return rc +} + +function pyconf_try_link(desc, source, extra_flags) { + return pyconf_link_check(desc, source, extra_flags) +} + +function pyconf_compile_link_check(desc, source, extra_flags, compiler, rc, result, saved_cc) { + if (desc != "") pyconf_checking(desc) + if (compiler != "") { saved_cc = V["CC"]; V["CC"] = compiler } + rc = _pyconf_link_test(_pyconf_confdefs() "\n" source, extra_flags) + if (compiler != "") V["CC"] = saved_cc + if (rc) + result = "yes" + else + result = "no" + if (desc != "") pyconf_result(result) + return result +} + +function pyconf_run_check(desc, source, extra_cflags, extra_libs, rc, result) { + if (desc != "") pyconf_checking(desc) + result = _pyconf_run_test(_pyconf_confdefs() "\n" source, extra_cflags " " extra_libs) + rc = _pyconf_run_test_rc + if (desc != "") { + if (rc == 0) + pyconf_result(result != "" ? result : "yes") + else + pyconf_result("failed") + } + return (rc == 0) +} + +function pyconf_run_program_output(desc, source, extra_flags, result) { + if (desc != "") pyconf_checking(desc) + result = _pyconf_run_test(_pyconf_confdefs() "\n" source, extra_flags) + if (desc != "") pyconf_result(result != "" ? result : "failed") + return result +} + +function pyconf_check_compile_flag(flag, extra_flags, source, all_flags) { + source = "int main(void) { return 0; }" + all_flags = flag + if (extra_flags[0] + 0 > 0) + all_flags = all_flags " " _arr_join_quoted(extra_flags, " ") + return _pyconf_compile_test(source, all_flags) +} + +function pyconf_check_linker_flag(flag, value, source) { + source = "int main(void) { return 0; }" + if (_pyconf_link_test(source, flag)) { + if (value != "") + return value + return flag + } + return "" +} + +# --------------------------------------------------------------------------- +# Header checks +# --------------------------------------------------------------------------- + +function _pyconf_includes_from_list(hdr_list, n, arr, i, result) { + # Convert space-separated header list to #include lines. + result = "" + n = split(hdr_list, arr, " ") + for (i = 1; i <= n; i++) { + if (arr[i] != "") + result = result "#include <" arr[i] ">\n" + } + return result +} + +function _pyconf_header_to_define(header, d) { + d = "HAVE_" header + gsub(/[\/\.\+\-]/, "_", d) + d = toupper(d) + return d +} + +function _pyconf_ac_includes_default( result) { + result = "" + if ("HAVE_STDIO_H" in DEFINES) result = result "#include \n" + if ("HAVE_STDLIB_H" in DEFINES) result = result "#include \n" + if ("HAVE_STRING_H" in DEFINES) result = result "#include \n" + if ("HAVE_INTTYPES_H" in DEFINES) result = result "#include \n" + if ("HAVE_STDINT_H" in DEFINES) result = result "#include \n" + if ("HAVE_STRINGS_H" in DEFINES) result = result "#include \n" + if ("HAVE_SYS_TYPES_H" in DEFINES) result = result "#include \n" + if ("HAVE_SYS_STAT_H" in DEFINES) result = result "#include \n" + if ("HAVE_UNISTD_H" in DEFINES) result = result "#include \n" + if (result == "") + result = "#include \n#include \n#include \n" + return result +} + +function pyconf_check_header(header, prologue, default_inc, define, cache_key, source, cv, rc) { + if (define == "") define = _pyconf_header_to_define(header) + if (cache_key == "") cache_key = "ac_cv_header_" header + gsub(/[\/\.\+\-]/, "_", cache_key) + + if (cache_key in CACHE) { + rc = (CACHE[cache_key] == "yes") + } else { + pyconf_checking("for " header) + if (prologue != "") + source = _pyconf_confdefs() "\n" prologue "\n#include <" header ">\nint main(void) { return 0; }" + else if (default_inc != "") + source = _pyconf_confdefs() "\n" default_inc "\n#include <" header ">\nint main(void) { return 0; }" + else + source = _pyconf_confdefs() "\n" _pyconf_ac_includes_default() "#include <" header ">\nint main(void) { return 0; }" + rc = _pyconf_compile_test(source, "") + CACHE[cache_key] = rc ? "yes" : "no" + V[cache_key] = rc ? "yes" : "no" + pyconf_result(rc ? "yes" : "no") + } + + if (rc) + pyconf_define(define, 1, 0, "Define to 1 if you have the <" header "> header file.") + return rc +} + +function pyconf_check_headers(headers, n, i, all_found) { + all_found = 1 + n = headers[0] + 0 + for (i = 1; i <= n; i++) + if (headers[i] != "") { + if (!pyconf_check_header(headers[i])) + all_found = 0 + } + return all_found +} + +# --------------------------------------------------------------------------- +# Function checks +# --------------------------------------------------------------------------- + +function pyconf_check_func(fname, headers, define, source, inc, cv, rc, cache_key, n, arr, i, proto, call, has_headers) { + if (define == "") define = "HAVE_" toupper(fname) + cache_key = "ac_cv_func_" fname + + if (cache_key in CACHE) { + rc = (CACHE[cache_key] == "yes") + if (rc) pyconf_define(define, 1, 0, "Define to 1 if you have the `" fname "` function.") + return rc + } + + pyconf_checking("for " fname) + inc = "" + has_headers = 0 + if (headers != "") { + n = split(headers, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") { + inc = inc "#include <" arr[i] ">\n" + has_headers = 1 + } + } + + # Match Python pyconf.check_func behaviour: + # - With headers: compile-only, take address of func (PY_CHECK_FUNC style) + # Include default headers + user headers. + # - Without headers: link test with stub prototype (AC_CHECK_FUNC style) + # No headers at all — the stub prototype "char func();" would conflict + # with real declarations from standard headers (e.g. stdlib.h declares + # clearenv when _GNU_SOURCE is defined). + if (has_headers) { + proto = "" + call = "(void)(&" fname ")" + inc = _pyconf_ac_includes_default() inc + source = _pyconf_confdefs() "\n" inc "\n" proto "int main(void) { " call "; return 0; }" + rc = _pyconf_compile_test(source, "") + } else { + proto = "#ifdef __cplusplus\nextern \"C\"\n#endif\nchar " fname "();\n" + call = fname "()" + source = _pyconf_confdefs() "\n" proto "int main(void) { " call "; return 0; }" + rc = _pyconf_link_test(source, "") + } + CACHE[cache_key] = rc ? "yes" : "no" + V[cache_key] = rc ? "yes" : "no" + pyconf_result(rc ? "yes" : "no") + + if (rc) + pyconf_define(define, 1, 0, "Define to 1 if you have the `" fname "` function.") + return rc +} + +function pyconf_check_funcs(funcs, n, i) { + n = funcs[0] + 0 + for (i = 1; i <= n; i++) + if (funcs[i] != "") + pyconf_check_func(funcs[i]) +} + +function pyconf_replace_funcs(funcs, n, i) { + # AC_REPLACE_FUNCS — check each function; add missing ones to LIBOBJS. + n = funcs[0] + 0 + for (i = 1; i <= n; i++) { + if (funcs[i] != "") { + if (!pyconf_check_func(funcs[i])) { + if (SUBST["LIBOBJS"] != "") + SUBST["LIBOBJS"] = SUBST["LIBOBJS"] " " funcs[i] ".o" + else + SUBST["LIBOBJS"] = funcs[i] ".o" + } + } + } +} + +# --------------------------------------------------------------------------- +# Type / sizeof / alignof checks +# --------------------------------------------------------------------------- + +function _pyconf_type_to_define(type_name, d) { + d = type_name + gsub(/[ \*]/, "_", d) + return "HAVE_" toupper(d) +} + +function pyconf_check_sizeof(type_name, default_val, headers, source, inc, result, n, arr, i, cv, define) { + cv = "ac_cv_sizeof_" type_name + gsub(/ /, "_", cv) + gsub(/\*/, "p", cv) + + define = "SIZEOF_" toupper(type_name) + gsub(/ /, "_", define) + gsub(/\*/, "P", define) + + if (cv in CACHE) { + result = CACHE[cv] + pyconf_define(define, result, 0, "The size of `" type_name "`, as computed by sizeof.") + return result + } + + pyconf_checking("for sizeof " type_name) + inc = _pyconf_ac_includes_default() + if (headers != "") { + n = split(headers, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") + inc = inc "#include <" arr[i] ">\n" + } + + source = _pyconf_confdefs() "\n" inc "\n#include \nint main(void) { printf(\"%d\", (int)sizeof(" type_name ")); return 0; }" + result = _pyconf_run_test(source, "") + + if (result == "") { + if (default_val != "") + result = default_val + else + result = "0" + } + CACHE[cv] = result + V[cv] = result + pyconf_result(result) + pyconf_define(define, result, 0, "The size of `" type_name "`, as computed by sizeof.") + return result +} + +function pyconf_check_alignof(type_name, default_val, headers, source, inc, result, n, arr, i, cv, define) { + cv = "ac_cv_alignof_" type_name + gsub(/ /, "_", cv) + + define = "ALIGNOF_" toupper(type_name) + gsub(/ /, "_", define) + + if (cv in CACHE) { + result = CACHE[cv] + pyconf_define(define, result, 0, "") + return result + } + + pyconf_checking("for alignof " type_name) + inc = _pyconf_ac_includes_default() + if (headers != "") { + n = split(headers, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") + inc = inc "#include <" arr[i] ">\n" + } + + source = _pyconf_confdefs() "\n" inc "\n#include \n#include \nstruct _align_test { char c; " type_name " x; };\nint main(void) { printf(\"%d\", (int)offsetof(struct _align_test, x)); return 0; }" + result = _pyconf_run_test(source, "") + + if (result == "") result = (default_val != "" ? default_val : "0") + CACHE[cv] = result + V[cv] = result + pyconf_result(result) + pyconf_define(define, result, 0, "") + return result +} + +function pyconf_sizeof(type_name) { + return pyconf_check_sizeof(type_name) +} + +function pyconf_check_type(type_name, headers, source, inc, cv, rc, define, n, arr, i) { + define = _pyconf_type_to_define(type_name) + cv = "ac_cv_type_" type_name + gsub(/ /, "_", cv) + + if (cv in CACHE) + return (CACHE[cv] == "yes") + + pyconf_checking("for " type_name) + inc = _pyconf_ac_includes_default() + if (headers != "") { + n = split(headers, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") + inc = inc "#include <" arr[i] ">\n" + } + + source = _pyconf_confdefs() "\n" inc "\n" type_name " _test_var;\nint main(void) { return 0; }" + rc = _pyconf_compile_test(source, "") + CACHE[cv] = rc ? "yes" : "no" + V[cv] = rc ? "yes" : "no" + pyconf_result(rc ? "yes" : "no") + + if (rc) + pyconf_define(define, 1, 0, "Define to 1 if the system has the type `" type_name "`.") + return rc +} + +function pyconf_check_member(member, headers, define, struct_name, field, source, inc, cv, rc, n, arr, i) { + # member is like "struct stat.st_blksize" + split(member, arr, ".") + struct_name = arr[1] + field = arr[2] + if (define == "") define = "HAVE_" toupper(struct_name) "_" toupper(field) + gsub(/ /, "_", define) + + cv = "ac_cv_member_" member + gsub(/[. ]/, "_", cv) + + if (cv in CACHE) + return (CACHE[cv] == "yes") + + pyconf_checking("for " member) + inc = _pyconf_ac_includes_default() + if (headers != "") { + n = split(headers, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") + inc = inc "#include <" arr[i] ">\n" + } + + source = _pyconf_confdefs() "\n" inc "\nint main(void) { " struct_name " s; (void)s." field "; return 0; }" + rc = _pyconf_compile_test(source, "") + CACHE[cv] = rc ? "yes" : "no" + V[cv] = rc ? "yes" : "no" + pyconf_result(rc ? "yes" : "no") + + if (rc) + pyconf_define(define, 1, 0, "") + return rc +} + +function pyconf_check_members(members, n, arr, i) { + n = split(members, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") + pyconf_check_member(arr[i]) +} + +function pyconf_check_struct_tm() { + # AC_STRUCT_TM — check for tm_zone in struct tm + if (pyconf_check_member("struct tm.tm_zone", "time.h")) + pyconf_define("HAVE_TM_ZONE", 1, 0, "Define to 1 if your struct tm has tm_zone.") +} + +function pyconf_check_struct_timezone( source, rc) { + # Check for struct timezone + source = "#include \nint main(void) { struct timezone tz; (void)tz; return 0; }\n" + rc = _pyconf_compile_test(source, "") + if (rc) + pyconf_define("HAVE_STRUCT_TIMEZONE", 1, 0, "Define to 1 if struct timezone exists.") +} + +function pyconf_check_c_const( source) { + # AC_C_CONST — check for const keyword + source = "int main(void) {\n const int x = 0;\n (void)x;\n return 0;\n}\n" + if (!_pyconf_compile_test(source, "")) + pyconf_define("const", "", 1, "Define to empty if const does not conform to ANSI C.") +} + +function pyconf_check_define(macro, headers, source, inc, cv, rc, n, arr, i) { + cv = "ac_cv_define_" macro + if (cv in CACHE) + return (CACHE[cv] == "yes") + + pyconf_checking("for " macro) + inc = _pyconf_ac_includes_default() + if (headers != "") { + n = split(headers, arr, " ") + for (i = 1; i <= n; i++) + if (arr[i] != "") + inc = inc "#include <" arr[i] ">\n" + } + source = _pyconf_confdefs() "\n" inc "\n#ifndef " macro "\n#error " macro " not defined\n#endif\nint main(void) { return 0; }" + rc = _pyconf_compile_test(source, "") + CACHE[cv] = rc ? "yes" : "no" + V[cv] = rc ? "yes" : "no" + pyconf_result(rc ? "yes" : "no") + return rc +} + +function pyconf_check_decl(name, includes, define, source, inc, cv, rc, _darr, _di, _dn) { + if (define == "") define = "HAVE_DECL_" toupper(name) + cv = "ac_cv_have_decl_" name + if (cv in CACHE) { + rc = (CACHE[cv] == "yes") + pyconf_define(define, rc ? 1 : 0, 0, "") + return rc + } + + pyconf_checking("whether " name " is declared") + inc = _pyconf_ac_includes_default() + if (includes != "") { + _dn = split(includes, _darr, " ") + for (_di = 1; _di <= _dn; _di++) + if (_darr[_di] != "") + inc = inc "#include <" _darr[_di] ">\n" + } + source = _pyconf_confdefs() "\n" inc "\nint main(void) {\n#ifndef " name "\n (void)" name ";\n#endif\n return 0;\n}" + rc = _pyconf_compile_test(source, "") + CACHE[cv] = rc ? "yes" : "no" + V[cv] = rc ? "yes" : "no" + pyconf_result(rc ? "yes" : "no") + pyconf_define(define, rc ? 1 : 0, 0, "") + return rc +} + +function pyconf_check_decls(decls, n, i, sep, headers) { + # decls[0]=count, decls[1..n]=decl names or "--" separator followed by headers + n = decls[0] + 0 + sep = 0 + headers = "" + # Find "--" separator; everything after it is headers + for (i = 1; i <= n; i++) { + if (decls[i] == "--") { + sep = i + break + } + } + if (sep > 0) { + for (i = sep + 1; i <= n; i++) + if (decls[i] != "") + headers = headers (headers != "" ? " " : "") decls[i] + n = sep - 1 + } + for (i = 1; i <= n; i++) + if (decls[i] != "") + pyconf_check_decl(decls[i], headers) +} + +# --------------------------------------------------------------------------- +# Library checks +# --------------------------------------------------------------------------- + +function pyconf_check_lib(lib, fname, extra_cflags, extra_libs, source, rc, flags, cache_key) { + pyconf_checking("for -l" lib) + if (fname == "") fname = "main" + source = "char " fname "();\nint main(void) { return " fname "(); }" + flags = extra_cflags " -l" lib " " extra_libs + rc = _pyconf_link_test(source, flags) + pyconf_result(rc ? "yes" : "no") + # Set ac_cv_lib__ cache variable (autoconf convention) + cache_key = "ac_cv_lib_" lib "_" fname + CACHE[cache_key] = rc ? "yes" : "no" + V[cache_key] = rc ? "yes" : "no" + return rc +} + +function pyconf_search_libs(fname, libs, n, arr, i, source, rc) { + pyconf_checking("for library containing " fname) + source = _pyconf_confdefs() "\nchar " fname "();\nint main(void) { return " fname "(); }" + + # Try without any library first + if (_pyconf_link_test(source, "")) { + pyconf_result("none required") + return "none required" + } + + n = split(libs, arr, " ") + for (i = 1; i <= n; i++) { + if (arr[i] != "" && _pyconf_link_test(source, "-l" arr[i])) { + V["LIBS"] = "-l" arr[i] " " V["LIBS"] + pyconf_result("-l" arr[i]) + return "-l" arr[i] + } + } + pyconf_result("no") + return "" +} + +# --------------------------------------------------------------------------- +# Program checks +# --------------------------------------------------------------------------- + +# Portable PATH search — avoids reliance on "command -v" which may not be +# available on all /bin/sh implementations. Splits $PATH and checks each +# directory for an executable file using "test -x". +function _find_in_path(prog, search_path, path, n, dirs, i, candidate) { + if (prog == "") return "" + # If prog already contains a slash, treat as a direct path + if (index(prog, "/") > 0) { + if (system("test -f " _shell_quote(prog) " && test -x " _shell_quote(prog) " 2>/dev/null") == 0) + return prog + return "" + } + path = (search_path != "") ? search_path : ENVIRON["PATH"] + n = split(path, dirs, ":") + for (i = 1; i <= n; i++) { + if (dirs[i] == "") dirs[i] = "." + candidate = dirs[i] "/" prog + if (system("test -f " _shell_quote(candidate) " && test -x " _shell_quote(candidate) " 2>/dev/null") == 0) + return candidate + } + return "" +} + +function pyconf_check_prog(prog, search_path, default_val, result) { + # Matches Python pyconf.check_prog(prog, path=None, default="") + # Returns found path or default_val. + result = _find_in_path(prog, search_path) + if (result != "") + return result + return default_val +} + +function pyconf_check_progs(progs, n, i) { + # AC_CHECK_PROGS — return the first program NAME found in PATH. + # Like the Python version (shutil.which(p) then return p), returns the + # basename, not the full path. + n = progs[0] + 0 + for (i = 1; i <= n; i++) { + if (progs[i] != "" && _find_in_path(progs[i]) != "") + return progs[i] + } + return "" +} + +function pyconf_check_tools(tools, default_val, result) { + result = pyconf_check_progs(tools) + if (result != "") + return result + return default_val +} + +function pyconf_find_prog(prog, result) { + result = _find_in_path(prog) + return result +} + +function pyconf_find_install( result) { + result = _find_in_path("ginstall") + if (result == "") + result = _find_in_path("install") + if (result != "") + SUBST["INSTALL"] = result " -c" + else + SUBST["INSTALL"] = "install -c" + if (!("INSTALL_PROGRAM" in SUBST)) + SUBST["INSTALL_PROGRAM"] = "${INSTALL}" + if (!("INSTALL_SCRIPT" in SUBST)) + SUBST["INSTALL_SCRIPT"] = "${INSTALL}" + if (!("INSTALL_DATA" in SUBST)) + SUBST["INSTALL_DATA"] = "${INSTALL} -m 644" + return result +} + +function pyconf_find_mkdir_p( result, ver, dirs, n, i, p, prog, progs, cmd) { + # Search PATH + /opt/sfw/bin for coreutils/BusyBox mkdir + result = "" + n = split(ENVIRON["PATH"] ":/opt/sfw/bin", dirs, ":") + for (i = 1; i <= n; i++) { + if (dirs[i] == "") continue + split("mkdir gmkdir", progs, " ") + for (prog in progs) { + p = dirs[i] "/" progs[prog] + cmd = p " --version 2>&1" + ver = _cmd_output_oneline(cmd) + if (index(ver, "coreutils)") > 0 || index(ver, "BusyBox ") > 0 || index(ver, "fileutils) 4.1") > 0) { + result = p + break + } + } + if (result != "") break + } + if (result != "") + SUBST["MKDIR_P"] = result " -p" + else + SUBST["MKDIR_P"] = "mkdir -p" + return SUBST["MKDIR_P"] +} + +# --------------------------------------------------------------------------- +# String / path utilities +# --------------------------------------------------------------------------- + +function pyconf_fnmatch(pattern, string) { + # Simple glob match using case + # For exact match patterns, use == comparison + # For patterns with *, use ~ with converted regex + return _glob_match(pattern, string) +} + +function pyconf_fnmatch_any(string, patterns, n, i) { + n = patterns[0] + 0 + for (i = 1; i <= n; i++) + if (_glob_match(patterns[i], string)) + return 1 + return 0 +} + +function _glob_match(pattern, string, regex) { + # Convert shell glob to awk regex + regex = pattern + gsub(/\./, "\\.", regex) + gsub(/\*/, ".*", regex) + gsub(/\?/, ".", regex) + return (string ~ ("^" regex "$")) +} + +function pyconf_str_remove(s, pat, result) { + result = s + gsub(pat, "", result) + return result +} + +function pyconf_sed(str, pattern, replacement, result) { + result = str + gsub(pattern, replacement, result) + return result +} + +function pyconf_abspath(path, result) { + if (substr(path, 1, 1) == "/") + return path + result = _cmd_output_oneline("cd " _shell_quote(path) " && pwd") + return (result != "" ? result : path) +} + +function pyconf_basename(path, n, arr) { + n = split(path, arr, "/") + return arr[n] +} + +function pyconf_getcwd() { + return _cmd_output_oneline("pwd") +} + +function pyconf_readlink(path) { + return _cmd_output_oneline("readlink " _shell_quote(path)) +} + +function pyconf_relpath(path, base, n_path, n_base, p, b, i, common, result) { + # Pure-AWK relative path computation (no external dependencies). + # Default base to current working directory + if (base == "") base = _cmd_output_oneline("pwd") + # Normalize: strip trailing slashes + gsub(/\/+$/, "", path) + gsub(/\/+$/, "", base) + # Split into components + n_path = split(path, p, "/") + n_base = split(base, b, "/") + # Find common prefix length + common = 0 + for (i = 1; i <= (n_path < n_base ? n_path : n_base); i++) { + if (p[i] != b[i]) break + common = i + } + # Build result: "../" for each remaining base component, then path tail + result = "" + for (i = common + 1; i <= n_base; i++) + result = result (result != "" ? "/" : "") ".." + for (i = common + 1; i <= n_path; i++) + result = result (result != "" ? "/" : "") p[i] + if (result == "") result = "." + return result +} + +function pyconf_path_join(parts, n, i, result) { + n = parts[0] + 0 + if (n == 0) return "" + result = parts[1] + for (i = 2; i <= n; i++) { + if (parts[i] == "") continue + if (substr(parts[i], 1, 1) == "/") { + result = parts[i] + } else if (result == "" || result == ".") { + result = parts[i] + } else { + result = result "/" parts[i] + } + } + return result +} + +function pyconf_path_parent(path, n, arr, i, result) { + n = split(path, arr, "/") + if (n <= 1) return "." + result = arr[1] + for (i = 2; i < n; i++) + result = result "/" arr[i] + return result +} + +function pyconf_path_exists(path) { + return (_cmd_exit_code("test -e " _shell_quote(path)) == 0) +} + +function pyconf_path_is_dir(path) { + return (_cmd_exit_code("test -d " _shell_quote(path)) == 0) +} + +function pyconf_path_is_file(path) { + return (_cmd_exit_code("test -f " _shell_quote(path)) == 0) +} + +function pyconf_path_is_symlink(path) { + return (_cmd_exit_code("test -L " _shell_quote(path)) == 0) +} + +function pyconf_is_executable(path) { + return (_cmd_exit_code("test -x " _shell_quote(path)) == 0) +} + +function pyconf_rm_f(path) { + system("rm -f " _shell_quote(path)) +} + +function pyconf_rmdir(path) { + system("rmdir " _shell_quote(path) " 2>/dev/null") +} + +function pyconf_mkdir_p(path) { + system("mkdir -p " _shell_quote(path)) +} + +function pyconf_rename_file(src, dst) { + system("mv " _shell_quote(src) " " _shell_quote(dst)) +} + +function pyconf_unlink(path) { + system("rm -f " _shell_quote(path)) +} + +function pyconf_write_file(path, content) { + printf "%s", content > path + close(path) +} + +function pyconf_read_file(path, line, result) { + result = "" + while ((getline line < path) > 0) + result = result (result != "" ? "\n" : "") line + close(path) + return result +} + +function pyconf_read_file_lines(path) { + return pyconf_read_file(path) +} + +function pyconf_glob_files(pattern) { + return _cmd_output("ls -d " pattern " 2>/dev/null") +} + +function pyconf_cmd(args, cmd) { + cmd = _arr_join_quoted(args, " ") + return (_cmd_exit_code(cmd) == 0) +} + +function pyconf_cmd_output(args, cmd) { + cmd = _arr_join_quoted(args, " ") + return _cmd_output(cmd) +} + +function pyconf_run_cmd(cmd, rc) { + rc = system(_expand_cmd_vars(cmd)) + return rc +} + +function pyconf_shell(args, cmd) { + cmd = _arr_join(args, " ") + return _cmd_output(cmd) +} + +function pyconf_shell_export(cmd, varname, full_cmd, output, n, lines, i, eq, k) { + # Run cmd then echo varname=${varname}; parse output for varname=value + full_cmd = cmd "\necho " varname "=${" varname "}" + output = _cmd_output(full_cmd) + n = split(output, lines, "\n") + for (i = n; i >= 1; i--) { + eq = index(lines[i], "=") + if (eq > 0) { + k = substr(lines[i], 1, eq - 1) + if (k == varname) + return substr(lines[i], eq + 1) + } + } + return "" +} + +function pyconf_platform_machine() { + return _cmd_output_oneline("uname -m") +} + +function pyconf_platform_system() { + return _cmd_output_oneline("uname -s") +} + +function pyconf_use_system_extensions() { + pyconf_define("_ALL_SOURCE", 1, 0, "Enable extensions on AIX 3, Interix.") + pyconf_define("_DARWIN_C_SOURCE", 1, 0, "Enable extensions on Mac OS X.") + pyconf_define("_GNU_SOURCE", 1, 0, "Enable GNU extensions on systems that have them.") + pyconf_define("_HPUX_ALT_XOPEN_SOCKET_API", 1, 0, "Enable extensions on HP-UX.") + pyconf_define("_NETBSD_SOURCE", 1, 0, "Enable extensions on NetBSD.") + pyconf_define("_OPENBSD_SOURCE", 1, 0, "Enable extensions on OpenBSD.") + pyconf_define("_POSIX_PTHREAD_SEMANTICS", 1, 0, "Enable threading extensions on Solaris.") + pyconf_define("__STDC_WANT_IEC_60559_ATTRIBS_EXT__", 1, 0, "Enable IEC 60559 attribs extensions.") + pyconf_define("__STDC_WANT_IEC_60559_BFP_EXT__", 1, 0, "Enable IEC 60559 BFP extensions.") + pyconf_define("__STDC_WANT_IEC_60559_DFP_EXT__", 1, 0, "Enable IEC 60559 DFP extensions.") + pyconf_define("__STDC_WANT_IEC_60559_EXT__", 1, 0, "Enable IEC 60559 extensions.") + pyconf_define("__STDC_WANT_IEC_60559_FUNCS_EXT__", 1, 0, "Enable IEC 60559 funcs extensions.") + pyconf_define("__STDC_WANT_IEC_60559_TYPES_EXT__", 1, 0, "Enable IEC 60559 types extensions.") + pyconf_define("__STDC_WANT_LIB_EXT2__", 1, 0, "Enable ISO C 2001 extensions.") + pyconf_define("__STDC_WANT_MATH_SPEC_FUNCS__", 1, 0, "Enable extensions specified in the standard.") + pyconf_define("_TANDEM_SOURCE", 1, 0, "Enable extensions on HP NonStop.") + pyconf_define("__EXTENSIONS__", 1, 0, "Enable general extensions on Solaris.") +} + +# --------------------------------------------------------------------------- +# Environment save/restore +# --------------------------------------------------------------------------- + +function pyconf_save_env( k) { + _saved_env_depth++ + for (k in V) + _saved_env_stack[_saved_env_depth, k] = V[k] + # Store the set of keys so we can restore exactly + _saved_env_keys[_saved_env_depth] = "" + for (k in V) + _saved_env_keys[_saved_env_depth] = _saved_env_keys[_saved_env_depth] k "\036" +} + +function pyconf_restore_env( k, n, keys, i) { + if (_saved_env_depth < 1) return + for (k in V) + delete V[k] + n = split(_saved_env_keys[_saved_env_depth], keys, "\036") + for (i = 1; i <= n; i++) { + if (keys[i] != "") + V[keys[i]] = _saved_env_stack[_saved_env_depth, keys[i]] + } + # Clean up this level + for (i = 1; i <= n; i++) { + if (keys[i] != "") + delete _saved_env_stack[_saved_env_depth, keys[i]] + } + delete _saved_env_keys[_saved_env_depth] + _saved_env_depth-- +} + +# --------------------------------------------------------------------------- +# Option handling +# --------------------------------------------------------------------------- + +function _pyconf_normalize_opt(name, result) { + result = name + gsub(/-/, "_", result) + return result +} + +function pyconf_arg_enable(name, default_val, help_text, metavar, var, false_is, key) { + key = "enable_" _pyconf_normalize_opt(name) + _pyconf_opt_count++ + _pyconf_opt_names[_pyconf_opt_count] = key + OPT_KIND[key] = "enable" + OPT_DEFAULT[key] = default_val + OPT_HELP[key] = help_text + OPT_METAVAR[key] = metavar + OPT_VAR[key] = var + OPT_FALSE_IS[key] = false_is + if (!(key in OPT_GIVEN)) + OPT_GIVEN[key] = 0 + if (!(key in OPT_VAL)) + OPT_VAL[key] = default_val +} + +function pyconf_arg_with(name, default_val, help_text, metavar, var, false_is, key) { + key = "with_" _pyconf_normalize_opt(name) + _pyconf_opt_count++ + _pyconf_opt_names[_pyconf_opt_count] = key + OPT_KIND[key] = "with" + OPT_DEFAULT[key] = default_val + OPT_HELP[key] = help_text + OPT_METAVAR[key] = metavar + OPT_VAR[key] = var + OPT_FALSE_IS[key] = false_is + if (!(key in OPT_GIVEN)) + OPT_GIVEN[key] = 0 + if (!(key in OPT_VAL)) + OPT_VAL[key] = default_val +} + +function pyconf_env_var(name, help_text) { + # Record environment variable documentation +} + +function pyconf_option_value(key) { + if (key in OPT_VAL) + return OPT_VAL[key] + if (key in OPT_DEFAULT) + return OPT_DEFAULT[key] + return "" +} + +function pyconf_option_given(key) { + return (key in OPT_GIVEN && OPT_GIVEN[key]) +} + +function pyconf_option_is_yes(key, val) { + val = pyconf_option_value(key) + return (val == "yes") +} + +function pyconf_option_is_no(key, val) { + val = pyconf_option_value(key) + return (val == "no") +} + +function pyconf_option_value_or(key, default_val, val) { + val = pyconf_option_value(key) + if (val == "") return default_val + return val +} + +function pyconf_option_process_bool(key, val, false_is) { + val = pyconf_option_value(key) + false_is = OPT_FALSE_IS[key] + if (val == "yes") return "yes" + if (val == "no") return (false_is != "" ? false_is : "no") + return val +} + +function pyconf_option_process_value(key) { + return pyconf_option_value(key) +} + +# --------------------------------------------------------------------------- +# pkg-config +# --------------------------------------------------------------------------- + +function pyconf_pkg_check_modules(pkg, spec, cmd, rc) { + cmd = "pkg-config --exists " _shell_quote(spec) " 2>/dev/null" + rc = (system(cmd) == 0) + if (rc) { + V[pkg "_CFLAGS"] = _cmd_output_oneline("pkg-config --cflags " _shell_quote(spec)) + V[pkg "_LIBS"] = _cmd_output_oneline("pkg-config --libs " _shell_quote(spec)) + } + return rc +} + +function pyconf_pkg_config(args) { + return _cmd_output_oneline("pkg-config " args " 2>/dev/null") +} + +function pyconf_pkg_config_check(spec) { + return (_cmd_exit_code("pkg-config --exists " _shell_quote(spec) " 2>/dev/null") == 0) +} + +# --------------------------------------------------------------------------- +# stdlib module handling +# --------------------------------------------------------------------------- + +function pyconf_stdlib_module(name, supported, enabled, cflags, ldflags, has_cflags, has_ldflags, key, state, uname, prev_na) { + uname = toupper(name) + gsub(/-/, "_", uname) + key = "MODULE_" uname + # Check if this module was previously marked N/A via stdlib_module_set_na + prev_na = (_stdlib_mod_na[uname] + 0) + if (prev_na) { + supported = "no" + } + if (prev_na) + state = "n/a" + else if (supported == "yes" && enabled == "yes") + state = "yes" + else if (supported != "yes" && enabled == "yes") + state = "missing" + else if (supported != "yes") + state = "n/a" + else if (enabled != "yes") + state = "disabled" + else + state = "n/a" + SUBST[key "_STATE"] = state + SUBST[key "_TRUE"] = (state == "yes") ? "" : "#" + if (has_cflags == "yes") + SUBST[key "_CFLAGS"] = cflags + if (has_ldflags == "yes") + SUBST[key "_LDFLAGS"] = ldflags + _stdlib_mod_count++ + _stdlib_mod_names[_stdlib_mod_count] = uname + _stdlib_mod_has_cflags[uname] = has_cflags + _stdlib_mod_has_ldflags[uname] = has_ldflags +} + +function pyconf_stdlib_module_simple(name, cflags, ldflags, has_cflags, has_ldflags) { + pyconf_stdlib_module(name, "yes", "yes", cflags, ldflags, has_cflags, has_ldflags) +} + +function pyconf_stdlib_module_set_na(names, n, i, key, uname) { + n = names[0] + 0 + for (i = 1; i <= n; i++) { + uname = toupper(names[i]) + key = "MODULE_" uname + SUBST[key "_STATE"] = "n/a" + SUBST[key "_TRUE"] = "#" + _stdlib_mod_na[uname] = 1 + } +} + +# --------------------------------------------------------------------------- +# Argument parsing +# --------------------------------------------------------------------------- + +function pyconf_parse_args( i, arg, key, val, opt_key, eq_pos, config_args) { + config_args = "" + for (i = 1; i < ARGC; i++) { + arg = ARGV[i] + if (arg == "--") break + + if (substr(arg, 1, 2) == "--") { + # Record in CONFIG_ARGS (skip --srcdir which is internal) + if (substr(arg, 3, 6) != "srcdir") + config_args = config_args (config_args != "" ? " " : "") _shell_quote(arg) + + arg = substr(arg, 3) + eq_pos = index(arg, "=") + if (eq_pos > 0) { + key = substr(arg, 1, eq_pos - 1) + val = substr(arg, eq_pos + 1) + } else { + key = arg + val = "yes" + } + + # --enable-X / --disable-X + if (substr(key, 1, 7) == "enable-") { + opt_key = "enable_" _pyconf_normalize_opt(substr(key, 8)) + OPT_VAL[opt_key] = val + OPT_GIVEN[opt_key] = 1 + } else if (substr(key, 1, 8) == "disable-") { + opt_key = "enable_" _pyconf_normalize_opt(substr(key, 9)) + OPT_VAL[opt_key] = "no" + OPT_GIVEN[opt_key] = 1 + # --with-X / --without-X + } else if (substr(key, 1, 5) == "with-") { + opt_key = "with_" _pyconf_normalize_opt(substr(key, 6)) + OPT_VAL[opt_key] = val + OPT_GIVEN[opt_key] = 1 + } else if (substr(key, 1, 8) == "without-") { + opt_key = "with_" _pyconf_normalize_opt(substr(key, 9)) + OPT_VAL[opt_key] = "no" + OPT_GIVEN[opt_key] = 1 + # --prefix, --exec-prefix, --bindir, etc. + } else if (key == "srcdir") { + _pyconf_srcdir = val + } else if (key == "help" || key == "h") { + _pyconf_help_requested = 1 + } else { + # Store as a dir arg or general option + V[_pyconf_normalize_opt(key)] = val + } + } else { + # Positional args (e.g. VAR=value) — record in CONFIG_ARGS + config_args = config_args (config_args != "" ? " " : "") _shell_quote(arg) + } + # Clear ARGV so awk doesn't try to read as files + ARGV[i] = "" + } + _pyconf_config_args = config_args +} + +function pyconf_check_help() { + if (_pyconf_help_requested) { + pyconf_print_help() + return 1 + } + return 0 +} + +function pyconf_print_help( i, key, kind, name, help_text, metavar) { + print "Usage: configure [options]" + print "" + print "Options:" + print " --help display this help and exit" + print "" + + for (i = 1; i <= _pyconf_opt_count; i++) { + key = _pyconf_opt_names[i] + kind = OPT_KIND[key] + help_text = OPT_HELP[key] + metavar = OPT_METAVAR[key] + + # Extract the name from key (remove enable_/with_ prefix) + if (kind == "enable") + name = substr(key, 8) # skip "enable_" + else + name = substr(key, 6) # skip "with_" + gsub(/_/, "-", name) + + if (kind == "enable") { + if (metavar != "") + printf " --enable-%-20s %s\n", name "=" metavar, help_text + else + printf " --enable-%-20s %s\n", name, help_text + } else { + if (metavar != "") + printf " --with-%-22s %s\n", name "=" metavar, help_text + else + printf " --with-%-22s %s\n", name, help_text + } + } +} + +function pyconf_get_dir_arg(name, default, key) { + key = _pyconf_normalize_opt(name) + if ((key in V) && V[key] != "") + return V[key] + return default +} + +# --------------------------------------------------------------------------- +# Config file output +# --------------------------------------------------------------------------- + +function pyconf_config_files(files, n, i) { + n = files[0] + 0 + for (i = 1; i <= n; i++) { + if (files[i] != "") { + _pyconf_config_file_count++ + CONFIG_FILES[_pyconf_config_file_count] = files[i] + } + } +} + +function pyconf_config_files_x(files, n, i) { + n = files[0] + 0 + for (i = 1; i <= n; i++) { + if (files[i] != "") { + _pyconf_config_file_count++ + CONFIG_FILES[_pyconf_config_file_count] = files[i] + _pyconf_config_file_x_count++ + CONFIG_FILES_X[_pyconf_config_file_x_count] = files[i] + } + } +} + +function pyconf_output( i) { + _pyconf_build_module_block() + _pyconf_resolve_exports() + _pyconf_write_pyconfig_h() + _pyconf_process_config_files() + pyconf_cleanup() +} + +function _pyconf_build_module_block( i, key, uname, state, block, sep) { + block = "" + sep = "" + for (i = 1; i <= _stdlib_mod_count; i++) { + uname = _stdlib_mod_names[i] + key = "MODULE_" uname + state = SUBST[key "_STATE"] + block = block sep key "_STATE=" state + sep = "\n" + if (_stdlib_mod_has_cflags[uname] == "yes" && state != "disabled" && state != "n/a" && state != "missing") { + block = block sep key "_CFLAGS=" SUBST[key "_CFLAGS"] + } + if (_stdlib_mod_has_ldflags[uname] == "yes" && state != "disabled" && state != "n/a" && state != "missing") { + block = block sep key "_LDFLAGS=" SUBST[key "_LDFLAGS"] + } + } + SUBST["MODULE_BLOCK"] = block +} + +function _pyconf_resolve_exports( k) { + # Finalize CONFIG_ARGS from parsed command-line arguments + if (_pyconf_config_args != "") + V["CONFIG_ARGS"] = _pyconf_config_args + for (k in V) { + if (!(k in SUBST)) + SUBST[k] = V[k] + } +} + +function _pyconf_write_pyconfig_h( f, inf, line, name, val, indent, rest, outf) { + outf = "pyconfig.h" + inf = _pyconf_srcdir "/pyconfig.h.in" + + # Try template-based approach (matches autoconf config.status behaviour) + if ((getline line < inf) > 0) { + # First line was read successfully — process the template + printf "/* pyconfig.h. Generated from pyconfig.h.in by configure. */\n" > outf + do { + if (match(line, /^[ \t]*#[ \t]*undef[ \t]+[A-Za-z_][A-Za-z_0-9]*[ \t]*$/)) { + # Extract indent: everything before the '#' + indent = "" + rest = line + if (match(line, /^[ \t]+/)) + indent = substr(line, 1, RLENGTH) + # Extract the define name: last word on the line + name = line + sub(/^[ \t]*#[ \t]*undef[ \t]+/, "", name) + sub(/[ \t]*$/, "", name) + if (name in DEFINES) { + val = DEFINES[name] + if (DEFINE_QUOTED[name] && val != "" && val !~ /^-?[0-9]+$/) + rest = "#define " name " \"" val "\"" + else + rest = "#define " name " " val + if (indent != "") + printf "%s# %s\n", indent, substr(rest, 2) >> outf + else + printf "%s\n", rest >> outf + } else { + if (indent != "") + printf "%s/* #undef %s */\n", indent, name >> outf + else + printf "/* #undef %s */\n", name >> outf + } + } else { + print line >> outf + } + } while ((getline line < inf) > 0) + close(inf) + close(outf) + return + } + close(inf) + + # Fallback: write from scratch (no template available) + printf "/* Generated by configure (awk) */\n" > outf + printf "#ifndef Py_PYCONFIG_H\n" >> outf + printf "#define Py_PYCONFIG_H\n\n" >> outf + + for (f = 1; f <= _pyconf_defines_order_n; f++) { + name = _pyconf_defines_order[f] + if (name in DEFINES) { + val = DEFINES[name] + if (name in DEFINE_DESC && DEFINE_DESC[name] != "") + printf "/* %s */\n", DEFINE_DESC[name] >> outf + if (DEFINE_QUOTED[name] && val != "" && val !~ /^-?[0-9]+$/) + printf "#define %s \"%s\"\n", name, val >> outf + else + printf "#define %s %s\n", name, val >> outf + printf "\n" >> outf + } + } + + printf "#endif /* Py_PYCONFIG_H */\n" >> outf + close(outf) +} + +function _pyconf_process_config_files( i, inf, outf, outdir, saved_abs_srcdir, saved_abs_builddir, slash_pos) { + for (i = 1; i <= _pyconf_config_file_count; i++) { + outf = CONFIG_FILES[i] + inf = outf ".in" + if (inf == "") + continue + # Compute per-file abs_srcdir/abs_builddir like autoconf does: + # ac_abs_srcdir = abs_top_srcdir + dir-suffix-of-outfile + outdir = "" + slash_pos = _last_index(outf, "/") + if (slash_pos > 0) + outdir = substr(outf, 1, slash_pos - 1) + saved_abs_srcdir = SUBST["abs_srcdir"] + saved_abs_builddir = SUBST["abs_builddir"] + if (outdir != "") { + SUBST["abs_srcdir"] = saved_abs_srcdir "/" outdir + SUBST["abs_builddir"] = saved_abs_builddir "/" outdir + system("mkdir -p " _shell_quote(outdir)) + } + _pyconf_subst_file(inf, outf) + SUBST["abs_srcdir"] = saved_abs_srcdir + SUBST["abs_builddir"] = saved_abs_builddir + } + for (i = 1; i <= _pyconf_config_file_x_count; i++) { + system("chmod +x " _shell_quote(CONFIG_FILES_X[i])) + } +} + +function _last_index(s, ch, i, last) { + last = 0 + for (i = 1; i <= length(s); i++) + if (substr(s, i, 1) == ch) + last = i + return last +} + +function _pyconf_subst_file(inf, outf, line, k, pat, val, pos, before, after, skip) { + while ((getline line < inf) > 0) { + skip = 0 + # Replace @VAR@ patterns with SUBST values + for (k in SUBST) { + pat = "@" k "@" + while (index(line, pat) > 0) { + val = SUBST[k] + pos = index(line, pat) + before = substr(line, 1, pos - 1) + after = substr(line, pos + length(pat)) + # If the value contains newlines, emit directly and skip normal print + if (index(val, "\n") > 0) { + printf "%s%s%s\n", before, val, after > outf + skip = 1 + break + } else { + line = before val after + } + } + if (skip) break + } + if (!skip) { + # Neutralise VPATH when srcdir == "." (in-tree build): + # blank out lines like "VPATH= ." or "VPATH= $(srcdir)" + if (SUBST["srcdir"] == "." && _is_vpath_srcdir_line(line)) + print "" > outf + else + print line > outf + } + } + close(inf) + close(outf) +} + +function _is_vpath_srcdir_line(line, val) { + # Match lines like: VPATH= + # where value is ".", "$(srcdir)", or "${srcdir}" + if (!match(line, /^[ \t]*VPATH[ \t]*=[ \t]*/)) + return 0 + val = substr(line, RSTART + RLENGTH) + # Strip leading/trailing whitespace + gsub(/^[ \t]+|[ \t]+$/, "", val) + if (val == "." || val == "$(srcdir)" || val == "${srcdir}") + return 1 + return 0 +} + +# --------------------------------------------------------------------------- +# Run helpers +# --------------------------------------------------------------------------- + +function pyconf_run(cmd) { + system(_expand_cmd_vars(cmd)) +} + +function pyconf_run_capture(cmd, ecmd, outf, rc) { + ecmd = _expand_cmd_vars(cmd) + outf = _pyconf_tmpdir "/stdout_capture" + rc = system(ecmd " > " outf " 2>/dev/null") + _pyconf_run_cmd_stdout = _cmd_output("cat " outf) + _pyconf_run_cmd_stderr = "" + system("rm -f " outf) + return rc +} + +function pyconf_run_capture_input(cmd, input_data, tmpf, outf, ecmd, rc) { + ecmd = _expand_cmd_vars(cmd) + tmpf = _pyconf_tmpdir "/stdin_input" + outf = _pyconf_tmpdir "/stdout_capture" + printf "%s", input_data > tmpf + close(tmpf) + rc = system(ecmd " < " tmpf " > " outf " 2>/dev/null") + _pyconf_run_cmd_stdout = _cmd_output("cat " outf) + _pyconf_run_cmd_stderr = "" + system("rm -f " tmpf " " outf) + return rc +} + +function pyconf_format_yn(val) { + if (val == "yes" || val == 1 || val == "true") + return "yes" + return "no" +} + +function pyconf_run_check_with_cc_flag(desc, flag, source, saved, rc) { + saved = V["CFLAGS"] + V["CFLAGS"] = V["CFLAGS"] " " flag + rc = pyconf_run_check(desc, source, "", "") + V["CFLAGS"] = saved + return rc +} + +function pyconf_macro(name, result) { + # Placeholder for macro expansion + return "" +} + +function pyconf_cmd_status(args, result_arr, cmd) { + cmd = _arr_join_quoted(args, " ") + result_arr[0] = system(cmd " > " _pyconf_tmpdir "/cmd_out 2>&1") + result_arr[1] = _cmd_output("cat " _pyconf_tmpdir "/cmd_out") + system("rm -f " _pyconf_tmpdir "/cmd_out") +} + +function pyconf_canonical_host( result, guess, csub, parts, n) { + guess = _pyconf_srcdir "/config.guess" + csub = _pyconf_srcdir "/config.sub" + result = _cmd_output_oneline(guess " 2>/dev/null") + if (result != "") { + # Canonicalize through config.sub if available + result = _cmd_output_oneline(csub " " result " 2>/dev/null") + } + if (result == "") { + # Fallback: uname-based triplet + result = _cmd_output_oneline("uname -m") "-pc-" tolower(_cmd_output_oneline("uname -s")) "-gnu" + } + pyconf_build = result + pyconf_host = result + n = split(result, parts, "-") + pyconf_host_cpu = parts[1] + pyconf_cross_compiling = "no" +} + +function pyconf_find_compiler(user_cc, user_cpp, cc, cpp, ver) { + # Find C compiler — match AC_PROG_CC search order: gcc, cc + if (user_cc != "") { + cc = user_cc + } else if (ENVIRON["CC"] != "") { + cc = ENVIRON["CC"] + } else { + # Try gcc first, then cc (short names, not full paths) + if (_cmd_exit_code("gcc -c -o /dev/null /dev/null 2>/dev/null") == 0) + cc = "gcc" + else if (_cmd_exit_code("cc -c -o /dev/null /dev/null 2>/dev/null") == 0) + cc = "cc" + else + cc = "cc" + } + pyconf_CC = cc + # Find C preprocessor + if (user_cpp != "") { + cpp = user_cpp + } else if (ENVIRON["CPP"] != "") { + cpp = ENVIRON["CPP"] + } else { + cpp = cc " -E" + } + pyconf_CPP = cpp + # Identify compiler via --version output + ver = _cmd_output(cc " --version 2>/dev/null") + if (tolower(ver) ~ /clang/) { + pyconf_ac_cv_cc_name = "clang" + pyconf_ac_cv_gcc_compat = "yes" + pyconf_GCC = "yes" + } else if (ver ~ /GCC/ || ver ~ /Free Software Foundation/) { + pyconf_ac_cv_cc_name = "gcc" + pyconf_ac_cv_gcc_compat = "yes" + pyconf_GCC = "yes" + } else { + pyconf_ac_cv_cc_name = "unknown" + pyconf_ac_cv_gcc_compat = "no" + pyconf_GCC = "no" + } + pyconf_ac_cv_prog_cc_g = "yes" +} + +function pyconf_check_emscripten_port(port, name) { + # Stub for emscripten port checks + return 0 +} + +function pyconf_ax_c_float_words_bigendian(on_big, on_little, on_unknown, src, result) { + src = "#include \nint main(void) {\n double d = 1.0;\n unsigned char *p = (unsigned char *)&d;\n if (p[0] == 0x3f) { printf(\"big\\n\"); }\n else if (p[7] == 0x3f) { printf(\"little\\n\"); }\n else { printf(\"unknown\\n\"); }\n return 0;\n}\n" + result = _pyconf_run_test(_pyconf_confdefs() "\n" src, "") + # Store result for caller to dispatch callbacks + _pyconf_retval = result +} + +function pyconf_check_c_bigendian( source, result) { + source = _pyconf_confdefs() "\n#include \nint main(void) {\n union { long l; char c[sizeof(long)]; } u;\n u.l = 1;\n return u.c[0] == 1 ? 0 : 1;\n}" + result = _pyconf_run_test(source, "") + return result +} + + + +# === end pyconf.awk runtime === + + +function _str_strip(s, tmp) { + tmp = s + gsub(/^[ \t\n]+/, "", tmp) + gsub(/[ \t\n]+$/, "", tmp) + return tmp +} + +function _str_rstrip(s, tmp) { + tmp = s + gsub(/[ \t\n]+$/, "", tmp) + return tmp +} + +function _regex_escape(s, tmp) { + tmp = s + gsub(/[\\.*+?[\](){}|^$]/, "\\\\&", tmp) + return tmp +} + +function _gsub_escape_replacement(s, tmp) { + tmp = s + gsub(/\\/, "\\\\", tmp) + gsub(/&/, "\\&", tmp) + return tmp +} + +function _str_replace(s, old, new, tmp, escaped, safe_new) { + tmp = s + escaped = _regex_escape(old) + safe_new = _gsub_escape_replacement(new) + gsub(escaped, safe_new, tmp) + return tmp +} + +function _str_removeprefix(s, prefix, plen) { + plen = length(prefix) + if (substr(s, 1, plen) == prefix) + return substr(s, plen + 1) + return s +} + +function _str_removesuffix(s, suffix, slen, total) { + slen = length(suffix) + total = length(s) + if (total >= slen && substr(s, total - slen + 1) == suffix) + return substr(s, 1, total - slen) + return s +} + +function _str_startswith(s, prefix) { + return (substr(s, 1, length(prefix)) == prefix) +} + +function _str_endswith(s, suffix, slen, total) { + slen = length(suffix) + total = length(s) + return (total >= slen && substr(s, total - slen + 1) == suffix) +} + +function _str_join(sep, s, n, arr, i, result) { + n = split(s, arr, "\n") + result = "" + for (i = 1; i <= n; i++) { + if (i > 1) result = result sep + result = result arr[i] + } + return result +} + +function _split_index(s, sep, idx, n, arr) { + n = split(s, arr, sep) + if (idx >= 1 && idx <= n) + return arr[idx] + return "" +} + +function _any(arr, i) { + for (i = 1; i <= arr[0]; i++) + if (arr[i] == "yes") return 1 + return 0 +} + +function _all(arr, i) { + for (i = 1; i <= arr[0]; i++) + if (arr[i] == "no") return 0 + return 1 +} + + +# === Option declarations === +function _pyconf_register_options() { + pyconf_arg_enable("gil", "", "enable support for running without the GIL (default is no)", "", "disable_gil", "yes") + pyconf_arg_with("pydebug", "", "build with Py_DEBUG defined (default is no)", "", "Py_DEBUG", "no") + pyconf_arg_with("trace_refs", "no", "enable tracing references for debugging purpose (default is no)", "", "with_trace_refs", "") + pyconf_arg_enable("pystats", "no", "enable internal statistics gathering (default is no)", "", "enable_pystats", "") + pyconf_arg_with("assertions", "", "build with C assertions enabled (default is no)", "", "", "no") + pyconf_arg_enable("optimizations", "", "enable expensive, stable optimizations (PGO, etc.) (default is no)", "", "Py_OPT", "no") + pyconf_arg_enable("experimental_jit", "no", "build the experimental just-in-time compiler (default is no)", "no|yes|yes-off|interpreter", "", "") + pyconf_arg_with("address_sanitizer", "no", "enable AddressSanitizer memory error detector, 'asan' (default is no)", "", "", "no") + pyconf_arg_with("memory_sanitizer", "no", "enable MemorySanitizer allocation error detector, 'msan' (default is no)", "", "", "no") + pyconf_arg_with("undefined_behavior_sanitizer", "no", "enable UndefinedBehaviorSanitizer undefined behaviour detector, 'ubsan' (default is no)", "", "", "no") + pyconf_arg_with("thread_sanitizer", "no", "enable ThreadSanitizer data race detector, 'tsan' (default is no)", "", "", "no") + pyconf_arg_with("tail_call_interp", "", "enable tail-calling interpreter in evaluation loop and rest of CPython", "", "", "") + pyconf_arg_with("remote_debug", "", "enable remote debugging support (default is yes)", "", "", "") + pyconf_arg_with("ensurepip", "", "\"install\" or \"upgrade\" using bundled pip (default is upgrade)", "install|upgrade|no", "", "") + pyconf_arg_with("mimalloc", "", "build with mimalloc memory allocator (default yes if stdatomic.h available)", "", "", "") + pyconf_arg_with("pymalloc", "", "enable specialized mallocs (default is yes)", "", "", "") + pyconf_arg_with("pymalloc_hugepages", "no", "enable huge page support for pymalloc arenas (default is no)", "", "", "") + pyconf_arg_with("valgrind", "no", "enable Valgrind support (default is no)", "", "", "") + pyconf_arg_with("dtrace", "no", "enable DTrace support (default is no)", "", "", "") + pyconf_arg_with("doc_strings", "yes", "enable documentation strings (default is yes)", "", "", "") + pyconf_arg_with("strict_overflow", "", "if 'yes', add -fstrict-overflow to CFLAGS, else add -fno-strict-overflow (default is no)", "", "", "") + pyconf_arg_enable("safety", "", "enable usage of the security compiler options with no performance overhead", "", "", "no") + pyconf_arg_enable("slower_safety", "", "enable usage of the security compiler options with performance overhead", "", "", "no") + pyconf_arg_with("computed_gotos", "", "enable computed gotos in evaluation loop (enabled by default on supported compilers)", "", "", "") + pyconf_arg_with("system_expat", "no", "build pyexpat module using an installed expat library (default is no)", "", "", "") + pyconf_arg_enable("loadable_sqlite_extensions", "", "support loadable extensions in the sqlite3 module (default is no)", "", "", "") + pyconf_arg_with("readline", "", "use libedit for backend or disable readline module", "", "", "") + pyconf_arg_with("build_python", "", "", "", "", "") + pyconf_arg_with("pkg_config", "", "use pkg-config to detect build options (default is check)", "yes|no|check", "", "") + pyconf_arg_with("missing_stdlib_config", "", "File with custom module error messages for missing stdlib modules", "FILE", "", "") + pyconf_arg_enable("universalsdk", "", "create a universal binary build; SDKDIR = macOS SDK path (default: no)", "SDKDIR", "", "") + pyconf_arg_with("universal_archs", "", "kind of macOS universal binary to create; only valid with --enable-universalsdk; choices: \"universal2\", \"intel-64\", \"intel-32\", \"intel\", \"32-bit\", \"64-bit\", \"3-way\", \"all\"", "ARCH", "", "") + pyconf_arg_with("framework_name", "", "name for the Python framework on macOS (only with --enable-framework, default: Python)", "FRAMEWORK", "", "") + pyconf_arg_enable("framework", "", "create a Python.framework rather than a traditional Unix install (default: no)", "INSTALLDIR", "", "") + pyconf_arg_with("app_store_compliance", "", "enable patches required for app store compliance; optional PATCH-FILE for custom patch", "PATCH-FILE", "", "") + pyconf_arg_with("dsymutil", "", "link debug information into final executable with dsymutil in macOS (default is no)", "", "", "no") + pyconf_arg_with("libm", "", "override libm math library to STRING (default is system-dependent)", "", "", "") + pyconf_arg_with("libc", "", "override libc C library to STRING (default is system-dependent)", "", "", "") + pyconf_arg_enable("big_digits", "", "use big digits (30 or 15 bits) for Python longs (default is 30)", "", "", "") + pyconf_arg_with("system_libmpdec", "yes", "build _decimal using installed mpdecimal library (default is yes)", "", "with_system_libmpdec", "") + pyconf_arg_with("decimal_contextvar", "yes", "build _decimal using coroutine-local rather than thread-local context (default is yes)", "", "", "") + pyconf_arg_enable("test_modules", "", "don't build nor install test modules", "", "", "") + pyconf_arg_with("libs", "", "link against additional libs (default is no)", "'lib1 ...'", "", "") + pyconf_arg_enable("ipv6", "", "enable ipv6 (with ipv4) support (default is yes if supported)", "", "", "") + pyconf_arg_with("lto", "", "enable Link-Time-Optimization in any build (default is no)", "full|thin|no|yes", "", "") + pyconf_arg_enable("bolt", "", "enable usage of the llvm-bolt post-link optimizer (default is no)", "", "", "no") + pyconf_arg_with("platlibdir", "", "Python library directory name (default is \"lib\")", "", "", "") + pyconf_arg_with("wheel_pkg_dir", "", "Directory of wheel packages used by ensurepip (default: none)", "", "", "") + pyconf_arg_with("c_locale_coercion", "yes", "enable C locale coercion to a UTF-8 based locale (default is yes)", "", "", "") + pyconf_arg_with("openssl", "", "root of the OpenSSL directory", "DIR", "", "") + pyconf_arg_with("openssl_rpath", "", "Set runtime library directory (rpath) for OpenSSL libraries, no (default): don't set rpath, auto: auto-detect from --with-openssl and pkg-config, DIR: set an explicit rpath", "DIR|auto|no", "", "") + pyconf_arg_with("ssl_default_suites", "", "override default cipher suites string, python: use Python's preferred selection (default), openssl: leave OpenSSL's defaults untouched, STRING: use a custom string", "python|openssl|STRING", "", "") + pyconf_arg_with("builtin_hashlib_hashes", "", "builtin hash modules, md5, sha1, sha2, sha3 (with shake), blake2", "md5,sha1,sha2,sha3,blake2", "", "") + pyconf_arg_with("hash_algorithm", "", "select hash algorithm for use in Python/pyhash.c (default is SipHash13)", "fnv|siphash13|siphash24", "", "") + pyconf_arg_with("dbmliborder", "", "override order to check db backends for dbm (default is gdbm:ndbm:bdb)", "", "", "") + pyconf_arg_with("tzpath", "", "Select the default time zone search path for zoneinfo.TZPATH", "", "", "") + pyconf_arg_with("suffix", "", "set executable suffix (default empty; 'yes' means '.exe')", "SUFFIX", "", "") + pyconf_arg_enable("shared", "", "enable building a shared Python library (default is no)", "", "", "") + pyconf_arg_with("static_libpython", "", "do not build libpythonMAJOR.MINOR.a and do not install python.o (default is yes)", "", "", "") + pyconf_arg_enable("profiling", "", "enable C-level code profiling with gprof (default is no)", "", "", "") + pyconf_arg_enable("wasm_dynamic_linking", "", "Enable dynamic linking support for WebAssembly (default is no); WASI requires an external dynamic loader to handle imports", "", "", "") + pyconf_arg_enable("wasm_pthreads", "", "Enable pthread emulation for WebAssembly (default is no)", "", "", "") +} + +# === Module-level constants === +function _pyconf_init_constants() { + PYTHON_VERSION = "3.15" + _PTHREAD_TEST_SRC = "\n #include \n #include \n void* routine(void* p){return NULL;}\n int main(void){\n pthread_t p;\n if(pthread_create(&p,NULL,routine,NULL)!=0) return 1;\n (void)pthread_detach(p);\n return 0;\n }\n " +} + +# === Configuration functions === +# --- conf_buildopts --- +function u_setup_disable_gil( _opt_result) { + _opt_result = pyconf_option_process_bool("enable_gil") + V["disable_gil"] = _opt_result + if (((_opt_result != "") && (_opt_result != "no"))) { + pyconf_define("Py_GIL_DISABLED", 1, 0, "Define if you want to disable the GIL") + V["ABIFLAGS"] = V["ABIFLAGS"] "t" + V["ABI_THREAD"] = "t" + v_export("ABI_THREAD") + } +} + +function u_setup_pydebug( _opt_result) { + _opt_result = pyconf_option_process_bool("with_pydebug") + V["Py_DEBUG"] = _opt_result + if (((_opt_result != "") && (_opt_result != "no"))) { + pyconf_define("Py_DEBUG", 1, 0, "Define if you want to build an interpreter with many run-time checks.") + V["ABIFLAGS"] = V["ABIFLAGS"] "d" + } +} + +function u_setup_trace_refs( _opt_result) { + _opt_result = pyconf_option_process_value("with_trace_refs") + V["with_trace_refs"] = _opt_result + if (pyconf_option_is_yes("with_trace_refs")) { + pyconf_define("Py_TRACE_REFS", 1, 0, "Define if you want to enable tracing references for debugging purpose") + } + if ((((V["disable_gil"] != "") && (V["disable_gil"] != "no")) && pyconf_option_is_yes("with_trace_refs"))) { + pyconf_error("--disable-gil cannot be used with --with-trace-refs") + } +} + +function u_setup_pystats( _opt_result) { + _opt_result = pyconf_option_process_value("enable_pystats") + V["enable_pystats"] = _opt_result + if (pyconf_option_is_yes("enable_pystats")) { + pyconf_define("Py_STATS", 1, 0, "Define if you want to enable internal statistics gathering.") + } +} + +function u_setup_assertions( _opt_result, assertions_bool) { + _opt_result = pyconf_option_process_bool("with_assertions") + assertions_bool = _opt_result + V["assertions"] = (((assertions_bool != "") && (assertions_bool != "no")) ? "true" : "false") + if (((!((assertions_bool != "") && (assertions_bool != "no"))) && (V["Py_DEBUG"] == "yes"))) { + V["assertions"] = "true" + pyconf_checking("for --with-assertions") + pyconf_result("implied by --with-pydebug") + } +} + +function u_setup_optimizations( DEF_MAKE_ALL_RULE, DEF_MAKE_RULE, _opt_result) { + v_export("DEF_MAKE_ALL_RULE") + v_export("DEF_MAKE_RULE") + _opt_result = pyconf_option_process_bool("enable_optimizations") + V["Py_OPT"] = _opt_result + V["REQUIRE_PGO"] = "no" + DEF_MAKE_ALL_RULE = "" + DEF_MAKE_RULE = "" + if ((V["Py_OPT"] == "yes")) { + if ((index(V["CFLAGS"], "-O0") > 0)) { + pyconf_warn("CFLAGS contains -O0 which may conflict with --enable-optimizations. Consider removing -O0 from CFLAGS for optimal performance.") + } + DEF_MAKE_ALL_RULE = "profile-opt" + V["REQUIRE_PGO"] = "yes" + DEF_MAKE_RULE = "build_all" + if (((V["ac_cv_gcc_compat"] != "") && (V["ac_cv_gcc_compat"] != "no"))) { + delete _va1 + _va1[1] = "-Werror" + _va1[0] = 1 + if (pyconf_check_compile_flag("-fno-semantic-interposition", _va1)) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -fno-semantic-interposition" + V["LDFLAGS_NODIST"] = V["LDFLAGS_NODIST"] " -fno-semantic-interposition" + } + } + } else if ((V["ac_sys_system"] == "Emscripten")) { + DEF_MAKE_ALL_RULE = "build_emscripten" + DEF_MAKE_RULE = "all" + } else if ((V["ac_sys_system"] == "WASI")) { + DEF_MAKE_ALL_RULE = "build_wasm" + DEF_MAKE_RULE = "all" + } else { + DEF_MAKE_ALL_RULE = "build_all" + DEF_MAKE_RULE = "all" + } + V["DEF_MAKE_ALL_RULE"] = DEF_MAKE_ALL_RULE + V["DEF_MAKE_RULE"] = DEF_MAKE_RULE + v_export("REQUIRE_PGO") +} + +function u_setup_experimental_jit( REGEN_JIT_COMMAND, jit, jit_flags, tier2_flags) { + pyconf_checking("for --enable-experimental-jit") + jit = pyconf_option_value("enable_experimental_jit") + if ((((jit == "") || (jit == "no")) || (jit == "no"))) { + jit_flags = "" + tier2_flags = "" + } else if ((jit == "yes")) { + jit_flags = "-D_Py_JIT" + tier2_flags = "-D_Py_TIER2=1" + } else if ((jit == "yes-off")) { + jit_flags = "-D_Py_JIT" + tier2_flags = "-D_Py_TIER2=3" + } else if ((jit == "interpreter")) { + jit_flags = "" + tier2_flags = "-D_Py_TIER2=4" + } else if ((jit == "interpreter-off")) { + jit_flags = "" + tier2_flags = "-D_Py_TIER2=6" + } else { + pyconf_error("invalid argument: --enable-experimental-jit=" jit "; expected no|yes|yes-off|interpreter") + } + if (((tier2_flags != "") && (tier2_flags != "no"))) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " " tier2_flags + } + if (((jit_flags != "") && (jit_flags != "no"))) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " " jit_flags + REGEN_JIT_COMMAND = "$(PYTHON_FOR_REGEN) $(srcdir)/Tools/jit/build.py " ((V["ARCH_TRIPLES"] != "") ? V["ARCH_TRIPLES"] : V["host"]) " --output-dir . --pyconfig-dir . --cflags=\"" V["CFLAGS_JIT"] "\" --llvm-version=\"" V["LLVM_VERSION"] "\"" + if ((V["Py_DEBUG"] == "yes")) { + REGEN_JIT_COMMAND = REGEN_JIT_COMMAND " --debug" + } + } else { + REGEN_JIT_COMMAND = "" + } + V["REGEN_JIT_COMMAND"] = REGEN_JIT_COMMAND + v_export("REGEN_JIT_COMMAND") + pyconf_result(tier2_flags " " jit_flags) + if ((((V["disable_gil"] != "") && (V["disable_gil"] != "no")) && (jit != "no"))) { + pyconf_warn("--enable-experimental-jit does not work correctly with --disable-gil.") + } + if ((V["ac_cv_cc_name"] == "mpicc")) { + } else if ((V["ac_cv_cc_name"] == "icc")) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -fp-model strict" + } else if ((V["ac_cv_cc_name"] == "xlc")) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -qalias=noansi -qmaxmem=-1" + } + if ((V["assertions"] != "true")) { + V["OPT"] = "-DNDEBUG " V["OPT"] + } + if (((V["ac_arch_flags"] != "") && (V["ac_arch_flags"] != "no"))) { + V["BASECFLAGS"] = V["BASECFLAGS"] " " V["ac_arch_flags"] + } +} + +function u_check_jit_stencils( host) { + V["JIT_STENCILS_H"] = "" + if ((pyconf_option_given("enable_experimental_jit") && (!pyconf_option_is_no("enable_experimental_jit")))) { + host = V["host"] + if (_str_startswith(host, "aarch64-apple-darwin")) { + V["JIT_STENCILS_H"] = "jit_stencils-aarch64-apple-darwin.h" + } else if (_str_startswith(host, "x86_64-apple-darwin")) { + V["JIT_STENCILS_H"] = "jit_stencils-x86_64-apple-darwin.h" + } else if (_str_startswith(host, "aarch64-pc-windows-msvc")) { + V["JIT_STENCILS_H"] = "jit_stencils-aarch64-pc-windows-msvc.h" + } else if (_str_startswith(host, "i686-pc-windows-msvc")) { + V["JIT_STENCILS_H"] = "jit_stencils-i686-pc-windows-msvc.h" + } else if (_str_startswith(host, "x86_64-pc-windows-msvc")) { + V["JIT_STENCILS_H"] = "jit_stencils-x86_64-pc-windows-msvc.h" + } else if (pyconf_fnmatch(host, "aarch64-*-linux-gnu*")) { + V["JIT_STENCILS_H"] = "jit_stencils-aarch64-unknown-linux-gnu.h" + } else if (pyconf_fnmatch(host, "x86_64-*-linux-gnu*")) { + V["JIT_STENCILS_H"] = "jit_stencils-x86_64-unknown-linux-gnu.h" + } + } + v_export("JIT_STENCILS_H") +} + +function u_setup_sanitizers( _opt_result) { + _opt_result = pyconf_option_process_bool("with_address_sanitizer") + if (((_opt_result != "") && (_opt_result != "no"))) { + V["BASECFLAGS"] = "-fsanitize=address -fno-omit-frame-pointer " V["BASECFLAGS"] + V["LDFLAGS"] = "-fsanitize=address " V["LDFLAGS"] + } + _opt_result = pyconf_option_process_bool("with_memory_sanitizer") + if (((_opt_result != "") && (_opt_result != "no"))) { + if ((!pyconf_check_compile_flag("-fsanitize=memory"))) { + pyconf_error("The selected compiler doesn't support memory sanitizer") + } + V["BASECFLAGS"] = "-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer " V["BASECFLAGS"] + V["LDFLAGS"] = "-fsanitize=memory -fsanitize-memory-track-origins=2 " V["LDFLAGS"] + } + _opt_result = pyconf_option_process_bool("with_undefined_behavior_sanitizer") + if (((_opt_result != "") && (_opt_result != "no"))) { + V["BASECFLAGS"] = "-fsanitize=undefined " V["BASECFLAGS"] + V["LDFLAGS"] = "-fsanitize=undefined " V["LDFLAGS"] + V["with_ubsan"] = "yes" + } else { + V["with_ubsan"] = "no" + } + _opt_result = pyconf_option_process_bool("with_thread_sanitizer") + if (((_opt_result != "") && (_opt_result != "no"))) { + V["BASECFLAGS"] = "-fsanitize=thread " V["BASECFLAGS"] + V["LDFLAGS"] = "-fsanitize=thread " V["LDFLAGS"] + } +} + +function u_check_tail_call_interp() { + if (pyconf_option_is_yes("with_tail_call_interp")) { + pyconf_define("_Py_TAIL_CALL_INTERP", 1, 0, "Define if you want to use tail-calling interpreters in CPython.") + } else if (pyconf_option_is_no("with_tail_call_interp")) { + pyconf_define("_Py_TAIL_CALL_INTERP", 0, 0, "Define if you want to use tail-calling interpreters in CPython.") + } +} + +function u_check_remote_debug( with_rd) { + with_rd = pyconf_option_value_or("with_remote_debug", "yes") + if ((with_rd == "yes")) { + pyconf_define("Py_REMOTE_DEBUG", 1, 0, "Define if you want to enable remote debugging support.") + } +} + +function u_check_ensurepip( default_ensurepip, ensurepip_raw, with_ensurepip) { + default_ensurepip = ((((V["ac_sys_system"] == "Emscripten") || (V["ac_sys_system"] == "WASI")) || (V["ac_sys_system"] == "iOS")) ? "no" : "upgrade") + ensurepip_raw = pyconf_option_value("with_ensurepip") + with_ensurepip = ((ensurepip_raw != "") ? ensurepip_raw : default_ensurepip) + if (((with_ensurepip == "yes") || (with_ensurepip == "upgrade"))) { + V["ENSUREPIP"] = "upgrade" + } else if ((with_ensurepip == "install")) { + V["ENSUREPIP"] = "install" + } else if (((with_ensurepip == "no") || (with_ensurepip == "no"))) { + V["ENSUREPIP"] = "no" + } else { + pyconf_error("--with-ensurepip=upgrade|install|no") + } + v_export("ENSUREPIP") +} + +function u_setup_mimalloc( with_mimalloc) { + pyconf_checking("for --with-mimalloc") + with_mimalloc = pyconf_option_value("with_mimalloc") + if ((with_mimalloc == "")) { + with_mimalloc = (((V["ac_cv_header_stdatomic_h"] != "") && (V["ac_cv_header_stdatomic_h"] != "no")) ? "yes" : "no") + } + V["with_mimalloc"] = with_mimalloc + if ((with_mimalloc != "no")) { + if ((!((V["ac_cv_header_stdatomic_h"] != "") && (V["ac_cv_header_stdatomic_h"] != "no")))) { + pyconf_fatal("mimalloc requires stdatomic.h, use --without-mimalloc to disable mimalloc.") + } + with_mimalloc = "yes" + V["with_mimalloc"] = with_mimalloc + pyconf_define("WITH_MIMALLOC", 1, 0, "Define if you want to compile in mimalloc memory allocator.") + V["MIMALLOC_HEADERS"] = "$(MIMALLOC_HEADERS)" + v_export("MIMALLOC_HEADERS") + } else if ((V["disable_gil"] == "yes")) { + pyconf_fatal("--disable-gil requires mimalloc memory allocator (--with-mimalloc).") + } + pyconf_result(with_mimalloc) + V["INSTALL_MIMALLOC"] = with_mimalloc + v_export("INSTALL_MIMALLOC") + V["MIMALLOC_HEADERS"] = "" + v_export("MIMALLOC_HEADERS") +} + +function u_setup_pymalloc( with_pymalloc, with_pymalloc_hugepages) { + pyconf_checking("for --with-pymalloc") + if (((!("with_pymalloc" in V)) || (!((V["with_pymalloc"] != "") && (V["with_pymalloc"] != "no"))))) { + with_pymalloc = pyconf_option_value("with_pymalloc") + if ((with_pymalloc == "")) { + if (((V["ac_sys_system"] == "Emscripten") || (V["ac_sys_system"] == "WASI"))) { + with_pymalloc = "no" + } else { + with_pymalloc = "yes" + } + } + V["with_pymalloc"] = with_pymalloc + } else { + with_pymalloc = V["with_pymalloc"] + } + if ((with_pymalloc != "no")) { + pyconf_define("WITH_PYMALLOC", 1, 0, "Define if you want to compile in Python-specific mallocs") + } + pyconf_result(with_pymalloc) + pyconf_checking("for --with-pymalloc-hugepages") + with_pymalloc_hugepages = pyconf_option_value_or("with_pymalloc_hugepages", "no") + if ((with_pymalloc_hugepages == "yes")) { + if (pyconf_compile_check("", "#include \nint main(void) { int flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB;\n(void)flags; return 0; }")) { + pyconf_define("PYMALLOC_USE_HUGEPAGES", 1, 0, "Define to use huge pages for pymalloc arenas") + } else { + pyconf_warn("--with-pymalloc-hugepages requested but MAP_HUGETLB not found") + with_pymalloc_hugepages = "no" + } + } + pyconf_result(with_pymalloc_hugepages) +} + +function u_setup_valgrind( _opt_result, with_valgrind) { + _opt_result = pyconf_option_process_value("with_valgrind") + with_valgrind = _opt_result + if ((with_valgrind != "no")) { + if (pyconf_check_header("valgrind/valgrind.h")) { + pyconf_define("WITH_VALGRIND", 1, 0, "Define if you want pymalloc to be disabled when running under valgrind") + } else { + pyconf_fatal("Valgrind support requested but headers not available") + } + V["OPT"] = "-DDYNAMIC_ANNOTATIONS_ENABLED=1 " V["OPT"] + } +} + +function u_setup_dtrace( _opt_result, ac_cv_dtrace_link, dtrace, dtrace_cmd, dtrace_test_flags, host, tmp, with_dtrace) { + _opt_result = pyconf_option_process_value("with_dtrace") + with_dtrace = _opt_result + V["DTRACE"] = "" + v_export("DTRACE") + V["DFLAGS"] = "" + v_export("DFLAGS") + V["DTRACE_HEADERS"] = "" + v_export("DTRACE_HEADERS") + V["DTRACE_OBJS"] = "" + v_export("DTRACE_OBJS") + if ((with_dtrace == "yes")) { + dtrace = pyconf_find_prog("dtrace") + if ((!((dtrace != "") && (dtrace != "no")))) { + pyconf_fatal("dtrace command not found on $PATH") + } + V["DTRACE"] = dtrace + pyconf_define("WITH_DTRACE", 1, 0, "Define if you want to compile in DTrace support") + V["DTRACE_HEADERS"] = "Include/pydtrace_probes.h" + pyconf_checking("whether DTrace probes require linking") + ac_cv_dtrace_link = "no" + host = V["host"] + if ((index(tolower(host), "netbsd") > 0)) { + dtrace_test_flags = "-x" " " "nolibs" " " "-h" + } else { + dtrace_test_flags = "-G" + } + tmp = "/tmp/conftest.d" + pyconf_write_file(tmp, "BEGIN{}\n") + dtrace_cmd = V["DTRACE"] V["DFLAGS"] dtrace_test_flags "-s" " " tmp " " "-o" " " "/tmp/conftest.o" + delete _va2 + _va2[1] = dtrace_cmd + _va2[0] = 1 + if (pyconf_cmd(_va2)) { + ac_cv_dtrace_link = "yes" + } + pyconf_rm_f(tmp) + pyconf_result(ac_cv_dtrace_link) + if (((ac_cv_dtrace_link != "") && (ac_cv_dtrace_link != "no"))) { + V["DTRACE_OBJS"] = "Python/pydtrace.o" + } + if ((index(tolower(host), "netbsd") > 0)) { + V["DFLAGS"] = V["DFLAGS"] " -x nolibs" + } + } +} + +function u_setup_perf_trampoline( PERF_TRAMPOLINE_OBJ, perf_trampoline) { + pyconf_checking("perf trampoline") + if ((((V["PLATFORM_TRIPLET"] == "x86_64-linux-gnu") || (V["PLATFORM_TRIPLET"] == "aarch64-linux-gnu")) || (V["PLATFORM_TRIPLET"] == "darwin"))) { + perf_trampoline = "yes" + } else { + perf_trampoline = "no" + } + pyconf_result(perf_trampoline) + if (((perf_trampoline != "") && (perf_trampoline != "no"))) { + pyconf_define("PY_HAVE_PERF_TRAMPOLINE", 1, 0, "Define to 1 if you have the perf trampoline.") + PERF_TRAMPOLINE_OBJ = "Python/asm_trampoline.o" + if ((V["Py_DEBUG"] == "yes")) { + V["BASECFLAGS"] = V["BASECFLAGS"] " -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" + } + } else { + PERF_TRAMPOLINE_OBJ = "" + } + V["PERF_TRAMPOLINE_OBJ"] = PERF_TRAMPOLINE_OBJ + v_export("PERF_TRAMPOLINE_OBJ") +} + +function u_setup_doc_strings( _opt_result, with_doc_strings) { + _opt_result = pyconf_option_process_value("with_doc_strings") + with_doc_strings = _opt_result + if ((with_doc_strings != "no")) { + pyconf_define("WITH_DOC_STRINGS", 1, 0, "Define if you want documentation strings in extension modules") + } +} + +# --- conf_compiler --- +function u_setup_compiler_detection( _split_tmp) { + delete _split_tmp + pyconf_find_compiler(((V["CC"] != "") ? V["CC"] : ""), ((V["CPP"] != "") ? V["CPP"] : "")) + V["CC"] = pyconf_CC + v_export("CC") + V["CPP"] = pyconf_CPP + v_export("CPP") + V["GCC"] = pyconf_GCC + v_export("GCC") + V["ac_cv_cc_name"] = pyconf_ac_cv_cc_name + V["ac_cv_gcc_compat"] = pyconf_ac_cv_gcc_compat + V["ac_cv_prog_cc_g"] = pyconf_ac_cv_prog_cc_g + V["GREP"] = pyconf_check_prog("grep", "", "grep") + v_export("GREP") + V["SED"] = pyconf_check_prog("sed", "", "sed") + v_export("SED") + V["EGREP"] = pyconf_check_prog("egrep", "", "egrep") + v_export("EGREP") + pyconf_use_system_extensions() + V["CC_BASENAME"] = (((V["CC"] != "") && (V["CC"] != "no")) ? pyconf_basename(_split_index(V["CC"], " ", 1)) : "") + v_export("CC_BASENAME") + if ((V["CC_BASENAME"] == "mpicc")) { + V["ac_cv_cc_name"] = "mpicc" + } +} + +function u_setup_cxx( _i_candidate, candidate, cxx_candidate, preset_cxx, _al_1, cxx_map) { + delete _al_1 + delete cxx_map + v_export("CXX") + preset_cxx = V["CXX"] + if ((!((V["CXX"] != "") && (V["CXX"] != "no")))) { + cxx_map["gcc"] = "g++" + cxx_map["cc"] = "c++" + cxx_map["clang"] = "clang++" + cxx_map["icc"] = "icpc" + cxx_candidate = ((V["ac_cv_cc_name"] in cxx_map) ? cxx_map[V["ac_cv_cc_name"]] : "") + if ((((cxx_candidate != "") && (cxx_candidate != "no")) && (pyconf_find_prog(cxx_candidate) != ""))) { + V["CXX"] = cxx_candidate + } + if ((!((V["CXX"] != "") && (V["CXX"] != "no")))) { + _al_1[1] = V["CCC"] + _al_1[2] = "c++" + _al_1[3] = "g++" + _al_1[4] = "gcc" + _al_1[5] = "CC" + _al_1[6] = "cxx" + _al_1[7] = "cc++" + _al_1[8] = "cl" + for (_i_candidate = 1; (_i_candidate <= 8); _i_candidate = (_i_candidate + 1)) { + candidate = _al_1[_i_candidate] + if ((((candidate != "") && (candidate != "no")) && (pyconf_find_prog(candidate) != ""))) { + V["CXX"] = candidate + break + } + } + } + } + if ((((preset_cxx != "") && (preset_cxx != "no")) && (preset_cxx != V["CXX"]))) { + pyconf_notice("\n By default, distutils will build C++ extension modules with \"" V["CXX"] "\".\n If this is not intended, then set CXX on the configure command line.\n") + } +} + +function u_setup_stack_direction() { + V["_Py_STACK_GROWS_DOWN"] = (_str_startswith(V["host"], "hppa") ? 0 : 1) + pyconf_define("_Py_STACK_GROWS_DOWN", V["_Py_STACK_GROWS_DOWN"], 1, "Define to 1 if the machine stack grows down (default); 0 if it grows up.") + v_export("_Py_STACK_GROWS_DOWN") +} + +function u_check_compiler_bugs( have_o2, ipa_result, memmove_cflags, memmove_result) { + have_o2 = (pyconf_compile_check("", "", "-O2") ? "yes" : "no") + memmove_cflags = (((have_o2 != "") && (have_o2 != "no")) ? "-O2 -D_FORTIFY_SOURCE=2" : "") + memmove_result = (pyconf_run_check("for glibc _FORTIFY_SOURCE/memmove bug", "\n#include \n#include \n#include \nvoid foo(void *p, void *q) { memmove(p, q, 19); }\nint main(void) {\n char a[32] = \"123456789000000000\";\n foo(&a[9], a);\n if (strcmp(a, \"123456789123456789000000000\") != 0)\n return 1;\n foo(a, &a[9]);\n if (strcmp(a, \"123456789000000000\") != 0)\n return 1;\n return 0;\n}\n", memmove_cflags) ? "no" : "yes") + if ((memmove_result == "yes")) { + pyconf_define("HAVE_GLIBC_MEMMOVE_BUG", 1, 0, "Define if glibc has incorrect _FORTIFY_SOURCE wrappers for memmove and bcopy.") + } + if ((V["ac_cv_gcc_asm_for_x87"] == "yes")) { + if ((V["ac_cv_cc_name"] == "gcc")) { + ipa_result = (pyconf_run_check("for gcc ipa-pure-const bug", "\n__attribute__((noinline)) int\nfoo(int *p) {\n int r;\n asm ( \"movl $6, (%1)\\n\\t\"\n \"xorl %0, %0\\n\\t\"\n : \"=r\" (r) : \"r\" (p) : \"memory\"\n );\n return r;\n}\nint main(void) {\n int p = 8;\n if ((foo(&p) ? : p) != 6)\n return 1;\n return 0;\n}\n", "-O2") ? "no" : "yes") + if ((ipa_result == "yes")) { + pyconf_define("HAVE_IPA_PURE_CONST_BUG", 1, 0, "Define if gcc has the ipa-pure-const bug.") + } + } + } +} + +function u_check_sign_extension_and_getc( ac_cv_have_getc_unlocked, ac_cv_rshift_extends_sign) { + pyconf_checking("whether right shift extends the sign bit") + ac_cv_rshift_extends_sign = (pyconf_run_check("", "int main(void) { return (((-1)>>3 == -1) ? 0 : 1); }") ? "yes" : "no") + pyconf_result(ac_cv_rshift_extends_sign) + if ((!((ac_cv_rshift_extends_sign != "") && (ac_cv_rshift_extends_sign != "no")))) { + pyconf_define("SIGNED_RIGHT_SHIFT_ZERO_FILLS", 1, 0, "Define if i>>j for signed int i does not extend the sign bit when i < 0") + } + pyconf_checking("for getc_unlocked() and friends") + ac_cv_have_getc_unlocked = (pyconf_link_check("", "#include \nint main(void) { \n FILE *f = fopen(\"/dev/null\", \"r\");\n flockfile(f);\n getc_unlocked(f);\n funlockfile(f); return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_have_getc_unlocked) + if (((ac_cv_have_getc_unlocked != "") && (ac_cv_have_getc_unlocked != "no"))) { + pyconf_define("HAVE_GETC_UNLOCKED", 1, 0, "Define this if you have flockfile(), getc_unlocked(), and funlockfile()") + } +} + +function u_setup_strict_overflow( supports_fstrict_overflow) { + supports_fstrict_overflow = (pyconf_check_compile_flag("-fstrict-overflow -fno-strict-overflow") ? "yes" : "no") + V["STRICT_OVERFLOW_CFLAGS"] = (((supports_fstrict_overflow != "") && (supports_fstrict_overflow != "no")) ? "-fstrict-overflow" : "") + v_export("STRICT_OVERFLOW_CFLAGS") + V["NO_STRICT_OVERFLOW_CFLAGS"] = (((supports_fstrict_overflow != "") && (supports_fstrict_overflow != "no")) ? "-fno-strict-overflow" : "") + v_export("NO_STRICT_OVERFLOW_CFLAGS") + pyconf_checking("for --with-strict-overflow") + V["with_strict_overflow"] = (pyconf_option_is_yes("with_strict_overflow") ? "yes" : "no") + if ((pyconf_option_given("with_strict_overflow") && (!((supports_fstrict_overflow != "") && (supports_fstrict_overflow != "no"))))) { + pyconf_warn("--with-strict-overflow=yes requires a compiler that supports -fstrict-overflow") + } + pyconf_result(pyconf_option_value_or("with_strict_overflow", "no")) +} + +function u_setup_opt_and_debug_cflags( opt_env, supports_og) { + supports_og = (pyconf_check_compile_flag("-Og") ? "yes" : "no") + V["PYDEBUG_CFLAGS"] = (((supports_og != "") && (supports_og != "no")) ? "-Og" : "-O0") + if ((V["ac_sys_system"] == "WASI")) { + V["PYDEBUG_CFLAGS"] = "-O3" + } + v_export("PYDEBUG_CFLAGS") + v_export("OPT") + v_export("CFLAGS_ALIASING") + opt_env = (("OPT" in ENV) ? ENV["OPT"] : "") + V["OPT"] = ((opt_env != "") ? opt_env : "") + V["CFLAGS_ALIASING"] = "" + if ((opt_env == "")) { + if (((V["GCC"] != "") && (V["GCC"] != "no"))) { + if ((V["ac_cv_cc_name"] != "clang")) { + V["CFLAGS_ALIASING"] = "-fno-strict-aliasing" + } + if (((V["ac_cv_prog_cc_g"] != "") && (V["ac_cv_prog_cc_g"] != "no"))) { + if ((V["Py_DEBUG"] == "yes")) { + V["OPT"] = "-g " V["PYDEBUG_CFLAGS"] " -Wall" + } else { + V["OPT"] = "-g -O3 -Wall" + } + } else { + V["OPT"] = "-O3 -Wall" + } + if (_str_startswith(V["ac_sys_system"], "SCO_SV")) { + V["OPT"] = V["OPT"] " -m486 -DSCO5" + } + } else { + V["OPT"] = "-O" + } + } +} + +function u_setup_basecflags_overflow() { + if (((V["with_strict_overflow"] != "") && (V["with_strict_overflow"] != "no"))) { + V["BASECFLAGS"] = V["BASECFLAGS"] " " V["STRICT_OVERFLOW_CFLAGS"] + } else { + V["BASECFLAGS"] = V["BASECFLAGS"] " " V["NO_STRICT_OVERFLOW_CFLAGS"] + } +} + +function u_setup_safety_options( _i_flag, _opt_result, flag, _al_2) { + delete _al_2 + _opt_result = pyconf_option_process_bool("enable_safety") + if (((_opt_result != "") && (_opt_result != "no"))) { + _al_2[1] = "-fstack-protector-strong" + _al_2[2] = "-Wtrampolines" + _al_2[3] = "-Wimplicit-fallthrough" + _al_2[4] = "-Werror=format-security" + _al_2[5] = "-Wbidi-chars=any" + _al_2[6] = "-Wall" + for (_i_flag = 1; (_i_flag <= 6); _i_flag = (_i_flag + 1)) { + flag = _al_2[_i_flag] + delete _va3 + _va3[1] = "-Werror" + _va3[0] = 1 + if (pyconf_check_compile_flag(flag, _va3)) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " " flag + } else { + pyconf_warn(flag " not supported") + } + } + } + _opt_result = pyconf_option_process_bool("enable_slower_safety") + if (((_opt_result != "") && (_opt_result != "no"))) { + delete _va4 + _va4[1] = "-Werror" + _va4[0] = 1 + if (pyconf_check_compile_flag("-D_FORTIFY_SOURCE=3", _va4)) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3" + } else { + pyconf_warn("-D_FORTIFY_SOURCE=3 not supported") + } + } +} + +function u_setup_gcc_warnings( cc_ver, cc_with_fna, cc_with_fsa, fna_supported, strict_aliasing_fires) { + if ((!((V["ac_cv_gcc_compat"] != "") && (V["ac_cv_gcc_compat"] != "no")))) { + if ((_str_startswith(V["ac_sys_system"], "OpenUNIX") || _str_startswith(V["ac_sys_system"], "UnixWare"))) { + V["BASECFLAGS"] = V["BASECFLAGS"] " -K pentium,host,inline,loop_unroll,alloca" + } else if (_str_startswith(V["ac_sys_system"], "SCO_SV")) { + V["BASECFLAGS"] = V["BASECFLAGS"] " -belf -Ki486 -DSCO5" + } + return + } + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -std=c11" + delete _va5 + _va5[1] = "-Werror" + _va5[0] = 1 + if (pyconf_check_compile_flag("-Wextra", _va5)) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Wextra" + } + cc_with_fna = V["CC"] " -fno-strict-aliasing" + cc_with_fsa = V["CC"] " -fstrict-aliasing" + fna_supported = (pyconf_compile_check("", "int main(void){return 0;}") ? "yes" : "no") + if (((fna_supported != "") && (fna_supported != "no"))) { + strict_aliasing_fires = ((!pyconf_compile_check("", "void f(int **x) {}\nint main(void) { double *x; f((int **) &x); return 0; }")) ? "yes" : "no") + } else { + strict_aliasing_fires = "no" + } + if (((strict_aliasing_fires != "") && (strict_aliasing_fires != "no"))) { + V["BASECFLAGS"] = V["BASECFLAGS"] " -fno-strict-aliasing" + } + if ((V["ac_cv_cc_name"] == "icc")) { + delete _va6 + _va6[1] = "-Werror" + _va6[0] = 1 + if (pyconf_check_compile_flag("-Wunused-result", _va6)) { + V["BASECFLAGS"] = V["BASECFLAGS"] " -Wno-unused-result" + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Wno-unused-result" + } + } + delete _va7 + _va7[1] = "-Werror" + _va7[0] = 1 + if (pyconf_check_compile_flag("-Wno-unused-parameter", _va7)) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Wno-unused-parameter" + } + delete _va8 + _va8[1] = "-Werror" + _va8[0] = 1 + if (pyconf_check_compile_flag("-Wno-missing-field-initializers", _va8)) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Wno-missing-field-initializers" + } + delete _va9 + _va9[1] = "-Werror" + _va9[0] = 1 + if (pyconf_check_compile_flag("-Wsign-compare", _va9)) { + V["BASECFLAGS"] = V["BASECFLAGS"] " -Wsign-compare" + } + delete _va10 + _va10[1] = "-Werror" + _va10[0] = 1 + if (pyconf_check_compile_flag("-Wunreachable-code", _va10)) { + delete _va11 + _va11[1] = V["CC"] + _va11[2] = "--version" + _va11[0] = 2 + cc_ver = pyconf_cmd_output(_va11) + if (((V["Py_DEBUG"] != "yes") && (!(index(cc_ver, "Free Software Foundation") > 0)))) { + V["BASECFLAGS"] = V["BASECFLAGS"] " -Wunreachable-code" + } + } + delete _va12 + _va12[1] = "-Werror" + _va12[0] = 1 + if (pyconf_check_compile_flag("-Wstrict-prototypes", _va12)) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Wstrict-prototypes" + } + if (pyconf_check_compile_flag("-Werror=implicit-function-declaration")) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Werror=implicit-function-declaration" + } + if (pyconf_check_compile_flag("-fvisibility=hidden")) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -fvisibility=hidden" + } + if (_str_startswith(V["host"], "alpha")) { + V["BASECFLAGS"] = V["BASECFLAGS"] " -mieee" + } + if (_str_startswith(V["ac_sys_system"], "SCO_SV")) { + V["BASECFLAGS"] = V["BASECFLAGS"] " -m486 -DSCO5" + } else if (_str_startswith(V["ac_sys_system"], "Darwin")) { + u__setup_darwin_flags() + } +} + +function u_check_compiler_characteristics( ac_cv_function_prototypes, ac_cv_struct_sockaddr_sa_len, ac_cv_working_signed_char_c) { + pyconf_check_c_const() + pyconf_checking("for working signed char") + ac_cv_working_signed_char_c = (pyconf_compile_check("", "\nint main(void) { signed char c; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_working_signed_char_c) + if ((!((ac_cv_working_signed_char_c != "") && (ac_cv_working_signed_char_c != "no")))) { + pyconf_define("signed", "", 1, "Define to empty if the keyword does not work.") + } + pyconf_checking("for prototypes") + ac_cv_function_prototypes = (pyconf_compile_check("", "int foo(int x) { return 0; }\nint main(void) { return foo(10); return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_function_prototypes) + if (((ac_cv_function_prototypes != "") && (ac_cv_function_prototypes != "no"))) { + pyconf_define("HAVE_PROTOTYPES", 1, 0, "Define if your compiler supports function prototype") + } + pyconf_check_func("socketpair", "sys/types.h sys/socket.h", "HAVE_SOCKETPAIR") + pyconf_checking("if sockaddr has sa_len member") + ac_cv_struct_sockaddr_sa_len = (pyconf_compile_check("", "#include \n#include \nint main(void) { struct sockaddr x;\nx.sa_len = 0; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_struct_sockaddr_sa_len) + if (((ac_cv_struct_sockaddr_sa_len != "") && (ac_cv_struct_sockaddr_sa_len != "no"))) { + pyconf_define("HAVE_SOCKADDR_SA_LEN", 1, 0, "Define if sockaddr has sa_len member") + } +} + +function u_check_mbstowcs() { + if ((!pyconf_run_check("for broken mbstowcs", "\n#include \n#include \n#include \nint main(void) {\n size_t len = -1;\n const char *str = \"text\";\n len = mbstowcs(NULL, str, 0);\n return (len != 4);\n}\n"))) { + pyconf_define("HAVE_BROKEN_MBSTOWCS", 1, 0, "Define if mbstowcs(NULL, \"text\", 0) does not return the number of wide chars that would be converted.") + } +} + +function u_check_computed_gotos( cg_result) { + if (pyconf_option_is_yes("with_computed_gotos")) { + pyconf_define("USE_COMPUTED_GOTOS", 1, 0, "Define if you want to use computed gotos in ceval.c.") + } else if (pyconf_option_is_no("with_computed_gotos")) { + pyconf_define("USE_COMPUTED_GOTOS", 0, 0, "Define if you want to use computed gotos in ceval.c.") + } + cg_result = (pyconf_run_check("whether " V["CC"] " supports computed gotos", "\nint main(int argc, char **argv) {\n static void *targets[1] = { &&LABEL1 };\n goto LABEL2;\nLABEL1:\n return 0;\nLABEL2:\n goto *targets[0];\n return 1;\n}\n") ? "yes" : "no") + if (((cg_result != "") && (cg_result != "no"))) { + pyconf_define("HAVE_COMPUTED_GOTOS", 1, 0, "Define if the C compiler supports computed gotos.") + } +} + +function u_check_stdatomic( ac_cv_builtin_atomic, ac_cv_header_stdatomic_h) { + pyconf_checking("for stdatomic.h") + ac_cv_header_stdatomic_h = (pyconf_link_check("", "#include \natomic_int int_var;\natomic_uintptr_t uintptr_var;\nint main() {\n atomic_store_explicit(&int_var, 5, memory_order_relaxed);\n atomic_store_explicit(&uintptr_var, 0, memory_order_relaxed);\n int loaded_value = atomic_load_explicit(&int_var, memory_order_seq_cst);\n return 0;\n}\n") ? "yes" : "no") + pyconf_result(ac_cv_header_stdatomic_h) + V["ac_cv_header_stdatomic_h"] = ac_cv_header_stdatomic_h + if (((ac_cv_header_stdatomic_h != "") && (ac_cv_header_stdatomic_h != "no"))) { + pyconf_define("HAVE_STD_ATOMIC", 1, 0, "Has stdatomic.h with atomic_int and atomic_uintptr_t") + } + pyconf_checking("for builtin __atomic_load_n and __atomic_store_n functions") + ac_cv_builtin_atomic = (pyconf_link_check("", "int val;\nint main() {\n __atomic_store_n(&val, 1, __ATOMIC_SEQ_CST);\n (void)__atomic_load_n(&val, __ATOMIC_SEQ_CST);\n return 0;\n}\n") ? "yes" : "no") + pyconf_result(ac_cv_builtin_atomic) + if (((ac_cv_builtin_atomic != "") && (ac_cv_builtin_atomic != "no"))) { + pyconf_define("HAVE_BUILTIN_ATOMIC", 1, 0, "Has builtin __atomic_load_n() and __atomic_store_n() functions") + } +} + +function u_check_sizes( ac_cv_have_pthread_t, save_CC) { + pyconf_check_sizeof("int", 4, "") + pyconf_check_sizeof("long", 4, "") + pyconf_check_alignof("long") + pyconf_check_sizeof("long long", 8, "") + pyconf_check_sizeof("void *", 4, "") + pyconf_check_sizeof("short", 2, "") + pyconf_check_sizeof("float", 4, "") + pyconf_check_sizeof("double", 8, "") + pyconf_check_sizeof("fpos_t", 4, "") + pyconf_check_sizeof("size_t", 4, "") + pyconf_check_alignof("size_t") + pyconf_check_sizeof("pid_t", 4, "") + pyconf_check_sizeof("uintptr_t", "", "") + pyconf_check_alignof("max_align_t") + if (pyconf_compile_check("", "\nint main(void) { typedef int test_array[1 - 2 * !(sizeof(double) <= sizeof(long double))]; return 0; }")) { + pyconf_define("HAVE_LONG_DOUBLE", 1, 0, "Define to 1 if the C compiler supports long double.") + } + pyconf_check_sizeof("long double", 16, "") + pyconf_check_sizeof("_Bool", 1, "") + pyconf_check_sizeof("off_t", "", "sys/types.h") + pyconf_checking("whether to enable large file support") + if (((pyconf_sizeof("off_t") > pyconf_sizeof("long")) && (pyconf_sizeof("long long") >= pyconf_sizeof("off_t")))) { + pyconf_define("HAVE_LARGEFILE_SUPPORT", 1, 0, "Defined to enable large file support when an off_t is bigger than a long and long long is at least as big as an off_t.") + pyconf_result("yes") + } else { + pyconf_result("no") + } + pyconf_check_sizeof("time_t", "", "sys/types.h time.h") + save_CC = V["CC"] + if (((V["ac_cv_kpthread"] != "") && (V["ac_cv_kpthread"] != "no"))) { + V["CC"] = V["CC"] " -Kpthread" + } else if (((V["ac_cv_kthread"] != "") && (V["ac_cv_kthread"] != "no"))) { + V["CC"] = V["CC"] " -Kthread" + } else if (((V["ac_cv_pthread"] != "") && (V["ac_cv_pthread"] != "no"))) { + V["CC"] = V["CC"] " -pthread" + } + ac_cv_have_pthread_t = (pyconf_compile_check("", "#include \nint main(void) { pthread_t x; x = *(pthread_t*)0; return 0; }") ? "yes" : "no") + if (((ac_cv_have_pthread_t != "") && (ac_cv_have_pthread_t != "no"))) { + pyconf_check_sizeof("pthread_t", "", "pthread.h") + } + pyconf_check_sizeof("pthread_key_t", "", "pthread.h") + if (((pyconf_sizeof("pthread_key_t") == pyconf_sizeof("int")) && pyconf_compile_check("", "#include \nint main(void) { pthread_key_t k; k * 1; return 0; }"))) { + pyconf_define("PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT", 1, 0, "Define if pthread_key_t is compatible with int.") + } + V["CC"] = save_CC +} + +# --- conf_extlibs --- +function u__split_pkg_flags(parts, _result, _i_p, _n_p, cflags_len, libs_len, p, _as_3, cflags, libs) { + delete _as_3 + delete cflags + delete libs + _n_p = split(parts, _as_3, " ") + for (_i_p = 1; (_i_p <= _n_p); _i_p = (_i_p + 1)) { + p = _as_3[_i_p] + if ((_str_startswith(p, "-I") || _str_startswith(p, "-D"))) { + cflags[(cflags_len + 1)] = p + cflags_len = (cflags_len + 1) + cflags[0] = cflags_len + } else { + libs[(libs_len + 1)] = p + libs_len = (libs_len + 1) + libs[0] = libs_len + } + } + _result[0] = _arr_join(cflags, " ") + _result[1] = _arr_join(libs, " ") + return +} + +function u_setup_expat( _opt_result, with_system_expat) { + _opt_result = pyconf_option_process_value("with_system_expat") + with_system_expat = _opt_result + if ((with_system_expat == "yes")) { + V["LIBEXPAT_CFLAGS"] = "" + V["LIBEXPAT_LDFLAGS"] = "-lexpat" + V["LIBEXPAT_INTERNAL"] = "" + } else { + V["LIBEXPAT_CFLAGS"] = "-I$(srcdir)/Modules/expat" + V["LIBEXPAT_LDFLAGS"] = "-lm $(LIBEXPAT_A)" + V["LIBEXPAT_INTERNAL"] = "$(LIBEXPAT_HEADERS) $(LIBEXPAT_A)" + } + v_export("LIBEXPAT_CFLAGS") + v_export("LIBEXPAT_LDFLAGS") + v_export("LIBEXPAT_INTERNAL") +} + +function u_detect_libffi( ac_cv_ffi_complex_double_supported, ctypes_malloc_closure, ffi_h, output, parts, pkg, sdkroot, status, _ar_4, _ar_5) { + delete _ar_4 + delete _ar_5 + V["have_libffi"] = "missing" + V["LIBFFI_CFLAGS"] = "" + V["LIBFFI_LIBS"] = "" + V["MODULE__CTYPES_MALLOC_CLOSURE"] = "" + if ((V["ac_sys_system"] == "Darwin")) { + sdkroot = V["SDKROOT"] + ffi_h = (((sdkroot != "") && (sdkroot != "no")) ? sdkroot "/usr/include/ffi/ffi.h" : "/usr/include/ffi/ffi.h") + if (pyconf_path_is_file(ffi_h)) { + V["have_libffi"] = "yes" + V["LIBFFI_CFLAGS"] = "-I" sdkroot "/usr/include/ffi -DUSING_APPLE_OS_LIBFFI=1" + V["LIBFFI_LIBS"] = "-lffi" + } + } + if ((V["have_libffi"] == "missing")) { + pkg = pyconf_find_prog("pkg-config") + if (((pkg != "") && (pkg != "no"))) { + delete _va13 + _va13[1] = pkg + _va13[2] = "--cflags" + _va13[3] = "--libs" + _va13[4] = "libffi" + _va13[0] = 4 + pyconf_cmd_status(_va13, _ar_4) + status = _ar_4[0] + output = _ar_4[1] + if ((status == 0)) { + V["have_libffi"] = "yes" + parts = output + u__split_pkg_flags(parts, _ar_5) + V["LIBFFI_CFLAGS"] = _ar_5[0] + V["LIBFFI_LIBS"] = _ar_5[1] + } + } + if ((V["have_libffi"] == "missing")) { + if ((pyconf_check_header("ffi.h") && pyconf_check_lib("ffi", "ffi_call", "", ""))) { + V["have_libffi"] = "yes" + V["LIBFFI_CFLAGS"] = "" + V["LIBFFI_LIBS"] = "-lffi" + } else { + V["have_libffi"] = "no" + } + } + } + if ((V["have_libffi"] == "yes")) { + ctypes_malloc_closure = "no" + if (((V["ac_sys_system"] == "Darwin") || (V["ac_sys_system"] == "iOS"))) { + ctypes_malloc_closure = "yes" + } else if ((V["ac_sys_system"] == "sunos5")) { + V["LIBFFI_LIBS"] = V["LIBFFI_LIBS"] " -mimpure-text" + } + if (((ctypes_malloc_closure != "") && (ctypes_malloc_closure != "no"))) { + V["MODULE__CTYPES_MALLOC_CLOSURE"] = "_ctypes/malloc_closure.c" + V["LIBFFI_CFLAGS"] = V["LIBFFI_CFLAGS"] " -DUSING_MALLOC_CLOSURE_DOT_C=1" + } + if ((V["ac_cv_lib_dl_dlopen"] == "yes")) { + V["LIBFFI_LIBS"] = V["LIBFFI_LIBS"] " -ldl" + } + pyconf_save_env() + V["CFLAGS"] = _str_strip(V["CFLAGS"] " " V["LIBFFI_CFLAGS"]) + V["LIBS"] = _str_strip(V["LIBS"] " " V["LIBFFI_LIBS"]) + pyconf_check_func("ffi_prep_cif_var", "ffi.h", "HAVE_FFI_PREP_CIF_VAR") + pyconf_check_func("ffi_prep_closure_loc", "ffi.h", "HAVE_FFI_PREP_CLOSURE_LOC") + pyconf_check_func("ffi_closure_alloc", "ffi.h", "HAVE_FFI_CLOSURE_ALLOC") + pyconf_restore_env() + } + v_export("MODULE__CTYPES_MALLOC_CLOSURE") + v_export("LIBFFI_CFLAGS") + v_export("LIBFFI_LIBS") + pyconf_checking("libffi has complex type support") + ac_cv_ffi_complex_double_supported = (pyconf_run_check("", "\n #include \n #include \n int z_is_expected(double complex z) {\n const double complex expected = 1.25 - 0.5 * I;\n return z == expected;\n }\n int main(void) {\n double complex z = 1.25 - 0.5 * I;\n ffi_type *args[1] = {&ffi_type_complex_double};\n void *values[1] = {&z};\n ffi_cif cif;\n if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,\n &ffi_type_sint, args) != FFI_OK)\n return 2;\n ffi_arg rc;\n ffi_call(&cif, FFI_FN(z_is_expected), &rc, values);\n return !rc;\n }\n ", V["LIBFFI_CFLAGS"], V["LIBFFI_LIBS"]) ? "yes" : "no") + pyconf_result(ac_cv_ffi_complex_double_supported) + if (((ac_cv_ffi_complex_double_supported != "") && (ac_cv_ffi_complex_double_supported != "no"))) { + pyconf_define("_Py_FFI_SUPPORT_C_COMPLEX", 1, 0, "Defined if _Complex C type can be used with libffi.") + } +} + +function u_detect_sqlite3( _i_f, _n_f, check_cflags, enable_loadable_sqlite_extensions, f, output, parts, pkg, required_funcs, sqlite_inc, status, _ar_6, _ar_7, _as_8) { + delete _ar_6 + delete _ar_7 + delete _as_8 + V["have_sqlite3"] = "no" + V["have_supported_sqlite3"] = "no" + V["LIBSQLITE3_CFLAGS"] = "" + V["LIBSQLITE3_LIBS"] = "-lsqlite3" + pyconf_check_emscripten_port("LIBSQLITE3", "-sUSE_SQLITE3") + pkg = pyconf_find_prog("pkg-config") + if (((pkg != "") && (pkg != "no"))) { + delete _va14 + _va14[1] = pkg + _va14[2] = "--atleast-version=3.15.2" + _va14[3] = "sqlite3" + _va14[0] = 3 + if (pyconf_cmd(_va14)) { + delete _va15 + _va15[1] = pkg + _va15[2] = "--cflags" + _va15[3] = "--libs" + _va15[4] = "sqlite3" + _va15[0] = 4 + pyconf_cmd_status(_va15, _ar_6) + status = _ar_6[0] + output = _ar_6[1] + if ((status == 0)) { + parts = output + u__split_pkg_flags(parts, _ar_7) + V["LIBSQLITE3_CFLAGS"] = _ar_7[0] + V["LIBSQLITE3_LIBS"] = _ar_7[1] + } + } + } + sqlite_inc = " -I" pyconf_srcdir "/Modules/_sqlite" + check_cflags = V["LIBSQLITE3_CFLAGS"] sqlite_inc + V["LIBSQLITE3_CFLAGS"] = V["LIBSQLITE3_CFLAGS"] " -I$(srcdir)/Modules/_sqlite" + if (pyconf_check_header("sqlite3.h", "")) { + V["have_sqlite3"] = "yes" + if (pyconf_compile_check("", "#include \n#if SQLITE_VERSION_NUMBER < 3015002\n# error \"SQLite 3.15.2 or higher required\"\n#endif\nint main(void) { return 0; }", check_cflags)) { + V["have_supported_sqlite3"] = "yes" + required_funcs = "sqlite3_bind_double" " " "sqlite3_column_decltype" " " "sqlite3_column_double" " " "sqlite3_complete" " " "sqlite3_progress_handler" " " "sqlite3_result_double" " " "sqlite3_set_authorizer" " " "sqlite3_value_double" + _n_f = split(required_funcs, _as_8, " ") + for (_i_f = 1; (_i_f <= _n_f); _i_f = (_i_f + 1)) { + f = _as_8[_i_f] + if ((!pyconf_check_lib("sqlite3", f, check_cflags, V["LIBSQLITE3_LIBS"]))) { + V["have_supported_sqlite3"] = "no" + break + } + } + if ((!pyconf_check_lib("sqlite3", "sqlite3_trace_v2", "", V["LIBSQLITE3_LIBS"]))) { + if ((!pyconf_check_lib("sqlite3", "sqlite3_trace", "", V["LIBSQLITE3_LIBS"]))) { + V["have_supported_sqlite3"] = "no" + } + } + V["have_sqlite3_load_extension"] = (pyconf_check_lib("sqlite3", "sqlite3_load_extension", "", V["LIBSQLITE3_LIBS"]) ? "yes" : "no") + if (pyconf_check_lib("sqlite3", "sqlite3_serialize", "", V["LIBSQLITE3_LIBS"])) { + pyconf_define("PY_SQLITE_HAVE_SERIALIZE", 1, 0, "Define if SQLite was compiled with the serialize API") + } + pyconf_define("HAVE_LIBSQLITE3", 1, 0, "Define to 1 if you have the `sqlite3' library (-lsqlite3).") + } else { + V["have_supported_sqlite3"] = "no" + } + } + enable_loadable_sqlite_extensions = pyconf_option_value_or("enable_loadable_sqlite_extensions", "no") + pyconf_checking("for --enable-loadable-sqlite-extensions") + if ((enable_loadable_sqlite_extensions != "no")) { + if ((!((V["have_sqlite3_load_extension"] != "") && (V["have_sqlite3_load_extension"] != "no")))) { + pyconf_result("n/a") + pyconf_warn("Your version of SQLite does not support loadable extensions") + } else { + pyconf_result("yes") + pyconf_define("PY_SQLITE_ENABLE_LOAD_EXTENSION", 1, 0, "Define to 1 to build the sqlite module with loadable extensions support.") + } + } else { + pyconf_result("no") + } + v_export("LIBSQLITE3_CFLAGS") + v_export("LIBSQLITE3_LIBS") +} + +function u_detect_tcltk( _i_q, _x11_cflags, _x11_libs, output, parts, pkg, q, status, _al_11, _ar_10, _ar_12, _ar_13, _ar_9) { + delete _al_11 + delete _ar_10 + delete _ar_12 + delete _ar_13 + delete _ar_9 + V["have_tcltk"] = "no" + V["TCLTK_CFLAGS"] = "" + V["TCLTK_LIBS"] = "" + pkg = pyconf_find_prog("pkg-config") + if (((pkg != "") && (pkg != "no"))) { + _al_11[1] = "tcl >= 8.5.12 tk >= 8.5.12" + _al_11[2] = "tcl8.6 tk8.6" + _al_11[3] = "tcl86 tk86" + _al_11[4] = "tcl8.5 >= 8.5.12 tk8.5 >= 8.5.12" + _al_11[5] = "tcl85 >= 8.5.12 tk85 >= 8.5.12" + for (_i_q = 1; (_i_q <= 5); _i_q = (_i_q + 1)) { + q = _al_11[_i_q] + delete _va16 + _va16[1] = pkg + _va16[2] = "--exists" + _va16[3] = q + _va16[0] = 3 + if (pyconf_cmd(_va16)) { + delete _va17 + _va17[1] = pkg + _va17[2] = "--cflags" + _va17[3] = "--libs" + _va17[4] = q + _va17[0] = 4 + pyconf_cmd_status(_va17, _ar_9) + status = _ar_9[0] + output = _ar_9[1] + if ((status == 0)) { + parts = output + u__split_pkg_flags(parts, _ar_10) + V["TCLTK_CFLAGS"] = _ar_10[0] + V["TCLTK_LIBS"] = _ar_10[1] + break + } + } + } + } + if ((_str_startswith(V["ac_sys_system"], "FreeBSD") && ((pkg != "") && (pkg != "no")))) { + delete _va18 + _va18[1] = pkg + _va18[2] = "--exists" + _va18[3] = "x11" + _va18[0] = 3 + if (pyconf_cmd(_va18)) { + delete _va19 + _va19[1] = pkg + _va19[2] = "--cflags" + _va19[3] = "--libs" + _va19[4] = "x11" + _va19[0] = 4 + pyconf_cmd_status(_va19, _ar_12) + status = _ar_12[0] + output = _ar_12[1] + if ((status == 0)) { + parts = output + u__split_pkg_flags(parts, _ar_13) + _x11_cflags = _ar_13[0] + _x11_libs = _ar_13[1] + V["TCLTK_CFLAGS"] = V["TCLTK_CFLAGS"] " " _x11_cflags + V["TCLTK_LIBS"] = V["TCLTK_LIBS"] " " _x11_libs + } + } + } + if (pyconf_link_check("", "#include \n#include \n#if defined(TK_HEX_VERSION)\n# if TK_HEX_VERSION < 0x0805020c\n# error \"Tk older than 8.5.12 not supported\"\n# endif\n#endif\n#if (TCL_MAJOR_VERSION < 8) || \\\n ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION < 5)) || \\\n ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION == 5) && (TCL_RELEASE_SERIAL < 12))\n# error \"Tcl older than 8.5.12 not supported\"\n#endif\n#if (TK_MAJOR_VERSION < 8) || \\\n ((TK_MAJOR_VERSION == 8) && (TK_MINOR_VERSION < 5)) || \\\n ((TK_MAJOR_VERSION == 8) && (TK_MINOR_VERSION == 5) && (TK_RELEASE_SERIAL < 12))\n# error \"Tk older than 8.5.12 not supported\"\n#endif\nvoid *x1 = Tcl_Init;\nvoid *x2 = Tk_Init;\n\nint main(void) { return 0; }", V["TCLTK_CFLAGS"] " " V["TCLTK_LIBS"])) { + V["have_tcltk"] = "yes" + V["TCLTK_CFLAGS"] = V["TCLTK_CFLAGS"] " -Wno-strict-prototypes -DWITH_APPINIT=1" + } + v_export("TCLTK_CFLAGS") + v_export("TCLTK_LIBS") +} + +function u_detect_uuid( LIBUUID_CFLAGS, LIBUUID_LIBS, ac_cv_have_uuid_generate_time_safe, ac_cv_have_uuid_h, ac_cv_have_uuid_uuid_h, has_create, has_enc_be, have_uuid, node1, node2, pkg, save_CPPFLAGS, save_LIBS, uuid_node_src) { + ac_cv_have_uuid_h = "no" + ac_cv_have_uuid_uuid_h = "no" + ac_cv_have_uuid_generate_time_safe = "no" + LIBUUID_CFLAGS = V["LIBUUID_CFLAGS"] + LIBUUID_LIBS = V["LIBUUID_LIBS"] + have_uuid = "missing" + delete _va20 + _va20[1] = "uuid.h" + _va20[0] = 1 + if (pyconf_check_headers(_va20)) { + has_create = (pyconf_check_func("uuid_create", "", "HAVE_UUID_CREATE") ? "yes" : "no") + has_enc_be = (pyconf_check_func("uuid_enc_be", "", "HAVE_UUID_ENC_BE") ? "yes" : "no") + if ((((has_create != "") && (has_create != "no")) && ((has_enc_be != "") && (has_enc_be != "no")))) { + have_uuid = "yes" + ac_cv_have_uuid_h = "yes" + } + } + if ((have_uuid == "missing")) { + pkg = (pyconf_pkg_check_modules("LIBUUID", "uuid >= 2.20") ? "yes" : "no") + if (((pkg != "") && (pkg != "no"))) { + have_uuid = "yes" + ac_cv_have_uuid_generate_time_safe = "yes" + ac_cv_have_uuid_h = "yes" + LIBUUID_CFLAGS = V["LIBUUID_CFLAGS"] + LIBUUID_LIBS = V["LIBUUID_LIBS"] + } else { + save_CPPFLAGS = V["CPPFLAGS"] + save_LIBS = V["LIBS"] + V["CPPFLAGS"] = _str_strip(V["CPPFLAGS"] " " LIBUUID_CFLAGS) + V["LIBS"] = _str_strip(V["LIBS"] " " LIBUUID_LIBS) + delete _va21 + _va21[1] = "uuid/uuid.h" + _va21[0] = 1 + if (pyconf_check_headers(_va21)) { + ac_cv_have_uuid_uuid_h = "yes" + if (pyconf_check_lib("uuid", "uuid_generate_time", "", "")) { + have_uuid = "yes" + } + if (pyconf_check_lib("uuid", "uuid_generate_time_safe", "", "")) { + have_uuid = "yes" + ac_cv_have_uuid_generate_time_safe = "yes" + } + } + if ((have_uuid == "yes")) { + LIBUUID_LIBS = ((LIBUUID_LIBS != "") ? LIBUUID_LIBS : "-luuid") + } + V["CPPFLAGS"] = save_CPPFLAGS + V["LIBS"] = save_LIBS + } + } + if ((have_uuid == "missing")) { + delete _va22 + _va22[1] = "uuid/uuid.h" + _va22[0] = 1 + if (pyconf_check_headers(_va22)) { + if (pyconf_check_func("uuid_generate_time", "", "HAVE_UUID_GENERATE_TIME")) { + have_uuid = "yes" + ac_cv_have_uuid_uuid_h = "yes" + } + } + } + if (((ac_cv_have_uuid_h != "") && (ac_cv_have_uuid_h != "no"))) { + pyconf_define("HAVE_UUID_H", 1, 0, "") + } + if (((ac_cv_have_uuid_uuid_h != "") && (ac_cv_have_uuid_uuid_h != "no"))) { + pyconf_define("HAVE_UUID_UUID_H", 1, 0, "") + } + if (((ac_cv_have_uuid_generate_time_safe != "") && (ac_cv_have_uuid_generate_time_safe != "no"))) { + pyconf_define("HAVE_UUID_GENERATE_TIME_SAFE", 1, 0, "") + } + if ((V["ac_sys_system"] == "NetBSD")) { + have_uuid = "missing" + pyconf_define("HAVE_UUID_H", 0, 0, "") + } + if ((have_uuid == "missing")) { + have_uuid = "no" + } + V["have_uuid"] = have_uuid + V["LIBUUID_CFLAGS"] = LIBUUID_CFLAGS + v_export("LIBUUID_CFLAGS") + V["LIBUUID_LIBS"] = LIBUUID_LIBS + v_export("LIBUUID_LIBS") + if (((0 && (have_uuid == "yes")) && ((ac_cv_have_uuid_generate_time_safe != "") && (ac_cv_have_uuid_generate_time_safe != "no")))) { + pyconf_checking("if uuid_generate_time_safe() node value is stable") + uuid_node_src = "\n #include \n #include \n #include \n #ifdef HAVE_UUID_H\n #include \n #else\n #include \n #endif\n int main(void) {\n uuid_t uuid;\n (void)uuid_generate_time_safe(uuid);\n uint64_t node = 0;\n for (size_t i = 0; i < 6; i++) node |= (uint64_t)uuid[15-i] << (8*i);\n FILE *fp = fopen(\"conftest.out\", \"w\");\n if (!fp) return 1;\n int rc = fprintf(fp, \"%\" PRIu64 \"\\n\", node) >= 0;\n rc |= fclose(fp);\n return rc == 0 ? 0 : 1;\n }\n " + node1 = pyconf_run_program_output(uuid_node_src) + node2 = pyconf_run_program_output(uuid_node_src) + if ((((node1 != "") && (node1 != "no")) && (node1 == node2))) { + pyconf_define("HAVE_UUID_GENERATE_TIME_SAFE_STABLE_MAC", 1, 0, "") + pyconf_result("stable") + } else { + pyconf_result("unstable") + } + } +} + +function u_check_readline( _i_h, _n_h, ac_cv_rl_append_history, ac_cv_rl_completion_display, ac_cv_rl_completion_matches, ac_cv_rl_pre_input_hook, ac_cv_rl_resize_terminal, ac_cv_rl_startup_hook_args, edit_cflags, edit_found, edit_libs, h, librl, pkg, preamble, preamble_parts_len, rl_cflags, rl_found, rl_includes, rl_libs, rl_raw, use_editline, with_readline, _as_14, preamble_parts) { + delete _as_14 + delete preamble_parts + pyconf_define_template("WITH_EDITLINE", "Define to build the readline module against libedit.") + rl_raw = pyconf_option_value_or("with_readline", "readline") + if (((rl_raw == "editline") || (rl_raw == "edit"))) { + with_readline = "edit" + } else if (((rl_raw == "yes") || (rl_raw == "readline"))) { + with_readline = "readline" + } else if ((rl_raw == "no")) { + with_readline = "no" + } else { + pyconf_error("proper usage is --with(out)-readline[=editline|readline|no]") + } + if ((with_readline == "readline")) { + pkg = (pyconf_pkg_check_modules("LIBREADLINE", "readline") ? "yes" : "no") + if (((pkg != "") && (pkg != "no"))) { + V["LIBREADLINE"] = "readline" + V["READLINE_CFLAGS"] = V["LIBREADLINE_CFLAGS"] + V["READLINE_LIBS"] = V["LIBREADLINE_LIBS"] + } else { + rl_found = "no" + pyconf_save_env() + V["CPPFLAGS"] = _str_strip(V["CPPFLAGS"] " " V["LIBREADLINE_CFLAGS"]) + V["LIBS"] = _str_strip(V["LIBS"] " " V["LIBREADLINE_LIBS"]) + if (pyconf_check_header("readline/readline.h")) { + if (pyconf_check_lib("readline", "readline", "", "")) { + rl_found = "yes" + rl_cflags = ((V["LIBREADLINE_CFLAGS"] != "") ? V["LIBREADLINE_CFLAGS"] : "") + rl_libs = ((V["LIBREADLINE_LIBS"] != "") ? V["LIBREADLINE_LIBS"] : "-lreadline") + } + } + pyconf_restore_env() + if (((rl_found != "") && (rl_found != "no"))) { + V["LIBREADLINE"] = "readline" + V["READLINE_CFLAGS"] = rl_cflags + V["READLINE_LIBS"] = rl_libs + } else { + with_readline = "no" + } + } + } + if ((with_readline == "edit")) { + pkg = (pyconf_pkg_check_modules("LIBEDIT", "libedit") ? "yes" : "no") + if (((pkg != "") && (pkg != "no"))) { + pyconf_define("WITH_EDITLINE", 1, 0, "") + V["LIBREADLINE"] = "edit" + V["READLINE_CFLAGS"] = V["LIBEDIT_CFLAGS"] + V["READLINE_LIBS"] = V["LIBEDIT_LIBS"] + } else { + edit_found = "no" + pyconf_save_env() + V["CPPFLAGS"] = _str_strip(V["CPPFLAGS"] " " V["LIBEDIT_CFLAGS"]) + V["LIBS"] = _str_strip(V["LIBS"] " " V["LIBEDIT_LIBS"]) + if (pyconf_check_header("editline/readline.h")) { + if (pyconf_check_lib("edit", "readline", "", "")) { + edit_found = "yes" + edit_cflags = ((V["LIBEDIT_CFLAGS"] != "") ? V["LIBEDIT_CFLAGS"] : "") + edit_libs = ((V["LIBEDIT_LIBS"] != "") ? V["LIBEDIT_LIBS"] : "-ledit") + } + } + pyconf_restore_env() + if (((edit_found != "") && (edit_found != "no"))) { + V["LIBREADLINE"] = "edit" + pyconf_define("WITH_EDITLINE", 1, 0, "") + V["READLINE_CFLAGS"] = edit_cflags + V["READLINE_LIBS"] = edit_libs + } else { + with_readline = "no" + } + } + } + V["READLINE_CFLAGS"] = _str_strip(_str_replace(V["READLINE_CFLAGS"], "-D_XOPEN_SOURCE=600", "")) + v_export("READLINE_CFLAGS") + v_export("READLINE_LIBS") + v_export("LIBREADLINE") + V["with_readline"] = with_readline + pyconf_checking("how to link readline") + if ((with_readline == "no")) { + pyconf_result("no") + } else { + pyconf_result(with_readline " (CFLAGS: " V["READLINE_CFLAGS"] ", LIBS: " V["READLINE_LIBS"] ")") + pyconf_save_env() + V["CPPFLAGS"] = _str_strip(V["CPPFLAGS"] " " V["READLINE_CFLAGS"]) + V["LIBS"] = _str_strip(V["LIBS"] " " V["READLINE_LIBS"]) + use_editline = ((V["WITH_EDITLINE"] == "1") ? "yes" : "no") + if (((use_editline != "") && (use_editline != "no"))) { + rl_includes = "stdio.h" " " "editline/readline.h" + } else { + rl_includes = "stdio.h" " " "readline/readline.h" " " "readline/history.h" + } + if (pyconf_check_decl("rl_completion_append_character", rl_includes, "HAVE_DECL_RL_COMPLETION_APPEND_CHARACTER")) { + pyconf_define("HAVE_RL_COMPLETION_APPEND_CHARACTER", 1, 0, "Define if you have readline 2.2") + } + if (pyconf_check_decl("rl_completion_suppress_append", rl_includes, "HAVE_DECL_RL_COMPLETION_SUPPRESS_APPEND")) { + pyconf_define("HAVE_RL_COMPLETION_SUPPRESS_APPEND", 1, 0, "Define if you have rl_completion_suppress_append") + } + librl = ((V["LIBREADLINE"] != "") ? V["LIBREADLINE"] : "readline") + pyconf_checking("for rl_pre_input_hook in -l" librl) + ac_cv_rl_pre_input_hook = (pyconf_link_check("", _pyconf_includes_from_list(rl_includes) "\nint main(void) { void *x = rl_pre_input_hook; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_rl_pre_input_hook) + if (((ac_cv_rl_pre_input_hook != "") && (ac_cv_rl_pre_input_hook != "no"))) { + pyconf_define("HAVE_RL_PRE_INPUT_HOOK", 1, 0, "Define if you have readline 4.0") + } + pyconf_checking("for rl_completion_display_matches_hook in -l" librl) + ac_cv_rl_completion_display = (pyconf_link_check("", _pyconf_includes_from_list(rl_includes) "\nint main(void) { void *x = rl_completion_display_matches_hook; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_rl_completion_display) + if (((ac_cv_rl_completion_display != "") && (ac_cv_rl_completion_display != "no"))) { + pyconf_define("HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK", 1, 0, "Define if you have readline 4.0") + } + pyconf_checking("for rl_resize_terminal in -l" librl) + ac_cv_rl_resize_terminal = (pyconf_link_check("", _pyconf_includes_from_list(rl_includes) "\nint main(void) { void *x = rl_resize_terminal; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_rl_resize_terminal) + if (((ac_cv_rl_resize_terminal != "") && (ac_cv_rl_resize_terminal != "no"))) { + pyconf_define("HAVE_RL_RESIZE_TERMINAL", 1, 0, "Define if you have readline 4.0") + } + pyconf_checking("for rl_completion_matches in -l" librl) + ac_cv_rl_completion_matches = (pyconf_link_check("", _pyconf_includes_from_list(rl_includes) "\nint main(void) { void *x = rl_completion_matches; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_rl_completion_matches) + if (((ac_cv_rl_completion_matches != "") && (ac_cv_rl_completion_matches != "no"))) { + pyconf_define("HAVE_RL_COMPLETION_MATCHES", 1, 0, "Define if you have readline 4.2") + } + if (pyconf_check_decl("rl_catch_signals", rl_includes, "HAVE_DECL_RL_CATCH_SIGNALS")) { + pyconf_define("HAVE_RL_CATCH_SIGNAL", 1, 0, "Define if you can turn off readline's signal handling.") + } + pyconf_checking("for append_history in -l" librl) + ac_cv_rl_append_history = (pyconf_link_check("", _pyconf_includes_from_list(rl_includes) "\nint main(void) { void *x = append_history; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_rl_append_history) + if (((ac_cv_rl_append_history != "") && (ac_cv_rl_append_history != "no"))) { + pyconf_define("HAVE_RL_APPEND_HISTORY", 1, 0, "Define if readline supports append_history") + } + pyconf_check_type("rl_compdisp_func_t", rl_includes) + pyconf_checking("if rl_startup_hook takes arguments") + _n_h = split(rl_includes, _as_14, " ") + for (_i_h = 1; (_i_h <= _n_h); _i_h = (_i_h + 1)) { + h = _as_14[_i_h] + preamble_parts[(preamble_parts_len + 1)] = "#include <" h ">" + preamble_parts_len = (preamble_parts_len + 1) + preamble_parts[0] = preamble_parts_len + } + preamble = _arr_join(preamble_parts, "\n") + ac_cv_rl_startup_hook_args = (pyconf_compile_check("", preamble "\nextern int test_hook_func(const char *text, int state);" "\nint main(void) { rl_startup_hook=test_hook_func; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_rl_startup_hook_args) + if (((ac_cv_rl_startup_hook_args != "") && (ac_cv_rl_startup_hook_args != "no"))) { + pyconf_define("Py_RL_STARTUP_HOOK_TAKES_ARGS", 1, 0, "Define if rl_startup_hook takes arguments") + } + pyconf_restore_env() + } +} + +function u_check_compression_libraries( _found_bz2, _found_lzma, _found_zstd, have_zlib, ok, pkg, zlib_cflags, zlib_libs) { + pyconf_define_template("HAVE_ZLIB_COPY", "Define if the zlib library has inflateCopy") + pyconf_check_emscripten_port("ZLIB", "-sUSE_ZLIB") + pkg = (pyconf_pkg_check_modules("ZLIB", "zlib >= 1.2.2.1") ? "yes" : "no") + if (((pkg != "") && (pkg != "no"))) { + V["have_zlib"] = "yes" + V["ZLIB_CFLAGS"] = V["ZLIB_CFLAGS"] + V["ZLIB_LIBS"] = V["ZLIB_LIBS"] + pyconf_define("HAVE_ZLIB_COPY", 1, 0, "") + } else { + pyconf_save_env() + V["CPPFLAGS"] = _str_strip(V["CPPFLAGS"] " " V["ZLIB_CFLAGS"]) + V["LIBS"] = _str_strip(V["LIBS"] " " V["ZLIB_LIBS"]) + if (pyconf_check_header("zlib.h")) { + if (pyconf_check_lib("z", "gzread", "", "")) { + have_zlib = "yes" + } else { + have_zlib = "no" + } + } else { + have_zlib = "no" + } + zlib_cflags = ((V["ZLIB_CFLAGS"] != "") ? V["ZLIB_CFLAGS"] : "") + zlib_libs = (((have_zlib != "") && (have_zlib != "no")) ? ((V["ZLIB_LIBS"] != "") ? V["ZLIB_LIBS"] : "-lz") : "") + if (((have_zlib != "") && (have_zlib != "no"))) { + if (pyconf_check_lib("z", "inflateCopy", "", "")) { + pyconf_define("HAVE_ZLIB_COPY", 1, 0, "") + } + } + pyconf_restore_env() + V["have_zlib"] = have_zlib + if (((V["have_zlib"] != "") && (V["have_zlib"] != "no"))) { + V["ZLIB_CFLAGS"] = zlib_cflags + V["ZLIB_LIBS"] = zlib_libs + } + } + v_export("ZLIB_CFLAGS") + v_export("ZLIB_LIBS") + if (((V["have_zlib"] != "") && (V["have_zlib"] != "no"))) { + V["BINASCII_CFLAGS"] = _str_strip("-DUSE_ZLIB_CRC32 " V["ZLIB_CFLAGS"]) + V["BINASCII_LIBS"] = V["ZLIB_LIBS"] + } + v_export("BINASCII_CFLAGS") + v_export("BINASCII_LIBS") + pyconf_check_emscripten_port("BZIP2", "-sUSE_BZIP2") + pkg = (pyconf_pkg_check_modules("BZIP2", "bzip2") ? "yes" : "no") + if (((pkg != "") && (pkg != "no"))) { + V["have_bzip2"] = "yes" + V["BZIP2_CFLAGS"] = V["BZIP2_CFLAGS"] + V["BZIP2_LIBS"] = V["BZIP2_LIBS"] + } else { + pyconf_save_env() + V["CPPFLAGS"] = _str_strip(V["CPPFLAGS"] " " V["BZIP2_CFLAGS"]) + V["LIBS"] = _str_strip(V["LIBS"] " " V["BZIP2_LIBS"]) + _found_bz2 = ((pyconf_check_header("bzlib.h") && pyconf_check_lib("bz2", "BZ2_bzCompress", "", "")) ? "yes" : "no") + pyconf_restore_env() + V["have_bzip2"] = _found_bz2 + if (((V["have_bzip2"] != "") && (V["have_bzip2"] != "no"))) { + V["BZIP2_CFLAGS"] = ((V["BZIP2_CFLAGS"] != "") ? V["BZIP2_CFLAGS"] : "") + V["BZIP2_LIBS"] = ((V["BZIP2_LIBS"] != "") ? V["BZIP2_LIBS"] : "-lbz2") + } + } + v_export("BZIP2_CFLAGS") + v_export("BZIP2_LIBS") + pkg = (pyconf_pkg_check_modules("LIBLZMA", "liblzma") ? "yes" : "no") + if (((pkg != "") && (pkg != "no"))) { + V["have_liblzma"] = "yes" + V["LIBLZMA_CFLAGS"] = V["LIBLZMA_CFLAGS"] + V["LIBLZMA_LIBS"] = V["LIBLZMA_LIBS"] + } else { + pyconf_save_env() + V["CPPFLAGS"] = _str_strip(V["CPPFLAGS"] " " V["LIBLZMA_CFLAGS"]) + V["LIBS"] = _str_strip(V["LIBS"] " " V["LIBLZMA_LIBS"]) + _found_lzma = ((pyconf_check_header("lzma.h") && pyconf_check_lib("lzma", "lzma_easy_encoder", "", "")) ? "yes" : "no") + pyconf_restore_env() + V["have_liblzma"] = _found_lzma + if (((V["have_liblzma"] != "") && (V["have_liblzma"] != "no"))) { + V["LIBLZMA_CFLAGS"] = ((V["LIBLZMA_CFLAGS"] != "") ? V["LIBLZMA_CFLAGS"] : "") + V["LIBLZMA_LIBS"] = ((V["LIBLZMA_LIBS"] != "") ? V["LIBLZMA_LIBS"] : "-llzma") + } + } + v_export("LIBLZMA_CFLAGS") + v_export("LIBLZMA_LIBS") + pkg = (pyconf_pkg_check_modules("LIBZSTD", "libzstd >= 1.4.5") ? "yes" : "no") + if (((pkg != "") && (pkg != "no"))) { + V["have_libzstd"] = "yes" + V["LIBZSTD_CFLAGS"] = V["LIBZSTD_CFLAGS"] + V["LIBZSTD_LIBS"] = V["LIBZSTD_LIBS"] + } else { + pyconf_save_env() + V["CPPFLAGS"] = _str_strip(V["CPPFLAGS"] " " V["LIBZSTD_CFLAGS"]) + V["CFLAGS"] = _str_strip(V["CFLAGS"] " " V["LIBZSTD_CFLAGS"]) + V["LIBS"] = _str_strip(V["LIBS"] " " V["LIBZSTD_LIBS"]) + _found_zstd = "no" + if ((pyconf_search_libs("ZDICT_finalizeDictionary", "zstd") != "")) { + pyconf_checking("ZSTD_VERSION_NUMBER >= 1.4.5") + ok = (pyconf_compile_check("", "#include \n\nint main(void) { \n #if ZSTD_VERSION_NUMBER < 10405\n # error \"zstd version is too old\"\n #endif; return 0; }") ? "yes" : "no") + if (((ok != "") && (ok != "no"))) { + pyconf_result("yes") + delete _va23 + _va23[1] = "zstd.h" + _va23[2] = "zdict.h" + _va23[0] = 2 + if (pyconf_check_headers(_va23)) { + _found_zstd = "yes" + } + } else { + pyconf_result("no") + } + } + pyconf_restore_env() + V["have_libzstd"] = _found_zstd + if (((V["have_libzstd"] != "") && (V["have_libzstd"] != "no"))) { + V["LIBZSTD_CFLAGS"] = ((V["LIBZSTD_CFLAGS"] != "") ? V["LIBZSTD_CFLAGS"] : "") + V["LIBZSTD_LIBS"] = ((V["LIBZSTD_LIBS"] != "") ? V["LIBZSTD_LIBS"] : "-lzstd") + } + } + v_export("LIBZSTD_CFLAGS") + v_export("LIBZSTD_LIBS") + if (((V["have_libzstd"] != "") && (V["have_libzstd"] != "no"))) { + V["REMOTE_DEBUGGING_CFLAGS"] = _str_strip("-DHAVE_ZSTD " V["LIBZSTD_CFLAGS"]) + V["REMOTE_DEBUGGING_LIBS"] = V["LIBZSTD_LIBS"] + } else { + V["REMOTE_DEBUGGING_CFLAGS"] = "" + V["REMOTE_DEBUGGING_LIBS"] = "" + } + v_export("REMOTE_DEBUGGING_CFLAGS") + v_export("REMOTE_DEBUGGING_LIBS") +} + +function u__check_curses(lib, panel_lib, lib_upper, panel_upper, pkg, pkg2) { + lib_upper = toupper(lib) + panel_upper = toupper(panel_lib) + pkg = (pyconf_pkg_check_modules("CURSES", lib) ? "yes" : "no") + if (((pkg != "") && (pkg != "no"))) { + pyconf_define("HAVE_" lib_upper, 1, 0, "Define if you have the '" lib "' library") + V["have_curses"] = "yes" + pkg2 = (pyconf_pkg_check_modules("PANEL", panel_lib) ? "yes" : "no") + if (((pkg2 != "") && (pkg2 != "no"))) { + pyconf_define("HAVE_" panel_upper, 1, 0, "Define if you have the '" panel_lib "' library") + V["have_panel"] = "yes" + } else { + V["have_panel"] = "no" + } + } else { + V["have_curses"] = "no" + } +} + +function u_check_curses( CURSES_INCLUDES, _have_any_curses_h, _i_fn, _i_h, _n_fn, ac_cv_search_initscr, ac_cv_search_update_panels, curses_cflags, curses_funcs, curses_have, curses_libs, fn, h, panel_cflags, panel_have, panel_libs, _al_15, _as_16) { + delete _al_15 + delete _as_16 + u__check_curses("ncursesw", "panelw") + if ((!((V["have_curses"] != "") && (V["have_curses"] != "no")))) { + u__check_curses("ncurses", "panel") + } + pyconf_save_env() + V["CPPFLAGS"] = _str_strip(V["CPPFLAGS"] " " V["CURSES_CFLAGS"] " " V["PANEL_CFLAGS"]) + pyconf_check_header("ncursesw/curses.h", "", "", "HAVE_NCURSESW_CURSES_H", "ac_cv_header_ncursesw_curses_h") + pyconf_check_header("ncursesw/ncurses.h", "", "", "HAVE_NCURSESW_NCURSES_H", "ac_cv_header_ncursesw_ncurses_h") + pyconf_check_header("ncursesw/panel.h", "", "", "HAVE_NCURSESW_PANEL_H", "ac_cv_header_ncursesw_panel_h") + pyconf_check_header("ncurses/curses.h", "", "", "HAVE_NCURSES_CURSES_H", "ac_cv_header_ncurses_curses_h") + pyconf_check_header("ncurses/ncurses.h", "", "", "HAVE_NCURSES_NCURSES_H", "ac_cv_header_ncurses_ncurses_h") + pyconf_check_header("ncurses/panel.h", "", "", "HAVE_NCURSES_PANEL_H", "ac_cv_header_ncurses_panel_h") + pyconf_check_header("curses.h", "", "", "HAVE_CURSES_H", "ac_cv_header_curses_h") + pyconf_check_header("ncurses.h", "", "", "HAVE_NCURSES_H", "ac_cv_header_ncurses_h") + pyconf_check_header("panel.h", "", "", "HAVE_PANEL_H", "ac_cv_header_panel_h") + V["LIBS"] = _str_strip(V["LIBS"] " " V["CURSES_LIBS"] " " V["PANEL_LIBS"]) + ac_cv_search_initscr = pyconf_search_libs("initscr", "ncursesw ncurses") + if ((!((ac_cv_search_initscr != "") && (ac_cv_search_initscr != "no")))) { + V["have_curses"] = "no" + } else if ((!((V["have_curses"] != "") && (V["have_curses"] != "no")))) { + V["have_curses"] = "yes" + if ((!((V["CURSES_LIBS"] != "") && (V["CURSES_LIBS"] != "no")))) { + V["CURSES_LIBS"] = ((ac_cv_search_initscr != "none required") ? ac_cv_search_initscr : "") + } + } + ac_cv_search_update_panels = pyconf_search_libs("update_panels", "panelw panel") + if ((!((ac_cv_search_update_panels != "") && (ac_cv_search_update_panels != "no")))) { + V["have_panel"] = "no" + } else if ((!((V["have_panel"] != "") && (V["have_panel"] != "no")))) { + V["have_panel"] = "yes" + if ((!((V["PANEL_LIBS"] != "") && (V["PANEL_LIBS"] != "no")))) { + V["PANEL_LIBS"] = ((ac_cv_search_update_panels != "none required") ? ac_cv_search_update_panels : "") + } + } + curses_have = V["have_curses"] + panel_have = V["have_panel"] + curses_libs = V["CURSES_LIBS"] + panel_libs = V["PANEL_LIBS"] + curses_cflags = V["CURSES_CFLAGS"] + panel_cflags = V["PANEL_CFLAGS"] + _have_any_curses_h = "no" + _al_15[1] = "HAVE_NCURSESW_NCURSES_H" + _al_15[2] = "HAVE_NCURSESW_CURSES_H" + _al_15[3] = "HAVE_NCURSES_NCURSES_H" + _al_15[4] = "HAVE_NCURSES_CURSES_H" + _al_15[5] = "HAVE_NCURSES_H" + _al_15[6] = "HAVE_CURSES_H" + for (_i_h = 1; (_i_h <= 6); _i_h = (_i_h + 1)) { + h = _al_15[_i_h] + if (pyconf_is_defined(h)) { + _have_any_curses_h = "yes" + break + } + } + if (((_have_any_curses_h != "") && (_have_any_curses_h != "no"))) { + curses_cflags = _str_strip(_str_replace(curses_cflags, "-D_XOPEN_SOURCE=600", "")) + panel_cflags = _str_strip(_str_replace(panel_cflags, "-D_XOPEN_SOURCE=600", "")) + if ((V["ac_sys_system"] == "Darwin")) { + curses_cflags = _str_strip(curses_cflags " -D_XOPEN_SOURCE_EXTENDED=1") + } + CURSES_INCLUDES = "#define NCURSES_OPAQUE 0\n#if defined(HAVE_NCURSESW_NCURSES_H)\n# include \n#elif defined(HAVE_NCURSESW_CURSES_H)\n# include \n#elif defined(HAVE_NCURSES_NCURSES_H)\n# include \n#elif defined(HAVE_NCURSES_CURSES_H)\n# include \n#elif defined(HAVE_NCURSES_H)\n# include \n#elif defined(HAVE_CURSES_H)\n# include \n#endif\n" + pyconf_check_header("term.h", "", "", "HAVE_TERM_H", "ac_cv_header_term_h") + if (pyconf_compile_check("", CURSES_INCLUDES "\nint main(void) { int rtn; rtn = mvwdelch(0,0,0); return 0; }")) { + pyconf_define("MVWDELCH_IS_EXPRESSION", 1, 0, "Define if mvwdelch in curses.h is an expression.") + } + if (pyconf_compile_check("", CURSES_INCLUDES "\nint main(void) { WINDOW *w; w->_flags = 0; return 0; }")) { + pyconf_define("WINDOW_HAS_FLAGS", 1, 0, "Define if WINDOW in curses.h offers a field _flags.") + } + curses_funcs = "is_pad" " " "is_term_resized" " " "resize_term" " " "resizeterm" " " "immedok" " " "syncok" " " "wchgat" " " "filter" " " "has_key" " " "typeahead" " " "use_env" + _n_fn = split(curses_funcs, _as_16, " ") + for (_i_fn = 1; (_i_fn <= _n_fn); _i_fn = (_i_fn + 1)) { + fn = _as_16[_i_fn] + if (pyconf_compile_check("", CURSES_INCLUDES "\n#ifndef " fn "\nvoid *x=" fn ";\n#endif\n" "\nint main(void) { return 0; }")) { + pyconf_define("HAVE_CURSES_" toupper(fn), 1, 0, "Define if you have the '" fn "' function.") + } + } + } + pyconf_restore_env() + V["have_curses"] = curses_have + V["have_panel"] = panel_have + V["CURSES_LIBS"] = curses_libs + V["PANEL_LIBS"] = panel_libs + V["CURSES_CFLAGS"] = curses_cflags + V["PANEL_CFLAGS"] = panel_cflags + v_export("CURSES_LIBS") + v_export("CURSES_CFLAGS") + v_export("PANEL_LIBS") + v_export("PANEL_CFLAGS") +} + +# --- conf_filesystem --- +function u_check_device_macros( ac_cv_device_macros, device_macros_code) { + pyconf_checking("for major, minor, and makedev") + device_macros_code = "\n #if defined(MAJOR_IN_MKDEV)\n #include \n #elif defined(MAJOR_IN_SYSMACROS)\n #include \n #include \n #else\n #include \n #endif\n " + ac_cv_device_macros = (pyconf_link_check("", device_macros_code "\nint main(void) { makedev(major(0),minor(0)); return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_device_macros) + if (((ac_cv_device_macros != "") && (ac_cv_device_macros != "no"))) { + pyconf_define("HAVE_DEVICE_MACROS", 1, 0, "Define to 1 if you have the device macros.") + } + pyconf_define("SYS_SELECT_WITH_SYS_TIME", 1, 0, "Define if you can safely include both and (which you can't on SCO ODT 3.0).") +} + +function u_check_device_files() { + pyconf_notice("checking for device files") + if (((V["ac_sys_system"] == "Linux-android") || (V["ac_sys_system"] == "iOS"))) { + V["ac_cv_file__dev_ptmx"] = "no" + V["ac_cv_file__dev_ptc"] = "no" + } else { + if (((V["cross_compiling"] != "") && (V["cross_compiling"] != "no"))) { + if ((!((V["ac_cv_file__dev_ptmx"] != "") && (V["ac_cv_file__dev_ptmx"] != "no")))) { + pyconf_checking("for /dev/ptmx") + pyconf_result("not set") + pyconf_error("set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling") + } + if ((!((V["ac_cv_file__dev_ptc"] != "") && (V["ac_cv_file__dev_ptc"] != "no")))) { + pyconf_checking("for /dev/ptc") + pyconf_result("not set") + pyconf_error("set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling") + } + } else { + pyconf_checking("for /dev/ptmx") + V["ac_cv_file__dev_ptmx"] = (pyconf_path_exists("/dev/ptmx") ? "yes" : "no") + pyconf_result(V["ac_cv_file__dev_ptmx"]) + pyconf_checking("for /dev/ptc") + V["ac_cv_file__dev_ptc"] = (pyconf_path_exists("/dev/ptc") ? "yes" : "no") + pyconf_result(V["ac_cv_file__dev_ptc"]) + } + if (((V["ac_cv_file__dev_ptmx"] != "") && (V["ac_cv_file__dev_ptmx"] != "no"))) { + pyconf_define("HAVE_DEV_PTMX", 1, 0, "Define to 1 if you have the /dev/ptmx device file.") + } + if (((V["ac_cv_file__dev_ptc"] != "") && (V["ac_cv_file__dev_ptc"] != "no"))) { + pyconf_define("HAVE_DEV_PTC", 1, 0, "Define to 1 if you have the /dev/ptc device file.") + } + } + if ((V["ac_sys_system"] == "Darwin")) { + V["LIBS"] = _str_strip(V["LIBS"] " -framework CoreFoundation") + } +} + +function u_check_dirent() { + if (pyconf_link_check("if the dirent structure of a d_type field", "\n#include \nint main(void) {\n struct dirent entry;\n return entry.d_type == DT_UNKNOWN;\n}\n")) { + pyconf_define("HAVE_DIRENT_D_TYPE", 1, 0, "Define to 1 if the dirent structure has a d_type field") + } +} + +# --- conf_init --- +function u_setup_platform_defines() { + pyconf_define("_NETBSD_SOURCE", 1, 0, "Define on NetBSD to activate all library features") + pyconf_define("__BSD_VISIBLE", 1, 0, "Define on FreeBSD to activate all library features") + pyconf_define("_DARWIN_C_SOURCE", 1, 0, "Define on Darwin to activate all library features") +} + +function u_setup_source_dirs( builddir, out_of_tree, srcdir_abs, srcdir_raw) { + srcdir_raw = ((pyconf__srcdir_arg != "") ? pyconf__srcdir_arg : ((V["srcdir"] != "") ? V["srcdir"] : ".")) + srcdir_abs = pyconf_abspath(srcdir_raw) + builddir = pyconf_abspath(".") + out_of_tree = ((srcdir_abs != builddir) ? "yes" : "no") + V["srcdir"] = ((!((out_of_tree != "") && (out_of_tree != "no"))) ? "." : srcdir_abs) + v_export("srcdir") + V["abs_srcdir"] = srcdir_abs + v_export("abs_srcdir") + V["abs_builddir"] = builddir + v_export("abs_builddir") + pyconf_srcdir = srcdir_abs + if (((out_of_tree != "") && (out_of_tree != "no"))) { + V["BASECPPFLAGS"] = "-IObjects -IInclude -IPython" + v_export("BASECPPFLAGS") + } else { + V["BASECPPFLAGS"] = "" + v_export("BASECPPFLAGS") + } + V["srcdir_abs"] = srcdir_abs +} + +function u_setup_git_metadata( HAS_GIT, git_dir) { + delete _va24 + _va24[1] = V["srcdir_abs"] + _va24[2] = ".git" + _va24[0] = 2 + git_dir = pyconf_path_join(_va24) + if (pyconf_path_exists(git_dir)) { + HAS_GIT = ((pyconf_find_prog("git") != "") ? "yes" : "no") + } else { + HAS_GIT = "no" + } + if (((HAS_GIT != "") && (HAS_GIT != "no"))) { + V["GITVERSION"] = "git --git-dir $(srcdir)/.git rev-parse --short HEAD" + V["GITTAG"] = "git --git-dir $(srcdir)/.git describe --all --always --dirty" + V["GITBRANCH"] = "git --git-dir $(srcdir)/.git name-rev --name-only HEAD" + } else { + V["GITVERSION"] = "" + V["GITTAG"] = "" + V["GITBRANCH"] = "" + } + v_export("GITVERSION") + v_export("GITTAG") + v_export("GITBRANCH") +} + +function u_setup_canonical_host() { + pyconf_canonical_host() + V["cross_compiling"] = pyconf_cross_compiling + V["host"] = pyconf_host + V["host_cpu"] = pyconf_host_cpu + V["build"] = pyconf_build + v_export("build") + v_export("host") + if ((V["cross_compiling"] == "maybe")) { + pyconf_error("error: Cross compiling requires --host=HOST-TUPLE and --build=ARCH") + } + pyconf_rm_f("pybuilddir.txt") +} + +function u_setup_build_python( PYTHON_FOR_FREEZE, PYTHON_FOR_REGEN, bp_raw, build_python_ver, with_build_python) { + bp_raw = pyconf_option_value("with_build_python") + PYTHON_FOR_REGEN = "" + with_build_python = "" + if ((bp_raw != "")) { + pyconf_checking("for --with-build-python") + if ((bp_raw == "yes")) { + with_build_python = "python" PYTHON_VERSION + } else if ((bp_raw == "no")) { + pyconf_error("error: invalid --with-build-python option: expected path or 'yes', not 'no'") + } else { + with_build_python = bp_raw + } + if ((!(pyconf_find_prog(with_build_python) != ""))) { + pyconf_error("error: invalid or missing build python binary '" with_build_python "'") + } + delete _va25 + _va25[1] = with_build_python + _va25[2] = "-c" + _va25[3] = "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')" + _va25[0] = 3 + build_python_ver = pyconf_cmd_output(_va25) + if ((build_python_ver != PYTHON_VERSION)) { + pyconf_error("error: '" with_build_python "' has incompatible version " build_python_ver " (expected: " PYTHON_VERSION ")") + } + PYTHON_FOR_REGEN = with_build_python + PYTHON_FOR_FREEZE = with_build_python + V["PYTHON_FOR_BUILD"] = "_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) _PYTHON_SYSCONFIGDATA_PATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`) " with_build_python + pyconf_result(with_build_python) + } else { + if (((V["cross_compiling"] != "") && (V["cross_compiling"] != "no"))) { + pyconf_error("error: Cross compiling requires --with-build-python") + } + V["PYTHON_FOR_BUILD"] = "./$(BUILDPYTHON) -E" + PYTHON_FOR_FREEZE = "./_bootstrap_python" + } + v_export("PYTHON_FOR_BUILD") + pyconf_checking("Python for regen version") + if ((pyconf_find_prog(PYTHON_FOR_REGEN) != "")) { + delete _va26 + _va26[1] = PYTHON_FOR_REGEN + _va26[2] = "-V" + _va26[0] = 2 + pyconf_result(pyconf_cmd_output(_va26)) + } else { + pyconf_result("missing") + } + V["PYTHON_FOR_FREEZE"] = PYTHON_FOR_FREEZE + v_export("PYTHON_FOR_FREEZE") + u_setup_freeze_module() + if ((with_build_python == "")) { + delete _va27 + _va27[1] = "python" PYTHON_VERSION + _va27[2] = "python3.15" + _va27[3] = "python3.14" + _va27[4] = "python3.13" + _va27[5] = "python3.12" + _va27[6] = "python3.11" + _va27[7] = "python3.10" + _va27[8] = "python3" + _va27[9] = "python" + _va27[0] = 9 + PYTHON_FOR_REGEN = pyconf_check_progs(_va27) + } + V["PYTHON_FOR_REGEN"] = PYTHON_FOR_REGEN + v_export("PYTHON_FOR_REGEN") +} + +function u_setup_prefix_and_dirs() { + V["prefix"] = pyconf_get_dir_arg("prefix", "/usr/local") + if ((!1)) { + V["prefix"] = "/usr/local" + } + if (((V["prefix"] != "/") && _str_endswith(V["prefix"], "/"))) { + V["prefix"] = _str_removesuffix(V["prefix"], "/") + } + v_export("prefix") + V["exec_prefix"] = pyconf_get_dir_arg("exec_prefix", "${prefix}") + v_export("exec_prefix") + V["datarootdir"] = pyconf_get_dir_arg("datarootdir", "${prefix}/share") + v_export("datarootdir") + V["bindir"] = pyconf_get_dir_arg("bindir", "${exec_prefix}/bin") + v_export("bindir") + V["libdir"] = pyconf_get_dir_arg("libdir", "${exec_prefix}/lib") + v_export("libdir") + V["mandir"] = pyconf_get_dir_arg("mandir", "${datarootdir}/man") + v_export("mandir") + V["includedir"] = pyconf_get_dir_arg("includedir", "${prefix}/include") + v_export("includedir") + V["BINDIR"] = pyconf_get_dir_arg("bindir", "${exec_prefix}/bin") + v_export("BINDIR") + V["LIBDIR"] = pyconf_get_dir_arg("libdir", "${exec_prefix}/lib") + v_export("LIBDIR") + V["MANDIR"] = pyconf_get_dir_arg("mandir", "${datarootdir}/man") + v_export("MANDIR") + V["INCLUDEDIR"] = pyconf_get_dir_arg("includedir", "${prefix}/include") + v_export("INCLUDEDIR") + V["VPATH"] = V["srcdir"] + v_export("VPATH") +} + +function u_setup_version_and_config_args() { + V["VERSION"] = PYTHON_VERSION + v_export("VERSION") + V["SOVERSION"] = "1.0" + v_export("SOVERSION") + V["CONFIG_ARGS"] = "" + v_export("CONFIG_ARGS") +} + +function u_setup_pkg_config( pkgconf_raw) { + pkgconf_raw = pyconf_option_value_or("with_pkg_config", "check") + if (((pkgconf_raw == "yes") || (pkgconf_raw == "check"))) { + V["PKG_CONFIG"] = pyconf_find_prog("pkg-config") + } else if ((pkgconf_raw == "no")) { + V["PKG_CONFIG"] = "" + } else { + pyconf_error("error: invalid argument --with-pkg-config=" pkgconf_raw) + } + if (((pkgconf_raw == "yes") && (!((V["PKG_CONFIG"] != "") && (V["PKG_CONFIG"] != "no"))))) { + pyconf_error("error: pkg-config is required") + } + ENV["PKG_CONFIG"] = V["PKG_CONFIG"] + MODIFIED_ENV["PKG_CONFIG"] = 1 +} + +function u_setup_missing_stdlib_config( msc_raw) { + msc_raw = pyconf_option_value_or("with_missing_stdlib_config", "") + V["MISSING_STDLIB_CONFIG"] = msc_raw + v_export("MISSING_STDLIB_CONFIG") +} + +# --- conf_macos --- +function u_setup_ios_cross_tools() { + if ((!((V["AR"] != "") && (V["AR"] != "no")))) { + if (pyconf_fnmatch(V["host"], "aarch64-apple-ios*-simulator")) { + V["AR"] = "arm64-apple-ios-simulator-ar" + } else if (pyconf_fnmatch(V["host"], "aarch64-apple-ios*")) { + V["AR"] = "arm64-apple-ios-ar" + } else if (pyconf_fnmatch(V["host"], "x86_64-apple-ios*-simulator")) { + V["AR"] = "x86_64-apple-ios-simulator-ar" + } + } + if ((!((V["CC"] != "") && (V["CC"] != "no")))) { + if (pyconf_fnmatch(V["host"], "aarch64-apple-ios*-simulator")) { + V["CC"] = "arm64-apple-ios-simulator-clang" + } else if (pyconf_fnmatch(V["host"], "aarch64-apple-ios*")) { + V["CC"] = "arm64-apple-ios-clang" + } else if (pyconf_fnmatch(V["host"], "x86_64-apple-ios*-simulator")) { + V["CC"] = "x86_64-apple-ios-simulator-clang" + } + } + if ((!((V["CPP"] != "") && (V["CPP"] != "no")))) { + if (pyconf_fnmatch(V["host"], "aarch64-apple-ios*-simulator")) { + V["CPP"] = "arm64-apple-ios-simulator-cpp" + } else if (pyconf_fnmatch(V["host"], "aarch64-apple-ios*")) { + V["CPP"] = "arm64-apple-ios-cpp" + } else if (pyconf_fnmatch(V["host"], "x86_64-apple-ios*-simulator")) { + V["CPP"] = "x86_64-apple-ios-simulator-cpp" + } + } + if ((!((V["CXX"] != "") && (V["CXX"] != "no")))) { + if (pyconf_fnmatch(V["host"], "aarch64-apple-ios*-simulator")) { + V["CXX"] = "arm64-apple-ios-simulator-clang++" + } else if (pyconf_fnmatch(V["host"], "aarch64-apple-ios*")) { + V["CXX"] = "arm64-apple-ios-clang++" + } else if (pyconf_fnmatch(V["host"], "x86_64-apple-ios*-simulator")) { + V["CXX"] = "x86_64-apple-ios-simulator-clang++" + } + } +} + +function u_setup_universalsdk( _, dylib, enable_universalsdk, file_out, usdk_raw, val, _ar_17) { + delete _ar_17 + pyconf_checking("for --enable-universalsdk") + usdk_raw = pyconf_option_value("enable_universalsdk") + V["UNIVERSALSDK"] = "" + enable_universalsdk = "" + if ((usdk_raw != "")) { + if ((usdk_raw == "yes")) { + delete _va28 + _va28[1] = "/usr/bin/xcodebuild" + _va28[2] = "-version" + _va28[3] = "-sdk" + _va28[4] = "macosx" + _va28[5] = "Path" + _va28[0] = 5 + val = pyconf_cmd_output(_va28) + if ((!(index(val, ".sdk") > 0))) { + val = "/Developer/SDKs/MacOSX10.4u.sdk" + if ((!pyconf_path_is_dir(val))) { + val = "/" + } + } + } else if ((usdk_raw == "no")) { + val = "" + } else { + val = usdk_raw + } + if ((val == "")) { + V["UNIVERSALSDK"] = "" + enable_universalsdk = "" + } else { + V["UNIVERSALSDK"] = val + enable_universalsdk = val + if ((!pyconf_path_is_dir(V["UNIVERSALSDK"]))) { + pyconf_error("error: --enable-universalsdk specifies non-existing SDK: " V["UNIVERSALSDK"]) + } + } + } + if (((V["UNIVERSALSDK"] != "") && (V["UNIVERSALSDK"] != "no"))) { + pyconf_result(V["UNIVERSALSDK"]) + } else { + pyconf_result("no") + } + v_export("UNIVERSALSDK") + V["enable_universalsdk"] = enable_universalsdk + V["ARCH_RUN_32BIT"] = "" + v_export("ARCH_RUN_32BIT") + V["UNIVERSAL_ARCHS"] = "32-bit" + if (((pyconf_platform_system() == "Darwin") && ((V["UNIVERSALSDK"] != "") && (V["UNIVERSALSDK"] != "no")))) { + delete _va29 + _va29[1] = V["UNIVERSALSDK"] + _va29[2] = "usr/lib/libSystem.dylib" + _va29[0] = 2 + dylib = pyconf_path_join(_va29) + delete _va30 + _va30[1] = "/usr/bin/file" + _va30[2] = "-L" + _va30[3] = dylib + _va30[0] = 3 + pyconf_cmd_status(_va30, _ar_17) + _ = _ar_17[0] + file_out = _ar_17[1] + if ((!(index(file_out, "ppc") > 0))) { + V["UNIVERSAL_ARCHS"] = "intel" + } + } + V["LIPO_32BIT_FLAGS"] = "" + v_export("LIPO_32BIT_FLAGS") + V["LIPO_INTEL64_FLAGS"] = "" + v_export("LIPO_INTEL64_FLAGS") + pyconf_checking("for --with-universal-archs") + if (pyconf_option_given("with_universal_archs")) { + V["UNIVERSAL_ARCHS"] = pyconf_option_value_or("with_universal_archs", V["UNIVERSAL_ARCHS"]) + } + if (((V["UNIVERSALSDK"] != "") && (V["UNIVERSALSDK"] != "no"))) { + pyconf_result(V["UNIVERSAL_ARCHS"]) + } else { + pyconf_result("no") + } +} + +function u_setup_framework_name( fw_name) { + fw_name = pyconf_option_value("with_framework_name") + if (((fw_name != "") && (!((fw_name == "yes") || (fw_name == "no"))))) { + V["PYTHONFRAMEWORK"] = fw_name + V["PYTHONFRAMEWORKDIR"] = fw_name ".framework" + V["PYTHONFRAMEWORKIDENTIFIER"] = "org.python." tolower(fw_name) + } else { + V["PYTHONFRAMEWORK"] = "Python" + V["PYTHONFRAMEWORKDIR"] = "Python.framework" + V["PYTHONFRAMEWORKIDENTIFIER"] = "org.python.python" + } +} + +function u_setup_framework( ac_default_prefix, fw_raw, val) { + fw_raw = pyconf_option_value("enable_framework") + V["enable_framework"] = fw_raw + V["PYTHONFRAMEWORKPREFIX"] = "" + V["PYTHONFRAMEWORKINSTALLDIR"] = "" + V["PYTHONFRAMEWORKINSTALLNAMEPREFIX"] = "" + V["RESSRCDIR"] = "" + V["FRAMEWORKINSTALLFIRST"] = "" + V["FRAMEWORKINSTALLLAST"] = "" + V["FRAMEWORKALTINSTALLFIRST"] = "" + V["FRAMEWORKALTINSTALLLAST"] = "" + V["FRAMEWORKPYTHONW"] = "" + V["FRAMEWORKUNIXTOOLSPREFIX"] = "" + V["FRAMEWORKINSTALLAPPSPREFIX"] = "" + V["INSTALLTARGETS"] = "commoninstall bininstall maninstall" + ac_default_prefix = "/usr/local" + if ((fw_raw != "")) { + val = fw_raw + if ((fw_raw == "yes")) { + if ((V["ac_sys_system"] == "Darwin")) { + val = "/Library/Frameworks" + } else if ((V["ac_sys_system"] == "iOS")) { + val = "Apple/iOS/Frameworks/$(MULTIARCH)" + } else { + pyconf_error("error: Unknown platform for framework build") + } + } + if ((val == "no")) { + if ((V["ac_sys_system"] == "iOS")) { + pyconf_error("error: iOS builds must use --enable-framework") + } + V["PYTHONFRAMEWORK"] = "" + V["PYTHONFRAMEWORKDIR"] = "no-framework" + V["FRAMEWORKUNIXTOOLSPREFIX"] = ((V["prefix"] != "NONE") ? V["prefix"] : ac_default_prefix) + V["enable_framework"] = "" + } else { + V["PYTHONFRAMEWORKPREFIX"] = val + V["PYTHONFRAMEWORKINSTALLDIR"] = V["PYTHONFRAMEWORKPREFIX"] "/" V["PYTHONFRAMEWORKDIR"] + if ((V["ac_sys_system"] == "Darwin")) { + u__setup_framework_darwin(val, ac_default_prefix) + } else if ((V["ac_sys_system"] == "iOS")) { + u__setup_framework_ios() + } else { + pyconf_error("error: Unknown platform for framework build") + } + } + } else { + if ((V["ac_sys_system"] == "iOS")) { + pyconf_error("error: iOS builds must use --enable-framework") + } + V["PYTHONFRAMEWORK"] = "" + V["PYTHONFRAMEWORKDIR"] = "no-framework" + V["FRAMEWORKUNIXTOOLSPREFIX"] = ((V["prefix"] != "NONE") ? V["prefix"] : ac_default_prefix) + V["enable_framework"] = "" + } + u__export_framework_vars() +} + +function u__setup_framework_darwin(val, ac_default_prefix, mdir) { + V["FRAMEWORKINSTALLFIRST"] = "frameworkinstallversionedstructure" + V["FRAMEWORKALTINSTALLFIRST"] = "frameworkinstallversionedstructure " + V["FRAMEWORKINSTALLLAST"] = "frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools" + V["FRAMEWORKALTINSTALLLAST"] = "frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools" + V["FRAMEWORKPYTHONW"] = "frameworkpythonw" + V["FRAMEWORKINSTALLAPPSPREFIX"] = "/Applications" + V["INSTALLTARGETS"] = "commoninstall bininstall maninstall" + V["FRAMEWORKUNIXTOOLSPREFIX"] = ((V["prefix"] != "NONE") ? V["prefix"] : ac_default_prefix) + if (_str_startswith(val, "/System")) { + V["FRAMEWORKINSTALLAPPSPREFIX"] = "/Applications" + if ((V["prefix"] == "NONE")) { + V["FRAMEWORKUNIXTOOLSPREFIX"] = "/usr" + } + } else if (_str_startswith(val, "/Library")) { + V["FRAMEWORKINSTALLAPPSPREFIX"] = "/Applications" + } else if (_str_endswith(val, "/Library/Frameworks")) { + mdir = pyconf_path_parent(pyconf_path_parent(val)) + V["FRAMEWORKINSTALLAPPSPREFIX"] = mdir "/Applications" + if ((V["prefix"] == "NONE")) { + V["FRAMEWORKUNIXTOOLSPREFIX"] = mdir + } + } + V["prefix"] = V["PYTHONFRAMEWORKINSTALLDIR"] "/Versions/" V["VERSION"] + V["PYTHONFRAMEWORKINSTALLNAMEPREFIX"] = V["prefix"] + V["RESSRCDIR"] = "Mac/Resources/framework" + delete _va31 + _va31[1] = "Mac/Makefile" + _va31[2] = "Mac/PythonLauncher/Makefile" + _va31[3] = "Mac/Resources/framework/Info.plist" + _va31[4] = "Mac/Resources/app/Info.plist" + _va31[0] = 4 + pyconf_config_files(_va31) +} + +function u__setup_framework_ios() { + V["FRAMEWORKINSTALLFIRST"] = "frameworkinstallunversionedstructure" + V["FRAMEWORKALTINSTALLFIRST"] = "frameworkinstallunversionedstructure " + V["FRAMEWORKINSTALLLAST"] = "frameworkinstallmobileheaders" + V["FRAMEWORKALTINSTALLLAST"] = "frameworkinstallmobileheaders" + V["FRAMEWORKPYTHONW"] = "" + V["INSTALLTARGETS"] = "libinstall inclinstall sharedinstall" + V["prefix"] = V["PYTHONFRAMEWORKPREFIX"] + V["PYTHONFRAMEWORKINSTALLNAMEPREFIX"] = "@rpath/" V["PYTHONFRAMEWORKDIR"] + V["RESSRCDIR"] = "Apple/iOS/Resources" + delete _va32 + _va32[1] = "Apple/iOS/Resources/Info.plist" + _va32[0] = 1 + pyconf_config_files(_va32) +} + +function u__export_framework_vars() { + v_export("PYTHONFRAMEWORK") + v_export("PYTHONFRAMEWORKIDENTIFIER") + v_export("PYTHONFRAMEWORKDIR") + v_export("PYTHONFRAMEWORKPREFIX") + v_export("PYTHONFRAMEWORKINSTALLDIR") + v_export("PYTHONFRAMEWORKINSTALLNAMEPREFIX") + v_export("RESSRCDIR") + v_export("FRAMEWORKINSTALLFIRST") + v_export("FRAMEWORKINSTALLLAST") + v_export("FRAMEWORKALTINSTALLFIRST") + v_export("FRAMEWORKALTINSTALLLAST") + v_export("FRAMEWORKPYTHONW") + v_export("FRAMEWORKUNIXTOOLSPREFIX") + v_export("FRAMEWORKINSTALLAPPSPREFIX") + v_export("INSTALLTARGETS") + pyconf_define_unquoted("_PYTHONFRAMEWORK", "\"" V["PYTHONFRAMEWORK"] "\"", "framework name") +} + +function u_setup_app_store_compliance( asc_raw) { + pyconf_checking("for --with-app-store-compliance") + asc_raw = pyconf_option_value("with_app_store_compliance") + if (((asc_raw != "") && (asc_raw != "no"))) { + if ((asc_raw == "yes")) { + if (((V["ac_sys_system"] == "Darwin") || (V["ac_sys_system"] == "iOS"))) { + V["APP_STORE_COMPLIANCE_PATCH"] = "Mac/Resources/app-store-compliance.patch" + pyconf_result("applying default app store compliance patch") + } else { + pyconf_error("error: no default app store compliance patch available for " V["ac_sys_system"]) + } + } else { + V["APP_STORE_COMPLIANCE_PATCH"] = asc_raw + pyconf_result("applying custom app store compliance patch") + } + } else if ((V["ac_sys_system"] == "iOS")) { + V["APP_STORE_COMPLIANCE_PATCH"] = "Mac/Resources/app-store-compliance.patch" + pyconf_result("applying default app store compliance patch") + } else { + V["APP_STORE_COMPLIANCE_PATCH"] = "" + pyconf_result("not patching for app store compliance") + } + v_export("APP_STORE_COMPLIANCE_PATCH") +} + +function u_setup_deployment_targets_and_flags() { + V["CONFIGURE_MACOSX_DEPLOYMENT_TARGET"] = "" + v_export("CONFIGURE_MACOSX_DEPLOYMENT_TARGET") + V["EXPORT_MACOSX_DEPLOYMENT_TARGET"] = "#" + v_export("EXPORT_MACOSX_DEPLOYMENT_TARGET") + v_export("IPHONEOS_DEPLOYMENT_TARGET") + if ((!("IPHONEOS_DEPLOYMENT_TARGET" in V))) { + V["IPHONEOS_DEPLOYMENT_TARGET"] = "" + } + V["CFLAGS"] = V["CFLAGS"] + v_export("CFLAGS") + V["CPPFLAGS"] = V["CPPFLAGS"] + v_export("CPPFLAGS") + V["LDFLAGS"] = V["LDFLAGS"] + v_export("LDFLAGS") + V["LIBS"] = V["LIBS"] + v_export("LIBS") + V["BASECFLAGS"] = "" + v_export("BASECFLAGS") + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] + v_export("CFLAGS_NODIST") + V["LDFLAGS_NODIST"] = V["LDFLAGS_NODIST"] + v_export("LDFLAGS_NODIST") + if (pyconf_fnmatch(V["host"], "wasm64-*-emscripten")) { + V["CFLAGS"] = V["CFLAGS"] " -sMEMORY64=1" + V["LDFLAGS"] = V["LDFLAGS"] " -sMEMORY64=1" + } + if ((V["ac_sys_system"] == "iOS")) { + V["CFLAGS"] = V["CFLAGS"] " -mios-version-min=" V["IPHONEOS_DEPLOYMENT_TARGET"] + V["LDFLAGS"] = V["LDFLAGS"] " -mios-version-min=" V["IPHONEOS_DEPLOYMENT_TARGET"] + } +} + +function u_setup_macos_compiler( HAS_XCRUN, found_clang, found_gcc, ver) { + if ((V["ac_sys_system"] != "Darwin")) { + return + } + HAS_XCRUN = ((pyconf_find_prog("xcrun") != "") ? "yes" : "no") + pyconf_checking("macOS SDKROOT") + if ((!((V["SDKROOT"] != "") && (V["SDKROOT"] != "no")))) { + if (((HAS_XCRUN != "") && (HAS_XCRUN != "no"))) { + delete _va33 + _va33[1] = "xcrun" + _va33[2] = "--show-sdk-path" + _va33[0] = 2 + V["SDKROOT"] = pyconf_cmd_output(_va33) + } else { + V["SDKROOT"] = "/" + } + } + pyconf_result(V["SDKROOT"]) + if ((!((V["CC"] != "") && (V["CC"] != "no")))) { + found_gcc = pyconf_find_prog("gcc") + found_clang = pyconf_find_prog("clang") + if ((((found_gcc != "") && (found_gcc != "no")) && ((found_clang != "") && (found_clang != "no")))) { + delete _va34 + _va34[1] = found_gcc + _va34[2] = "--version" + _va34[0] = 2 + ver = pyconf_cmd_output(_va34) + if ((index(ver, "llvm-gcc") > 0)) { + V["CC"] = found_clang + V["CXX"] = found_clang "++" + } + } else if ((((found_clang != "") && (found_clang != "no")) && (!((found_gcc != "") && (found_gcc != "no"))))) { + V["CC"] = found_clang + V["CXX"] = found_clang "++" + } else if (((!((found_gcc != "") && (found_gcc != "no"))) && (!((found_clang != "") && (found_clang != "no"))))) { + delete _va35 + _va35[1] = "/usr/bin/xcrun" + _va35[2] = "-find" + _va35[3] = "clang" + _va35[0] = 3 + found_clang = pyconf_cmd_output(_va35) + if (((found_clang != "") && (found_clang != "no"))) { + V["CC"] = found_clang + delete _va36 + _va36[1] = "/usr/bin/xcrun" + _va36[2] = "-find" + _va36[3] = "clang++" + _va36[0] = 3 + V["CXX"] = pyconf_cmd_output(_va36) + } + } + } +} + +function u_setup_next_framework() { + pyconf_checking("for --enable-framework") + if (((V["enable_framework"] != "") && (V["enable_framework"] != "no"))) { + V["BASECFLAGS"] = V["BASECFLAGS"] " -fno-common -dynamic" + pyconf_define("WITH_NEXT_FRAMEWORK", 1, 0, "Define if you want to produce an OpenStep/Rhapsody framework (shared library plus accessory files).") + pyconf_result("yes") + if (((V["enable_shared"] != "") && (V["enable_shared"] != "no"))) { + pyconf_error("Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead") + } + } else { + pyconf_result("no") + } +} + +function u_setup_dsymutil( DSYMUTIL, DSYMUTIL_PATH, _opt_result, dsymutil_enabled) { + DSYMUTIL_PATH = "" + _opt_result = pyconf_option_process_bool("with_dsymutil") + dsymutil_enabled = _opt_result + if ((((dsymutil_enabled != "") && (dsymutil_enabled != "no")) && (V["MACHDEP"] != "darwin"))) { + pyconf_error("dsymutil debug linking is only available in macOS.") + } + DSYMUTIL = (((dsymutil_enabled != "") && (dsymutil_enabled != "no")) ? "true" : "") + if (((DSYMUTIL != "") && (DSYMUTIL != "no"))) { + DSYMUTIL_PATH = pyconf_find_prog("dsymutil") + if ((!((DSYMUTIL_PATH != "") && (DSYMUTIL_PATH != "no")))) { + pyconf_error("dsymutil command not found on $PATH") + } + } + V["DSYMUTIL"] = DSYMUTIL + v_export("DSYMUTIL") + V["DSYMUTIL_PATH"] = DSYMUTIL_PATH + v_export("DSYMUTIL_PATH") +} + +function u_check_dyld() { + pyconf_checking("for dyld") + if (_str_startswith(V["ac_sys_system"] "/" V["ac_sys_release"], "Darwin/")) { + pyconf_define("WITH_DYLD", 1, 0, "Define if you want to use the new-style (Openstep, Rhapsody, MacOS) dynamic linker (dyld) instead of the old-style (NextStep) dynamic linker (rld). Dyld is necessary to support frameworks.") + pyconf_result("always on for Darwin") + } else { + pyconf_result("no") + } +} + +function u__setup_darwin_flags() { + if (_str_endswith(V["UNIVERSALSDK"], "/MacOSX10.4u.sdk")) { + V["CC"] = "gcc-4.0" + V["CPP"] = "cpp-4.0" + } + pyconf_result(V["CC"]) + delete _va37 + _va37[1] = "-Werror" + _va37[0] = 1 + if (pyconf_check_compile_flag("-Wunguarded-availability", _va37)) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Werror=unguarded-availability" + } + V["LIPO_INTEL64_FLAGS"] = "" + if (((V["enable_universalsdk"] != "") && (V["enable_universalsdk"] != "no"))) { + u__setup_universal_archs() + } + v_export("ARCH_TRIPLES") + u__setup_macos_deployment_target() + pyconf_checking("if specified universal architectures work") + if ((!pyconf_link_check("", "#include \nint main(void) { printf(\"%d\", 42); return 0; }"))) { + pyconf_result("no") + pyconf_error("error: check config.log and use the '--with-universal-archs' option") + } else { + pyconf_result("yes") + } +} + +function u__setup_universal_archs( ua) { + V["ARCH_TRIPLES"] = "" + ua = V["UNIVERSAL_ARCHS"] + if ((ua == "32-bit")) { + V["UNIVERSAL_ARCH_FLAGS"] = "-arch ppc -arch i386" + V["LIPO_32BIT_FLAGS"] = "" + V["ARCH_RUN_32BIT"] = "" + V["ARCH_TRIPLES"] = "ppc-apple-darwin i386-apple-darwin" + } else if ((ua == "64-bit")) { + V["UNIVERSAL_ARCH_FLAGS"] = "-arch ppc64 -arch x86_64" + V["LIPO_32BIT_FLAGS"] = "" + V["ARCH_RUN_32BIT"] = "true" + V["ARCH_TRIPLES"] = "ppc64-apple-darwin x86_64-apple-darwin" + } else if ((ua == "all")) { + V["UNIVERSAL_ARCH_FLAGS"] = "-arch i386 -arch ppc -arch ppc64 -arch x86_64" + V["LIPO_32BIT_FLAGS"] = "-extract ppc7400 -extract i386" + V["ARCH_RUN_32BIT"] = "/usr/bin/arch -i386 -ppc" + V["ARCH_TRIPLES"] = "i386-apple-darwin ppc-apple-darwin ppc64-apple-darwin x86_64-apple-darwin" + } else if ((ua == "universal2")) { + V["UNIVERSAL_ARCH_FLAGS"] = "-arch arm64 -arch x86_64" + V["LIPO_32BIT_FLAGS"] = "" + V["LIPO_INTEL64_FLAGS"] = "-extract x86_64" + V["ARCH_RUN_32BIT"] = "true" + V["ARCH_TRIPLES"] = "aarch64-apple-darwin x86_64-apple-darwin" + } else if ((ua == "intel")) { + V["UNIVERSAL_ARCH_FLAGS"] = "-arch i386 -arch x86_64" + V["LIPO_32BIT_FLAGS"] = "-extract i386" + V["ARCH_RUN_32BIT"] = "/usr/bin/arch -i386" + V["ARCH_TRIPLES"] = "i386-apple-darwin x86_64-apple-darwin" + } else if ((ua == "intel-32")) { + V["UNIVERSAL_ARCH_FLAGS"] = "-arch i386" + V["LIPO_32BIT_FLAGS"] = "" + V["ARCH_RUN_32BIT"] = "" + V["ARCH_TRIPLES"] = "i386-apple-darwin" + } else if ((ua == "intel-64")) { + V["UNIVERSAL_ARCH_FLAGS"] = "-arch x86_64" + V["LIPO_32BIT_FLAGS"] = "" + V["ARCH_RUN_32BIT"] = "true" + V["ARCH_TRIPLES"] = "x86_64-apple-darwin" + } else if ((ua == "3-way")) { + V["UNIVERSAL_ARCH_FLAGS"] = "-arch i386 -arch ppc -arch x86_64" + V["LIPO_32BIT_FLAGS"] = "-extract ppc7400 -extract i386" + V["ARCH_RUN_32BIT"] = "/usr/bin/arch -i386 -ppc" + V["ARCH_TRIPLES"] = "i386-apple-darwin ppc-apple-darwin x86_64-apple-darwin" + } else { + pyconf_error("error: proper usage is --with-universal-arch=universal2|32-bit|64-bit|all|intel|3-way") + } + if ((V["UNIVERSALSDK"] != "/")) { + V["CFLAGS"] = V["UNIVERSAL_ARCH_FLAGS"] " -isysroot " V["UNIVERSALSDK"] " " V["CFLAGS"] + V["LDFLAGS"] = V["UNIVERSAL_ARCH_FLAGS"] " -isysroot " V["UNIVERSALSDK"] " " V["LDFLAGS"] + V["CPPFLAGS"] = "-isysroot " V["UNIVERSALSDK"] " " V["CPPFLAGS"] + } else { + V["CFLAGS"] = V["UNIVERSAL_ARCH_FLAGS"] " " V["CFLAGS"] + V["LDFLAGS"] = V["UNIVERSAL_ARCH_FLAGS"] " " V["LDFLAGS"] + } + v_export("LIPO_32BIT_FLAGS") + v_export("LIPO_INTEL64_FLAGS") + v_export("ARCH_RUN_32BIT") +} + +function u__setup_macos_deployment_target( _tmp_split, arch, cur_target, cur_target_major, cur_target_minor, parts, sw, _idx_tmp) { + delete _idx_tmp + pyconf_checking("which MACOSX_DEPLOYMENT_TARGET to use") + delete _va38 + _va38[1] = "sw_vers" + _va38[2] = "-productVersion" + _va38[0] = 2 + sw = pyconf_cmd_output(_va38) + parts = _str_replace(sw, ".", " ") + cur_target_major = (((parts != "") && (parts != "no")) ? _split_index(parts, " ", 1) : 0) + cur_target_minor = ((length(parts) > 1) ? _split_index(parts, " ", 2) : 0) + cur_target = cur_target_major "." cur_target_minor + if (((cur_target_major == 10) && ((3 <= cur_target_minor) && (cur_target_minor <= 5)))) { + cur_target = "10.3" + if (((V["enable_universalsdk"] != "") && (V["enable_universalsdk"] != "no"))) { + if (((((V["UNIVERSAL_ARCHS"] == "all") || (V["UNIVERSAL_ARCHS"] == "3-way")) || (V["UNIVERSAL_ARCHS"] == "intel")) || (V["UNIVERSAL_ARCHS"] == "64-bit"))) { + cur_target = "10.5" + } + } else { + delete _va39 + _va39[1] = "/usr/bin/arch" + _va39[0] = 1 + arch = pyconf_cmd_output(_va39) + if ((arch == "i386")) { + cur_target = "10.4" + } + } + } + V["CONFIGURE_MACOSX_DEPLOYMENT_TARGET"] = ((V["MACOSX_DEPLOYMENT_TARGET"] != "") ? V["MACOSX_DEPLOYMENT_TARGET"] : cur_target) + V["MACOSX_DEPLOYMENT_TARGET"] = V["CONFIGURE_MACOSX_DEPLOYMENT_TARGET"] + ENV["MACOSX_DEPLOYMENT_TARGET"] = V["MACOSX_DEPLOYMENT_TARGET"] + MODIFIED_ENV["MACOSX_DEPLOYMENT_TARGET"] = 1 + V["EXPORT_MACOSX_DEPLOYMENT_TARGET"] = "" + v_export("MACOSX_DEPLOYMENT_TARGET") + v_export("CONFIGURE_MACOSX_DEPLOYMENT_TARGET") + v_export("EXPORT_MACOSX_DEPLOYMENT_TARGET") + pyconf_result(V["MACOSX_DEPLOYMENT_TARGET"]) +} + +# --- conf_math --- +function u_check_math_library( with_libc, with_libm) { + v_export("LIBM") + if ((V["ac_sys_system"] != "Darwin")) { + V["LIBM"] = "-lm" + } else { + V["LIBM"] = "" + } + pyconf_checking("for --with-libm=STRING") + with_libm = pyconf_option_value("with_libm") + if ((with_libm != "")) { + if ((with_libm == "no")) { + V["LIBM"] = "" + pyconf_result("force LIBM empty") + } else if ((with_libm != "yes")) { + V["LIBM"] = with_libm + pyconf_result("set LIBM=\"" with_libm "\"") + } else { + pyconf_error("proper usage is --with-libm=STRING") + } + } else { + pyconf_result("default LIBM=\"" V["LIBM"] "\"") + } + v_export("LIBC") + pyconf_checking("for --with-libc=STRING") + with_libc = pyconf_option_value("with_libc") + if ((with_libc != "")) { + if ((with_libc == "no")) { + V["LIBC"] = "" + pyconf_result("force LIBC empty") + } else if ((with_libc != "yes")) { + V["LIBC"] = with_libc + pyconf_result("set LIBC=\"" with_libc "\"") + } else { + pyconf_error("proper usage is --with-libc=STRING") + } + } else { + pyconf_result("default LIBC=\"" V["LIBC"] "\"") + } + if ((!pyconf_check_func("__fpu_control", "", "HAVE___FPU_CONTROL"))) { + pyconf_check_lib("ieee", "__fpu_control") + } +} + +function u__define_float_big() { + pyconf_define("DOUBLE_IS_BIG_ENDIAN_IEEE754", 1, 0, "Define if C doubles are 64-bit IEEE 754 binary format, stored with the most significant byte first") +} + +function u__define_float_little() { + pyconf_define("DOUBLE_IS_LITTLE_ENDIAN_IEEE754", 1, 0, "Define if C doubles are 64-bit IEEE 754 binary format, stored with the least significant byte first") +} + +function u__define_float_unknown() { + if ((index(pyconf_host_cpu, "arm") > 0)) { + pyconf_define("DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754", 1, 0, "Define if C doubles are 64-bit IEEE 754 binary format, stored in ARM mixed-endian order (byte order 45670123)") + } else { + pyconf_error("Unknown float word ordering. You need to manually preset ax_cv_c_float_words_bigendian=no (or yes) according to your system.") + } +} + +function u_check_gcc_asm_and_floating_point( ac_cv_gcc_asm_for_mc68881, ac_cv_gcc_asm_for_x64, ac_cv_gcc_asm_for_x87, ac_cv_x87_double_rounding, saved_cc) { + pyconf_checking("for x64 gcc inline assembler") + ac_cv_gcc_asm_for_x64 = (pyconf_link_check("", "\nint main(void) { __asm__ __volatile__ (\"movq %rcx, %rax\"); return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_gcc_asm_for_x64) + if (((ac_cv_gcc_asm_for_x64 != "") && (ac_cv_gcc_asm_for_x64 != "no"))) { + pyconf_define("HAVE_GCC_ASM_FOR_X64", 1, 0, "Define if we can use x64 gcc inline assembler") + } + pyconf_ax_c_float_words_bigendian() + if ((_pyconf_retval == "big")) { + u__define_float_big() + } else if ((_pyconf_retval == "little")) { + u__define_float_little() + } else if ((_pyconf_retval == "unknown")) { + u__define_float_unknown() + } + pyconf_checking("whether we can use gcc inline assembler to get and set x87 control word") + ac_cv_gcc_asm_for_x87 = (pyconf_link_check("", "\nint main(void) { \n unsigned short cw;\n __asm__ __volatile__ (\"fnstcw %0\" : \"=m\" (cw));\n __asm__ __volatile__ (\"fldcw %0\" : : \"m\" (cw)); return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_gcc_asm_for_x87) + if (((ac_cv_gcc_asm_for_x87 != "") && (ac_cv_gcc_asm_for_x87 != "no"))) { + pyconf_define("HAVE_GCC_ASM_FOR_X87", 1, 0, "Define if we can use gcc inline assembler to get and set x87 control word") + } + pyconf_checking("whether we can use gcc inline assembler to get and set mc68881 fpcr") + ac_cv_gcc_asm_for_mc68881 = (pyconf_link_check("", "\nint main(void) { \n unsigned int fpcr;\n __asm__ __volatile__ (\"fmove.l %%fpcr,%0\" : \"=dm\" (fpcr));\n __asm__ __volatile__ (\"fmove.l %0,%%fpcr\" : : \"dm\" (fpcr)); return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_gcc_asm_for_mc68881) + if (((ac_cv_gcc_asm_for_mc68881 != "") && (ac_cv_gcc_asm_for_mc68881 != "no"))) { + pyconf_define("HAVE_GCC_ASM_FOR_MC68881", 1, 0, "Define if we can use gcc inline assembler to get and set mc68881 fpcr") + } + pyconf_checking("for x87-style double rounding") + saved_cc = V["CC"] + V["CC"] = _str_strip(V["CC"] " " V["BASECFLAGS"]) + ac_cv_x87_double_rounding = (pyconf_run_check("", "\n #include \n #include \n int main(void) {\n volatile double x, y, z;\n x = 0.99999999999999989; /* 1-2**-53 */\n y = 1./x;\n if (y != 1.)\n exit(0);\n x = 1e16;\n y = 2.99999;\n z = x + y;\n if (z != 1e16+4.)\n exit(0);\n exit(1);\n }\n ") ? "no" : "yes") + V["CC"] = saved_cc + pyconf_result(ac_cv_x87_double_rounding) + if (((ac_cv_x87_double_rounding != "") && (ac_cv_x87_double_rounding != "no"))) { + pyconf_define("X87_DOUBLE_ROUNDING", 1, 0, "Define if arithmetic is subject to x87-style double rounding issue") + } +} + +function u_check_c99_math( _i_mfunc, libs_save, mfunc, _al_18) { + delete _al_18 + libs_save = V["LIBS"] + V["LIBS"] = _str_strip(V["LIBS"] " " V["LIBM"]) + _al_18[1] = "acosh" + _al_18[2] = "asinh" + _al_18[3] = "atanh" + _al_18[4] = "erf" + _al_18[5] = "erfc" + _al_18[6] = "expm1" + _al_18[7] = "log1p" + _al_18[8] = "log2" + for (_i_mfunc = 1; (_i_mfunc <= 8); _i_mfunc = (_i_mfunc + 1)) { + mfunc = _al_18[_i_mfunc] + if ((!pyconf_check_func(mfunc, "", ""))) { + pyconf_error("Python requires C99 compatible libm") + } + } + V["LIBS"] = libs_save +} + +function u_check_big_digits( big_digits_raw, enable_big_digits) { + pyconf_checking("digit size for Python's longs") + big_digits_raw = pyconf_option_value("enable_big_digits") + if ((big_digits_raw != "")) { + if ((big_digits_raw == "yes")) { + enable_big_digits = "30" + } else if ((big_digits_raw == "no")) { + enable_big_digits = "15" + } else if (((big_digits_raw == "15") || (big_digits_raw == "30"))) { + enable_big_digits = big_digits_raw + } else { + pyconf_error("bad value " big_digits_raw " for --enable-big-digits; value should be 15 or 30") + enable_big_digits = big_digits_raw + } + pyconf_result(enable_big_digits) + pyconf_define_unquoted("PYLONG_BITS_IN_DIGIT", enable_big_digits, "Define as the preferred size in bits of long digits") + } else { + pyconf_result("no value specified") + } +} + +function u_check_wchar( _i_line, _n_line, ac_cv_wchar_t_signed, line, os_name, os_release_content, wchar_size, wchar_unsigned, _as_19, _split_tmp) { + delete _as_19 + delete _split_tmp + if (pyconf_check_header("wchar.h")) { + pyconf_define("HAVE_WCHAR_H", 1, 0, "Define if the compiler provides a wchar.h header file.") + V["wchar_h"] = "yes" + } else { + V["wchar_h"] = "no" + } + if (((V["wchar_h"] != "") && (V["wchar_h"] != "no"))) { + pyconf_check_sizeof("wchar_t", 4, "wchar.h") + pyconf_checking("whether wchar_t is signed") + ac_cv_wchar_t_signed = (pyconf_run_check("", "\n #include \n int main()\n {\n return ((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);\n }\n ") ? "yes" : "no") + pyconf_result(ac_cv_wchar_t_signed) + pyconf_checking("whether wchar_t is usable") + wchar_size = ((V["ac_cv_sizeof_wchar_t"] != "") ? V["ac_cv_sizeof_wchar_t"] : "0") + wchar_unsigned = (((ac_cv_wchar_t_signed != "") && (ac_cv_wchar_t_signed != "no")) ? "no" : "yes") + if (((wchar_size >= 2) && ((wchar_unsigned != "") && (wchar_unsigned != "no")))) { + pyconf_define("HAVE_USABLE_WCHAR_T", 1, 0, "Define if you have a useable wchar_t type defined in wchar.h; useable means wchar_t must be an unsigned type with at least 16 bits. (see Include/unicodeobject.h).") + pyconf_result("yes") + } else { + pyconf_result("no") + } + } + if ((V["ac_sys_system"] == "SunOS")) { + if (pyconf_path_is_file("/etc/os-release")) { + os_release_content = pyconf_read_file("/etc/os-release") + os_name = "" + _n_line = split(os_release_content, _as_19, "\n") + for (_i_line = 1; (_i_line <= _n_line); _i_line = (_i_line + 1)) { + line = _as_19[_i_line] + if (_str_startswith(line, "NAME=")) { + os_name = _str_strip(_str_strip(_split_index(line, "=", 2))) + break + } + } + if ((os_name == "Oracle Solaris")) { + pyconf_define("HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION", 1, 0, "Define if the internal form of wchar_t in non-Unicode locales is not Unicode.") + } + } + } +} + +function u__use_bundled_libmpdec() { + V["LIBMPDEC_CFLAGS"] = "-I$(srcdir)/Modules/_decimal/libmpdec" + V["LIBMPDEC_LIBS"] = "-lm $(LIBMPDEC_A)" + V["LIBMPDEC_INTERNAL"] = "$(LIBMPDEC_HEADERS) $(LIBMPDEC_A)" + V["have_mpdec"] = "yes" +} + +function u_detect_libmpdec( _i_p, _n_p, _opt_result, ac_cv_gcc_asm_for_x64, ac_cv_gcc_asm_for_x87, ac_cv_sizeof_size_t, ac_cv_type___uint128_t, cc_name, cflags_parts_len, found_pkg, libmpdec_machine, libmpdec_system, libs_parts_len, output, p, parts, pkg, status, with_decimal_contextvar, with_pydebug, with_system_libmpdec, _ar_20, _as_21, cflags_parts, libs_parts, mflags) { + delete _ar_20 + delete _as_21 + delete cflags_parts + delete libs_parts + delete mflags + V["have_mpdec"] = "no" + V["LIBMPDEC_CFLAGS"] = "" + V["LIBMPDEC_LIBS"] = "" + V["LIBMPDEC_INTERNAL"] = "" + _opt_result = pyconf_option_process_value("with_system_libmpdec") + V["with_system_libmpdec"] = _opt_result + with_system_libmpdec = _opt_result + if ((with_system_libmpdec == "no")) { + u__use_bundled_libmpdec() + } else { + pkg = pyconf_find_prog("pkg-config") + found_pkg = "no" + if (((pkg != "") && (pkg != "no"))) { + delete _va40 + _va40[1] = pkg + _va40[2] = "--atleast-version=2.5.0" + _va40[3] = "libmpdec" + _va40[0] = 3 + if (pyconf_cmd(_va40)) { + delete _va41 + _va41[1] = pkg + _va41[2] = "--cflags" + _va41[3] = "--libs" + _va41[4] = "libmpdec" + _va41[0] = 4 + pyconf_cmd_status(_va41, _ar_20) + status = _ar_20[0] + output = _ar_20[1] + if ((status == 0)) { + parts = output + _n_p = split(parts, _as_21, " ") + for (_i_p = 1; (_i_p <= _n_p); _i_p = (_i_p + 1)) { + p = _as_21[_i_p] + if ((_str_startswith(p, "-I") || _str_startswith(p, "-D"))) { + cflags_parts[(cflags_parts_len + 1)] = p + cflags_parts_len = (cflags_parts_len + 1) + cflags_parts[0] = cflags_parts_len + } else { + libs_parts[(libs_parts_len + 1)] = p + libs_parts_len = (libs_parts_len + 1) + libs_parts[0] = libs_parts_len + } + } + V["LIBMPDEC_CFLAGS"] = _arr_join(cflags_parts, " ") + V["LIBMPDEC_LIBS"] = _arr_join(libs_parts, " ") + found_pkg = "yes" + } + } + } + if ((!((found_pkg != "") && (found_pkg != "no")))) { + V["LIBMPDEC_CFLAGS"] = "" + V["LIBMPDEC_LIBS"] = "-lmpdec -lm" + V["LIBMPDEC_INTERNAL"] = "" + } + if (pyconf_link_check("", "#include \n#if MPD_VERSION_HEX < 0x02050000\n# error \"mpdecimal 2.5.0 or higher required\"\n#endif\n\nint main(void) { const char *x = mpd_version(); return 0; }", V["LIBMPDEC_CFLAGS"] " " V["LIBMPDEC_LIBS"])) { + V["have_mpdec"] = "yes" + } else { + V["have_mpdec"] = "no" + } + } + with_pydebug = V["Py_DEBUG"] + if (((with_pydebug != "") && (with_pydebug != "no"))) { + V["LIBMPDEC_CFLAGS"] = V["LIBMPDEC_CFLAGS"] " -DTEST_COVERAGE" + } + _opt_result = pyconf_option_process_value("with_decimal_contextvar") + with_decimal_contextvar = _opt_result + if ((with_decimal_contextvar != "no")) { + pyconf_define("WITH_DECIMAL_CONTEXTVAR", 1, 0, "Define if you want build the _decimal module using a coroutine-local rather than a thread-local context") + } + if ((with_system_libmpdec == "no")) { + pyconf_checking("decimal libmpdec machine") + if (_str_startswith(V["ac_sys_system"], "Darwin")) { + libmpdec_machine = "universal" + } else { + ac_cv_sizeof_size_t = ((V["ac_cv_sizeof_size_t"] != "") ? V["ac_cv_sizeof_size_t"] : 8) + ac_cv_gcc_asm_for_x64 = V["ac_cv_gcc_asm_for_x64"] + ac_cv_type___uint128_t = V["ac_cv_type___uint128_t"] + ac_cv_gcc_asm_for_x87 = V["ac_cv_gcc_asm_for_x87"] + libmpdec_system = (_str_startswith(V["ac_sys_system"], "SunOS") ? "sunos" : "other") + libmpdec_machine = "unknown" + if ((ac_cv_sizeof_size_t == 8)) { + if (((ac_cv_gcc_asm_for_x64 != "") && (ac_cv_gcc_asm_for_x64 != "no"))) { + libmpdec_machine = "x64" + } else if (((ac_cv_type___uint128_t != "") && (ac_cv_type___uint128_t != "no"))) { + libmpdec_machine = "uint128" + } else { + libmpdec_machine = "ansi64" + } + } else if ((ac_cv_sizeof_size_t == 4)) { + if ((((ac_cv_gcc_asm_for_x87 != "") && (ac_cv_gcc_asm_for_x87 != "no")) && (libmpdec_system != "sunos"))) { + cc_name = V["ac_cv_cc_name"] + if (((index(cc_name, "gcc") > 0) || (index(cc_name, "clang") > 0))) { + libmpdec_machine = "ppro" + } else { + libmpdec_machine = "ansi32" + } + } else { + libmpdec_machine = "ansi32" + } + } + } + pyconf_result(libmpdec_machine) + mflags["x64"] = " -DCONFIG_64=1 -DASM=1" + mflags["uint128"] = " -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1" + mflags["ansi64"] = " -DCONFIG_64=1 -DANSI=1" + mflags["ppro"] = " -DCONFIG_32=1 -DANSI=1 -DASM=1 -Wno-unknown-pragmas" + mflags["ansi32"] = " -DCONFIG_32=1 -DANSI=1" + mflags["ansi_legacy"] = " -DCONFIG_32=1 -DANSI=1 -DLEGACY_COMPILER=1" + mflags["universal"] = " -DUNIVERSAL=1" + if ((libmpdec_machine in mflags)) { + V["LIBMPDEC_CFLAGS"] = V["LIBMPDEC_CFLAGS"] mflags[libmpdec_machine] + } else if ((libmpdec_machine == "unknown")) { + pyconf_fatal("_decimal: unsupported architecture") + } + if (((V["have_ipa_pure_const_bug"] != "") && (V["have_ipa_pure_const_bug"] != "no"))) { + V["LIBMPDEC_CFLAGS"] = V["LIBMPDEC_CFLAGS"] " -fno-ipa-pure-const" + } + if (((V["have_glibc_memmove_bug"] != "") && (V["have_glibc_memmove_bug"] != "no"))) { + V["LIBMPDEC_CFLAGS"] = V["LIBMPDEC_CFLAGS"] " -U_FORTIFY_SOURCE" + } + } + v_export("LIBMPDEC_CFLAGS") + v_export("LIBMPDEC_LIBS") + v_export("LIBMPDEC_INTERNAL") +} + +# --- conf_modules --- +function u_setup_module_deps( android_api_level) { + v_export("MODULE_DEPS_SHARED") + v_export("LIBPYTHON") + V["MODULE_DEPS_SHARED"] = "$(MODULE_DEPS_STATIC) $(EXPORTSYMS)" + V["LIBPYTHON"] = "" + android_api_level = V["ANDROID_API_LEVEL"] + if (((V["PY_ENABLE_SHARED"] == "1") && (((android_api_level != "") && (android_api_level != "no")) || (V["MACHDEP"] == "cygwin")))) { + V["MODULE_DEPS_SHARED"] = "$(MODULE_DEPS_SHARED) $(LDLIBRARY)" + V["LIBPYTHON"] = "$(BLDLIBRARY)" + } + if ((V["ac_sys_system"] == "iOS")) { + V["MODULE_DEPS_SHARED"] = "$(MODULE_DEPS_SHARED) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)" + } +} + +function u_setup_freeze_module( FREEZE_MODULE, FREEZE_MODULE_BOOTSTRAP, FREEZE_MODULE_BOOTSTRAP_DEPS, FREEZE_MODULE_DEPS, PYTHON_FOR_BUILD_DEPS) { + if (((V["cross_compiling"] != "") && (V["cross_compiling"] != "no"))) { + FREEZE_MODULE_BOOTSTRAP = "$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py" + FREEZE_MODULE_BOOTSTRAP_DEPS = "$(srcdir)/Programs/_freeze_module.py" + FREEZE_MODULE = "$(FREEZE_MODULE_BOOTSTRAP)" + FREEZE_MODULE_DEPS = "$(FREEZE_MODULE_BOOTSTRAP_DEPS)" + PYTHON_FOR_BUILD_DEPS = "" + } else { + FREEZE_MODULE_BOOTSTRAP = "./Programs/_freeze_module" + FREEZE_MODULE_BOOTSTRAP_DEPS = "Programs/_freeze_module" + FREEZE_MODULE = "$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py" + FREEZE_MODULE_DEPS = "_bootstrap_python $(srcdir)/Programs/_freeze_module.py" + PYTHON_FOR_BUILD_DEPS = "$(BUILDPYTHON)" + } + V["FREEZE_MODULE_BOOTSTRAP"] = FREEZE_MODULE_BOOTSTRAP + v_export("FREEZE_MODULE_BOOTSTRAP") + V["FREEZE_MODULE_BOOTSTRAP_DEPS"] = FREEZE_MODULE_BOOTSTRAP_DEPS + v_export("FREEZE_MODULE_BOOTSTRAP_DEPS") + V["FREEZE_MODULE"] = FREEZE_MODULE + v_export("FREEZE_MODULE") + V["FREEZE_MODULE_DEPS"] = FREEZE_MODULE_DEPS + v_export("FREEZE_MODULE_DEPS") + V["PYTHON_FOR_BUILD_DEPS"] = PYTHON_FOR_BUILD_DEPS + v_export("PYTHON_FOR_BUILD_DEPS") +} + +function u_setup_platform_na_modules( host_cpu, sys) { + sys = V["ac_sys_system"] + if ((sys == "AIX")) { + delete _va42 + _va42[1] = "_scproxy" + _va42[0] = 1 + pyconf_stdlib_module_set_na(_va42) + } else if (_str_startswith(sys, "VxWorks")) { + delete _va43 + _va43[1] = "_scproxy" + _va43[2] = "termios" + _va43[3] = "grp" + _va43[0] = 3 + pyconf_stdlib_module_set_na(_va43) + } else if ((sys == "Darwin")) { + } else if ((sys == "iOS")) { + delete _va44 + _va44[1] = "_curses" + _va44[2] = "_curses_panel" + _va44[3] = "_gdbm" + _va44[4] = "_multiprocessing" + _va44[5] = "_posixshmem" + _va44[6] = "_posixsubprocess" + _va44[7] = "_scproxy" + _va44[8] = "_tkinter" + _va44[9] = "grp" + _va44[10] = "nis" + _va44[11] = "readline" + _va44[12] = "pwd" + _va44[13] = "spwd" + _va44[14] = "syslog" + _va44[0] = 14 + pyconf_stdlib_module_set_na(_va44) + } else if (((_str_startswith(sys, "CYGWIN") || _str_startswith(sys, "QNX")) || _str_startswith(sys, "FreeBSD"))) { + delete _va45 + _va45[1] = "_scproxy" + _va45[0] = 1 + pyconf_stdlib_module_set_na(_va45) + } else if ((sys == "Emscripten")) { + delete _va46 + _va46[1] = "_curses" + _va46[2] = "_curses_panel" + _va46[3] = "_dbm" + _va46[4] = "_gdbm" + _va46[5] = "_multiprocessing" + _va46[6] = "_posixshmem" + _va46[7] = "_posixsubprocess" + _va46[8] = "_scproxy" + _va46[9] = "_tkinter" + _va46[10] = "_interpreters" + _va46[11] = "_interpchannels" + _va46[12] = "_interpqueues" + _va46[13] = "grp" + _va46[14] = "pwd" + _va46[15] = "resource" + _va46[16] = "syslog" + _va46[17] = "readline" + _va46[0] = 17 + pyconf_stdlib_module_set_na(_va46) + } else if ((sys == "WASI")) { + delete _va47 + _va47[1] = "_curses" + _va47[2] = "_curses_panel" + _va47[3] = "_dbm" + _va47[4] = "_gdbm" + _va47[5] = "_multiprocessing" + _va47[6] = "_posixshmem" + _va47[7] = "_posixsubprocess" + _va47[8] = "_scproxy" + _va47[9] = "_tkinter" + _va47[10] = "_interpreters" + _va47[11] = "_interpchannels" + _va47[12] = "_interpqueues" + _va47[13] = "grp" + _va47[14] = "pwd" + _va47[15] = "resource" + _va47[16] = "syslog" + _va47[0] = 16 + pyconf_stdlib_module_set_na(_va47) + delete _va48 + _va48[1] = "_ctypes_test" + _va48[2] = "_remote_debugging" + _va48[3] = "_testimportmultiple" + _va48[4] = "_testmultiphase" + _va48[5] = "_testsinglephase" + _va48[6] = "fcntl" + _va48[7] = "mmap" + _va48[8] = "termios" + _va48[9] = "xxlimited" + _va48[10] = "xxlimited_35" + _va48[0] = 10 + pyconf_stdlib_module_set_na(_va48) + } else { + delete _va49 + _va49[1] = "_scproxy" + _va49[0] = 1 + pyconf_stdlib_module_set_na(_va49) + } + host_cpu = V["host_cpu"] + if (((host_cpu == "wasm32") || (host_cpu == "wasm64"))) { + V["MODULE_BUILDTYPE"] = "static" + v_export("MODULE_BUILDTYPE") + } else { + V["MODULE_BUILDTYPE"] = ((V["MODULE_BUILDTYPE"] != "") ? V["MODULE_BUILDTYPE"] : "shared") + v_export("MODULE_BUILDTYPE") + } +} + +function u_setup_stdlib_modules() { + pyconf_stdlib_module_simple("_io", "-I$(srcdir)/Modules/_io", "", "yes", "no") + pyconf_stdlib_module_simple("time", "", V["TIMEMODULE_LIB"], "no", "yes") + pyconf_stdlib_module_simple("array") + pyconf_stdlib_module_simple("_math_integer") + pyconf_stdlib_module_simple("_asyncio") + pyconf_stdlib_module_simple("_bisect") + pyconf_stdlib_module_simple("_csv") + pyconf_stdlib_module_simple("_heapq") + pyconf_stdlib_module_simple("_json") + pyconf_stdlib_module_simple("_lsprof") + pyconf_stdlib_module_simple("_pickle") + pyconf_stdlib_module_simple("_posixsubprocess") + pyconf_stdlib_module_simple("_queue") + pyconf_stdlib_module_simple("_random") + pyconf_stdlib_module_simple("_remote_debugging", V["REMOTE_DEBUGGING_CFLAGS"], V["REMOTE_DEBUGGING_LIBS"], "yes", "yes") + pyconf_stdlib_module_simple("select") + pyconf_stdlib_module_simple("_struct") + pyconf_stdlib_module_simple("_types") + pyconf_stdlib_module_simple("_typing") + pyconf_stdlib_module_simple("_interpreters") + pyconf_stdlib_module_simple("_interpchannels") + pyconf_stdlib_module_simple("_interpqueues") + pyconf_stdlib_module_simple("_zoneinfo") + pyconf_stdlib_module("_multiprocessing", ((V["ac_cv_func_sem_unlink"] == "yes") ? "yes" : "no"), "yes", "-I$(srcdir)/Modules/_multiprocessing", "", "yes", "no") + pyconf_stdlib_module("_posixshmem", ((V["have_posix_shmem"] != "") ? "yes" : "no"), "yes", V["POSIXSHMEM_CFLAGS"], V["POSIXSHMEM_LIBS"], "yes", "yes") + pyconf_stdlib_module_simple("_statistics", "", V["LIBM"], "no", "yes") + pyconf_stdlib_module_simple("cmath", "", V["LIBM"], "no", "yes") + pyconf_stdlib_module_simple("math", "", V["LIBM"], "no", "yes") + pyconf_stdlib_module_simple("_datetime", "", _str_strip(V["TIMEMODULE_LIB"] " " V["LIBM"]), "no", "yes") + pyconf_stdlib_module("fcntl", (((V["ac_cv_header_sys_ioctl_h"] == "yes") && (V["ac_cv_header_fcntl_h"] == "yes")) ? "yes" : "no"), "yes", "", V["FCNTL_LIBS"], "no", "yes") + pyconf_stdlib_module("mmap", (((V["ac_cv_header_sys_mman_h"] == "yes") && (V["ac_cv_header_sys_stat_h"] == "yes")) ? "yes" : "no"), "yes", "", "", "no", "no") + pyconf_stdlib_module("_socket", ((((V["ac_cv_header_sys_socket_h"] == "yes") && (V["ac_cv_header_sys_types_h"] == "yes")) && (V["ac_cv_header_netinet_in_h"] == "yes")) ? "yes" : "no"), "yes", "", V["SOCKET_LIBS"], "no", "yes") + pyconf_stdlib_module("grp", (((V["ac_cv_func_getgrent"] == "yes") && ((V["ac_cv_func_getgrgid"] == "yes") || (V["ac_cv_func_getgrgid_r"] == "yes"))) ? "yes" : "no"), "yes", "", "", "no", "no") + pyconf_stdlib_module("pwd", ((((V["ac_cv_func_getpwuid"] == "yes") ? "yes" : "no") != "") ? ((V["ac_cv_func_getpwuid"] == "yes") ? "yes" : "no") : ((V["ac_cv_func_getpwuid_r"] == "yes") ? "yes" : "no")), "yes", "", "", "no", "no") + pyconf_stdlib_module("resource", ((V["ac_cv_header_sys_resource_h"] == "yes") ? "yes" : "no"), "yes", "", "", "no", "no") + pyconf_stdlib_module("_scproxy", "yes", ((V["ac_sys_system"] == "Darwin") ? "yes" : "no"), "", "-framework SystemConfiguration -framework CoreFoundation", "no", "yes") + pyconf_stdlib_module("syslog", ((V["ac_cv_header_syslog_h"] == "yes") ? "yes" : "no"), "yes", "", "", "no", "no") + pyconf_stdlib_module("termios", ((V["ac_cv_header_termios_h"] == "yes") ? "yes" : "no"), "yes", "", "", "no", "no") + pyconf_stdlib_module("pyexpat", ((V["ac_cv_header_sys_time_h"] == "yes") ? "yes" : "no"), "yes", V["LIBEXPAT_CFLAGS"], V["LIBEXPAT_LDFLAGS"], "yes", "yes") + pyconf_stdlib_module("_elementtree", "yes", "yes", V["LIBEXPAT_CFLAGS"], "", "yes", "no") + pyconf_stdlib_module_simple("_codecs_cn") + pyconf_stdlib_module_simple("_codecs_hk") + pyconf_stdlib_module_simple("_codecs_iso2022") + pyconf_stdlib_module_simple("_codecs_jp") + pyconf_stdlib_module_simple("_codecs_kr") + pyconf_stdlib_module_simple("_codecs_tw") + pyconf_stdlib_module_simple("_multibytecodec") + pyconf_stdlib_module_simple("unicodedata") +} + +function u_setup_remaining_modules( _tmp_split, openssl_cflags, openssl_ldflags_common) { + pyconf_stdlib_module("_ctypes", ((V["have_libffi"] == "yes") ? "yes" : "no"), "yes", _str_strip(V["NO_STRICT_OVERFLOW_CFLAGS"] " " V["LIBFFI_CFLAGS"]), V["LIBFFI_LIBS"], "yes", "yes") + pyconf_stdlib_module("_curses", ((V["have_curses"] == "yes") ? "yes" : "no"), "yes", V["CURSES_CFLAGS"], V["CURSES_LIBS"], "yes", "yes") + pyconf_stdlib_module("_curses_panel", (((V["have_curses"] == "yes") && (V["have_panel"] == "yes")) ? "yes" : "no"), "yes", _str_strip(V["PANEL_CFLAGS"] " " V["CURSES_CFLAGS"]), _str_strip(V["PANEL_LIBS"] " " V["CURSES_LIBS"]), "yes", "yes") + pyconf_stdlib_module("_decimal", ((V["have_mpdec"] == "yes") ? "yes" : "no"), "yes", V["LIBMPDEC_CFLAGS"], V["LIBMPDEC_LIBS"], "yes", "yes") + if ((V["with_system_libmpdec"] == "no")) { + pyconf_warn("the bundled copy of libmpdec is scheduled for removal in Python 3.16; consider using a system installed mpdecimal library.") + } + if (((V["with_system_libmpdec"] == "yes") && (V["have_mpdec"] == "no"))) { + pyconf_warn("no system libmpdec found; falling back to pure-Python version for the decimal module") + } + pyconf_stdlib_module("_dbm", ((V["have_dbm"] != "no") ? "yes" : "no"), ((V["with_dbmliborder"] != "") ? "yes" : "no"), V["DBM_CFLAGS"], V["DBM_LIBS"], "yes", "yes") + pyconf_stdlib_module("_gdbm", ((V["have_gdbm"] == "yes") ? "yes" : "no"), ((index(_str_replace(V["with_dbmliborder"], ":", " "), "gdbm") > 0) ? "yes" : "no"), V["GDBM_CFLAGS"], V["GDBM_LIBS"], "yes", "yes") + pyconf_stdlib_module("readline", ((V["with_readline"] != "no") ? "yes" : "no"), "yes", V["READLINE_CFLAGS"], V["READLINE_LIBS"], "yes", "yes") + pyconf_stdlib_module("_sqlite3", ((V["have_supported_sqlite3"] == "yes") ? "yes" : "no"), ((V["have_sqlite3"] == "yes") ? "yes" : "no"), V["LIBSQLITE3_CFLAGS"], V["LIBSQLITE3_LIBS"], "yes", "yes") + pyconf_stdlib_module("_tkinter", ((V["have_tcltk"] == "yes") ? "yes" : "no"), "yes", V["TCLTK_CFLAGS"], V["TCLTK_LIBS"], "yes", "yes") + pyconf_stdlib_module("_uuid", ((V["have_uuid"] == "yes") ? "yes" : "no"), "yes", V["LIBUUID_CFLAGS"], V["LIBUUID_LIBS"], "yes", "yes") + pyconf_stdlib_module("zlib", ((V["have_zlib"] == "yes") ? "yes" : "no"), "yes", V["ZLIB_CFLAGS"], V["ZLIB_LIBS"], "yes", "yes") + pyconf_stdlib_module_simple("binascii", V["BINASCII_CFLAGS"], V["BINASCII_LIBS"], "yes", "yes") + pyconf_stdlib_module("_bz2", ((V["have_bzip2"] == "yes") ? "yes" : "no"), "yes", V["BZIP2_CFLAGS"], V["BZIP2_LIBS"], "yes", "yes") + pyconf_stdlib_module("_lzma", ((V["have_liblzma"] == "yes") ? "yes" : "no"), "yes", V["LIBLZMA_CFLAGS"], V["LIBLZMA_LIBS"], "yes", "yes") + pyconf_stdlib_module("_zstd", ((V["have_libzstd"] == "yes") ? "yes" : "no"), "yes", V["LIBZSTD_CFLAGS"], V["LIBZSTD_LIBS"], "yes", "yes") + openssl_cflags = V["OPENSSL_INCLUDES"] + openssl_ldflags_common = _str_strip(V["OPENSSL_LDFLAGS"] " " V["OPENSSL_LDFLAGS_RPATH"]) + pyconf_stdlib_module("_ssl", ((V["ac_cv_working_openssl_ssl"] == "yes") ? "yes" : "no"), "yes", openssl_cflags, _str_strip(openssl_ldflags_common " " V["OPENSSL_LIBS"]), "yes", "yes") + pyconf_stdlib_module("_hashlib", ((V["ac_cv_working_openssl_hashlib"] == "yes") ? "yes" : "no"), "yes", openssl_cflags, _str_strip(openssl_ldflags_common " " V["LIBCRYPTO_LIBS"]), "yes", "yes") + pyconf_stdlib_module("_testcapi", "yes", V["TEST_MODULES"], "", V["LIBATOMIC"], "no", "yes") + pyconf_stdlib_module("_testclinic", "yes", V["TEST_MODULES"], "", "", "no", "no") + pyconf_stdlib_module("_testclinic_limited", "yes", V["TEST_MODULES"], "", "", "no", "no") + pyconf_stdlib_module("_testlimitedcapi", "yes", V["TEST_MODULES"], "", "", "no", "no") + pyconf_stdlib_module("_testinternalcapi", "yes", V["TEST_MODULES"], "", "", "no", "no") + pyconf_stdlib_module("_testbuffer", "yes", V["TEST_MODULES"], "", "", "no", "no") + pyconf_stdlib_module("_testimportmultiple", ((V["ac_cv_func_dlopen"] == "yes") ? "yes" : "no"), V["TEST_MODULES"], "", "", "no", "no") + pyconf_stdlib_module("_testmultiphase", ((V["ac_cv_func_dlopen"] == "yes") ? "yes" : "no"), V["TEST_MODULES"], "", "", "no", "no") + pyconf_stdlib_module("_testsinglephase", ((V["ac_cv_func_dlopen"] == "yes") ? "yes" : "no"), V["TEST_MODULES"], "", "", "no", "no") + pyconf_stdlib_module("xxsubtype", "yes", V["TEST_MODULES"], "", "", "no", "no") + pyconf_stdlib_module("_xxtestfuzz", "yes", V["TEST_MODULES"], "", "", "no", "no") + pyconf_stdlib_module("_ctypes_test", (((V["have_libffi"] == "yes") && (V["ac_cv_func_dlopen"] == "yes")) ? "yes" : "no"), V["TEST_MODULES"], V["LIBFFI_CFLAGS"], _str_strip(V["LIBFFI_LIBS"] " " V["LIBM"]), "yes", "yes") + pyconf_stdlib_module("xxlimited", ((V["ac_cv_func_dlopen"] == "yes") ? "yes" : "no"), V["TEST_MODULES"], "", "", "no", "no") + pyconf_stdlib_module("xxlimited_35", ((V["ac_cv_func_dlopen"] == "yes") ? "yes" : "no"), V["TEST_MODULES"], "", "", "no", "no") + v_export("MODULE_BLOCK") +} + +function u_check_test_modules() { + V["TEST_MODULES"] = (pyconf_option_is_no("enable_test_modules") ? "no" : "yes") + v_export("TEST_MODULES") +} + +# --- conf_net --- +function u_check_network_libs( libs_val) { + if (pyconf_check_lib("nsl", "t_open", "", "")) { + V["LIBS"] = "-lnsl " V["LIBS"] + } + if (pyconf_check_lib("socket", "socket", "", "")) { + V["LIBS"] = "-lsocket " V["LIBS"] + } + if (_str_startswith(V["ac_sys_system"] "/" V["ac_sys_release"], "Haiku")) { + if (pyconf_check_lib("network", "socket", "", "")) { + V["LIBS"] = "-lnetwork " V["LIBS"] + } + } + pyconf_checking("for --with-libs") + libs_val = pyconf_option_value("with_libs") + if (((libs_val != "") && (libs_val != "no"))) { + pyconf_result(libs_val) + V["LIBS"] = libs_val " " V["LIBS"] + } else { + pyconf_result("no") + } +} + +function u_check_ipv6( BASECFLAGS, _i_i, i, ipv6lib, ipv6libdir, ipv6trylibc, ipv6type, libpath, netconfig_content, _al_22) { + delete _al_22 + pyconf_checking("if --enable-ipv6 is specified") + if (pyconf_option_is_no("enable_ipv6")) { + pyconf_result("no") + V["ipv6"] = "no" + } else if (pyconf_option_is_yes("enable_ipv6")) { + pyconf_result("yes") + pyconf_define("ENABLE_IPV6", 1, 0, "") + V["ipv6"] = "yes" + } else { + if (pyconf_compile_check("", "#include \n#include \nint main(void) { int domain = AF_INET6; return 0; }")) { + V["ipv6"] = "yes" + } else { + V["ipv6"] = "no" + } + if ((V["ac_sys_system"] == "WASI")) { + V["ipv6"] = "no" + } + pyconf_result(V["ipv6"]) + if (((V["ipv6"] != "") && (V["ipv6"] != "no"))) { + pyconf_checking("if RFC2553 API is available") + if (pyconf_compile_check("", "#include \n#include \nint main(void) { struct sockaddr_in6 x; int y = x.sin6_scope_id; return 0; }")) { + pyconf_result("yes") + } else { + pyconf_result("no") + V["ipv6"] = "no" + } + } + if (((V["ipv6"] != "") && (V["ipv6"] != "no"))) { + pyconf_define("ENABLE_IPV6", 1, 0, "") + } + } + ipv6type = "unknown" + ipv6lib = "none" + ipv6libdir = "" + ipv6trylibc = "no" + BASECFLAGS = V["BASECFLAGS"] + if ((((V["ipv6"] != "") && (V["ipv6"] != "no")) && (!((pyconf_cross_compiling != "") && (pyconf_cross_compiling != "no"))))) { + _al_22[1] = "inria" + _al_22[2] = "kame" + _al_22[3] = "linux-glibc" + _al_22[4] = "linux-inet6" + _al_22[5] = "solaris" + _al_22[6] = "toshiba" + _al_22[7] = "v6d" + _al_22[8] = "zeta" + for (_i_i = 1; (_i_i <= 8); _i_i = (_i_i + 1)) { + i = _al_22[_i_i] + if (((i == "kame") && pyconf_check_define("netinet/in.h", "__KAME__"))) { + ipv6type = i + ipv6lib = "inet6" + ipv6libdir = "/usr/local/v6/lib" + ipv6trylibc = "yes" + } else if (((i == "linux-glibc") && pyconf_check_define("features.h", "__GLIBC__"))) { + ipv6type = i + ipv6trylibc = "yes" + } else if (((i == "linux-inet6") && pyconf_path_is_dir("/usr/inet6"))) { + ipv6type = i + ipv6lib = "inet6" + ipv6libdir = "/usr/inet6/lib" + BASECFLAGS = "-I/usr/inet6/include " BASECFLAGS + } else if (((i == "solaris") && pyconf_path_is_file("/etc/netconfig"))) { + netconfig_content = pyconf_read_file("/etc/netconfig") + if ((index(netconfig_content, "tcp6") > 0)) { + ipv6type = i + ipv6trylibc = "yes" + } + } else if (((i == "inria") && pyconf_check_define("netinet/in.h", "IPV6_INRIA_VERSION"))) { + ipv6type = i + } else if (((i == "toshiba") && pyconf_check_define("sys/param.h", "_TOSHIBA_INET6"))) { + ipv6type = i + ipv6lib = "inet6" + ipv6libdir = "/usr/local/v6/lib" + } else if (((i == "v6d") && pyconf_check_define("/usr/local/v6/include/sys/v6config.h", "__V6D__"))) { + ipv6type = i + ipv6lib = "v6" + ipv6libdir = "/usr/local/v6/lib" + BASECFLAGS = "-I/usr/local/v6/include " BASECFLAGS + } else if (((i == "zeta") && pyconf_check_define("sys/param.h", "_ZETA_MINAMI_INET6"))) { + ipv6type = i + ipv6lib = "inet6" + ipv6libdir = "/usr/local/v6/lib" + } + if ((ipv6type != "unknown")) { + break + } + } + pyconf_checking("ipv6 stack type") + pyconf_result(ipv6type) + } + V["BASECFLAGS"] = BASECFLAGS + if ((((V["ipv6"] != "") && (V["ipv6"] != "no")) && (ipv6lib != "none"))) { + pyconf_checking("ipv6 library") + delete _va50 + _va50[1] = ipv6libdir + _va50[2] = "lib" ipv6lib ".a" + _va50[0] = 2 + libpath = pyconf_path_join(_va50) + if ((((ipv6libdir != "") && (ipv6libdir != "no")) && pyconf_path_is_file(libpath))) { + V["LIBS"] = "-L" ipv6libdir " -l" ipv6lib " " V["LIBS"] + pyconf_result("lib" ipv6lib) + } else if (((ipv6trylibc != "") && (ipv6trylibc != "no"))) { + pyconf_result("libc") + } else { + pyconf_fatal("No " ipv6lib " library found; cannot continue.\nYou need to fetch lib" ipv6lib ".a from appropriate ipv6 kit.") + } + } +} + +function u_check_can_sockets() { + pyconf_checking("CAN_RAW_FD_FRAMES") + if (pyconf_compile_check("", "#include \nint main(void) { int can_raw_fd_frames = CAN_RAW_FD_FRAMES; return 0; }\n")) { + pyconf_result("yes") + pyconf_define("HAVE_LINUX_CAN_RAW_FD_FRAMES", 1, 0, "Define if compiling using Linux 3.6 or later.") + } else { + pyconf_result("no") + } + pyconf_checking("for CAN_RAW_JOIN_FILTERS") + if (pyconf_compile_check("", "#include \nint main(void) { int can_raw_join_filters = CAN_RAW_JOIN_FILTERS; return 0; }\n")) { + pyconf_result("yes") + pyconf_define("HAVE_LINUX_CAN_RAW_JOIN_FILTERS", 1, 0, "Define if compiling using Linux 4.1 or later.") + } else { + pyconf_result("no") + } +} + +function u__check_netdb_func(_func_) { + pyconf_check_func(_func_, "netdb.h", "") +} + +function u__check_socket_func(_func_) { + pyconf_check_func(_func_, "sys/types.h sys/socket.h netinet/in.h arpa/inet.h", "") +} + +function u_check_netdb_socket_funcs( _i_f, _pyconf_cond_grp_h, f, _al_23, _al_24) { + delete _al_23 + delete _al_24 + _al_23[1] = "hstrerror" + _al_23[2] = "getservbyname" + _al_23[3] = "getservbyport" + _al_23[4] = "gethostbyname" + _al_23[5] = "gethostbyaddr" + _al_23[6] = "getprotobyname" + for (_i_f = 1; (_i_f <= 6); _i_f = (_i_f + 1)) { + f = _al_23[_i_f] + u__check_netdb_func(f) + } + _al_24[1] = "inet_aton" + _al_24[2] = "inet_ntoa" + _al_24[3] = "inet_pton" + _al_24[4] = "getpeername" + _al_24[5] = "getsockname" + _al_24[6] = "accept" + _al_24[7] = "bind" + _al_24[8] = "connect" + _al_24[9] = "listen" + _al_24[10] = "recvfrom" + _al_24[11] = "sendto" + _al_24[12] = "setsockopt" + _al_24[13] = "socket" + for (_i_f = 1; (_i_f <= 13); _i_f = (_i_f + 1)) { + f = _al_24[_i_f] + u__check_socket_func(f) + } + _pyconf_cond_grp_h = "" + if ((CACHE["ac_cv_header_grp_h"] == "yes")) { + _pyconf_cond_grp_h = "grp.h" + } + pyconf_check_func("setgroups", "unistd.h" " " _pyconf_cond_grp_h, "HAVE_SETGROUPS") +} + +function u_check_getaddrinfo( GETADDRINFO_TEST, ac_cv_buggy_getaddrinfo, ac_cv_func_getaddrinfo, ok) { + pyconf_checking("for getaddrinfo") + ac_cv_func_getaddrinfo = (pyconf_link_check("", "\n #include \n #include \n #include \n #include \n \nint main(void) { getaddrinfo(NULL, NULL, NULL, NULL); return 0; }") ? "yes" : "no") + pyconf_result((((ac_cv_func_getaddrinfo != "") && (ac_cv_func_getaddrinfo != "no")) ? "yes" : "no")) + if (((ac_cv_func_getaddrinfo != "") && (ac_cv_func_getaddrinfo != "no"))) { + GETADDRINFO_TEST = "\n #include \n #include \n #include \n #include \n #include \n #include \n\n int main(void)\n {\n int passive, gaierr, inet4 = 0, inet6 = 0;\n struct addrinfo hints, *ai, *aitop;\n char straddr[INET6_ADDRSTRLEN], strport[16];\n\n for (passive = 0; passive <= 1; passive++) {\n memset(&hints, 0, sizeof(hints));\n hints.ai_family = AF_UNSPEC;\n hints.ai_flags = passive ? AI_PASSIVE : 0;\n hints.ai_socktype = SOCK_STREAM;\n hints.ai_protocol = IPPROTO_TCP;\n if ((gaierr = getaddrinfo(NULL, \"54321\", &hints, &aitop)) != 0) {\n (void)gai_strerror(gaierr);\n goto bad;\n }\n for (ai = aitop; ai; ai = ai->ai_next) {\n if (ai->ai_addr == NULL ||\n ai->ai_addrlen == 0 ||\n getnameinfo(ai->ai_addr, ai->ai_addrlen,\n straddr, sizeof(straddr), strport, sizeof(strport),\n NI_NUMERICHOST|NI_NUMERICSERV) != 0) {\n goto bad;\n }\n switch (ai->ai_family) {\n case AF_INET:\n if (strcmp(strport, \"54321\") != 0) goto bad;\n if (passive) {\n if (strcmp(straddr, \"0.0.0.0\") != 0) goto bad;\n } else {\n if (strcmp(straddr, \"127.0.0.1\") != 0) goto bad;\n }\n inet4++;\n break;\n case AF_INET6:\n if (strcmp(strport, \"54321\") != 0) goto bad;\n if (passive) {\n if (strcmp(straddr, \"::\") != 0) goto bad;\n } else {\n if (strcmp(straddr, \"::1\") != 0) goto bad;\n }\n inet6++;\n break;\n case AF_UNSPEC:\n goto bad;\n default:\n break;\n }\n }\n freeaddrinfo(aitop);\n aitop = NULL;\n }\n if (!(inet4 == 0 || inet4 == 2)) goto bad;\n if (!(inet6 == 0 || inet6 == 2)) goto bad;\n if (aitop) freeaddrinfo(aitop);\n return 0;\n bad:\n if (aitop) freeaddrinfo(aitop);\n return 1;\n }\n " + pyconf_checking("getaddrinfo bug") + if (((pyconf_cross_compiling != "") && (pyconf_cross_compiling != "no"))) { + if (((V["ac_sys_system"] == "Linux-android") || (V["ac_sys_system"] == "iOS"))) { + ac_cv_buggy_getaddrinfo = "no" + } else if ((V["enable_ipv6"] != "")) { + ac_cv_buggy_getaddrinfo = "no -- configured with --(en|dis)able-ipv6" + } else { + ac_cv_buggy_getaddrinfo = "yes" + } + } else { + ok = (pyconf_run_check("", GETADDRINFO_TEST) ? "yes" : "no") + ac_cv_buggy_getaddrinfo = (((ok != "") && (ok != "no")) ? "no" : "yes") + } + pyconf_result(ac_cv_buggy_getaddrinfo) + } else { + ac_cv_buggy_getaddrinfo = "yes" + } + if (((!((ac_cv_func_getaddrinfo != "") && (ac_cv_func_getaddrinfo != "no"))) || (ac_cv_buggy_getaddrinfo == "yes"))) { + if (((V["ipv6"] != "") && (V["ipv6"] != "no"))) { + pyconf_error("You must get working getaddrinfo() function or pass the \"--disable-ipv6\" option to configure.") + } + } else { + pyconf_define("HAVE_GETADDRINFO", 1, 0, "Define if you have the getaddrinfo function.") + } + pyconf_check_func("getnameinfo", "", "HAVE_GETNAMEINFO") +} + +function u_check_gethostbyname_r( old_cflags) { + pyconf_define_template("HAVE_GETHOSTBYNAME_R", "Define this if you have some version of gethostbyname_r()") + if (pyconf_check_func("gethostbyname_r", "", "HAVE_GETHOSTBYNAME_R")) { + pyconf_define("HAVE_GETHOSTBYNAME_R", 1, 0, "") + old_cflags = V["CFLAGS"] + V["CFLAGS"] = _str_strip(V["CFLAGS"] " " V["MY_CPPFLAGS"] " " V["MY_THREAD_CPPFLAGS"] " " V["MY_CFLAGS"]) + pyconf_checking("gethostbyname_r with 6 args") + if (pyconf_compile_check("", "#include \nint main(void) { \n char *name;\n struct hostent *he, *res;\n char buffer[2048];\n int buflen = 2048;\n int h_errnop;\n (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop); return 0; }")) { + pyconf_define("HAVE_GETHOSTBYNAME_R", 1, 0, "") + pyconf_define("HAVE_GETHOSTBYNAME_R_6_ARG", 1, 0, "Define this if you have the 6-arg version of gethostbyname_r().") + pyconf_result("yes") + } else { + pyconf_result("no") + pyconf_checking("gethostbyname_r with 5 args") + if (pyconf_compile_check("", "#include \nint main(void) { \n char *name;\n struct hostent *he;\n char buffer[2048];\n int buflen = 2048;\n int h_errnop;\n (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop); return 0; }")) { + pyconf_define("HAVE_GETHOSTBYNAME_R", 1, 0, "") + pyconf_define("HAVE_GETHOSTBYNAME_R_5_ARG", 1, 0, "Define this if you have the 5-arg version of gethostbyname_r().") + pyconf_result("yes") + } else { + pyconf_result("no") + pyconf_checking("gethostbyname_r with 3 args") + if (pyconf_compile_check("", "#include \nint main(void) { \n char *name;\n struct hostent *he;\n struct hostent_data data;\n (void) gethostbyname_r(name, he, &data); return 0; }")) { + pyconf_define("HAVE_GETHOSTBYNAME_R", 1, 0, "") + pyconf_define("HAVE_GETHOSTBYNAME_R_3_ARG", 1, 0, "Define this if you have the 3-arg version of gethostbyname_r().") + pyconf_result("yes") + } else { + pyconf_result("no") + } + } + } + V["CFLAGS"] = old_cflags + } else { + pyconf_check_func("gethostbyname", "", "HAVE_GETHOSTBYNAME") + } + v_export("HAVE_GETHOSTBYNAME_R_6_ARG") + v_export("HAVE_GETHOSTBYNAME_R_5_ARG") + v_export("HAVE_GETHOSTBYNAME_R_3_ARG") + v_export("HAVE_GETHOSTBYNAME_R") + v_export("HAVE_GETHOSTBYNAME") +} + +function u_check_socklen_t() { + if ((!pyconf_check_type("socklen_t", "sys/types.h sys/socket.h"))) { + pyconf_define("socklen_t", "int", 1, "Define to 'int' if does not define.") + } +} + +# --- conf_optimization --- +function u_setup_profile_task() { + pyconf_env_var("PROFILE_TASK", "Python args for PGO generation task") + pyconf_checking("PROFILE_TASK") + V["PROFILE_TASK"] = ((V["PROFILE_TASK"] != "") ? V["PROFILE_TASK"] : "-m test --pgo --timeout=$(TESTTIMEOUT)") + pyconf_result(V["PROFILE_TASK"]) + v_export("PROFILE_TASK") +} + +function u_locate_llvm_bin( clang_bin, clang_dir, clang_target, llvm_bin_dir, llvm_path) { + llvm_bin_dir = "" + llvm_path = (("PATH" in ENV) ? ENV["PATH"] : "") + if ((V["ac_cv_cc_name"] == "clang")) { + clang_bin = pyconf_find_prog("clang") + if ((((clang_bin != "") && (clang_bin != "no")) && pyconf_path_is_symlink(clang_bin))) { + clang_dir = pyconf_path_parent(clang_bin) + clang_target = pyconf_readlink(clang_bin) + delete _va51 + _va51[1] = clang_dir + _va51[2] = pyconf_path_parent(clang_target) + _va51[0] = 2 + llvm_bin_dir = pyconf_path_join(_va51) + llvm_path = llvm_path os_pathsep llvm_bin_dir + } + } + V["llvm_path"] = llvm_path +} + +function u_setup_lto( lto_val) { + pyconf_checking("for --with-lto") + V["Py_LTO"] = "false" + V["Py_LTO_POLICY"] = "default" + V["LTOFLAGS"] = "" + V["LTOCFLAGS"] = "" + V["LDFLAGS_NOLTO"] = "" + lto_val = pyconf_option_value("with_lto") + if ((lto_val != "")) { + if ((lto_val == "full")) { + V["Py_LTO"] = "true" + V["Py_LTO_POLICY"] = "full" + pyconf_result("yes") + } else if ((lto_val == "thin")) { + V["Py_LTO"] = "true" + V["Py_LTO_POLICY"] = "thin" + pyconf_result("yes") + } else if ((lto_val == "yes")) { + V["Py_LTO"] = "true" + V["Py_LTO_POLICY"] = "default" + pyconf_result("yes") + } else if ((lto_val == "no")) { + V["Py_LTO"] = "false" + pyconf_result("no") + } else { + pyconf_error("error: unknown lto option: '" lto_val "'") + } + } else { + pyconf_result("no") + } + if ((V["Py_LTO"] == "true")) { + u__setup_lto_flags() + } + v_export("LTOFLAGS") + v_export("LTOCFLAGS") +} + +function u__setup_lto_flags() { + if ((V["ac_cv_cc_name"] == "clang")) { + u__setup_lto_clang() + } else if ((V["ac_cv_cc_name"] == "emcc")) { + if ((V["Py_LTO_POLICY"] != "default")) { + pyconf_error("error: emcc supports only default lto.") + } + V["LTOFLAGS"] = "-flto" + V["LTOCFLAGS"] = "-flto" + } else if ((V["ac_cv_cc_name"] == "gcc")) { + if ((V["Py_LTO_POLICY"] == "thin")) { + pyconf_error("error: thin lto is not supported under gcc compiler.") + } + V["LDFLAGS_NOLTO"] = "-fno-lto" + if (_str_startswith(V["ac_sys_system"], "Darwin")) { + V["LTOFLAGS"] = "-flto -Wl,-export_dynamic -Wl,-object_path_lto,\"$@\".lto" + V["LTOCFLAGS"] = "-flto" + } else { + V["LTOFLAGS"] = "-flto -fuse-linker-plugin -ffat-lto-objects" + } + } + if (((V["ac_cv_prog_cc_g"] != "") && (V["ac_cv_prog_cc_g"] != "no"))) { + V["LTOFLAGS"] = V["LTOFLAGS"] " -g" + } + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " " ((V["LTOCFLAGS"] != "") ? V["LTOCFLAGS"] : V["LTOFLAGS"]) + V["LDFLAGS_NODIST"] = V["LDFLAGS_NODIST"] " " V["LTOFLAGS"] +} + +function u__setup_lto_clang( LLVM_AR, LLVM_AR_FOUND, xcrun_out, xcrun_status, _ar_25) { + delete _ar_25 + V["LDFLAGS_NOLTO"] = "-fno-lto" + if (pyconf_check_compile_flag("-flto=thin")) { + V["LDFLAGS_NOLTO"] = "-flto=thin" + } else { + V["LDFLAGS_NOLTO"] = "-flto" + } + LLVM_AR = pyconf_check_prog("llvm-ar", V["llvm_path"], "") + v_export("LLVM_AR") + LLVM_AR_FOUND = ((((LLVM_AR != "") && (LLVM_AR != "no")) && pyconf_is_executable(LLVM_AR)) ? "found" : "not-found") + v_export("LLVM_AR_FOUND") + if ((_str_startswith(V["ac_sys_system"], "Darwin") && (LLVM_AR_FOUND == "not-found"))) { + delete _va52 + _va52[1] = "/usr/bin/xcrun" + _va52[2] = "-find" + _va52[3] = "ar" + _va52[0] = 3 + pyconf_cmd_status(_va52, _ar_25) + xcrun_status = _ar_25[0] + xcrun_out = _ar_25[1] + if (((xcrun_status == 0) && ((xcrun_out != "") && (xcrun_out != "no")))) { + LLVM_AR = "/usr/bin/xcrun ar" + LLVM_AR_FOUND = "found" + pyconf_notice("llvm-ar found via xcrun: " LLVM_AR) + } + } + if ((LLVM_AR_FOUND == "not-found")) { + pyconf_error("error: llvm-ar is required for a --with-lto build with clang but could not be found.") + } + V["AR"] = LLVM_AR + if (_str_startswith(V["ac_sys_system"], "Darwin")) { + if ((V["Py_LTO_POLICY"] == "default")) { + if (pyconf_check_compile_flag("-flto=thin")) { + V["LTOFLAGS"] = "-flto=thin -Wl,-export_dynamic -Wl,-object_path_lto,\"$@\".lto" + V["LTOCFLAGS"] = "-flto=thin" + } else { + V["LTOFLAGS"] = "-flto -Wl,-export_dynamic -Wl,-object_path_lto,\"$@\".lto" + V["LTOCFLAGS"] = "-flto" + } + } else { + V["LTOFLAGS"] = "-flto=" V["Py_LTO_POLICY"] " -Wl,-export_dynamic -Wl,-object_path_lto,\"$@\".lto" + V["LTOCFLAGS"] = "-flto=" V["Py_LTO_POLICY"] + } + } else if ((V["Py_LTO_POLICY"] == "default")) { + if (pyconf_check_compile_flag("-flto=thin")) { + V["LTOFLAGS"] = "-flto=thin" + } else { + V["LTOFLAGS"] = "-flto" + } + } else { + V["LTOFLAGS"] = "-flto=" V["Py_LTO_POLICY"] + } +} + +function u_setup_pgo_flags( LLVM_PROF_FOUND, xcrun_out, xcrun_status, _ar_26) { + delete _ar_26 + v_export("PGO_PROF_GEN_FLAG") + v_export("PGO_PROF_USE_FLAG") + v_export("LLVM_PROF_MERGER") + v_export("LLVM_PROF_FILE") + v_export("LLVM_PROF_ERR") + v_export("LLVM_PROFDATA") + V["LLVM_PROFDATA"] = pyconf_check_prog("llvm-profdata", V["llvm_path"], "") + v_export("LLVM_PROFDATA") + LLVM_PROF_FOUND = ((((V["LLVM_PROFDATA"] != "") && (V["LLVM_PROFDATA"] != "no")) && pyconf_is_executable(V["LLVM_PROFDATA"])) ? "found" : "not-found") + v_export("LLVM_PROF_FOUND") + if ((_str_startswith(V["ac_sys_system"], "Darwin") && (LLVM_PROF_FOUND == "not-found"))) { + delete _va53 + _va53[1] = "/usr/bin/xcrun" + _va53[2] = "-find" + _va53[3] = "llvm-profdata" + _va53[0] = 3 + pyconf_cmd_status(_va53, _ar_26) + xcrun_status = _ar_26[0] + xcrun_out = _ar_26[1] + if (((xcrun_status == 0) && ((xcrun_out != "") && (xcrun_out != "no")))) { + V["LLVM_PROFDATA"] = "/usr/bin/xcrun llvm-profdata" + LLVM_PROF_FOUND = "found" + pyconf_notice("llvm-profdata found via xcrun: " V["LLVM_PROFDATA"]) + } + } + V["LLVM_PROF_ERR"] = "no" + V["PGO_PROF_GEN_FLAG"] = "" + V["PGO_PROF_USE_FLAG"] = "" + V["LLVM_PROF_MERGER"] = "" + V["LLVM_PROF_FILE"] = "" + if ((V["ac_cv_cc_name"] == "clang")) { + V["PGO_PROF_GEN_FLAG"] = "-fprofile-instr-generate" + V["PGO_PROF_USE_FLAG"] = "-fprofile-instr-use=\"$(shell pwd)/code.profclangd\"" + V["LLVM_PROF_MERGER"] = V["LLVM_PROFDATA"] " merge -output=\"$(shell pwd)/code.profclangd\" \"$(shell pwd)\"/*.profclangr" + V["LLVM_PROF_FILE"] = "LLVM_PROFILE_FILE=\"$(shell pwd)/code-%p.profclangr\"" + if ((LLVM_PROF_FOUND == "not-found")) { + V["LLVM_PROF_ERR"] = "yes" + if (((V["REQUIRE_PGO"] != "") && (V["REQUIRE_PGO"] != "no"))) { + pyconf_error("error: llvm-profdata is required for a --enable-optimizations build but could not be found.") + } + } + } else if ((V["ac_cv_cc_name"] == "gcc")) { + V["PGO_PROF_GEN_FLAG"] = "-fprofile-generate" + V["PGO_PROF_USE_FLAG"] = "-fprofile-use -fprofile-correction" + V["LLVM_PROF_MERGER"] = "true" + V["LLVM_PROF_FILE"] = "" + } else if ((V["ac_cv_cc_name"] == "icc")) { + V["PGO_PROF_GEN_FLAG"] = "-prof-gen" + V["PGO_PROF_USE_FLAG"] = "-prof-use" + V["LLVM_PROF_MERGER"] = "true" + V["LLVM_PROF_FILE"] = "" + } +} + +function u_setup_bolt( _opt_result, bolt_enabled) { + _opt_result = pyconf_option_process_bool("enable_bolt") + bolt_enabled = _opt_result + V["Py_BOLT"] = (((bolt_enabled != "") && (bolt_enabled != "no")) ? "true" : "false") + v_export("PREBOLT_RULE") + V["PREBOLT_RULE"] = "" + V["LLVM_BOLT"] = "" + V["MERGE_FDATA"] = "" + v_export("LLVM_BOLT") + v_export("MERGE_FDATA") + if ((V["Py_BOLT"] == "true")) { + u__setup_bolt_tools() + } + u__setup_bolt_flags() +} + +function u__setup_bolt_tools() { + V["PREBOLT_RULE"] = V["DEF_MAKE_ALL_RULE"] + V["DEF_MAKE_ALL_RULE"] = "bolt-opt" + V["DEF_MAKE_RULE"] = "build_all" + if (pyconf_check_compile_flag("-fno-reorder-blocks-and-partition")) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -fno-reorder-blocks-and-partition" + } + V["LDFLAGS_NODIST"] = V["LDFLAGS_NODIST"] " -Wl,--emit-relocs" + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -fno-pie" + V["LINKCC"] = V["LINKCC"] " -fno-pie -no-pie" + V["LLVM_BOLT"] = pyconf_check_prog("llvm-bolt", V["llvm_path"], "") + if ((((V["LLVM_BOLT"] != "") && (V["LLVM_BOLT"] != "no")) && pyconf_is_executable(V["LLVM_BOLT"]))) { + pyconf_result("Found llvm-bolt") + } else { + pyconf_error("error: llvm-bolt is required for a --enable-bolt build but could not be found.") + } + V["MERGE_FDATA"] = pyconf_check_prog("merge-fdata", V["llvm_path"], "") + if ((((V["MERGE_FDATA"] != "") && (V["MERGE_FDATA"] != "no")) && pyconf_is_executable(V["MERGE_FDATA"]))) { + pyconf_result("Found merge-fdata") + } else { + pyconf_error("error: merge-fdata is required for a --enable-bolt build but could not be found.") + } +} + +function u__setup_bolt_flags() { + v_export("BOLT_BINARIES") + V["BOLT_BINARIES"] = "$(BUILDPYTHON)" + if (((V["enable_shared"] != "") && (V["enable_shared"] != "no"))) { + V["BOLT_BINARIES"] = V["BOLT_BINARIES"] " $(INSTSONAME)" + } + pyconf_env_var("BOLT_COMMON_FLAGS", "Common arguments to llvm-bolt when instrumenting and applying") + pyconf_checking("BOLT_COMMON_FLAGS") + if ((!((V["BOLT_COMMON_FLAGS"] != "") && (V["BOLT_COMMON_FLAGS"] != "no")))) { + V["BOLT_COMMON_FLAGS"] = "-update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1,sre_ucs1_match.lto_priv.0/1,sre_ucs2_match.lto_priv.0/1,sre_ucs4_match.lto_priv.0/1" + } + pyconf_env_var("BOLT_INSTRUMENT_FLAGS", "Arguments to llvm-bolt when instrumenting binaries") + pyconf_checking("BOLT_INSTRUMENT_FLAGS") + if ((!((V["BOLT_INSTRUMENT_FLAGS"] != "") && (V["BOLT_INSTRUMENT_FLAGS"] != "no")))) { + V["BOLT_INSTRUMENT_FLAGS"] = V["BOLT_COMMON_FLAGS"] + } + pyconf_result(V["BOLT_INSTRUMENT_FLAGS"]) + pyconf_env_var("BOLT_APPLY_FLAGS", "Arguments to llvm-bolt when creating a BOLT optimized binary") + pyconf_checking("BOLT_APPLY_FLAGS") + if ((!((V["BOLT_APPLY_FLAGS"] != "") && (V["BOLT_APPLY_FLAGS"] != "no")))) { + V["BOLT_APPLY_FLAGS"] = V["BOLT_COMMON_FLAGS"] " -reorder-blocks=ext-tsp -reorder-functions=cdsort -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot" + } + pyconf_result(V["BOLT_APPLY_FLAGS"]) + v_export("BOLT_COMMON_FLAGS") + v_export("BOLT_INSTRUMENT_FLAGS") + v_export("BOLT_APPLY_FLAGS") +} + +# --- conf_output --- +function u_generate_output( cc, host, srcdir_rel) { + delete _va54 + _va54[1] = "Makefile.pre" + _va54[2] = "Misc/python.pc" + _va54[3] = "Misc/python-embed.pc" + _va54[4] = "Misc/python-config.sh" + _va54[5] = "Modules/Setup.bootstrap" + _va54[6] = "Modules/Setup.stdlib" + _va54[0] = 6 + pyconf_config_files(_va54) + delete _va55 + _va55[1] = "Modules/ld_so_aix" + _va55[0] = 1 + pyconf_config_files_x(_va55) + pyconf_output() + if ((!((pyconf_no_create != "") && (pyconf_no_create != "no")))) { + if ((!pyconf_path_exists("Modules/Setup.local"))) { + pyconf_write_file("Modules/Setup.local", "# Edit this file for local setup changes\n") + } + srcdir_rel = (((pyconf_srcdir != "") && (pyconf_srcdir != "no")) ? pyconf_relpath(pyconf_srcdir) : ".") + delete _va56 + _va56[1] = "/bin/sh" + _va56[2] = srcdir_rel "/Modules/makesetup" + _va56[3] = "-c" + _va56[4] = srcdir_rel "/Modules/config.c.in" + _va56[5] = "-s" + _va56[6] = "Modules" + _va56[7] = "Modules/Setup.local" + _va56[8] = "Modules/Setup.stdlib" + _va56[9] = "Modules/Setup.bootstrap" + _va56[10] = srcdir_rel "/Modules/Setup" + _va56[0] = 10 + if ((!pyconf_cmd(_va56))) { + pyconf_error("makesetup failed") + } + pyconf_rename_file("config.c", "Modules/config.c") + } + if ((!((V["PKG_CONFIG"] != "") && (V["PKG_CONFIG"] != "no")))) { + print "pkg-config is missing. Some dependencies may not be detected correctly." > "/dev/stderr" + } + if (((V["Py_OPT"] != "yes") && (V["Py_DEBUG"] != "yes"))) { + pyconf_notice("\nIf you want a release build with all stable optimizations active (PGO, etc),\nplease run ./configure --enable-optimizations\n") + } + if ((((V["PY_SUPPORT_TIER"] != "") ? V["PY_SUPPORT_TIER"] : "1") == "0")) { + cc = V["ac_cv_cc_name"] + host = V["host"] + print "Platform \"" host "\" with compiler \"" cc "\" is not supported by the CPython core team, see https://peps.python.org/pep-0011/ for more information." > "/dev/stderr" + } + if ((!((V["ac_cv_header_stdatomic_h"] != "") && (V["ac_cv_header_stdatomic_h"] != "no")))) { + print "Your compiler or platform does not have a working C11 stdatomic.h. A future version of Python may require stdatomic.h." + } +} + +# --- conf_paths --- +function u_setup_install_paths( platform_triplet, with_platlibdir, with_wheel) { + v_export("PLATLIBDIR") + V["PLATLIBDIR"] = "lib" + pyconf_checking("for --with-platlibdir") + with_platlibdir = pyconf_option_value("with_platlibdir") + if ((((with_platlibdir != "") && (with_platlibdir != "no")) && (!(((with_platlibdir == "yes") || (with_platlibdir == "no")) || (with_platlibdir == ""))))) { + pyconf_result("yes") + V["PLATLIBDIR"] = with_platlibdir + } else { + pyconf_result("no") + } + v_export("LIBDEST") + v_export("BINLIBDEST") + V["LIBDEST"] = "${prefix}/${PLATLIBDIR}/python$(VERSION)$(ABI_THREAD)" + V["BINLIBDEST"] = "${exec_prefix}/${PLATLIBDIR}/python$(VERSION)$(ABI_THREAD)" + v_export("PY_ENABLE_SHARED") + platform_triplet = V["PLATFORM_TRIPLET"] + if ((!((platform_triplet != "") && (platform_triplet != "no")))) { + V["LIBPL"] = "$(LIBDEST)/config-" V["LDVERSION"] + v_export("LIBPL") + } else { + V["LIBPL"] = "$(LIBDEST)/config-" V["LDVERSION"] "-" platform_triplet + v_export("LIBPL") + } + v_export("WHEEL_PKG_DIR") + V["WHEEL_PKG_DIR"] = "" + pyconf_checking("for --with-wheel-pkg-dir") + with_wheel = pyconf_option_value("with_wheel_pkg_dir") + if ((((with_wheel != "") && (with_wheel != "no")) && (!(with_wheel == "no")))) { + pyconf_result("yes") + V["WHEEL_PKG_DIR"] = with_wheel + } else { + pyconf_result("no") + } +} + +function u_check_misc_runtime( ac_cv_broken_nice, ac_cv_broken_poll, ac_cv_working_tzset) { + pyconf_checking("for broken nice()") + ac_cv_broken_nice = (pyconf_run_check("", "\n #include \n #include \n int main(void)\n {\n int val1 = nice(1);\n if (val1 != -1 && val1 == nice(2))\n exit(0);\n exit(1);\n }\n ") ? "yes" : "no") + pyconf_result(ac_cv_broken_nice) + if (((ac_cv_broken_nice != "") && (ac_cv_broken_nice != "no"))) { + pyconf_define("HAVE_BROKEN_NICE", 1, 0, "Define if nice() returns success/failure instead of the new priority.") + } + pyconf_checking("for broken poll()") + ac_cv_broken_poll = (pyconf_run_check("", "\n #include \n #include \n\n int main(void)\n {\n struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };\n int poll_test;\n close (42);\n poll_test = poll(&poll_struct, 1, 0);\n if (poll_test < 0)\n return 0;\n else if (poll_test == 0 && poll_struct.revents != POLLNVAL)\n return 0;\n else\n return 1;\n }\n ") ? "yes" : "no") + pyconf_result(ac_cv_broken_poll) + if (((ac_cv_broken_poll != "") && (ac_cv_broken_poll != "no"))) { + pyconf_define("HAVE_BROKEN_POLL", 1, 0, "Define if poll() sets errno on invalid file descriptors.") + } + pyconf_checking("for working tzset()") + ac_cv_working_tzset = (pyconf_run_check("", "\n #include \n #include \n #include \n\n #if HAVE_TZNAME\n extern char *tzname[];\n #endif\n\n int main(void)\n {\n time_t groundhogday = 1044144000; /* GMT-based */\n time_t midyear = groundhogday + (365 * 24 * 3600 / 2);\n\n putenv(\"TZ=UTC+0\");\n tzset();\n if (localtime(&groundhogday)->tm_hour != 0)\n exit(1);\n #if HAVE_TZNAME\n if (strcmp(tzname[0], \"UTC\") ||\n (tzname[1][0] != 0 && tzname[1][0] != ' '))\n exit(1);\n #endif\n\n putenv(\"TZ=EST+5EDT,M4.1.0,M10.5.0\");\n tzset();\n if (localtime(&groundhogday)->tm_hour != 19)\n exit(1);\n #if HAVE_TZNAME\n if (strcmp(tzname[0], \"EST\") || strcmp(tzname[1], \"EDT\"))\n exit(1);\n #endif\n\n putenv(\"TZ=AEST-10AEDT-11,M10.5.0,M3.5.0\");\n tzset();\n if (localtime(&groundhogday)->tm_hour != 11)\n exit(1);\n #if HAVE_TZNAME\n if (strcmp(tzname[0], \"AEST\") || strcmp(tzname[1], \"AEDT\"))\n exit(1);\n #endif\n\n #if HAVE_STRUCT_TM_TM_ZONE\n if (strcmp(localtime(&groundhogday)->tm_zone, \"AEDT\"))\n exit(1);\n if (strcmp(localtime(&midyear)->tm_zone, \"AEST\"))\n exit(1);\n #endif\n\n exit(0);\n }\n ") ? "yes" : "no") + pyconf_result(ac_cv_working_tzset) + if (((ac_cv_working_tzset != "") && (ac_cv_working_tzset != "no"))) { + pyconf_define("HAVE_WORKING_TZSET", 1, 0, "Define if tzset() actually switches the local timezone in a meaningful way.") + } +} + +# --- conf_platform --- +function u_setup_machdep( SUNOS_VERSION, ac_md_release, ac_md_system, _split_tmp) { + delete _split_tmp + pyconf_env_var("MACHDEP", "name for machine-dependent library files") + pyconf_checking("MACHDEP") + V["ac_sys_system"] = "" + V["ac_sys_release"] = "" + if ((!((V["MACHDEP"] != "") && (V["MACHDEP"] != "no")))) { + if (((V["cross_compiling"] != "") && (V["cross_compiling"] != "no"))) { + if (pyconf_fnmatch(V["host"], "*-*-linux-android*")) { + V["ac_sys_system"] = "Linux-android" + } else if (pyconf_fnmatch(V["host"], "*-*-linux*")) { + V["ac_sys_system"] = "Linux" + } else if (pyconf_fnmatch(V["host"], "*-*-cygwin*")) { + V["ac_sys_system"] = "Cygwin" + } else if (pyconf_fnmatch(V["host"], "*-apple-ios*")) { + V["ac_sys_system"] = "iOS" + } else if (pyconf_fnmatch(V["host"], "*-*-darwin*")) { + V["ac_sys_system"] = "Darwin" + } else if (pyconf_fnmatch(V["host"], "*-*-vxworks*")) { + V["ac_sys_system"] = "VxWorks" + } else if (pyconf_fnmatch(V["host"], "*-*-emscripten")) { + V["ac_sys_system"] = "Emscripten" + } else if (pyconf_fnmatch(V["host"], "*-*-wasi*")) { + V["ac_sys_system"] = "WASI" + } else { + V["MACHDEP"] = "unknown" + pyconf_error("error: cross build not supported for " V["host"]) + } + V["ac_sys_release"] = "" + } else { + delete _va57 + _va57[1] = "uname" + _va57[2] = "-s" + _va57[0] = 2 + V["ac_sys_system"] = pyconf_cmd_output(_va57) + if ((((V["ac_sys_system"] == "AIX") || (V["ac_sys_system"] == "UnixWare")) || (V["ac_sys_system"] == "OpenUNIX"))) { + delete _va58 + _va58[1] = "uname" + _va58[2] = "-v" + _va58[0] = 2 + V["ac_sys_release"] = pyconf_cmd_output(_va58) + } else { + delete _va59 + _va59[1] = "uname" + _va59[2] = "-r" + _va59[0] = 2 + V["ac_sys_release"] = pyconf_cmd_output(_va59) + } + } + ac_md_system = tolower(_str_replace(_str_replace(V["ac_sys_system"], "/", ""), " ", "")) + ac_md_release = _str_replace(_str_replace(V["ac_sys_release"], "/", ""), " ", "") + ac_md_release = pyconf_sed(ac_md_release, "^[A-Z]\\.", "") + ac_md_release = _split_index(ac_md_release, ".", 1) + V["MACHDEP"] = ac_md_system ac_md_release + if (_str_startswith(V["MACHDEP"], "aix")) { + V["MACHDEP"] = "aix" + } else if (_str_startswith(V["MACHDEP"], "freebsd")) { + V["MACHDEP"] = "freebsd" + } else if (_str_startswith(V["MACHDEP"], "linux-android")) { + V["MACHDEP"] = "android" + } else if (_str_startswith(V["MACHDEP"], "linux")) { + V["MACHDEP"] = "linux" + } else if (_str_startswith(V["MACHDEP"], "cygwin")) { + V["MACHDEP"] = "cygwin" + } else if (_str_startswith(V["MACHDEP"], "darwin")) { + V["MACHDEP"] = "darwin" + } else if ((V["MACHDEP"] == "")) { + V["MACHDEP"] = "unknown" + } + if ((V["ac_sys_system"] == "SunOS")) { + SUNOS_VERSION = _str_replace(pyconf_sed(V["ac_sys_release"], "\\.(\\d)$", ".0\\1"), ".", "") + pyconf_define("Py_SUNOS_VERSION", SUNOS_VERSION, 1, "The version of SunOS/Solaris as reported by `uname -r' without the dot.") + } + } + pyconf_result("\"" V["MACHDEP"] "\"") + v_export("MACHDEP") +} + +function u_setup_host_prefix() { + if ((!((V["host_prefix"] != "") && (V["host_prefix"] != "no")))) { + V["host_prefix"] = ((V["ac_sys_system"] == "Emscripten") ? "/" : "${prefix}") + v_export("host_prefix") + } + if ((!((V["host_exec_prefix"] != "") && (V["host_exec_prefix"] != "no")))) { + V["host_exec_prefix"] = ((V["ac_sys_system"] == "Emscripten") ? V["host_prefix"] : "${exec_prefix}") + } + v_export("host_exec_prefix") +} + +function u_setup_host_platform( _tmp_split, emcc_ver, host_device, host_ident, host_os, parts, _idx_tmp, _split_tmp) { + delete _idx_tmp + delete _split_tmp + V["_PYTHON_HOST_PLATFORM"] = "" + if (((V["cross_compiling"] != "") && (V["cross_compiling"] != "no"))) { + host_ident = "" + if (pyconf_fnmatch(V["host"], "*-*-linux*")) { + host_ident = (_str_startswith(V["host_cpu"], "arm") ? "arm" : V["host_cpu"]) + } else if (pyconf_fnmatch(V["host"], "*-*-cygwin*")) { + host_ident = "" + } else if (pyconf_fnmatch(V["host"], "*-apple-ios*")) { + parts = _str_replace(V["host"], "-", " ") + host_os = ((length(parts) > 2) ? _split_index(parts, " ", 3) : "") + host_device = ((length(parts) > 3) ? _split_index(parts, " ", 4) : "os") + pyconf_checking("iOS deployment target") + V["IPHONEOS_DEPLOYMENT_TARGET"] = ((_str_removeprefix(host_os, "ios") != "") ? _str_removeprefix(host_os, "ios") : "13.0") + pyconf_result(V["IPHONEOS_DEPLOYMENT_TARGET"]) + if ((V["host_cpu"] == "aarch64")) { + host_ident = V["IPHONEOS_DEPLOYMENT_TARGET"] "-arm64-iphone" host_device + } else { + host_ident = V["IPHONEOS_DEPLOYMENT_TARGET"] "-" V["host_cpu"] "-iphone" host_device + } + } else if (pyconf_fnmatch(V["host"], "*-*-darwin*")) { + host_ident = (_str_startswith(V["host_cpu"], "arm") ? "arm" : V["host_cpu"]) + } else if (pyconf_fnmatch(V["host"], "*-*-vxworks*")) { + host_ident = V["host_cpu"] + } else if (pyconf_fnmatch(V["host"], "*-*-emscripten")) { + delete _va60 + _va60[1] = "emcc" + _va60[2] = "-dumpversion" + _va60[0] = 2 + emcc_ver = _split_index(pyconf_cmd_output(_va60), "-", 1) + host_ident = emcc_ver "-" V["host_cpu"] + } else if ((_str_startswith(V["host"], "wasm32-") || _str_startswith(V["host"], "wasm64-"))) { + host_ident = V["host_cpu"] + } else { + V["MACHDEP"] = "unknown" + pyconf_error("error: cross build not supported for " V["host"]) + } + V["_PYTHON_HOST_PLATFORM"] = V["MACHDEP"] (((host_ident != "") && (host_ident != "no")) ? "-" host_ident : "") + } + if ((!("IPHONEOS_DEPLOYMENT_TARGET" in V))) { + V["IPHONEOS_DEPLOYMENT_TARGET"] = "" + } + v_export("_PYTHON_HOST_PLATFORM") +} + +function u_check_endianness_and_soabi( abiflags, abiflags_no_d, soabi_platform, version_nodots) { + pyconf_check_c_bigendian() + v_export("SOABI") + pyconf_checking("ABIFLAGS") + pyconf_result(V["ABIFLAGS"]) + pyconf_checking("SOABI") + version_nodots = _str_replace(V["VERSION"], ".", "") + abiflags = V["ABIFLAGS"] + soabi_platform = V["SOABI_PLATFORM"] + V["SOABI"] = "cpython-" version_nodots abiflags + if (((soabi_platform != "") && (soabi_platform != "no"))) { + V["SOABI"] = V["SOABI"] "-" soabi_platform + } + pyconf_result(V["SOABI"]) + if ((V["Py_DEBUG"] == "yes")) { + v_export("ALT_SOABI") + abiflags_no_d = _str_replace(abiflags, "d", "") + V["ALT_SOABI"] = "cpython-" version_nodots abiflags_no_d + if (((soabi_platform != "") && (soabi_platform != "no"))) { + V["ALT_SOABI"] = V["ALT_SOABI"] "-" soabi_platform + } + pyconf_define_unquoted("ALT_SOABI", "\"" V["ALT_SOABI"] "\"", "Alternative SOABI used in debug build to load C extensions built in release mode") + } + v_export("EXT_SUFFIX") + V["EXT_SUFFIX"] = "." V["SOABI"] V["SHLIB_SUFFIX"] + pyconf_checking("LDVERSION") + V["LDVERSION"] = "$(VERSION)$(ABIFLAGS)" + v_export("LDVERSION") + pyconf_result(V["LDVERSION"]) +} + +function u_setup_xopen_source( sys_rel) { + V["define_xopen_source"] = "yes" + sys_rel = V["ac_sys_system"] "/" V["ac_sys_release"] + delete _va61 + _va61[1] = "OpenBSD/2.*" + _va61[2] = "OpenBSD/3.*" + _va61[3] = "OpenBSD/4.0*" + _va61[4] = "OpenBSD/4.1*" + _va61[5] = "OpenBSD/4.2*" + _va61[6] = "OpenBSD/4.3*" + _va61[7] = "OpenBSD/4.4*" + _va61[8] = "OpenBSD/4.5*" + _va61[9] = "OpenBSD/4.6*" + _va61[0] = 9 + if (pyconf_fnmatch_any(sys_rel, _va61)) { + V["define_xopen_source"] = "no" + pyconf_define("_BSD_SOURCE", 1, 0, "Define on OpenBSD to activate all library features") + } else if (_str_startswith(sys_rel, "OpenBSD/")) { + pyconf_define("_BSD_SOURCE", 1, 0, "Define on OpenBSD to activate all library features") + } else { + delete _va62 + _va62[1] = "NetBSD/1.5*" + _va62[2] = "NetBSD/1.6*" + _va62[0] = 2 + if (pyconf_fnmatch_any(sys_rel, _va62)) { + V["define_xopen_source"] = "no" + } else if (_str_startswith(sys_rel, "SunOS/")) { + V["define_xopen_source"] = "no" + } else if ((_str_startswith(sys_rel, "OpenUNIX/8.0.0") || pyconf_fnmatch(sys_rel, "UnixWare/7.1.[0-4]*"))) { + V["define_xopen_source"] = "no" + } else if (_str_startswith(sys_rel, "SCO_SV/3.2")) { + V["define_xopen_source"] = "no" + } else { + delete _va63 + _va63[1] = "Darwin/[6789].*" + _va63[2] = "Darwin/[12][0-9].*" + _va63[0] = 2 + if (pyconf_fnmatch_any(sys_rel, _va63)) { + V["define_xopen_source"] = "no" + } else if (_str_startswith(sys_rel, "iOS/")) { + V["define_xopen_source"] = "no" + } else if (_str_startswith(sys_rel, "QNX/6.3.2")) { + V["define_xopen_source"] = "no" + } else if (_str_startswith(sys_rel, "VxWorks/")) { + V["define_xopen_source"] = "no" + } else if ((_str_startswith(V["ac_sys_system"], "hp") || _str_startswith(V["ac_sys_system"], "HP"))) { + V["define_xopen_source"] = "no" + } + } + } + if (((V["define_xopen_source"] != "") && (V["define_xopen_source"] != "no"))) { + pyconf_define("_XOPEN_SOURCE", 800, 0, "Define to the level of X/Open that your system supports") + pyconf_define("_XOPEN_SOURCE_EXTENDED", 1, 0, "Define to activate Unix95-and-earlier features") + pyconf_define_unquoted("_POSIX_C_SOURCE", "202405L", "Define to activate features from IEEE Std 1003.1-2024") + } + if ((_str_startswith(V["ac_sys_system"], "hp") || _str_startswith(V["ac_sys_system"], "HP"))) { + pyconf_define("_INCLUDE__STDC_A1_SOURCE", 1, 0, "Define to include mbstate_t for mbrtowc") + } +} + +function u_setup_platform_triplet( _i_line, _n_line, line, triplet_result, triplet_result_returncode, triplet_result_stderr, triplet_result_stdout, _as_27, _split_tmp) { + delete _as_27 + delete _split_tmp + pyconf_checking("for the platform triplet based on compiler characteristics") + delete _va64 + _va64[1] = pyconf_srcdir + _va64[2] = "Misc/platform_triplet.c" + _va64[0] = 2 + triplet_result_returncode = pyconf_run_capture("$CPP $CPPFLAGS " pyconf_path_join(_va64)) + triplet_result_stdout = _pyconf_run_cmd_stdout + triplet_result_stderr = _pyconf_run_cmd_stderr + V["PLATFORM_TRIPLET"] = "" + if ((triplet_result_returncode == 0)) { + _n_line = split(triplet_result_stdout, _as_27, "\n") + for (_i_line = 1; (_i_line <= _n_line); _i_line = (_i_line + 1)) { + line = _as_27[_i_line] + if (_str_startswith(line, "PLATFORM_TRIPLET=")) { + V["PLATFORM_TRIPLET"] = _str_strip(_str_removeprefix(line, "PLATFORM_TRIPLET=")) + break + } + } + } + pyconf_result(((V["PLATFORM_TRIPLET"] != "") ? V["PLATFORM_TRIPLET"] : "none")) + pyconf_checking("for multiarch") + if (((_str_startswith(V["ac_sys_system"], "Darwin") || (V["ac_sys_system"] == "iOS")) || _str_startswith(V["ac_sys_system"], "FreeBSD"))) { + V["MULTIARCH"] = "" + } else { + delete _va65 + _va65[1] = V["CC"] + _va65[2] = "--print-multiarch" + _va65[0] = 2 + V["MULTIARCH"] = pyconf_cmd_output(_va65) + } + if ((((V["PLATFORM_TRIPLET"] != "") && (V["PLATFORM_TRIPLET"] != "no")) && ((V["MULTIARCH"] != "") && (V["MULTIARCH"] != "no")))) { + if ((V["PLATFORM_TRIPLET"] != V["MULTIARCH"])) { + pyconf_error("error: internal configure error for the platform triplet, please file a bug report") + } + } else if ((((V["PLATFORM_TRIPLET"] != "") && (V["PLATFORM_TRIPLET"] != "no")) && (!((V["MULTIARCH"] != "") && (V["MULTIARCH"] != "no"))))) { + V["MULTIARCH"] = V["PLATFORM_TRIPLET"] + } + v_export("MULTIARCH") + v_export("PLATFORM_TRIPLET") + pyconf_result(V["MULTIARCH"]) + if ((V["ac_sys_system"] == "iOS")) { + V["SOABI_PLATFORM"] = ((index(V["PLATFORM_TRIPLET"], "-") > 0) ? _split_index(V["PLATFORM_TRIPLET"], "-", 2) : V["PLATFORM_TRIPLET"]) + } else { + V["SOABI_PLATFORM"] = V["PLATFORM_TRIPLET"] + } + v_export("SOABI_PLATFORM") + V["MULTIARCH_CPPFLAGS"] = (((V["MULTIARCH"] != "") && (V["MULTIARCH"] != "no")) ? "-DMULTIARCH=\\\"" V["MULTIARCH"] "\\\"" : "") + v_export("MULTIARCH_CPPFLAGS") +} + +function u_setup_pep11_tier( host_cc, tier1, tier2, tier3) { + delete tier1 + delete tier2 + delete tier3 + pyconf_checking("for PEP 11 support tier") + host_cc = V["host"] "/" V["ac_cv_cc_name"] + delete tier1 + tier1[1] = "x86_64-*-linux-gnu/gcc" + tier1[2] = "x86_64-apple-darwin*/clang" + tier1[3] = "aarch64-apple-darwin*/clang" + tier1[4] = "i686-pc-windows-msvc/msvc" + tier1[5] = "x86_64-pc-windows-msvc/msvc" + tier1[0] = 5 + delete tier2 + tier2[1] = "aarch64-*-linux-gnu/gcc" + tier2[2] = "aarch64-*-linux-gnu/clang" + tier2[3] = "powerpc64le-*-linux-gnu/gcc" + tier2[4] = "wasm32-unknown-wasip1/clang" + tier2[5] = "x86_64-*-linux-gnu/clang" + tier2[0] = 5 + delete tier3 + tier3[1] = "aarch64-pc-windows-msvc/msvc" + tier3[2] = "armv7l-*-linux-gnueabihf/gcc" + tier3[3] = "powerpc64le-*-linux-gnu/clang" + tier3[4] = "s390x-*-linux-gnu/gcc" + tier3[5] = "x86_64-*-freebsd*/clang" + tier3[6] = "aarch64-apple-ios*-simulator/clang" + tier3[7] = "aarch64-apple-ios*/clang" + tier3[8] = "aarch64-*-linux-android/clang" + tier3[9] = "x86_64-*-linux-android/clang" + tier3[10] = "wasm32-*-emscripten/emcc" + tier3[0] = 10 + if (pyconf_fnmatch_any(host_cc, tier1)) { + V["PY_SUPPORT_TIER"] = 1 + pyconf_result(host_cc " has tier 1 (supported)") + } else if (pyconf_fnmatch_any(host_cc, tier2)) { + V["PY_SUPPORT_TIER"] = 2 + pyconf_result(host_cc " has tier 2 (supported)") + } else if (pyconf_fnmatch_any(host_cc, tier3)) { + V["PY_SUPPORT_TIER"] = 3 + pyconf_result(host_cc " has tier 3 (partially supported)") + } else { + V["PY_SUPPORT_TIER"] = 0 + pyconf_warn(host_cc " is not supported") + } + pyconf_define("PY_SUPPORT_TIER", V["PY_SUPPORT_TIER"], 1, "PEP 11 Support tier (1, 2, 3 or 0 for unsupported)") + v_export("PY_SUPPORT_TIER") +} + +function u__define_maxlogname() { + pyconf_define("HAVE_MAXLOGNAME", 1, 0, "Define if you have the 'MAXLOGNAME' constant.") +} + +function u__define_ut_namesize() { + pyconf_define("HAVE_UT_NAMESIZE", 1, 0, "Define if you have the 'HAVE_UT_NAMESIZE' constant.") +} + +function u__define_pr_set_vma_anon_name() { + pyconf_define("HAVE_PR_SET_VMA_ANON_NAME", 1, 0, "Define if you have the 'PR_SET_VMA_ANON_NAME' constant.") +} + +function u_check_declarations() { + if (pyconf_check_decl("MAXLOGNAME", "sys/param.h", "HAVE_DECL_MAXLOGNAME")) { + u__define_maxlogname() + } + if (pyconf_check_decl("UT_NAMESIZE", "utmp.h", "HAVE_DECL_UT_NAMESIZE")) { + u__define_ut_namesize() + } + if ((V["ac_cv_libc"] != "musl")) { + if (pyconf_check_decl("PR_SET_VMA_ANON_NAME", "linux/prctl.h sys/prctl.h", "HAVE_DECL_PR_SET_VMA_ANON_NAME")) { + u__define_pr_set_vma_anon_name() + } + } +} + +function u_check_pty_and_misc_funcs() { + if ((!pyconf_check_func("openpty", "", "HAVE_OPENPTY"))) { + if (pyconf_check_lib("util", "openpty", "", "")) { + pyconf_define("HAVE_OPENPTY", 1, 0, "") + V["LIBS"] = V["LIBS"] " -lutil" + } else if (pyconf_check_lib("bsd", "openpty", "", "")) { + pyconf_define("HAVE_OPENPTY", 1, 0, "") + V["LIBS"] = V["LIBS"] " -lbsd" + } + } + if ((pyconf_search_libs("login_tty", "util") != "")) { + pyconf_define("HAVE_LOGIN_TTY", 1, 0, "Define to 1 if you have the `login_tty' function.") + } + if ((!pyconf_check_func("forkpty", "", "HAVE_FORKPTY"))) { + if (pyconf_check_lib("util", "forkpty", "", "")) { + pyconf_define("HAVE_FORKPTY", 1, 0, "") + V["LIBS"] = V["LIBS"] " -lutil" + } else if (pyconf_check_lib("bsd", "forkpty", "", "")) { + pyconf_define("HAVE_FORKPTY", 1, 0, "") + V["LIBS"] = V["LIBS"] " -lbsd" + } + } + delete _va66 + _va66[1] = "setns" + _va66[2] = "unshare" + _va66[0] = 2 + pyconf_check_funcs(_va66) + delete _va67 + _va67[1] = "fseek64" + _va67[2] = "fseeko" + _va67[3] = "fstatvfs" + _va67[4] = "ftell64" + _va67[5] = "ftello" + _va67[6] = "statvfs" + _va67[0] = 6 + pyconf_check_funcs(_va67) + delete _va68 + _va68[1] = "dup2" + _va68[0] = 1 + pyconf_replace_funcs(_va68) + if (pyconf_check_func("getpgrp", "", "HAVE_GETPGRP")) { + if (pyconf_compile_check("", "#include \n\nint main(void) { getpgrp(0); return 0; }")) { + pyconf_define("GETPGRP_HAVE_ARG", 1, 0, "Define if getpgrp() must be called as getpgrp(0).") + } + } + if (pyconf_check_func("setpgrp", "", "HAVE_SETPGRP")) { + if (pyconf_compile_check("", "#include \n\nint main(void) { setpgrp(0,0); return 0; }")) { + pyconf_define("SETPGRP_HAVE_ARG", 1, 0, "Define if setpgrp() must be called as setpgrp(0, 0).") + } + } +} + +function u_check_clock_functions( android_api, skip_clock_nanosleep) { + if ((!pyconf_check_func("clock_gettime", "", "HAVE_CLOCK_GETTIME"))) { + if (pyconf_check_lib("rt", "clock_gettime", "", "")) { + V["LIBS"] = V["LIBS"] " -lrt" + pyconf_define("HAVE_CLOCK_GETTIME", 1, 0, "") + pyconf_define("TIMEMODULE_LIB", "rt", 1, "Library needed by timemodule.c: librt may be needed for clock_gettime()") + V["TIMEMODULE_LIB"] = "-lrt" + } + } + v_export("TIMEMODULE_LIB") + if ((!pyconf_check_func("clock_getres", "", "HAVE_CLOCK_GETRES"))) { + if (pyconf_check_lib("rt", "clock_getres", "", "")) { + pyconf_define("HAVE_CLOCK_GETRES", 1, 0, "") + } + } + if ((!((V["ac_sys_system"] == "Linux-android") || (V["ac_sys_system"] == "iOS")))) { + if ((!pyconf_check_func("clock_settime", "", "HAVE_CLOCK_SETTIME"))) { + if (pyconf_check_lib("rt", "clock_settime", "", "")) { + pyconf_define("HAVE_CLOCK_SETTIME", 1, 0, "") + } + } + } + android_api = ((V["ANDROID_API_LEVEL"] != "") ? V["ANDROID_API_LEVEL"] : "0") + skip_clock_nanosleep = (((V["ac_sys_system"] == "Linux-android") && (android_api < 23)) ? "yes" : "no") + if ((!((skip_clock_nanosleep != "") && (skip_clock_nanosleep != "no")))) { + if ((!pyconf_check_func("clock_nanosleep", "", "HAVE_CLOCK_NANOSLEEP"))) { + if (pyconf_check_lib("rt", "clock_nanosleep", "", "")) { + pyconf_define("HAVE_CLOCK_NANOSLEEP", 1, 0, "") + } + } + } + if ((!pyconf_check_func("nanosleep", "", "HAVE_NANOSLEEP"))) { + if (pyconf_check_lib("rt", "nanosleep", "", "")) { + pyconf_define("HAVE_NANOSLEEP", 1, 0, "") + } + } +} + +function u_check_structs( _i_m, ac_cv_header_time_altzone, ac_cv_struct_addrinfo, ac_cv_struct_sockaddr_alg, ac_cv_struct_sockaddr_storage, m, _al_28, _al_29) { + delete _al_28 + delete _al_29 + pyconf_check_struct_tm() + pyconf_check_struct_timezone() + _al_28[1] = "struct stat.st_rdev" + _al_28[2] = "struct stat.st_blksize" + _al_28[3] = "struct stat.st_flags" + _al_28[4] = "struct stat.st_gen" + _al_28[5] = "struct stat.st_birthtime" + _al_28[6] = "struct stat.st_blocks" + for (_i_m = 1; (_i_m <= 6); _i_m = (_i_m + 1)) { + m = _al_28[_i_m] + pyconf_check_member(m, "sys/types.h sys/stat.h") + } + pyconf_check_member("struct passwd.pw_gecos", "sys/types.h pwd.h", "HAVE_STRUCT_PASSWD_PW_GECOS") + pyconf_check_member("struct passwd.pw_passwd", "sys/types.h pwd.h", "HAVE_STRUCT_PASSWD_PW_PASSWD") + pyconf_check_member("siginfo_t.si_band", "signal.h") + if ((V["ac_cv_func_statx"] == "yes")) { + _al_29[1] = "struct statx.stx_mnt_id" + _al_29[2] = "struct statx.stx_dio_mem_align" + _al_29[3] = "struct statx.stx_subvol" + _al_29[4] = "struct statx.stx_atomic_write_unit_min" + _al_29[5] = "struct statx.stx_dio_read_offset_align" + _al_29[6] = "struct statx.stx_atomic_write_unit_max_opt" + for (_i_m = 1; (_i_m <= 6); _i_m = (_i_m + 1)) { + m = _al_29[_i_m] + pyconf_check_member(m, "linux/stat.h") + } + } + pyconf_checking("for time.h that defines altzone") + ac_cv_header_time_altzone = (pyconf_compile_check("", "#include \n\nint main(void) { return altzone; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_header_time_altzone) + if (((ac_cv_header_time_altzone != "") && (ac_cv_header_time_altzone != "no"))) { + pyconf_define("HAVE_ALTZONE", 1, 0, "Define this if your time.h defines altzone.") + } + pyconf_checking("for addrinfo") + ac_cv_struct_addrinfo = (pyconf_compile_check("", "#include \n\nint main(void) { struct addrinfo a; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_struct_addrinfo) + if (((ac_cv_struct_addrinfo != "") && (ac_cv_struct_addrinfo != "no"))) { + pyconf_define("HAVE_ADDRINFO", 1, 0, "struct addrinfo (netdb.h)") + } + pyconf_checking("for sockaddr_storage") + ac_cv_struct_sockaddr_storage = (pyconf_compile_check("", "#include \n#include \n\nint main(void) { struct sockaddr_storage s; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_struct_sockaddr_storage) + if (((ac_cv_struct_sockaddr_storage != "") && (ac_cv_struct_sockaddr_storage != "no"))) { + pyconf_define("HAVE_SOCKADDR_STORAGE", 1, 0, "struct sockaddr_storage (sys/socket.h)") + } + pyconf_checking("for sockaddr_alg") + ac_cv_struct_sockaddr_alg = (pyconf_compile_check("", "#include \n#include \n#include \n\nint main(void) { struct sockaddr_alg s; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_struct_sockaddr_alg) + if (((ac_cv_struct_sockaddr_alg != "") && (ac_cv_struct_sockaddr_alg != "no"))) { + pyconf_define("HAVE_SOCKADDR_ALG", 1, 0, "struct sockaddr_alg (linux/if_alg.h)") + } +} + +function u_check_aix_pipe_buf() { + if (_str_startswith(V["ac_sys_system"], "AIX")) { + pyconf_define("HAVE_BROKEN_PIPE_BUF", 1, 0, "Define if the system reports an invalid PIPE_BUF value.") + } +} + +function u_check_posix_shmem( have_posix_shmem, posixshmem_libs, shm_open_result) { + V["POSIXSHMEM_CFLAGS"] = "-I$(srcdir)/Modules/_multiprocessing" + V["POSIXSHMEM_LIBS"] = "" + pyconf_save_env() + shm_open_result = pyconf_search_libs("shm_open", "rt") + posixshmem_libs = ((shm_open_result == "-lrt") ? "-lrt" : "") + have_posix_shmem = ((pyconf_check_func("shm_open", "sys/mman.h", "HAVE_SHM_OPEN") && pyconf_check_func("shm_unlink", "sys/mman.h", "HAVE_SHM_UNLINK")) ? "yes" : "no") + pyconf_restore_env() + V["POSIXSHMEM_LIBS"] = posixshmem_libs + V["have_posix_shmem"] = have_posix_shmem + v_export("POSIXSHMEM_CFLAGS") + v_export("POSIXSHMEM_LIBS") +} + +function u_setup_c_locale_coercion( _opt_result, with_c_locale_coercion) { + _opt_result = pyconf_option_process_value("with_c_locale_coercion") + with_c_locale_coercion = _opt_result + if ((with_c_locale_coercion != "no")) { + pyconf_define("PY_COERCE_C_LOCALE", 1, 0, "Define if you want to coerce the C locale to a UTF-8 based locale") + } +} + +function u_check_posix_functions( ANDROID_API_LEVEL, _i_name, blocked_len, machdep, name, posix_funcs_len, blocked, posix_funcs) { + delete blocked + delete posix_funcs + ANDROID_API_LEVEL = ((V["ANDROID_API_LEVEL"] != "") ? V["ANDROID_API_LEVEL"] : 0) + if ((V["ac_sys_system"] == "Linux-android")) { + blocked_len = split("chroot initgroups setegid seteuid setgid sethostname setregid setresgid setresuid setreuid setuid sem_open sem_unlink", blocked, " ") + blocked[0] = blocked_len + if ((ANDROID_API_LEVEL < 23)) { + blocked[(blocked_len + 1)] = "fchmodat" + blocked_len = (blocked_len + 1) + blocked[0] = blocked_len + } + for (_i_name = 1; (_i_name <= blocked_len); _i_name = (_i_name + 1)) { + name = blocked[_i_name] + CACHE["ac_cv_func_" name] = "no" + } + } + posix_funcs_len = split("\n accept4 alarm bind_textdomain_codeset chmod chown clearenv\n clock closefrom close_range confstr\n copy_file_range ctermid dladdr dup dup3 execv explicit_bzero explicit_memset\n faccessat fchmod fchmodat fchown fchownat fdopendir fdwalk fexecve\n fork fork1 fpathconf fstatat ftime ftruncate futimens futimes futimesat\n gai_strerror getegid geteuid getgid getgrent getgrgid getgrgid_r\n getgrnam_r getgrouplist gethostname getitimer getloadavg getlogin getlogin_r\n getpeername getpgid getpid getppid getpriority _getpty\n getpwent getpwnam_r getpwuid getpwuid_r getresgid getresuid getrusage getsid getspent\n getspnam getuid getwd grantpt if_nameindex initgroups kill killpg lchown linkat\n lockf lstat lutimes madvise mbrtowc memrchr mkdirat mkfifo mkfifoat\n mknod mknodat mktime mmap mremap nice openat opendir pathconf pause pipe\n pipe2 plock poll ppoll posix_fadvise posix_fallocate posix_openpt posix_spawn posix_spawnp\n posix_spawn_file_actions_addclosefrom_np\n pread preadv preadv2 process_vm_readv\n pthread_cond_timedwait_relative_np pthread_condattr_setclock pthread_init\n pthread_kill pthread_get_name_np pthread_getname_np pthread_set_name_np\n pthread_setname_np pthread_getattr_np\n ptsname ptsname_r pwrite pwritev pwritev2 readlink readlinkat readv realpath renameat\n rtpSpawn sched_get_priority_max sched_rr_get_interval sched_setaffinity\n sched_setparam sched_setscheduler sem_clockwait sem_getvalue sem_open\n sem_timedwait sem_unlink sendfile setegid seteuid setgid sethostname\n setitimer setlocale setpgid setpgrp setpriority setregid setresgid\n setresuid setreuid setsid setuid setvbuf shutdown sigaction sigaltstack\n sigfillset siginterrupt sigpending sigrelse sigtimedwait sigwait\n sigwaitinfo snprintf splice strftime strlcpy strsignal symlinkat sync\n sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile\n tmpnam tmpnam_r truncate ttyname_r umask uname unlinkat unlockpt utimensat utimes vfork\n wait wait3 wait4 waitid waitpid wcscoll wcsftime wcsxfrm wmemcmp writev\n ", posix_funcs, " ") + posix_funcs[0] = posix_funcs_len + pyconf_check_funcs(posix_funcs) + if (_str_startswith(V["ac_sys_system"], "Linux")) { + pyconf_check_func("statx", "", "HAVE_STATX") + } + machdep = V["MACHDEP"] + if ((machdep != "linux")) { + pyconf_check_func("lchmod", "", "HAVE_LCHMOD") + } + if ((V["ac_sys_system"] != "iOS")) { + delete _va69 + _va69[1] = "getentropy" + _va69[2] = "getgroups" + _va69[3] = "system" + _va69[0] = 3 + pyconf_check_funcs(_va69) + } +} + +function u_check_special_functions( _pyconf_cond_sys_eventfd_h, _pyconf_cond_sys_memfd_h, _pyconf_cond_sys_mman_h, _pyconf_cond_sys_timerfd_h, ac_cv_have_chflags, ac_cv_have_lchflags) { + pyconf_checking("whether dirfd is declared") + if (pyconf_compile_check("", "#include \n#include \nint main(void) { void *p = dirfd; return 0; }")) { + pyconf_result("yes") + pyconf_define("HAVE_DIRFD", 1, 0, "Define if you have the 'dirfd' function or macro.") + } else { + pyconf_result("no") + } + pyconf_check_func("chroot", "unistd.h", "HAVE_CHROOT") + pyconf_check_func("link", "unistd.h", "HAVE_LINK") + pyconf_check_func("symlink", "unistd.h", "HAVE_SYMLINK") + pyconf_check_func("fchdir", "unistd.h", "HAVE_FCHDIR") + pyconf_check_func("fsync", "unistd.h", "HAVE_FSYNC") + pyconf_check_func("fdatasync", "unistd.h", "HAVE_FDATASYNC") + pyconf_check_func("epoll_create", "sys/epoll.h", "HAVE_EPOLL") + pyconf_check_func("epoll_create1", "sys/epoll.h", "HAVE_EPOLL_CREATE1") + pyconf_check_func("kqueue", "sys/types.h sys/event.h", "HAVE_KQUEUE") + pyconf_check_func("prlimit", "sys/time.h sys/resource.h", "HAVE_PRLIMIT") + pyconf_check_func("_dyld_shared_cache_contains_path", "mach-o/dyld.h", "HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH") + _pyconf_cond_sys_mman_h = "" + if ((CACHE["ac_cv_header_sys_mman_h"] == "yes")) { + _pyconf_cond_sys_mman_h = "sys/mman.h" + } + _pyconf_cond_sys_memfd_h = "" + if ((CACHE["ac_cv_header_sys_memfd_h"] == "yes")) { + _pyconf_cond_sys_memfd_h = "sys/memfd.h" + } + pyconf_check_func("memfd_create", " " _pyconf_cond_sys_mman_h " " _pyconf_cond_sys_memfd_h, "HAVE_MEMFD_CREATE") + _pyconf_cond_sys_eventfd_h = "" + if ((CACHE["ac_cv_header_sys_eventfd_h"] == "yes")) { + _pyconf_cond_sys_eventfd_h = "sys/eventfd.h" + } + pyconf_check_func("eventfd", " " _pyconf_cond_sys_eventfd_h, "HAVE_EVENTFD") + _pyconf_cond_sys_timerfd_h = "" + if ((CACHE["ac_cv_header_sys_timerfd_h"] == "yes")) { + _pyconf_cond_sys_timerfd_h = "sys/timerfd.h" + } + pyconf_check_func("timerfd_create", " " _pyconf_cond_sys_timerfd_h, "HAVE_TIMERFD_CREATE") + pyconf_check_func("ctermid_r", "stdio.h", "HAVE_CTERMID_R") + pyconf_check_func("getpagesize", "unistd.h", "HAVE_GETPAGESIZE") + pyconf_checking("for flock declaration") + if (pyconf_compile_check("", "#include \nint main(void) { void *p = flock; return 0; }")) { + pyconf_result("yes") + if ((!pyconf_check_func("flock", "", "HAVE_FLOCK"))) { + if (pyconf_check_lib("bsd", "flock", "", "")) { + V["FCNTL_LIBS"] = "-lbsd" + } + } + } else { + pyconf_result("no") + } + if ((!("FCNTL_LIBS" in V))) { + V["FCNTL_LIBS"] = "" + } + v_export("FCNTL_LIBS") + pyconf_checking("for broken unsetenv") + if (pyconf_compile_check("", "#include \nint main(void) { int res = unsetenv(\"DUMMY\"); return 0; }")) { + pyconf_result("no") + } else { + pyconf_result("yes") + pyconf_define("HAVE_BROKEN_UNSETENV", 1, 0, "Define if 'unsetenv' does not return an int.") + } + V["SOCKET_LIBS"] = "" + if ((!pyconf_check_lib("c", "inet_aton", "", ""))) { + if (pyconf_check_lib("resolv", "inet_aton", "", "")) { + V["SOCKET_LIBS"] = "-lresolv" + } + } + if ((!((V["SOCKET_LIBS"] != "") && (V["SOCKET_LIBS"] != "no")))) { + if ((!pyconf_check_lib("c", "hstrerror", "", ""))) { + if (pyconf_check_lib("resolv", "hstrerror", "", "")) { + V["SOCKET_LIBS"] = "-lresolv" + } + } + } + v_export("SOCKET_LIBS") + pyconf_checking("for chflags") + ac_cv_have_chflags = (pyconf_run_check("", "#include \n#include \nint main(int argc, char *argv[]) {\n if(chflags(argv[0], 0) != 0) return 1;\n return 0;\n}\n") ? "yes" : "no") + if ((ac_cv_have_chflags == "cross")) { + ac_cv_have_chflags = (pyconf_check_func("chflags", "", "HAVE_CHFLAGS") ? "yes" : "no") + } + pyconf_result(ac_cv_have_chflags) + if (((ac_cv_have_chflags != "") && (ac_cv_have_chflags != "no"))) { + pyconf_define("HAVE_CHFLAGS", 1, 0, "Define to 1 if you have the 'chflags' function.") + } + pyconf_checking("for lchflags") + ac_cv_have_lchflags = (pyconf_run_check("", "#include \n#include \nint main(int argc, char *argv[]) {\n if(lchflags(argv[0], 0) != 0) return 1;\n return 0;\n}\n") ? "yes" : "no") + if ((ac_cv_have_lchflags == "cross")) { + ac_cv_have_lchflags = (pyconf_check_func("lchflags", "", "HAVE_LCHFLAGS") ? "yes" : "no") + } + pyconf_result(ac_cv_have_lchflags) + if (((ac_cv_have_lchflags != "") && (ac_cv_have_lchflags != "no"))) { + pyconf_define("HAVE_LCHFLAGS", 1, 0, "Define to 1 if you have the 'lchflags' function.") + } +} + +function u_check_headers( save_CFLAGS) { + pyconf_define("STDC_HEADERS", 1, 0, "Define to 1 if you have the ANSI C header files.") + pyconf_check_header("stdio.h", "", "", "HAVE_STDIO_H", "ac_cv_header_stdio_h") + pyconf_check_header("stdlib.h", "", "", "HAVE_STDLIB_H", "ac_cv_header_stdlib_h") + pyconf_check_header("string.h", "", "", "HAVE_STRING_H", "ac_cv_header_string_h") + pyconf_check_header("inttypes.h", "", "", "HAVE_INTTYPES_H", "ac_cv_header_inttypes_h") + pyconf_check_header("stdint.h", "", "", "HAVE_STDINT_H", "ac_cv_header_stdint_h") + pyconf_check_header("strings.h", "", "", "HAVE_STRINGS_H", "ac_cv_header_strings_h") + pyconf_check_header("unistd.h", "", "", "HAVE_UNISTD_H", "ac_cv_header_unistd_h") + pyconf_check_header("alloca.h", "", "", "HAVE_ALLOCA_H", "ac_cv_header_alloca_h") + pyconf_check_header("asm/types.h", "", "", "HAVE_ASM_TYPES_H", "ac_cv_header_asm_types_h") + pyconf_check_header("bluetooth.h", "", "", "HAVE_BLUETOOTH_H", "ac_cv_header_bluetooth_h") + pyconf_check_header("conio.h", "", "", "HAVE_CONIO_H", "ac_cv_header_conio_h") + pyconf_check_header("direct.h", "", "", "HAVE_DIRECT_H", "ac_cv_header_direct_h") + pyconf_check_header("dlfcn.h", "", "", "HAVE_DLFCN_H", "ac_cv_header_dlfcn_h") + pyconf_check_header("endian.h", "", "", "HAVE_ENDIAN_H", "ac_cv_header_endian_h") + pyconf_check_header("errno.h", "", "", "HAVE_ERRNO_H", "ac_cv_header_errno_h") + pyconf_check_header("fcntl.h", "", "", "HAVE_FCNTL_H", "ac_cv_header_fcntl_h") + pyconf_check_header("grp.h", "", "", "HAVE_GRP_H", "ac_cv_header_grp_h") + pyconf_check_header("io.h", "", "", "HAVE_IO_H", "ac_cv_header_io_h") + pyconf_check_header("langinfo.h", "", "", "HAVE_LANGINFO_H", "ac_cv_header_langinfo_h") + pyconf_check_header("libintl.h", "", "", "HAVE_LIBINTL_H", "ac_cv_header_libintl_h") + pyconf_check_header("libutil.h", "", "", "HAVE_LIBUTIL_H", "ac_cv_header_libutil_h") + pyconf_check_header("linux/auxvec.h", "", "", "HAVE_LINUX_AUXVEC_H", "ac_cv_header_linux_auxvec_h") + pyconf_check_header("sys/auxv.h", "", "", "HAVE_SYS_AUXV_H", "ac_cv_header_sys_auxv_h") + pyconf_check_header("linux/fs.h", "", "", "HAVE_LINUX_FS_H", "ac_cv_header_linux_fs_h") + pyconf_check_header("linux/limits.h", "", "", "HAVE_LINUX_LIMITS_H", "ac_cv_header_linux_limits_h") + pyconf_check_header("linux/memfd.h", "", "", "HAVE_LINUX_MEMFD_H", "ac_cv_header_linux_memfd_h") + pyconf_check_header("linux/netfilter_ipv4.h", "", "", "HAVE_LINUX_NETFILTER_IPV4_H", "ac_cv_header_linux_netfilter_ipv4_h") + pyconf_check_header("linux/random.h", "", "", "HAVE_LINUX_RANDOM_H", "ac_cv_header_linux_random_h") + pyconf_check_header("linux/soundcard.h", "", "", "HAVE_LINUX_SOUNDCARD_H", "ac_cv_header_linux_soundcard_h") + pyconf_check_header("linux/sched.h", "", "", "HAVE_LINUX_SCHED_H", "ac_cv_header_linux_sched_h") + pyconf_check_header("linux/tipc.h", "", "", "HAVE_LINUX_TIPC_H", "ac_cv_header_linux_tipc_h") + pyconf_check_header("linux/wait.h", "", "", "HAVE_LINUX_WAIT_H", "ac_cv_header_linux_wait_h") + pyconf_check_header("netdb.h", "", "", "HAVE_NETDB_H", "ac_cv_header_netdb_h") + pyconf_check_header("net/ethernet.h", "", "", "HAVE_NET_ETHERNET_H", "ac_cv_header_net_ethernet_h") + pyconf_check_header("netinet/in.h", "", "", "HAVE_NETINET_IN_H", "ac_cv_header_netinet_in_h") + pyconf_check_header("netpacket/packet.h", "", "", "HAVE_NETPACKET_PACKET_H", "ac_cv_header_netpacket_packet_h") + pyconf_check_header("poll.h", "", "", "HAVE_POLL_H", "ac_cv_header_poll_h") + pyconf_check_header("process.h", "", "", "HAVE_PROCESS_H", "ac_cv_header_process_h") + pyconf_check_header("pthread.h", "", "", "HAVE_PTHREAD_H", "ac_cv_header_pthread_h") + pyconf_check_header("pty.h", "", "", "HAVE_PTY_H", "ac_cv_header_pty_h") + pyconf_check_header("sched.h", "", "", "HAVE_SCHED_H", "ac_cv_header_sched_h") + pyconf_check_header("setjmp.h", "", "", "HAVE_SETJMP_H", "ac_cv_header_setjmp_h") + pyconf_check_header("shadow.h", "", "", "HAVE_SHADOW_H", "ac_cv_header_shadow_h") + pyconf_check_header("signal.h", "", "", "HAVE_SIGNAL_H", "ac_cv_header_signal_h") + pyconf_check_header("spawn.h", "", "", "HAVE_SPAWN_H", "ac_cv_header_spawn_h") + pyconf_check_header("stropts.h", "", "", "HAVE_STROPTS_H", "ac_cv_header_stropts_h") + pyconf_check_header("sys/audioio.h", "", "", "HAVE_SYS_AUDIOIO_H", "ac_cv_header_sys_audioio_h") + pyconf_check_header("sys/bsdtty.h", "", "", "HAVE_SYS_BSDTTY_H", "ac_cv_header_sys_bsdtty_h") + pyconf_check_header("sys/devpoll.h", "", "", "HAVE_SYS_DEVPOLL_H", "ac_cv_header_sys_devpoll_h") + pyconf_check_header("sys/endian.h", "", "", "HAVE_SYS_ENDIAN_H", "ac_cv_header_sys_endian_h") + pyconf_check_header("sys/epoll.h", "", "", "HAVE_SYS_EPOLL_H", "ac_cv_header_sys_epoll_h") + pyconf_check_header("sys/event.h", "", "", "HAVE_SYS_EVENT_H", "ac_cv_header_sys_event_h") + pyconf_check_header("sys/eventfd.h", "", "", "HAVE_SYS_EVENTFD_H", "ac_cv_header_sys_eventfd_h") + pyconf_check_header("sys/file.h", "", "", "HAVE_SYS_FILE_H", "ac_cv_header_sys_file_h") + pyconf_check_header("sys/ioctl.h", "", "", "HAVE_SYS_IOCTL_H", "ac_cv_header_sys_ioctl_h") + pyconf_check_header("sys/kern_control.h", "", "", "HAVE_SYS_KERN_CONTROL_H", "ac_cv_header_sys_kern_control_h") + pyconf_check_header("sys/loadavg.h", "", "", "HAVE_SYS_LOADAVG_H", "ac_cv_header_sys_loadavg_h") + pyconf_check_header("sys/lock.h", "", "", "HAVE_SYS_LOCK_H", "ac_cv_header_sys_lock_h") + pyconf_check_header("sys/memfd.h", "", "", "HAVE_SYS_MEMFD_H", "ac_cv_header_sys_memfd_h") + pyconf_check_header("sys/mkdev.h", "", "", "HAVE_SYS_MKDEV_H", "ac_cv_header_sys_mkdev_h") + pyconf_check_header("sys/mman.h", "", "", "HAVE_SYS_MMAN_H", "ac_cv_header_sys_mman_h") + pyconf_check_header("sys/modem.h", "", "", "HAVE_SYS_MODEM_H", "ac_cv_header_sys_modem_h") + pyconf_check_header("sys/param.h", "", "", "HAVE_SYS_PARAM_H", "ac_cv_header_sys_param_h") + pyconf_check_header("sys/pidfd.h", "", "", "HAVE_SYS_PIDFD_H", "ac_cv_header_sys_pidfd_h") + pyconf_check_header("sys/poll.h", "", "", "HAVE_SYS_POLL_H", "ac_cv_header_sys_poll_h") + pyconf_check_header("sys/random.h", "", "", "HAVE_SYS_RANDOM_H", "ac_cv_header_sys_random_h") + pyconf_check_header("sys/resource.h", "", "", "HAVE_SYS_RESOURCE_H", "ac_cv_header_sys_resource_h") + pyconf_check_header("sys/select.h", "", "", "HAVE_SYS_SELECT_H", "ac_cv_header_sys_select_h") + pyconf_check_header("sys/sendfile.h", "", "", "HAVE_SYS_SENDFILE_H", "ac_cv_header_sys_sendfile_h") + pyconf_check_header("sys/socket.h", "", "", "HAVE_SYS_SOCKET_H", "ac_cv_header_sys_socket_h") + pyconf_check_header("sys/soundcard.h", "", "", "HAVE_SYS_SOUNDCARD_H", "ac_cv_header_sys_soundcard_h") + pyconf_check_header("sys/stat.h", "", "", "HAVE_SYS_STAT_H", "ac_cv_header_sys_stat_h") + pyconf_check_header("sys/statvfs.h", "", "", "HAVE_SYS_STATVFS_H", "ac_cv_header_sys_statvfs_h") + pyconf_check_header("sys/sys_domain.h", "", "", "HAVE_SYS_SYS_DOMAIN_H", "ac_cv_header_sys_sys_domain_h") + pyconf_check_header("sys/syscall.h", "", "", "HAVE_SYS_SYSCALL_H", "ac_cv_header_sys_syscall_h") + pyconf_check_header("sys/sysmacros.h", "", "", "HAVE_SYS_SYSMACROS_H", "ac_cv_header_sys_sysmacros_h") + pyconf_check_header("sys/termio.h", "", "", "HAVE_SYS_TERMIO_H", "ac_cv_header_sys_termio_h") + pyconf_check_header("sys/time.h", "", "", "HAVE_SYS_TIME_H", "ac_cv_header_sys_time_h") + pyconf_check_header("sys/times.h", "", "", "HAVE_SYS_TIMES_H", "ac_cv_header_sys_times_h") + pyconf_check_header("sys/timerfd.h", "", "", "HAVE_SYS_TIMERFD_H", "ac_cv_header_sys_timerfd_h") + pyconf_check_header("sys/types.h", "", "", "HAVE_SYS_TYPES_H", "ac_cv_header_sys_types_h") + pyconf_check_header("sys/uio.h", "", "", "HAVE_SYS_UIO_H", "ac_cv_header_sys_uio_h") + pyconf_check_header("sys/un.h", "", "", "HAVE_SYS_UN_H", "ac_cv_header_sys_un_h") + pyconf_check_header("sys/utsname.h", "", "", "HAVE_SYS_UTSNAME_H", "ac_cv_header_sys_utsname_h") + pyconf_check_header("sys/wait.h", "", "", "HAVE_SYS_WAIT_H", "ac_cv_header_sys_wait_h") + pyconf_check_header("sys/xattr.h", "", "", "HAVE_SYS_XATTR_H", "ac_cv_header_sys_xattr_h") + pyconf_check_header("sysexits.h", "", "", "HAVE_SYSEXITS_H", "ac_cv_header_sysexits_h") + pyconf_check_header("syslog.h", "", "", "HAVE_SYSLOG_H", "ac_cv_header_syslog_h") + pyconf_check_header("termios.h", "", "", "HAVE_TERMIOS_H", "ac_cv_header_termios_h") + pyconf_check_header("util.h", "", "", "HAVE_UTIL_H", "ac_cv_header_util_h") + pyconf_check_header("utime.h", "", "", "HAVE_UTIME_H", "ac_cv_header_utime_h") + pyconf_check_header("utmp.h", "", "", "HAVE_UTMP_H", "ac_cv_header_utmp_h") + pyconf_check_header("dirent.h", "", "", "HAVE_DIRENT_H", "ac_cv_header_dirent_h") + if (pyconf_check_header("sys/mkdev.h")) { + pyconf_define("MAJOR_IN_MKDEV", 1, 0, "Define to 1 if major, minor, and makedev are declared in .") + } else if (pyconf_check_header("sys/sysmacros.h")) { + pyconf_define("MAJOR_IN_SYSMACROS", 1, 0, "Define to 1 if major, minor, and makedev are declared in .") + } + save_CFLAGS = V["CFLAGS"] + V["CFLAGS"] = "-std=c99 " V["CFLAGS"] + pyconf_check_header("bluetooth/bluetooth.h", "", "", "HAVE_BLUETOOTH_BLUETOOTH_H", "ac_cv_header_bluetooth_bluetooth_h") + V["CFLAGS"] = save_CFLAGS + pyconf_check_header("net/if.h", "", "\n #include \n #include \n #include \n #ifdef HAVE_SYS_SOCKET_H\n # include \n #endif\n ") + pyconf_check_header("linux/netlink.h", "", "\n #ifdef HAVE_ASM_TYPES_H\n #include \n #endif\n #ifdef HAVE_SYS_SOCKET_H\n #include \n #endif\n ") + pyconf_check_header("netlink/netlink.h", "", "\n #ifdef HAVE_ASM_TYPES_H\n #include \n #endif\n #ifdef HAVE_SYS_SOCKET_H\n #include \n #endif\n ") + pyconf_check_header("linux/qrtr.h", "", "\n #ifdef HAVE_ASM_TYPES_H\n #include \n #endif\n #ifdef HAVE_SYS_SOCKET_H\n #include \n #endif\n ") + pyconf_check_header("linux/vm_sockets.h", "", "\n #ifdef HAVE_SYS_SOCKET_H\n #include \n #endif\n ") + pyconf_check_header("linux/can.h", "", "\n #ifdef HAVE_SYS_SOCKET_H\n #include \n #endif\n ") + pyconf_check_header("linux/can/bcm.h", "", "\n #ifdef HAVE_SYS_SOCKET_H\n #include \n #endif\n ") + pyconf_check_header("linux/can/isotp.h", "", "\n #ifdef HAVE_SYS_SOCKET_H\n #include \n #endif\n ") + pyconf_check_header("linux/can/j1939.h", "", "\n #ifdef HAVE_SYS_SOCKET_H\n #include \n #endif\n ") + pyconf_check_header("linux/can/raw.h", "", "\n #ifdef HAVE_SYS_SOCKET_H\n #include \n #endif\n ") + pyconf_check_header("netcan/can.h", "", "\n #ifdef HAVE_SYS_SOCKET_H\n #include \n #endif\n ") +} + +function u_check_types_and_macros( use_lfs) { + if ((!pyconf_check_type("clock_t", "time.h"))) { + pyconf_define("clock_t", "long", 1, "Define to 'long' if does not define clock_t.") + } + if (pyconf_link_check("for makedev", "\n #if defined(MAJOR_IN_MKDEV)\n #include \n #elif defined(MAJOR_IN_SYSMACROS)\n #include \n #else\n #include \n #endif\n \nint main(void) { makedev(0, 0); return 0; }")) { + pyconf_define("HAVE_MAKEDEV", 1, 0, "Define this if you have the makedev macro.") + } + if (pyconf_link_check("for le64toh", "\n #ifdef HAVE_ENDIAN_H\n #include \n #elif defined(HAVE_SYS_ENDIAN_H)\n #include \n #endif\n \nint main(void) { le64toh(1); return 0; }")) { + pyconf_define("HAVE_HTOLE64", 1, 0, "Define this if you have le64toh()") + } + use_lfs = (_str_startswith(V["ac_sys_system"], "GNU") ? "no" : "yes") + if (((use_lfs != "") && (use_lfs != "no"))) { + if (_str_startswith(V["ac_sys_system"] "/" V["ac_sys_release"], "AIX")) { + pyconf_define("_LARGE_FILES", 1, 0, "This must be defined on AIX systems to enable large file support.") + } + pyconf_define("_LARGEFILE_SOURCE", 1, 0, "This must be defined on some systems to enable large file support.") + pyconf_define("_FILE_OFFSET_BITS", 64, 0, "This must be set to 64 on some systems to enable large file support.") + } + delete _va70 + _va70[1] = "cat >> confdefs.h <<\\EOF\n#if defined(SCO_DS)\n#undef _OFF_T\n#endif\nEOF\n" + _va70[0] = 1 + pyconf_shell(_va70) + pyconf_macro("AC_TYPE_MODE_T") + pyconf_macro("AC_TYPE_OFF_T") + pyconf_macro("AC_TYPE_PID_T") + pyconf_define_unquoted("RETSIGTYPE", "void", "assume C89 semantics that RETSIGTYPE is always void") + pyconf_macro("AC_TYPE_SIZE_T") + pyconf_macro("AC_TYPE_UID_T") + pyconf_check_type("ssize_t", "sys/types.h") + if (pyconf_check_type("__uint128_t", "")) { + pyconf_define("HAVE_GCC_UINT128_T", 1, 0, "Define if your compiler provides __uint128_t") + } +} + +# --- conf_security --- +function u_check_getrandom() { + if (pyconf_link_check("for the Linux getrandom() syscall", "\n#include \n#include \n#include \n#include \nint main(void) {\n char buffer[1];\n const size_t buflen = sizeof(buffer);\n const int flags = GRND_NONBLOCK;\n (void)syscall(SYS_getrandom, buffer, buflen, flags);\n return 0;\n}\n")) { + pyconf_define("HAVE_GETRANDOM_SYSCALL", 1, 0, "Define to 1 if the Linux getrandom() syscall is available") + } + if (pyconf_link_check("for the getrandom() function", "\n#include \n#include \nint main(void) {\n char buffer[1];\n const size_t buflen = sizeof(buffer);\n const int flags = 0;\n (void)getrandom(buffer, buflen, flags);\n return 0;\n}\n")) { + pyconf_define("HAVE_GETRANDOM", 1, 0, "Define to 1 if the getrandom() function is available") + } +} + +function u_check_openssl( LIBCRYPTO_LIBS_len, _i_arg, _i_f, _i_p, _n_arg, _n_f, _n_p, arg, f, found_ssl, inc_flags, inc_parts_len, lib_flags, lib_parts_len, libname, new_ssl_libs_len, openssl_rpath_opt, p, pc_cflags, pc_ldflags, pc_libs, pkg_config, rpath_arg, s1, s2, s3, ssl_dir, ssl_h_paths, with_openssl, working_hashlib, working_ssl, LIBCRYPTO_LIBS, _ar_30, _ar_31, _ar_32, _as_33, _as_34, _as_35, _as_36, _as_37, _as_38, inc_parts, lib_parts, new_ssl_libs) { + delete LIBCRYPTO_LIBS + delete _ar_30 + delete _ar_31 + delete _ar_32 + delete _as_33 + delete _as_34 + delete _as_35 + delete _as_36 + delete _as_37 + delete _as_38 + delete inc_parts + delete lib_parts + delete new_ssl_libs + with_openssl = pyconf_option_value("with_openssl") + V["OPENSSL_INCLUDES"] = "" + V["OPENSSL_LIBS"] = "" + V["OPENSSL_LDFLAGS"] = "" + V["have_openssl"] = "no" + if ((!((with_openssl == "") || (with_openssl == "no")))) { + ssl_dir = _str_removesuffix(with_openssl, "/") + V["OPENSSL_INCLUDES"] = "-I" ssl_dir "/include" + V["OPENSSL_LIBS"] = "-lssl -lcrypto" + V["OPENSSL_LDFLAGS"] = "-L" ssl_dir "/lib" + V["have_openssl"] = "yes" + pyconf_checking("for OpenSSL directory") + pyconf_result(ssl_dir) + } else { + pkg_config = V["PKG_CONFIG"] + if (((pkg_config != "") && (pkg_config != "no"))) { + delete _va71 + _va71[1] = pkg_config + _va71[2] = "--cflags" + _va71[3] = "openssl" + _va71[0] = 3 + pyconf_cmd_status(_va71, _ar_30) + s1 = _ar_30[0] + pc_cflags = _ar_30[1] + delete _va72 + _va72[1] = pkg_config + _va72[2] = "--libs" + _va72[3] = "openssl" + _va72[0] = 3 + pyconf_cmd_status(_va72, _ar_31) + s2 = _ar_31[0] + pc_libs = _ar_31[1] + delete _va73 + _va73[1] = pkg_config + _va73[2] = "--libs-only-L" + _va73[3] = "openssl" + _va73[0] = 3 + pyconf_cmd_status(_va73, _ar_32) + s3 = _ar_32[0] + pc_ldflags = _ar_32[1] + if ((((s1 == 0) && (s2 == 0)) && (s3 == 0))) { + _n_f = split(pc_cflags, _as_33, " ") + for (_i_f = 1; (_i_f <= _n_f); _i_f = (_i_f + 1)) { + f = _as_33[_i_f] + if (_str_startswith(f, "-I")) { + inc_parts[(inc_parts_len + 1)] = f + inc_parts_len = (inc_parts_len + 1) + inc_parts[0] = inc_parts_len + } + } + inc_flags = _arr_join(inc_parts, " ") + _n_f = split(pc_libs, _as_34, " ") + for (_i_f = 1; (_i_f <= _n_f); _i_f = (_i_f + 1)) { + f = _as_34[_i_f] + if ((!_str_startswith(f, "-L"))) { + lib_parts[(lib_parts_len + 1)] = f + lib_parts_len = (lib_parts_len + 1) + lib_parts[0] = lib_parts_len + } + } + lib_flags = _arr_join(lib_parts, " ") + V["OPENSSL_INCLUDES"] = inc_flags + V["OPENSSL_LIBS"] = lib_flags + V["OPENSSL_LDFLAGS"] = pc_ldflags + V["have_openssl"] = "yes" + pyconf_checking("whether compiling and linking against OpenSSL works") + pyconf_result("yes") + } else { + pyconf_checking("whether compiling and linking against OpenSSL works") + pyconf_result("no") + } + } else { + ssl_h_paths = "/usr/include" " " "/usr/local/include" " " "/usr/include/openssl" " " "/usr/local/include/openssl" + found_ssl = "no" + _n_p = split(ssl_h_paths, _as_35, " ") + for (_i_p = 1; (_i_p <= _n_p); _i_p = (_i_p + 1)) { + p = _as_35[_i_p] + delete _va74 + _va74[1] = p + _va74[2] = "openssl/ssl.h" + _va74[0] = 2 + if (pyconf_path_exists(pyconf_path_join(_va74))) { + found_ssl = "yes" + break + } + } + pyconf_checking("whether compiling and linking against OpenSSL works") + if (((found_ssl != "") && (found_ssl != "no"))) { + V["OPENSSL_INCLUDES"] = "" + V["OPENSSL_LIBS"] = "-lssl -lcrypto" + V["OPENSSL_LDFLAGS"] = "" + V["have_openssl"] = "yes" + pyconf_result("yes") + } else { + pyconf_result("no") + } + } + } + if (((V["GNULD"] != "") && (V["GNULD"] != "no"))) { + rpath_arg = "-Wl,--enable-new-dtags,-rpath=" + } else if ((V["ac_sys_system"] == "Darwin")) { + rpath_arg = "-Wl,-rpath," + } else { + rpath_arg = "-Wl,-rpath=" + } + openssl_rpath_opt = pyconf_option_value_or("with_openssl_rpath", "no") + V["OPENSSL_LDFLAGS_RPATH"] = "" + if (((openssl_rpath_opt == "auto") || (openssl_rpath_opt == "yes"))) { + V["OPENSSL_RPATH"] = "auto" + _n_arg = split(V["OPENSSL_LDFLAGS"], _as_36, " ") + for (_i_arg = 1; (_i_arg <= _n_arg); _i_arg = (_i_arg + 1)) { + arg = _as_36[_i_arg] + if (_str_startswith(arg, "-L")) { + V["OPENSSL_LDFLAGS_RPATH"] = V["OPENSSL_LDFLAGS_RPATH"] " " rpath_arg _str_removeprefix(arg, "-L") + } + } + V["OPENSSL_LDFLAGS_RPATH"] = _str_strip(V["OPENSSL_LDFLAGS_RPATH"]) + } else if ((openssl_rpath_opt == "no")) { + V["OPENSSL_RPATH"] = "" + } else if (pyconf_path_is_dir(openssl_rpath_opt)) { + V["OPENSSL_RPATH"] = openssl_rpath_opt + V["OPENSSL_LDFLAGS_RPATH"] = rpath_arg openssl_rpath_opt + } else { + pyconf_error("--with-openssl-rpath \"" openssl_rpath_opt "\" is not a directory") + } + v_export("OPENSSL_RPATH") + v_export("OPENSSL_LDFLAGS_RPATH") + if ((V["PY_UNSUPPORTED_OPENSSL_BUILD"] == "static")) { + _n_arg = split(V["OPENSSL_LIBS"], _as_37, " ") + for (_i_arg = 1; (_i_arg <= _n_arg); _i_arg = (_i_arg + 1)) { + arg = _as_37[_i_arg] + if (_str_startswith(arg, "-l")) { + libname = _str_removeprefix(arg, "-l") + new_ssl_libs[(new_ssl_libs_len + 1)] = "-l:lib" libname ".a -Wl,--exclude-libs,lib" libname ".a" + new_ssl_libs_len = (new_ssl_libs_len + 1) + new_ssl_libs[0] = new_ssl_libs_len + } else { + new_ssl_libs[(new_ssl_libs_len + 1)] = arg + new_ssl_libs_len = (new_ssl_libs_len + 1) + new_ssl_libs[0] = new_ssl_libs_len + } + } + V["OPENSSL_LIBS"] = _arr_join(new_ssl_libs, " ") _str_rstrip(" " V["ZLIB_LIBS"]) + } + _n_arg = split(V["OPENSSL_LIBS"], _as_38, " ") + for (_i_arg = 1; (_i_arg <= _n_arg); _i_arg = (_i_arg + 1)) { + arg = _as_38[_i_arg] + if ((!(index(arg, "ssl") > 0))) { + LIBCRYPTO_LIBS[(LIBCRYPTO_LIBS_len + 1)] = arg + LIBCRYPTO_LIBS_len = (LIBCRYPTO_LIBS_len + 1) + LIBCRYPTO_LIBS[0] = LIBCRYPTO_LIBS_len + } + } + V["LIBCRYPTO_LIBS"] = _arr_join(LIBCRYPTO_LIBS, " ") + v_export("OPENSSL_INCLUDES") + v_export("OPENSSL_LIBS") + v_export("OPENSSL_LDFLAGS") + v_export("LIBCRYPTO_LIBS") + pyconf_save_env() + V["LIBS"] = _str_strip(V["LIBS"] " " V["OPENSSL_LIBS"]) + V["CFLAGS"] = _str_strip(V["CFLAGS"] " " V["OPENSSL_INCLUDES"]) + V["LDFLAGS"] = _str_strip(V["LDFLAGS"] " " V["OPENSSL_LDFLAGS"] " " V["OPENSSL_LDFLAGS_RPATH"]) + working_ssl = (pyconf_link_check("whether OpenSSL provides required ssl module APIs", "\n#include \n#include \n#if OPENSSL_VERSION_NUMBER < 0x10101000L\n #error \"OpenSSL >= 1.1.1 is required\"\n#endif\nstatic void keylog_cb(const SSL *ssl, const char *line) {}\nint main(void) {\n SSL_CTX *ctx = SSL_CTX_new(TLS_client_method());\n SSL_CTX_set_keylog_callback(ctx, keylog_cb);\n SSL *ssl = SSL_new(ctx);\n X509_VERIFY_PARAM *param = SSL_get0_param(ssl);\n X509_VERIFY_PARAM_set1_host(param, \"python.org\", 0);\n SSL_free(ssl);\n SSL_CTX_free(ctx);\n return 0;\n}\n") ? "yes" : "no") + pyconf_restore_env() + V["ac_cv_working_openssl_ssl"] = working_ssl + pyconf_save_env() + V["LIBS"] = _str_strip(V["LIBS"] " " V["LIBCRYPTO_LIBS"]) + V["CFLAGS"] = _str_strip(V["CFLAGS"] " " V["OPENSSL_INCLUDES"]) + V["LDFLAGS"] = _str_strip(V["LDFLAGS"] " " V["OPENSSL_LDFLAGS"] " " V["OPENSSL_LDFLAGS_RPATH"]) + working_hashlib = (pyconf_link_check("whether OpenSSL provides required hashlib module APIs", "\n#include \n#include \n#if OPENSSL_VERSION_NUMBER < 0x10101000L\n #error \"OpenSSL >= 1.1.1 is required\"\n#endif\nint main(void) {\n OBJ_nid2sn(NID_md5);\n OBJ_nid2sn(NID_sha1);\n OBJ_nid2sn(NID_sha512);\n OBJ_nid2sn(NID_sha3_512);\n EVP_PBE_scrypt(NULL, 0, NULL, 0, 2, 8, 1, 0, NULL, 0);\n return 0;\n}\n") ? "yes" : "no") + pyconf_restore_env() + V["ac_cv_working_openssl_hashlib"] = working_hashlib +} + +function u_check_ssl_cipher_suites( ssl_suites) { + pyconf_define_template("PY_SSL_DEFAULT_CIPHERS", "Default cipher suites list for ssl module. 1: Python's preferred selection, 2: leave OpenSSL defaults untouched, 0: custom string") + pyconf_define_template("PY_SSL_DEFAULT_CIPHER_STRING", "Cipher suite string for PY_SSL_DEFAULT_CIPHERS=0") + ssl_suites = pyconf_option_value_or("with_ssl_default_suites", "python") + if ((ssl_suites == "python")) { + pyconf_define("PY_SSL_DEFAULT_CIPHERS", 1, 0, "") + } else if ((ssl_suites == "openssl")) { + pyconf_define("PY_SSL_DEFAULT_CIPHERS", 2, 0, "") + } else { + pyconf_define("PY_SSL_DEFAULT_CIPHERS", 0, 0, "") + pyconf_define("PY_SSL_DEFAULT_CIPHER_STRING", "\"" ssl_suites "\"", 1, "") + } +} + +function u_check_builtin_hashlib_hashes( _tmp_split, bh_raw, builtin_hashes, default_hashlib_hashes) { + default_hashlib_hashes = "md5,sha1,sha2,sha3,blake2" + bh_raw = pyconf_option_value("with_builtin_hashlib_hashes") + if (((bh_raw == "") || (bh_raw == "yes"))) { + builtin_hashes = default_hashlib_hashes + } else if ((bh_raw == "no")) { + builtin_hashes = "" + } else { + builtin_hashes = bh_raw + } + pyconf_define_unquoted("PY_BUILTIN_HASHLIB_HASHES", "\"" builtin_hashes "\"", "enabled builtin hash modules") + V["with_builtin_md5"] = ((index(_str_replace(builtin_hashes, ",", " "), "md5") > 0) ? "yes" : "no") + V["with_builtin_sha1"] = ((index(_str_replace(builtin_hashes, ",", " "), "sha1") > 0) ? "yes" : "no") + V["with_builtin_sha2"] = ((index(_str_replace(builtin_hashes, ",", " "), "sha2") > 0) ? "yes" : "no") + V["with_builtin_sha3"] = ((index(_str_replace(builtin_hashes, ",", " "), "sha3") > 0) ? "yes" : "no") + V["with_builtin_blake2"] = ((index(_str_replace(builtin_hashes, ",", " "), "blake2") > 0) ? "yes" : "no") +} + +function u_setup_hash_algorithm( hash_val) { + pyconf_define_template("Py_HASH_ALGORITHM", "Define hash algorithm for str, bytes and memoryview. SipHash24: 1, FNV: 2, SipHash13: 3, externally defined: 0") + pyconf_checking("for --with-hash-algorithm") + hash_val = pyconf_option_value("with_hash_algorithm") + if ((hash_val != "")) { + if ((hash_val == "siphash13")) { + pyconf_define("Py_HASH_ALGORITHM", 3, 0, "") + pyconf_result("siphash13") + } else if ((hash_val == "siphash24")) { + pyconf_define("Py_HASH_ALGORITHM", 1, 0, "") + pyconf_result("siphash24") + } else if ((hash_val == "fnv")) { + pyconf_define("Py_HASH_ALGORITHM", 2, 0, "") + pyconf_result("fnv") + } else { + pyconf_error("unknown hash algorithm '" hash_val "'") + } + } else { + pyconf_result("default") + } +} + +function u__hacl_module(component, extname, enabled, ldflags) { + ldflags = "$(LIBHACL_" component "_LIB_" V["LIBHACL_LDEPS_LIBTYPE"] ")" + pyconf_stdlib_module(extname, "yes", enabled, V["LIBHACL_CFLAGS"], ldflags, "yes", "yes") +} + +function u_setup_hacl( LIBHACL_FLAG_D, LIBHACL_FLAG_I, build_cpu, build_vendor, use_hacl_universal2) { + LIBHACL_FLAG_I = "-I$(srcdir)/Modules/_hacl -I$(srcdir)/Modules/_hacl/include" + LIBHACL_FLAG_D = "-D_BSD_SOURCE -D_DEFAULT_SOURCE" + if (_str_startswith(V["ac_sys_system"], "Linux")) { + if ((V["ac_cv_func_explicit_bzero"] == "no")) { + LIBHACL_FLAG_D = LIBHACL_FLAG_D " -DLINUX_NO_EXPLICIT_BZERO" + } + } + V["LIBHACL_CFLAGS"] = LIBHACL_FLAG_I " " LIBHACL_FLAG_D " $(PY_STDMODULE_CFLAGS) $(CCSHARED)" + v_export("LIBHACL_CFLAGS") + V["LIBHACL_LDFLAGS"] = "" + v_export("LIBHACL_LDFLAGS") + build_cpu = V["build_cpu"] + build_vendor = V["build_vendor"] + use_hacl_universal2 = ((((V["UNIVERSAL_ARCHS"] == "universal2") ? "yes" : "no") != "") ? ((V["UNIVERSAL_ARCHS"] == "universal2") ? "yes" : "no") : (((build_cpu == "aarch64") && (build_vendor == "apple")) ? "yes" : "no")) + if (((!((V["ac_sys_system"] == "Linux-android") || (V["ac_sys_system"] == "WASI"))) || (((V["ANDROID_API_LEVEL"] != "") && (V["ANDROID_API_LEVEL"] != "no")) && (V["ANDROID_API_LEVEL"] >= 28)))) { + delete _va75 + _va75[1] = "-Werror" + _va75[0] = 1 + if (pyconf_check_compile_flag("-msse -msse2 -msse3 -msse4.1 -msse4.2", _va75)) { + V["LIBHACL_SIMD128_FLAGS"] = "-msse -msse2 -msse3 -msse4.1 -msse4.2" + pyconf_define("_Py_HACL_CAN_COMPILE_VEC128", 1, 0, "HACL* library can compile SIMD128 implementations") + if (((use_hacl_universal2 != "") && (use_hacl_universal2 != "no"))) { + V["LIBHACL_BLAKE2_SIMD128_OBJS"] = "Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.o" + } else { + V["LIBHACL_BLAKE2_SIMD128_OBJS"] = "Modules/_hacl/Hacl_Hash_Blake2s_Simd128.o" + } + } else { + V["LIBHACL_SIMD128_FLAGS"] = "" + V["LIBHACL_BLAKE2_SIMD128_OBJS"] = "" + } + } else { + V["LIBHACL_SIMD128_FLAGS"] = "" + V["LIBHACL_BLAKE2_SIMD128_OBJS"] = "" + } + v_export("LIBHACL_SIMD128_FLAGS") + v_export("LIBHACL_BLAKE2_SIMD128_OBJS") + if (((!((V["ac_sys_system"] == "Linux-android") || (V["ac_sys_system"] == "WASI"))) || (((V["ANDROID_API_LEVEL"] != "") && (V["ANDROID_API_LEVEL"] != "no")) && (V["ANDROID_API_LEVEL"] >= 28)))) { + delete _va76 + _va76[1] = "-Werror" + _va76[0] = 1 + if (pyconf_check_compile_flag("-mavx2", _va76)) { + V["LIBHACL_SIMD256_FLAGS"] = "-mavx2" + pyconf_define("_Py_HACL_CAN_COMPILE_VEC256", 1, 0, "HACL* library can compile SIMD256 implementations") + if (((use_hacl_universal2 != "") && (use_hacl_universal2 != "no"))) { + V["LIBHACL_BLAKE2_SIMD256_OBJS"] = "Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.o" + } else { + V["LIBHACL_BLAKE2_SIMD256_OBJS"] = "Modules/_hacl/Hacl_Hash_Blake2b_Simd256.o" + } + } else { + V["LIBHACL_SIMD256_FLAGS"] = "" + V["LIBHACL_BLAKE2_SIMD256_OBJS"] = "" + } + } else { + V["LIBHACL_SIMD256_FLAGS"] = "" + V["LIBHACL_BLAKE2_SIMD256_OBJS"] = "" + } + v_export("LIBHACL_SIMD256_FLAGS") + v_export("LIBHACL_BLAKE2_SIMD256_OBJS") + V["LIBHACL_LDEPS_LIBTYPE"] = ((V["ac_sys_system"] == "WASI") ? "STATIC" : "SHARED") + v_export("LIBHACL_LDEPS_LIBTYPE") + u__hacl_module("MD5", "_md5", V["with_builtin_md5"]) + u__hacl_module("SHA1", "_sha1", V["with_builtin_sha1"]) + u__hacl_module("SHA2", "_sha2", V["with_builtin_sha2"]) + u__hacl_module("SHA3", "_sha3", V["with_builtin_sha3"]) + u__hacl_module("BLAKE2", "_blake2", V["with_builtin_blake2"]) + u__hacl_module("HMAC", "_hmac", ((V["ac_sys_system"] != "Emscripten") ? "yes" : "no")) +} + +# --- conf_sharedlib --- +function u_setup_shared_lib_suffix() { + pyconf_checking("the extension of shared libraries") + if ((!((V["SHLIB_SUFFIX"] != "") && (V["SHLIB_SUFFIX"] != "no")))) { + if ((_str_startswith(V["ac_sys_system"], "hp") || _str_startswith(V["ac_sys_system"], "HP"))) { + V["SHLIB_SUFFIX"] = ((pyconf_platform_machine() == "ia64") ? ".so" : ".sl") + } else if (_str_startswith(V["ac_sys_system"], "CYGWIN")) { + V["SHLIB_SUFFIX"] = ".dll" + } else { + V["SHLIB_SUFFIX"] = ".so" + } + } + pyconf_result(V["SHLIB_SUFFIX"]) +} + +function u_setup_ldshared( _tmp_split, dt, dt_major, dt_minor, dt_parts, has_elf, has_elf__elf_out, rel, sr, _idx_tmp) { + delete _idx_tmp + pyconf_checking("LDSHARED") + if ((!((V["LDSHARED"] != "") && (V["LDSHARED"] != "no")))) { + sr = V["ac_sys_system"] "/" V["ac_sys_release"] + if (_str_startswith(sr, "AIX")) { + V["BLDSHARED"] = "Modules/ld_so_aix $(CC) -bI:Modules/python.exp" + V["LDSHARED"] = "$(LIBPL)/ld_so_aix $(CC) -bI:$(LIBPL)/python.exp" + } else if (_str_startswith(sr, "SunOS/5")) { + if (((V["ac_cv_gcc_compat"] != "") && (V["ac_cv_gcc_compat"] != "no"))) { + V["LDSHARED"] = "$(CC) -shared" + V["LDCXXSHARED"] = "$(CXX) -shared" + } else { + V["LDSHARED"] = "$(CC) -G" + V["LDCXXSHARED"] = "$(CXX) -G" + } + } else if ((_str_startswith(V["ac_sys_system"], "hp") || _str_startswith(V["ac_sys_system"], "HP"))) { + if (((V["ac_cv_gcc_compat"] != "") && (V["ac_cv_gcc_compat"] != "no"))) { + V["LDSHARED"] = "$(CC) -shared" + V["LDCXXSHARED"] = "$(CXX) -shared" + } else { + V["LDSHARED"] = "$(CC) -b" + V["LDCXXSHARED"] = "$(CXX) -b" + } + } else if (_str_startswith(sr, "Darwin/1.3")) { + V["LDSHARED"] = "$(CC) -bundle" + V["LDCXXSHARED"] = "$(CXX) -bundle" + if (((V["enable_framework"] != "") && (V["enable_framework"] != "no"))) { + V["BLDSHARED"] = V["LDSHARED"] " $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + V["LDSHARED"] = V["LDSHARED"] " $(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + V["LDCXXSHARED"] = V["LDCXXSHARED"] " $(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + } else { + V["LDSHARED"] = V["LDSHARED"] " -undefined suppress" + V["LDCXXSHARED"] = V["LDCXXSHARED"] " -undefined suppress" + } + } else if (((_str_startswith(sr, "Darwin/1.4") || _str_startswith(sr, "Darwin/5.")) || _str_startswith(sr, "Darwin/6."))) { + V["LDSHARED"] = "$(CC) -bundle" + V["LDCXXSHARED"] = "$(CXX) -bundle" + if (((V["enable_framework"] != "") && (V["enable_framework"] != "no"))) { + V["BLDSHARED"] = V["LDSHARED"] " $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + V["LDSHARED"] = V["LDSHARED"] " $(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + V["LDCXXSHARED"] = V["LDCXXSHARED"] " $(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + } else { + V["BLDSHARED"] = V["LDSHARED"] " -bundle_loader $(BUILDPYTHON)" + V["LDSHARED"] = V["LDSHARED"] " -bundle_loader $(BINDIR)/python$(VERSION)$(EXE)" + V["LDCXXSHARED"] = V["LDCXXSHARED"] " -bundle_loader $(BINDIR)/python$(VERSION)$(EXE)" + } + } else if (_str_startswith(sr, "Darwin/")) { + dt = ((V["MACOSX_DEPLOYMENT_TARGET"] != "") ? V["MACOSX_DEPLOYMENT_TARGET"] : "") + dt_parts = _str_replace(dt, ".", " ") + dt_major = (((dt_parts != "") && (dt_parts != "no")) ? _split_index(dt_parts, " ", 1) : 0) + dt_minor = ((length(dt_parts) > 1) ? _split_index(dt_parts, " ", 2) : 0) + if (((dt_major == 10) && (dt_minor <= 2))) { + pyconf_error("MACOSX_DEPLOYMENT_TARGET too old (" dt "), only 10.3 or later is supported") + } + V["LDSHARED"] = "$(CC) -bundle -undefined dynamic_lookup" + V["LDCXXSHARED"] = "$(CXX) -bundle -undefined dynamic_lookup" + V["BLDSHARED"] = V["LDSHARED"] + } else if (_str_startswith(sr, "iOS/")) { + V["LDSHARED"] = "$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)" + V["LDCXXSHARED"] = "$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)" + V["BLDSHARED"] = V["LDSHARED"] + } else if (((V["ac_sys_system"] == "Emscripten") || (V["ac_sys_system"] == "WASI"))) { + V["LDSHARED"] = "$(CC) -shared" + V["LDCXXSHARED"] = "$(CXX) -shared" + } else if (((((_str_startswith(V["ac_sys_system"], "Linux") || _str_startswith(V["ac_sys_system"], "GNU")) || _str_startswith(V["ac_sys_system"], "QNX")) || _str_startswith(V["ac_sys_system"], "VxWorks")) || _str_startswith(V["ac_sys_system"], "Haiku"))) { + V["LDSHARED"] = "$(CC) -shared" + V["LDCXXSHARED"] = "$(CXX) -shared" + } else if (_str_startswith(V["ac_sys_system"], "FreeBSD")) { + has_elf__elf_out = pyconf_shell_export("echo \"\" | " V["CC"] " -dM -E - | grep __ELF__", "_elf_out") + if (((has_elf__elf_out != "") && (has_elf__elf_out != "no"))) { + V["LDSHARED"] = "$(CC) -shared" + V["LDCXXSHARED"] = "$(CXX) -shared" + } else { + V["LDSHARED"] = "ld -Bshareable" + } + } else if (_str_startswith(V["ac_sys_system"], "OpenBSD")) { + has_elf__elf_out = pyconf_shell_export("echo \"\" | " V["CC"] " -dM -E - | grep __ELF__", "_elf_out") + if (((has_elf__elf_out != "") && (has_elf__elf_out != "no"))) { + V["LDSHARED"] = "$(CC) -shared $(CCSHARED)" + V["LDCXXSHARED"] = "$(CXX) -shared $(CCSHARED)" + } else { + rel = V["ac_sys_release"] + delete _va77 + _va77[1] = "0.*" + _va77[2] = "1.*" + _va77[3] = "2.[0-7]" + _va77[4] = "2.[0-7].*" + _va77[0] = 4 + if (pyconf_fnmatch_any(rel, _va77)) { + V["LDSHARED"] = "ld -Bshareable " V["LDFLAGS"] + } else { + V["LDSHARED"] = "$(CC) -shared $(CCSHARED)" + V["LDCXXSHARED"] = "$(CXX) -shared $(CCSHARED)" + } + } + } else if ((_str_startswith(V["ac_sys_system"], "NetBSD") || _str_startswith(V["ac_sys_system"], "DragonFly"))) { + V["LDSHARED"] = "$(CC) -shared" + V["LDCXXSHARED"] = "$(CXX) -shared" + } else if ((_str_startswith(V["ac_sys_system"], "OpenUNIX") || _str_startswith(V["ac_sys_system"], "UnixWare"))) { + if (((V["ac_cv_gcc_compat"] != "") && (V["ac_cv_gcc_compat"] != "no"))) { + V["LDSHARED"] = "$(CC) -shared" + V["LDCXXSHARED"] = "$(CXX) -shared" + } else { + V["LDSHARED"] = "$(CC) -G" + V["LDCXXSHARED"] = "$(CXX) -G" + } + } else if (_str_startswith(V["ac_sys_system"], "SCO_SV")) { + V["LDSHARED"] = "$(CC) -Wl,-G,-Bexport" + V["LDCXXSHARED"] = "$(CXX) -Wl,-G,-Bexport" + } else if (_str_startswith(V["ac_sys_system"], "CYGWIN")) { + V["LDSHARED"] = "gcc -shared -Wl,--enable-auto-image-base" + V["LDCXXSHARED"] = "g++ -shared -Wl,--enable-auto-image-base" + } else { + V["LDSHARED"] = "ld" + } + } + if ((((V["enable_wasm_dynamic_linking"] != "") && (V["enable_wasm_dynamic_linking"] != "no")) && (V["ac_sys_system"] == "Emscripten"))) { + V["BLDSHARED"] = "$(CC) -shared -sSIDE_MODULE=1" + } + pyconf_result(V["LDSHARED"]) + V["LDCXXSHARED"] = ((V["LDCXXSHARED"] != "") ? V["LDCXXSHARED"] : V["LDSHARED"]) + pyconf_checking("BLDSHARED flags") + V["BLDSHARED"] = ((V["BLDSHARED"] != "") ? V["BLDSHARED"] : V["LDSHARED"]) + pyconf_result(V["BLDSHARED"]) +} + +function u_setup_ccshared() { + pyconf_checking("CCSHARED") + if ((!((V["CCSHARED"] != "") && (V["CCSHARED"] != "no")))) { + if (_str_startswith(V["ac_sys_system"], "SunOS")) { + if (((V["ac_cv_gcc_compat"] != "") && (V["ac_cv_gcc_compat"] != "no"))) { + V["CCSHARED"] = "-fPIC" + } else { + delete _va78 + _va78[1] = "uname" + _va78[2] = "-p" + _va78[0] = 2 + if ((pyconf_cmd_output(_va78) == "sparc")) { + V["CCSHARED"] = "-xcode=pic32" + } else { + V["CCSHARED"] = "-Kpic" + } + } + } else if ((_str_startswith(V["ac_sys_system"], "hp") || _str_startswith(V["ac_sys_system"], "HP"))) { + V["CCSHARED"] = (((V["ac_cv_gcc_compat"] != "") && (V["ac_cv_gcc_compat"] != "no")) ? "-fPIC" : "+z") + } else if ((_str_startswith(V["ac_sys_system"], "Linux") || _str_startswith(V["ac_sys_system"], "GNU"))) { + V["CCSHARED"] = "-fPIC" + } else if (((V["ac_sys_system"] == "Emscripten") || (V["ac_sys_system"] == "WASI"))) { + if (((V["enable_wasm_dynamic_linking"] != "") && (V["enable_wasm_dynamic_linking"] != "no"))) { + V["CCSHARED"] = "-fPIC" + } + } else if ((((_str_startswith(V["ac_sys_system"], "FreeBSD") || _str_startswith(V["ac_sys_system"], "NetBSD")) || _str_startswith(V["ac_sys_system"], "OpenBSD")) || _str_startswith(V["ac_sys_system"], "DragonFly"))) { + V["CCSHARED"] = "-fPIC" + } else if (_str_startswith(V["ac_sys_system"], "Haiku")) { + V["CCSHARED"] = "-fPIC" + } else if ((_str_startswith(V["ac_sys_system"], "OpenUNIX") || _str_startswith(V["ac_sys_system"], "UnixWare"))) { + V["CCSHARED"] = (((V["ac_cv_gcc_compat"] != "") && (V["ac_cv_gcc_compat"] != "no")) ? "-fPIC" : "-KPIC") + } else if (_str_startswith(V["ac_sys_system"], "SCO_SV")) { + V["CCSHARED"] = (((V["ac_cv_gcc_compat"] != "") && (V["ac_cv_gcc_compat"] != "no")) ? "-fPIC" : "-Kpic -belf") + } else if (_str_startswith(V["ac_sys_system"], "VxWorks")) { + V["CCSHARED"] = "-fpic -D__SO_PICABILINUX__ -ftls-model=global-dynamic" + } + } + pyconf_result(V["CCSHARED"]) +} + +function u_setup_linkforshared( _, has_elf, has_elf__elf_out, help_out, sr, stack_size, _ar_39) { + delete _ar_39 + pyconf_checking("LINKFORSHARED") + if ((!((V["LINKFORSHARED"] != "") && (V["LINKFORSHARED"] != "no")))) { + sr = V["ac_sys_system"] "/" V["ac_sys_release"] + if (_str_startswith(sr, "AIX")) { + V["LINKFORSHARED"] = "-Wl,-bE:Modules/python.exp -lld" + } else if ((_str_startswith(V["ac_sys_system"], "hp") || _str_startswith(V["ac_sys_system"], "HP"))) { + V["LINKFORSHARED"] = "-Wl,-E -Wl,+s" + } else if (_str_startswith(V["ac_sys_system"], "Linux-android")) { + V["LINKFORSHARED"] = "-pie -Xlinker -export-dynamic" + } else if ((_str_startswith(V["ac_sys_system"], "Linux") || _str_startswith(V["ac_sys_system"], "GNU"))) { + V["LINKFORSHARED"] = "-Xlinker -export-dynamic" + } else if ((_str_startswith(V["ac_sys_system"], "Darwin") || _str_startswith(V["ac_sys_system"], "iOS"))) { + V["LINKFORSHARED"] = _str_strip(V["extra_undefs"] " -framework CoreFoundation") + stack_size = (((V["with_ubsan"] != "") && (V["with_ubsan"] != "no")) ? "4000000" : "1000000") + pyconf_define_unquoted("THREAD_STACK_SIZE", "0x" stack_size, "Custom thread stack size depending on chosen sanitizer runtimes.") + if ((V["ac_sys_system"] == "Darwin")) { + V["LINKFORSHARED"] = "-Wl,-stack_size," stack_size " " V["LINKFORSHARED"] + if (((V["enable_framework"] != "") && (V["enable_framework"] != "no"))) { + V["LINKFORSHARED"] = V["LINKFORSHARED"] " $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + } + } else if ((V["ac_sys_system"] == "iOS")) { + V["LINKFORSHARED"] = "-Wl,-stack_size," stack_size " " V["LINKFORSHARED"] " $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)" + } + } else if ((_str_startswith(V["ac_sys_system"], "OpenUNIX") || _str_startswith(V["ac_sys_system"], "UnixWare"))) { + V["LINKFORSHARED"] = "-Wl,-Bexport" + } else if (_str_startswith(V["ac_sys_system"], "SCO_SV")) { + V["LINKFORSHARED"] = "-Wl,-Bexport" + } else if (_str_startswith(V["ac_sys_system"], "ReliantUNIX")) { + V["LINKFORSHARED"] = "-W1 -Blargedynsym" + } else if ((((_str_startswith(V["ac_sys_system"], "FreeBSD") || _str_startswith(V["ac_sys_system"], "NetBSD")) || _str_startswith(V["ac_sys_system"], "OpenBSD")) || _str_startswith(V["ac_sys_system"], "DragonFly"))) { + has_elf__elf_out = pyconf_shell_export("_elf_out=$(echo \"\" | " V["CC"] " -dM -E - | grep __ELF__)", "_elf_out") + if (((has_elf__elf_out != "") && (has_elf__elf_out != "no"))) { + V["LINKFORSHARED"] = "-Wl,--export-dynamic" + } + } else if (_str_startswith(sr, "SunOS/5")) { + if (((V["ac_cv_gcc_compat"] != "") && (V["ac_cv_gcc_compat"] != "no"))) { + delete _va79 + _va79[1] = V["CC"] + _va79[2] = "-Xlinker" + _va79[3] = "--help" + _va79[0] = 3 + pyconf_cmd_status(_va79, _ar_39) + _ = _ar_39[0] + help_out = _ar_39[1] + if ((index(help_out, "export-dynamic") > 0)) { + V["LINKFORSHARED"] = "-Xlinker --export-dynamic" + } + } + } else if (_str_startswith(V["ac_sys_system"], "CYGWIN")) { + if ((!((V["enable_shared"] != "") && (V["enable_shared"] != "no")))) { + V["LINKFORSHARED"] = "-Wl,--out-implib=$(LDLIBRARY)" + } + } else if (_str_startswith(V["ac_sys_system"], "QNX")) { + V["LINKFORSHARED"] = "-Wl,-E -N 2048K" + } else if (_str_startswith(V["ac_sys_system"], "VxWorks")) { + V["LINKFORSHARED"] = "-Wl,-export-dynamic" + } + } + pyconf_result(V["LINKFORSHARED"]) +} + +function u_setup_shared_lib_exports() { + v_export("SHLIB_SUFFIX") + v_export("LDSHARED") + v_export("LDCXXSHARED") + v_export("BLDSHARED") + v_export("CCSHARED") + v_export("LINKFORSHARED") + pyconf_checking("CFLAGSFORSHARED") + if ((V["LIBRARY"] != V["LDLIBRARY"])) { + if (_str_startswith(V["ac_sys_system"], "CYGWIN")) { + V["CFLAGSFORSHARED"] = "" + } else { + V["CFLAGSFORSHARED"] = "$(CCSHARED)" + } + } else { + V["CFLAGSFORSHARED"] = "" + } + if (((V["enable_wasm_dynamic_linking"] != "") && (V["enable_wasm_dynamic_linking"] != "no"))) { + V["CFLAGSFORSHARED"] = "$(CCSHARED)" + } + pyconf_result(V["CFLAGSFORSHARED"]) + v_export("CFLAGSFORSHARED") + pyconf_checking("SHLIBS") + V["SHLIBS"] = "$(LIBS)" + pyconf_result(V["SHLIBS"]) + v_export("SHLIBS") +} + +function u_setup_dynload( ac_cv_func_dlopen, extra_machdep_objs, sys_rel) { + V["DLINCLDIR"] = "." + v_export("DLINCLDIR") + pyconf_check_func("dlopen", "", "HAVE_DLOPEN") + ac_cv_func_dlopen = (("ac_cv_func_dlopen" in CACHE) ? CACHE["ac_cv_func_dlopen"] : "no") + if ((!("ac_cv_func_dlopen" in V))) { + V["ac_cv_func_dlopen"] = ac_cv_func_dlopen + } + pyconf_checking("DYNLOADFILE") + V["DYNLOADFILE"] = "" + if ((!((V["DYNLOADFILE"] != "") && (V["DYNLOADFILE"] != "no")))) { + sys_rel = V["ac_sys_system"] "/" V["ac_sys_release"] + if (pyconf_fnmatch(sys_rel, "[hH][pP]*")) { + V["DYNLOADFILE"] = "dynload_hpux.o" + } else if (((V["ac_cv_func_dlopen"] != "") && (V["ac_cv_func_dlopen"] != "no"))) { + V["DYNLOADFILE"] = "dynload_shlib.o" + } else { + V["DYNLOADFILE"] = "dynload_stub.o" + } + } + pyconf_result(V["DYNLOADFILE"]) + v_export("DYNLOADFILE") + if ((V["DYNLOADFILE"] != "dynload_stub.o")) { + pyconf_define("HAVE_DYNAMIC_LOADING", 1, 0, "Defined when any dynamic module loading is enabled.") + } + extra_machdep_objs = V["extra_machdep_objs"] + pyconf_checking("MACHDEP_OBJS") + V["MACHDEP_OBJS"] = "" + if ((!((V["MACHDEP_OBJS"] != "") && (V["MACHDEP_OBJS"] != "no")))) { + V["MACHDEP_OBJS"] = extra_machdep_objs + } else { + V["MACHDEP_OBJS"] = V["MACHDEP_OBJS"] " " extra_machdep_objs + } + pyconf_result((((V["MACHDEP_OBJS"] != "") && (V["MACHDEP_OBJS"] != "no")) ? V["MACHDEP_OBJS"] : "none")) + v_export("MACHDEP_OBJS") +} + +# --- conf_syslibs --- +function u_detect_gdbm() { + V["have_gdbm"] = "no" + pyconf_env_var("GDBM_CFLAGS", "C compiler flags for gdbm") + pyconf_env_var("GDBM_LIBS", "additional linker flags for gdbm") + if (pyconf_check_header("gdbm.h", "")) { + if (pyconf_check_lib("gdbm", "gdbm_open", V["GDBM_CFLAGS"], V["GDBM_LIBS"])) { + V["have_gdbm"] = "yes" + V["GDBM_LIBS"] = ((V["GDBM_LIBS"] != "") ? V["GDBM_LIBS"] : "-lgdbm") + } else { + V["have_gdbm"] = "no" + } + } else { + V["have_gdbm"] = "no" + } + v_export("GDBM_CFLAGS") + v_export("GDBM_LIBS") +} + +function u_detect_dbm( _i_db, _n_db, _tmp_split, ac_cv_have_libdb, ac_cv_header_gdbm_dash_ndbm_h, ac_cv_header_gdbm_slash_ndbm_h, ac_cv_search_dbm_open, db, dbm_raw, have_dbm, r, with_dbmliborder, _as_40, _as_41) { + delete _as_40 + delete _as_41 + V["have_ndbm"] = "no" + V["dbm_ndbm"] = "" + V["have_gdbm_compat"] = "no" + ac_cv_search_dbm_open = "no" + if (pyconf_check_header("ndbm.h")) { + ac_cv_search_dbm_open = pyconf_search_libs("dbm_open", "ndbm gdbm_compat") + } + if ((((ac_cv_search_dbm_open != "") && (ac_cv_search_dbm_open != "no")) && (ac_cv_search_dbm_open != "no"))) { + if (((index(ac_cv_search_dbm_open, "ndbm") > 0) || (index(ac_cv_search_dbm_open, "gdbm_compat") > 0))) { + V["dbm_ndbm"] = ac_cv_search_dbm_open + V["have_ndbm"] = "yes" + } else if ((ac_cv_search_dbm_open == "none required")) { + V["dbm_ndbm"] = "" + V["have_ndbm"] = "yes" + } else { + V["have_ndbm"] = "no" + } + } + ac_cv_header_gdbm_slash_ndbm_h = (pyconf_check_header("gdbm/ndbm.h") ? "yes" : "no") + if (((ac_cv_header_gdbm_slash_ndbm_h != "") && (ac_cv_header_gdbm_slash_ndbm_h != "no"))) { + pyconf_define("HAVE_GDBM_NDBM_H", 1, 0, "Define to 1 if you have the header file.") + } + ac_cv_header_gdbm_dash_ndbm_h = (pyconf_check_header("gdbm-ndbm.h") ? "yes" : "no") + if (((ac_cv_header_gdbm_dash_ndbm_h != "") && (ac_cv_header_gdbm_dash_ndbm_h != "no"))) { + pyconf_define("HAVE_GDBM_DASH_NDBM_H", 1, 0, "Define to 1 if you have the header file.") + } + if ((((ac_cv_header_gdbm_slash_ndbm_h != "") && (ac_cv_header_gdbm_slash_ndbm_h != "no")) || ((ac_cv_header_gdbm_dash_ndbm_h != "") && (ac_cv_header_gdbm_dash_ndbm_h != "no")))) { + r = pyconf_search_libs("dbm_open", "gdbm_compat") + if ((((r != "") && (r != "no")) && (r != "no"))) { + V["have_gdbm_compat"] = "yes" + } else { + V["have_gdbm_compat"] = "no" + } + } + ac_cv_have_libdb = "no" + if (pyconf_check_header("db.h")) { + if (pyconf_link_check("", "#define DB_DBM_HSEARCH 1\n#include \n#if DB_VERSION_MAJOR < 5\n# error \"DB_VERSION_MAJOR < 5 is not supported.\"\n#endif\nint main(void) { DBM *dbm = dbm_open(NULL, 0, 0); return 0; }\n", "-ldb")) { + ac_cv_have_libdb = "yes" + pyconf_define("HAVE_LIBDB", 1, 0, "Define to 1 if you have the `db' library (-ldb).") + } + } + dbm_raw = pyconf_option_value("with_dbmliborder") + with_dbmliborder = ((((dbm_raw != "") && (dbm_raw != "no")) && (dbm_raw != "yes")) ? dbm_raw : "gdbm:ndbm:bdb") + pyconf_checking("for --with-dbmliborder") + _n_db = split(_str_replace(with_dbmliborder, ":", " "), _as_40, " ") + for (_i_db = 1; (_i_db <= _n_db); _i_db = (_i_db + 1)) { + db = _as_40[_i_db] + if ((!(((db == "ndbm") || (db == "gdbm")) || (db == "bdb")))) { + pyconf_fatal("proper usage is --with-dbmliborder=db1:db2:... (gdbm:ndbm:bdb)") + } + } + pyconf_result(with_dbmliborder) + pyconf_checking("for _dbm module CFLAGS and LIBS") + V["DBM_CFLAGS"] = "" + V["DBM_LIBS"] = "" + have_dbm = "no" + _n_db = split(_str_replace(with_dbmliborder, ":", " "), _as_41, " ") + for (_i_db = 1; (_i_db <= _n_db); _i_db = (_i_db + 1)) { + db = _as_41[_i_db] + if (((db == "ndbm") && ((V["have_ndbm"] != "") && (V["have_ndbm"] != "no")))) { + V["DBM_CFLAGS"] = "-DUSE_NDBM" + V["DBM_LIBS"] = V["dbm_ndbm"] + have_dbm = "yes" + break + } else if (((db == "gdbm") && ((V["have_gdbm_compat"] != "") && (V["have_gdbm_compat"] != "no")))) { + V["DBM_CFLAGS"] = "-DUSE_GDBM_COMPAT" + V["DBM_LIBS"] = "-lgdbm_compat" + have_dbm = "yes" + break + } else if (((db == "bdb") && ((ac_cv_have_libdb != "") && (ac_cv_have_libdb != "no")))) { + V["DBM_CFLAGS"] = "-DUSE_BERKDB" + V["DBM_LIBS"] = "-ldb" + have_dbm = "yes" + break + } + } + pyconf_result(((_str_strip(V["DBM_CFLAGS"] " " V["DBM_LIBS"]) != "") ? _str_strip(V["DBM_CFLAGS"] " " V["DBM_LIBS"]) : "(none)")) + V["have_dbm"] = have_dbm + V["with_dbmliborder"] = with_dbmliborder + V["have_gdbm_dbmliborder"] = (((index(_str_replace(with_dbmliborder, ":", " "), "gdbm") > 0) && (V["have_gdbm"] == "yes")) ? "yes" : "no") + v_export("DBM_CFLAGS") + v_export("DBM_LIBS") +} + +function u_check_base_libraries( _i_h, ac_cv_require_ldl, eh_results_len, h, _al_42, eh_results) { + delete _al_42 + delete eh_results + if (pyconf_check_lib("sendfile", "sendfile", "", "")) { + V["LIBS"] = "-lsendfile " V["LIBS"] + } + if (pyconf_check_lib("dl", "dlopen", "", "")) { + V["LIBS"] = "-ldl " V["LIBS"] + pyconf_define("HAVE_LIBDL", 1, 0, "Define to 1 if you have the `dl' library (-ldl).") + } + if (pyconf_check_lib("dld", "shl_load", "", "")) { + V["LIBS"] = "-ldld " V["LIBS"] + } + ac_cv_require_ldl = "no" + _al_42[1] = "execinfo.h" + _al_42[2] = "link.h" + _al_42[3] = "dlfcn.h" + for (_i_h = 1; (_i_h <= 3); _i_h = (_i_h + 1)) { + h = _al_42[_i_h] + delete _va80 + _va80[1] = h + _va80[0] = 1 + eh_results[(eh_results_len + 1)] = (pyconf_check_headers(_va80) ? "yes" : "no") + eh_results_len = (eh_results_len + 1) + eh_results[0] = eh_results_len + } + if (_any(eh_results)) { + delete _va81 + _va81[1] = "backtrace" + _va81[2] = "dladdr1" + _va81[0] = 2 + if (pyconf_check_funcs(_va81)) { + ac_cv_require_ldl = "yes" + } + } + if (((ac_cv_require_ldl != "") && (ac_cv_require_ldl != "no"))) { + if ((!pyconf_check_lib("dl", "dlopen", "", ""))) { + V["LDFLAGS"] = V["LDFLAGS"] " -ldl" + } + } +} + +function u_check_remaining_libs( AIX_BUILDDATE, ac_cv_aligned_required) { + pyconf_search_libs("sem_init", "pthread rt posix4") + if (pyconf_check_lib("intl", "textdomain", "", "")) { + pyconf_define("WITH_LIBINTL", 1, 0, "Define to 1 if libintl is needed for locale functions.") + V["LIBS"] = "-lintl " V["LIBS"] + } + if (_str_startswith(V["ac_sys_system"], "AIX")) { + pyconf_checking("for genuine AIX C++ extensions support") + if (pyconf_link_check("", "#include \nint main(void) { loadAndInit(\"\", 0, \"\"); return 0; }")) { + pyconf_define("AIX_GENUINE_CPLUSPLUS", 1, 0, "Define for AIX if your compiler is a genuine IBM xlC/xlC_r and you want support for AIX C++ shared extension modules.") + pyconf_result("yes") + } else { + pyconf_result("no") + } + pyconf_checking("for the system builddate") + delete _va82 + _va82[1] = "sh" + _va82[2] = "-c" + _va82[3] = "lslpp -Lcq bos.mp64 | awk -F: '{ print $NF }'" + _va82[0] = 3 + AIX_BUILDDATE = pyconf_cmd_output(_va82) + pyconf_define("AIX_BUILDDATE", AIX_BUILDDATE, 1, "BUILD_GNU_TYPE + AIX_BUILDDATE are used to construct the PEP425 tag of the build system.") + pyconf_result(AIX_BUILDDATE) + } + ac_cv_aligned_required = (pyconf_run_check("aligned memory access is required", "\n int main(void) {\n char s[16];\n int i, *p1, *p2;\n for (i=0; i < 16; i++) s[i] = i;\n p1 = (int*)(s+1);\n p2 = (int*)(s+2);\n if (*p1 == *p2) return 1;\n return 0;\n }\n ") ? "no" : "yes") + if (((ac_cv_aligned_required != "") && (ac_cv_aligned_required != "no"))) { + pyconf_define("HAVE_ALIGNED_REQUIRED", 1, 0, "Define if aligned memory access is required") + } +} + +function u_check_libatomic( libatomic_needed) { + pyconf_save_env() + V["CPPFLAGS"] = _str_strip(V["BASECPPFLAGS"] " -I. -I" pyconf_srcdir "/Include " V["CPPFLAGS"]) + libatomic_needed = ((!pyconf_link_check("whether libatomic is needed by ", "\n// pyatomic.h needs uint64_t and Py_ssize_t types\n#include \n#ifdef HAVE_SYS_TYPES_H\n# include \n#endif\n#if HAVE_SSIZE_T\ntypedef ssize_t Py_ssize_t;\n#elif SIZEOF_VOID_P == SIZEOF_SIZE_T\ntypedef intptr_t Py_ssize_t;\n#else\n# error \"unable to define Py_ssize_t\"\n#endif\n#include \"pyatomic.h\"\nint main() {\n uint64_t value;\n _Py_atomic_store_uint64(&value, 2);\n if (_Py_atomic_or_uint64(&value, 8) != 2) return 1;\n if (_Py_atomic_load_uint64(&value) != 10) return 1;\n uint8_t byte = 0xb8;\n if (_Py_atomic_or_uint8(&byte, 0x2d) != 0xb8) return 1;\n if (_Py_atomic_load_uint8(&byte) != 0xbd) return 1;\n return 0;\n}\n")) ? "yes" : "no") + pyconf_restore_env() + if (((libatomic_needed != "") && (libatomic_needed != "no"))) { + V["LIBS"] = _str_strip(V["LIBS"] " -latomic") + V["LIBATOMIC"] = ((V["LIBATOMIC"] != "") ? V["LIBATOMIC"] : "-latomic") + } + v_export("LIBATOMIC") +} + +function u_check_stat_timestamps( ac_cv_stat_tv_nsec, ac_cv_stat_tv_nsec2) { + pyconf_checking("for tv_nsec in struct stat") + ac_cv_stat_tv_nsec = (pyconf_compile_check("", "#include \n\nint main(void) { struct stat st;\nst.st_mtim.tv_nsec = 1; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_stat_tv_nsec) + if (((ac_cv_stat_tv_nsec != "") && (ac_cv_stat_tv_nsec != "no"))) { + pyconf_define("HAVE_STAT_TV_NSEC", 1, 0, "Define if you have struct stat.st_mtim.tv_nsec") + } + pyconf_checking("for tv_nsec2 in struct stat") + ac_cv_stat_tv_nsec2 = (pyconf_compile_check("", "#include \n\nint main(void) { struct stat st;\nst.st_mtimespec.tv_nsec = 1; return 0; }") ? "yes" : "no") + pyconf_result(ac_cv_stat_tv_nsec2) + if (((ac_cv_stat_tv_nsec2 != "") && (ac_cv_stat_tv_nsec2 != "no"))) { + pyconf_define("HAVE_STAT_TV_NSEC2", 1, 0, "Define if you have struct stat.st_mtimensec") + } + V["have_curses"] = "no" + V["have_panel"] = "no" +} + +function u__validate_tzpath(tzpath, _i_part, _n_part, _tmp_split, part, _as_43) { + delete _as_43 + if ((!((tzpath != "") && (tzpath != "no")))) { + return + } + _n_part = split(_str_replace(tzpath, ":", " "), _as_43, " ") + for (_i_part = 1; (_i_part <= _n_part); _i_part = (_i_part + 1)) { + part = _as_43[_i_part] + if ((!_str_startswith(part, "/"))) { + pyconf_error("--with-tzpath must contain only absolute paths, not " tzpath) + } + } +} + +function u_setup_tzpath( TZPATH, tzpath_val) { + TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" + pyconf_checking("for --with-tzpath") + tzpath_val = pyconf_option_value("with_tzpath") + if (((tzpath_val != "") && (tzpath_val != "no"))) { + if ((tzpath_val == "yes")) { + pyconf_error("--with-tzpath requires a value") + } + u__validate_tzpath(tzpath_val) + TZPATH = tzpath_val + pyconf_result("\"" TZPATH "\"") + } else { + u__validate_tzpath(TZPATH) + pyconf_result("\"" TZPATH "\"") + } + V["TZPATH"] = TZPATH + v_export("TZPATH") +} + +# --- conf_targets --- +function u__runshared(envvar, cwd, existing) { + cwd = pyconf_getcwd() + existing = ((envvar in ENV) ? ENV[envvar] : "") + if (((existing != "") && (existing != "no"))) { + return envvar "=" cwd ":" existing + } + return envvar "=" cwd +} + +function u_setup_android_api( _i_line, _n_line, android_out, android_out_returncode, android_out_stderr, android_out_stdout, arm_arch, line, _as_44) { + delete _as_44 + V["NO_AS_NEEDED"] = pyconf_check_linker_flag("-Wl,--no-as-needed", "-Wl,--no-as-needed") + v_export("NO_AS_NEEDED") + pyconf_checking("for the Android API level") + android_out_returncode = pyconf_run_capture_input("$CPP $CPPFLAGS -", "#ifdef __ANDROID__\nandroid_api = __ANDROID_API__\narm_arch = __ARM_ARCH\n#else\n#error not Android\n#endif\n") + android_out_stdout = _pyconf_run_cmd_stdout + android_out_stderr = _pyconf_run_cmd_stderr + V["ANDROID_API_LEVEL"] = "" + arm_arch = "" + if ((android_out_returncode == 0)) { + _n_line = split(android_out_stdout, _as_44, "\n") + for (_i_line = 1; (_i_line <= _n_line); _i_line = (_i_line + 1)) { + line = _as_44[_i_line] + if ((!_str_startswith(line, "#"))) { + if (_str_startswith(line, "android_api = ")) { + V["ANDROID_API_LEVEL"] = _str_strip(_str_removeprefix(line, "android_api = ")) + } else if (_str_startswith(line, "arm_arch = ")) { + arm_arch = _str_strip(_str_removeprefix(line, "arm_arch = ")) + } + } + } + pyconf_result(V["ANDROID_API_LEVEL"]) + if ((!((V["ANDROID_API_LEVEL"] != "") && (V["ANDROID_API_LEVEL"] != "no")))) { + pyconf_error("Fatal: you must define __ANDROID_API__") + } + pyconf_define("ANDROID_API_LEVEL", V["ANDROID_API_LEVEL"], 1, "The Android API level.") + V["LIBS"] = V["LIBS"] " -llog" + pyconf_checking("for the Android arm ABI") + pyconf_result(arm_arch) + if ((arm_arch == "7")) { + V["BASECFLAGS"] = V["BASECFLAGS"] " -mfloat-abi=softfp -mfpu=vfpv3-d16" + V["LDFLAGS"] = V["LDFLAGS"] " -march=armv7-a -Wl,--fix-cortex-a8" + } + } else { + pyconf_result("not Android") + } + v_export("ANDROID_API_LEVEL") +} + +function u_setup_exe_suffix( casedir) { + pyconf_checking("for --with-suffix") + if (pyconf_option_given("with_suffix")) { + if (pyconf_option_is_no("with_suffix")) { + V["EXEEXT"] = "" + } else if (pyconf_option_is_yes("with_suffix")) { + V["EXEEXT"] = ".exe" + } else { + V["EXEEXT"] = pyconf_option_value_or("with_suffix", "") + } + } else if ((V["ac_sys_system"] == "Emscripten")) { + V["EXEEXT"] = ".mjs" + } else if ((V["ac_sys_system"] == "WASI")) { + V["EXEEXT"] = ".wasm" + } else { + V["EXEEXT"] = "" + } + pyconf_result(V["EXEEXT"]) + v_export("EXEEXT") + V["ac_exeext"] = V["EXEEXT"] + v_export("BUILDEXEEXT") + pyconf_checking("for case-insensitive build directory") + casedir = "CaseSensitiveTestDir" + pyconf_mkdir_p(casedir) + if ((pyconf_path_is_dir("casesensitivetestdir") && (!((V["EXEEXT"] != "") && (V["EXEEXT"] != "no"))))) { + pyconf_result("yes") + V["BUILDEXEEXT"] = ".exe" + } else { + pyconf_result("no") + V["BUILDEXEEXT"] = V["EXEEXT"] + } + pyconf_rmdir(casedir) + if (((_str_startswith(V["ac_sys_system"], "hp") || _str_startswith(V["ac_sys_system"], "HP")) && (V["ac_cv_cc_name"] == "cc"))) { + V["CC"] = V["CC"] " -Ae" + } +} + +function u_setup_library_names( _, ld_prog, ld_ver, _ar_45) { + delete _ar_45 + v_export("LIBRARY") + pyconf_checking("LIBRARY") + V["LIBRARY"] = ((V["LIBRARY"] != "") ? V["LIBRARY"] : "libpython$(VERSION)$(ABIFLAGS).a") + pyconf_result(V["LIBRARY"]) + v_export("LDLIBRARY") + v_export("DLLLIBRARY") + v_export("BLDLIBRARY") + v_export("PY3LIBRARY") + v_export("LDLIBRARYDIR") + v_export("INSTSONAME") + v_export("RUNSHARED") + v_export("LDVERSION") + V["LDLIBRARY"] = V["LIBRARY"] + V["BLDLIBRARY"] = "$(LDLIBRARY)" + V["INSTSONAME"] = "$(LDLIBRARY)" + V["DLLLIBRARY"] = "" + V["LDLIBRARYDIR"] = "" + V["RUNSHARED"] = "" + V["LDVERSION"] = V["VERSION"] + V["PY3LIBRARY"] = "" + v_export("LINKCC") + pyconf_checking("LINKCC") + if ((!((V["LINKCC"] != "") && (V["LINKCC"] != "no")))) { + V["LINKCC"] = "$(PURIFY) $(CC)" + if (_str_startswith(V["ac_sys_system"], "QNX")) { + V["LINKCC"] = "qcc" + } + } + pyconf_result(V["LINKCC"]) + V["EXPORTSYMS"] = "" + v_export("EXPORTSYMS") + V["EXPORTSFROM"] = "" + v_export("EXPORTSFROM") + pyconf_checking("EXPORTSYMS") + if (_str_startswith(V["ac_sys_system"], "AIX")) { + V["EXPORTSYMS"] = "Modules/python.exp" + V["EXPORTSFROM"] = "." + } + pyconf_result(V["EXPORTSYMS"]) + v_export("GNULD") + pyconf_checking("for GNU ld") + ld_prog = "ld" + if ((V["ac_cv_cc_name"] == "gcc")) { + delete _va83 + _va83[1] = V["CC"] + _va83[2] = "-print-prog-name=ld" + _va83[0] = 2 + ld_prog = pyconf_cmd_output(_va83) + } + delete _va84 + _va84[1] = ld_prog + _va84[2] = "-V" + _va84[0] = 2 + pyconf_cmd_status(_va84, _ar_45) + _ = _ar_45[0] + ld_ver = _ar_45[1] + V["GNULD"] = ((index(ld_ver, "GNU") > 0) ? "yes" : "no") + pyconf_result(V["GNULD"]) +} + +function u_setup_shared_options( prof_ok) { + pyconf_checking("for --enable-shared") + if (pyconf_option_given("enable_shared")) { + V["enable_shared"] = ((!pyconf_option_is_no("enable_shared")) ? "yes" : "no") + } else { + V["enable_shared"] = (_str_startswith(V["ac_sys_system"], "CYGWIN") ? "yes" : "no") + } + pyconf_result(V["enable_shared"]) + V["STATIC_LIBPYTHON"] = 1 + pyconf_checking("for --with-static-libpython") + if (pyconf_option_is_no("with_static_libpython")) { + pyconf_result("no") + V["STATIC_LIBPYTHON"] = 0 + } else { + pyconf_result("yes") + } + v_export("STATIC_LIBPYTHON") + pyconf_checking("for --enable-profiling") + V["enable_profiling"] = ((pyconf_option_given("enable_profiling") && (!pyconf_option_is_no("enable_profiling"))) ? "yes" : "no") + if (((V["enable_profiling"] != "") && (V["enable_profiling"] != "no"))) { + prof_ok = (pyconf_try_link("int main(void) { return 0; }", "", "-pg") ? "yes" : "no") + if ((!((prof_ok != "") && (prof_ok != "no")))) { + V["enable_profiling"] = "no" + } + } + pyconf_result(V["enable_profiling"]) + if (((V["enable_profiling"] != "") && (V["enable_profiling"] != "no"))) { + V["BASECFLAGS"] = "-pg " V["BASECFLAGS"] + V["LDFLAGS"] = "-pg " V["LDFLAGS"] + } +} + +function u_setup_ldlibrary() { + pyconf_checking("LDLIBRARY") + if (((V["enable_framework"] != "") && (V["enable_framework"] != "no"))) { + if ((V["ac_sys_system"] == "Darwin")) { + V["LDLIBRARY"] = "$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)" + } else if ((V["ac_sys_system"] == "iOS")) { + V["LDLIBRARY"] = "$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)" + } else { + pyconf_error("Unknown platform for framework build") + } + V["BLDLIBRARY"] = "" + V["RUNSHARED"] = u__runshared("DYLD_FRAMEWORK_PATH") + } else { + V["BLDLIBRARY"] = "$(LDLIBRARY)" + } + V["PY_ENABLE_SHARED"] = 0 + v_export("PY_ENABLE_SHARED") + if (((V["enable_shared"] != "") && (V["enable_shared"] != "no"))) { + V["PY_ENABLE_SHARED"] = 1 + pyconf_define("Py_ENABLE_SHARED", 1, 0, "Defined if Python is built as a shared library.") + u__setup_ldlibrary_shared() + } else if (_str_startswith(V["ac_sys_system"], "CYGWIN")) { + V["BLDLIBRARY"] = "$(LIBRARY)" + V["LDLIBRARY"] = "libpython$(LDVERSION).dll.a" + } + pyconf_result(V["LDLIBRARY"]) +} + +function u__setup_ldlibrary_shared( mach) { + if (_str_startswith(V["ac_sys_system"], "CYGWIN")) { + V["LDLIBRARY"] = "libpython$(LDVERSION).dll.a" + V["BLDLIBRARY"] = "-L. -lpython$(LDVERSION)" + V["DLLLIBRARY"] = "libpython$(LDVERSION).dll" + } else if (_str_startswith(V["ac_sys_system"], "SunOS")) { + V["LDLIBRARY"] = "libpython$(LDVERSION).so" + V["BLDLIBRARY"] = "-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)" + V["RUNSHARED"] = u__runshared("LD_LIBRARY_PATH") + V["INSTSONAME"] = V["LDLIBRARY"] "." V["SOVERSION"] + if ((!((V["Py_DEBUG"] != "") && (V["Py_DEBUG"] != "no")))) { + V["PY3LIBRARY"] = "libpython3.so" + } + } else if (((((((_str_startswith(V["ac_sys_system"], "Linux") || _str_startswith(V["ac_sys_system"], "GNU")) || _str_startswith(V["ac_sys_system"], "NetBSD")) || _str_startswith(V["ac_sys_system"], "FreeBSD")) || _str_startswith(V["ac_sys_system"], "DragonFly")) || _str_startswith(V["ac_sys_system"], "OpenBSD")) || _str_startswith(V["ac_sys_system"], "VxWorks"))) { + V["LDLIBRARY"] = "libpython$(LDVERSION).so" + V["BLDLIBRARY"] = "-L. -lpython$(LDVERSION)" + V["RUNSHARED"] = u__runshared("LD_LIBRARY_PATH") + if ((V["ac_sys_system"] != "Linux-android")) { + V["INSTSONAME"] = V["LDLIBRARY"] "." V["SOVERSION"] + } + if ((!((V["Py_DEBUG"] != "") && (V["Py_DEBUG"] != "no")))) { + V["PY3LIBRARY"] = "libpython3.so" + } + } else if ((_str_startswith(V["ac_sys_system"], "hp") || _str_startswith(V["ac_sys_system"], "HP"))) { + delete _va85 + _va85[1] = "uname" + _va85[2] = "-m" + _va85[0] = 2 + mach = pyconf_cmd_output(_va85) + V["LDLIBRARY"] = ((mach == "ia64") ? "libpython$(LDVERSION).so" : "libpython$(LDVERSION).sl") + V["BLDLIBRARY"] = "-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)" + V["RUNSHARED"] = u__runshared("SHLIB_PATH") + } else if (_str_startswith(V["ac_sys_system"], "Darwin")) { + V["LDLIBRARY"] = "libpython$(LDVERSION).dylib" + V["BLDLIBRARY"] = "-L. -lpython$(LDVERSION)" + V["RUNSHARED"] = u__runshared("DYLD_LIBRARY_PATH") + } else if ((V["ac_sys_system"] == "iOS")) { + V["LDLIBRARY"] = "libpython$(LDVERSION).dylib" + } else if (_str_startswith(V["ac_sys_system"], "AIX")) { + V["LDLIBRARY"] = "libpython$(LDVERSION).so" + V["RUNSHARED"] = u__runshared("LIBPATH") + } +} + +function u_setup_hostrunner( NODE) { + pyconf_checking("HOSTRUNNER") + if ((!((V["HOSTRUNNER"] != "") && (V["HOSTRUNNER"] != "no")))) { + if ((V["ac_sys_system"] == "Emscripten")) { + NODE = pyconf_check_prog("node", "", "node") + V["HOSTRUNNER"] = NODE + if ((V["host_cpu"] == "wasm64")) { + V["HOSTRUNNER"] = V["HOSTRUNNER"] " --experimental-wasm-memory64" + } + } else if ((V["ac_sys_system"] == "WASI")) { + pyconf_error("HOSTRUNNER must be set when cross-compiling to WASI") + } else { + V["HOSTRUNNER"] = "" + } + } + v_export("HOSTRUNNER") + pyconf_result(V["HOSTRUNNER"]) + if (((V["HOSTRUNNER"] != "") && (V["HOSTRUNNER"] != "no"))) { + V["PYTHON_FOR_BUILD"] = "_PYTHON_HOSTRUNNER='" V["HOSTRUNNER"] "' " V["PYTHON_FOR_BUILD"] + } +} + +function u_setup_library_deps() { + V["LIBRARY_DEPS"] = "$(PY3LIBRARY) $(EXPORTSYMS)" + V["LINK_PYTHON_DEPS"] = "$(LIBRARY_DEPS)" + if (((V["PY_ENABLE_SHARED"] == 1) || ((V["enable_framework"] != "") && (V["enable_framework"] != "no")))) { + V["LIBRARY_DEPS"] = "$(LDLIBRARY) " V["LIBRARY_DEPS"] + if ((V["STATIC_LIBPYTHON"] == 1)) { + V["LIBRARY_DEPS"] = "$(LIBRARY) " V["LIBRARY_DEPS"] + } + V["LINK_PYTHON_OBJS"] = "$(BLDLIBRARY)" + } else { + if ((V["STATIC_LIBPYTHON"] == 0)) { + V["LINK_PYTHON_DEPS"] = V["LIBRARY_DEPS"] " $(LIBRARY_OBJS)" + } + V["LIBRARY_DEPS"] = "$(LIBRARY) " V["LIBRARY_DEPS"] + V["LINK_PYTHON_OBJS"] = "$(LIBRARY_OBJS)" + } + v_export("LIBRARY_DEPS") + v_export("LINK_PYTHON_DEPS") + v_export("LINK_PYTHON_OBJS") +} + +function u_setup_build_tools() { + delete _va86 + _va86[1] = "ar" + _va86[2] = "aal" + _va86[0] = 2 + V["AR"] = ((V["AR"] != "") ? V["AR"] : pyconf_check_tools(_va86)) + v_export("AR") + V["ARFLAGS"] = ((V["ARFLAGS"] != "") ? V["ARFLAGS"] : "rcs") + v_export("ARFLAGS") + if ((_str_startswith(V["MACHDEP"], "hp") || _str_startswith(V["MACHDEP"], "HP"))) { + if ((!((("INSTALL" in ENV) ? ENV["INSTALL"] : "") != ""))) { + ENV["INSTALL"] = V["srcdir"] "/install-sh -c" + MODIFIED_ENV["INSTALL"] = 1 + } + } + pyconf_find_install() + pyconf_find_mkdir_p() + v_export("MKDIR_P") + V["LN"] = ((V["LN"] != "") ? V["LN"] : (_str_startswith(V["ac_sys_system"], "CYGWIN") ? "ln -s" : "ln")) + v_export("LN") + v_export("ABIFLAGS") + v_export("ABI_THREAD") +} + +# --- conf_threads --- +function u_check_pthreads( ac_cv_cxx_thread, ac_cv_kpthread, ac_cv_kthread, ac_cv_pthread, ac_cv_pthread_is_default, cxx_flag) { + ac_cv_pthread_is_default = (pyconf_run_check("whether pthreads are available without options", _PTHREAD_TEST_SRC) ? "yes" : "no") + V["ac_cv_pthread_is_default"] = ac_cv_pthread_is_default + if (((ac_cv_pthread_is_default != "") && (ac_cv_pthread_is_default != "no"))) { + ac_cv_kpthread = "no" + ac_cv_kthread = "no" + ac_cv_pthread = "no" + } else { + ac_cv_kpthread = (pyconf_run_check_with_cc_flag("whether " V["CC"] " accepts -Kpthread", "-Kpthread", _PTHREAD_TEST_SRC) ? "yes" : "no") + } + if (((!((ac_cv_kpthread != "") && (ac_cv_kpthread != "no"))) && (!((ac_cv_pthread_is_default != "") && (ac_cv_pthread_is_default != "no"))))) { + ac_cv_kthread = (pyconf_run_check_with_cc_flag("whether " V["CC"] " accepts -Kthread", "-Kthread", _PTHREAD_TEST_SRC) ? "yes" : "no") + } else { + ac_cv_kthread = "no" + } + if (((!((ac_cv_kthread != "") && (ac_cv_kthread != "no"))) && (!((ac_cv_pthread_is_default != "") && (ac_cv_pthread_is_default != "no"))))) { + ac_cv_pthread = (pyconf_run_check_with_cc_flag("whether " V["CC"] " accepts -pthread", "-pthread", _PTHREAD_TEST_SRC) ? "yes" : "no") + } else { + ac_cv_pthread = "no" + } + V["ac_cv_kpthread"] = ac_cv_kpthread + V["ac_cv_kthread"] = ac_cv_kthread + V["ac_cv_pthread"] = ac_cv_pthread + if (((V["CXX"] != "") && (V["CXX"] != "no"))) { + if (((ac_cv_kpthread != "") && (ac_cv_kpthread != "no"))) { + cxx_flag = "-Kpthread" + ac_cv_cxx_thread = "yes" + } else if (((ac_cv_kthread != "") && (ac_cv_kthread != "no"))) { + cxx_flag = "-Kthread" + ac_cv_cxx_thread = "yes" + } else if (((ac_cv_pthread != "") && (ac_cv_pthread != "no"))) { + cxx_flag = "-pthread" + ac_cv_cxx_thread = "yes" + } else { + cxx_flag = "" + ac_cv_cxx_thread = "no" + } + if (((ac_cv_cxx_thread != "") && (ac_cv_cxx_thread != "no"))) { + ac_cv_cxx_thread = pyconf_compile_link_check("whether " V["CXX"] " also accepts flags for thread support", "void foo();int main(){foo();}void foo(){}", "", V["CXX"] " " cxx_flag) + if ((ac_cv_cxx_thread != "yes")) { + ac_cv_cxx_thread = "no" + } + } + } else { + ac_cv_cxx_thread = "no" + } + V["ac_cv_cxx_thread"] = ac_cv_cxx_thread +} + +function u_setup_pthreads( ac_cv_cxx_thread, ac_cv_kpthread, ac_cv_kthread, ac_cv_pthread, ac_cv_pthread_is_default, ac_cv_pthread_system_supported, prog, sr, unistd_defines_pthreads) { + V["posix_threads"] = "no" + ac_cv_pthread_is_default = V["ac_cv_pthread_is_default"] + ac_cv_kpthread = V["ac_cv_kpthread"] + ac_cv_kthread = V["ac_cv_kthread"] + ac_cv_pthread = V["ac_cv_pthread"] + ac_cv_cxx_thread = V["ac_cv_cxx_thread"] + unistd_defines_pthreads = "" + if (((ac_cv_pthread_is_default != "") && (ac_cv_pthread_is_default != "no"))) { + pyconf_define("_REENTRANT", 1, 0, "") + V["posix_threads"] = "yes" + if ((V["ac_sys_system"] == "SunOS")) { + V["CFLAGS"] = V["CFLAGS"] " -D_REENTRANT" + } + } else if (((ac_cv_kpthread != "") && (ac_cv_kpthread != "no"))) { + V["CC"] = V["CC"] " -Kpthread" + if (((ac_cv_cxx_thread != "") && (ac_cv_cxx_thread != "no"))) { + V["CXX"] = V["CXX"] " -Kpthread" + } + V["posix_threads"] = "yes" + } else if (((ac_cv_kthread != "") && (ac_cv_kthread != "no"))) { + V["CC"] = V["CC"] " -Kthread" + if (((ac_cv_cxx_thread != "") && (ac_cv_cxx_thread != "no"))) { + V["CXX"] = V["CXX"] " -Kthread" + } + V["posix_threads"] = "yes" + } else if (((ac_cv_pthread != "") && (ac_cv_pthread != "no"))) { + V["CC"] = V["CC"] " -pthread" + if (((ac_cv_cxx_thread != "") && (ac_cv_cxx_thread != "no"))) { + V["CXX"] = V["CXX"] " -pthread" + } + V["posix_threads"] = "yes" + } else { + pyconf_define("_REENTRANT", 1, 0, "") + unistd_defines_pthreads = "no" + pyconf_checking("for _POSIX_THREADS in unistd.h") + unistd_defines_pthreads = (pyconf_check_define("unistd.h", "_POSIX_THREADS") ? "yes" : "no") + pyconf_result(unistd_defines_pthreads) + prog = "#include \n#include \n#include \nvoid *start_routine(void *arg) { exit(0); }\nint main(void) { pthread_create(NULL, NULL, start_routine, NULL); return 0; }\n" + pyconf_checking("for pthread_create in -lpthread") + if (pyconf_link_check("", prog "\nint main(void) { return 0; }", "-lpthread")) { + pyconf_result("yes") + V["LIBS"] = V["LIBS"] " -lpthread" + V["posix_threads"] = "yes" + } else { + pyconf_result("no") + if (pyconf_check_func("pthread_detach", "", "HAVE_PTHREAD_DETACH")) { + V["posix_threads"] = "yes" + } else if (pyconf_check_lib("pthreads", "pthread_create", "", "")) { + V["posix_threads"] = "yes" + V["LIBS"] = V["LIBS"] " -lpthreads" + } else if (pyconf_check_lib("c_r", "pthread_create", "", "")) { + V["posix_threads"] = "yes" + V["LIBS"] = V["LIBS"] " -lc_r" + } else if (pyconf_check_lib("pthread", "__pthread_create_system", "", "")) { + V["posix_threads"] = "yes" + V["LIBS"] = V["LIBS"] " -lpthread" + } else if (pyconf_check_lib("cma", "pthread_create", "", "")) { + V["posix_threads"] = "yes" + V["LIBS"] = V["LIBS"] " -lcma" + } else if ((V["ac_sys_system"] == "WASI")) { + V["posix_threads"] = "stub" + } else { + pyconf_fatal("could not find pthreads on your system") + } + } + if (pyconf_check_lib("mpc", "usconfig", "", "")) { + V["LIBS"] = V["LIBS"] " -lmpc" + } + } + if ((V["posix_threads"] == "yes")) { + if ((unistd_defines_pthreads == "no")) { + pyconf_define("_POSIX_THREADS", 1, 0, "Define if you have POSIX threads, and your system does not define that.") + } + sr = V["ac_sys_system"] "/" V["ac_sys_release"] + if ((sr == "SunOS/5.6")) { + pyconf_define("HAVE_PTHREAD_DESTRUCTOR", 1, 0, "Defined for Solaris 2.6 bug in pthread header.") + } else if ((((sr == "SunOS/5.8") || (V["ac_sys_system"] == "AIX")) || (V["ac_sys_system"] == "NetBSD"))) { + pyconf_define("HAVE_BROKEN_POSIX_SEMAPHORES", 1, 0, "Define if the Posix semaphores do not work on your system") + } + pyconf_checking("if PTHREAD_SCOPE_SYSTEM is supported") + ac_cv_pthread_system_supported = (pyconf_run_check("", "#include \n#include \nvoid *foo(void *parm) { return NULL; }\nint main(void) {\n pthread_attr_t attr; pthread_t id;\n if (pthread_attr_init(&attr)) return -1;\n if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) return -1;\n if (pthread_create(&id, &attr, foo, NULL)) return -1;\n if (pthread_join(id, NULL)) return -1;\n return 0;\n}\n") ? "yes" : "no") + pyconf_result(ac_cv_pthread_system_supported) + if (((ac_cv_pthread_system_supported != "") && (ac_cv_pthread_system_supported != "no"))) { + pyconf_define("PTHREAD_SYSTEM_SCHED_SUPPORTED", 1, 0, "Defined if PTHREAD_SCOPE_SYSTEM supported.") + } + if (pyconf_check_func("pthread_sigmask", "", "HAVE_PTHREAD_SIGMASK")) { + if (_str_startswith(V["ac_sys_system"], "CYGWIN")) { + pyconf_define("HAVE_BROKEN_PTHREAD_SIGMASK", 1, 0, "Define if pthread_sigmask() does not work on your system.") + } + } + pyconf_check_func("pthread_getcpuclockid", "", "HAVE_PTHREAD_GETCPUCLOCKID") + } + if ((V["posix_threads"] == "stub")) { + pyconf_define("HAVE_PTHREAD_STUBS", 1, 0, "Define if platform requires stubbed pthreads support") + } +} + +function u_check_posix_semaphores( ac_cv_broken_sem_getvalue, ac_cv_posix_semaphores_enabled) { + pyconf_checking("whether POSIX semaphores are enabled") + ac_cv_posix_semaphores_enabled = (pyconf_run_check("", "\n #include \n #include \n #include \n #include \n #include \n\n int main(void) {\n sem_t *a = sem_open(\"/autoconf\", O_CREAT, S_IRUSR|S_IWUSR, 0);\n if (a == SEM_FAILED) {\n perror(\"sem_open\");\n return 1;\n }\n sem_close(a);\n sem_unlink(\"/autoconf\");\n return 0;\n }\n ") ? "yes" : "no") + pyconf_result(ac_cv_posix_semaphores_enabled) + if ((!((ac_cv_posix_semaphores_enabled != "") && (ac_cv_posix_semaphores_enabled != "no")))) { + pyconf_define("POSIX_SEMAPHORES_NOT_ENABLED", 1, 0, "Define if POSIX semaphores aren't enabled on your system") + } + pyconf_checking("for broken sem_getvalue") + ac_cv_broken_sem_getvalue = (pyconf_run_check("", "\n #include \n #include \n #include \n #include \n #include \n\n int main(void){\n sem_t *a = sem_open(\"/autocftw\", O_CREAT, S_IRUSR|S_IWUSR, 0);\n int count;\n int res;\n if(a==SEM_FAILED){\n perror(\"sem_open\");\n return 1;\n }\n res = sem_getvalue(a, &count);\n sem_close(a);\n sem_unlink(\"/autocftw\");\n return res==-1 ? 1 : 0;\n }\n ") ? "no" : "yes") + pyconf_result(ac_cv_broken_sem_getvalue) + if (((ac_cv_broken_sem_getvalue != "") && (ac_cv_broken_sem_getvalue != "no"))) { + pyconf_define("HAVE_BROKEN_SEM_GETVALUE", 1, 0, "define to 1 if your sem_getvalue is broken.") + } + delete _va87 + _va87[1] = "RTLD_LAZY" + _va87[2] = "RTLD_NOW" + _va87[3] = "RTLD_GLOBAL" + _va87[4] = "RTLD_LOCAL" + _va87[5] = "RTLD_NODELETE" + _va87[6] = "RTLD_NOLOAD" + _va87[7] = "RTLD_DEEPBIND" + _va87[8] = "RTLD_MEMBER" + _va87[9] = "--" + _va87[10] = "dlfcn.h" + _va87[0] = 10 + pyconf_check_decls(_va87) +} + +function u_setup_thread_headers_and_srcdirs( _i_dir, _i_h, _n_dir, _n_h, dir, h, header_refs_len, thread_headers, _as_46, _as_47, header_refs) { + delete _as_46 + delete _as_47 + delete header_refs + delete _va88 + _va88[1] = pyconf_srcdir + _va88[2] = "Python" + _va88[3] = "thread_*.h" + _va88[0] = 3 + thread_headers = pyconf_glob_files(pyconf_path_join(_va88)) + _n_h = split(thread_headers, _as_46, " ") + for (_i_h = 1; (_i_h <= _n_h); _i_h = (_i_h + 1)) { + h = _as_46[_i_h] + header_refs[(header_refs_len + 1)] = "$(srcdir)/" pyconf_relpath(h, pyconf_srcdir) + header_refs_len = (header_refs_len + 1) + header_refs[0] = header_refs_len + } + V["THREADHEADERS"] = _arr_join(header_refs, " ") + v_export("THREADHEADERS") + V["SRCDIRS"] = " Modules Modules/_ctypes Modules/_decimal Modules/_decimal/libmpdec Modules/_hacl Modules/_io Modules/_multiprocessing Modules/_remote_debugging Modules/_sqlite Modules/_sre Modules/_testcapi Modules/_testinternalcapi Modules/_testlimitedcapi Modules/_xxtestfuzz Modules/_zstd Modules/cjkcodecs Modules/expat Objects Objects/mimalloc Objects/mimalloc/prim Parser Parser/tokenizer Parser/lexer Programs Python Python/frozen_modules" + v_export("SRCDIRS") + pyconf_checking("for build directories") + _n_dir = split(V["SRCDIRS"], _as_47, " ") + for (_i_dir = 1; (_i_dir <= _n_dir); _i_dir = (_i_dir + 1)) { + dir = _as_47[_i_dir] + pyconf_mkdir_p(dir) + } + pyconf_result("done") +} + +function u_check_thread_name_maxlen( sys) { + sys = V["ac_sys_system"] + if (_str_startswith(sys, "Linux")) { + V["_PYTHREAD_NAME_MAXLEN"] = "15" + } else if (_str_startswith(sys, "SunOS")) { + V["_PYTHREAD_NAME_MAXLEN"] = "31" + } else if (_str_startswith(sys, "NetBSD")) { + V["_PYTHREAD_NAME_MAXLEN"] = "15" + } else if (((sys == "Darwin") || (sys == "iOS"))) { + V["_PYTHREAD_NAME_MAXLEN"] = "63" + } else if (_str_startswith(sys, "FreeBSD")) { + V["_PYTHREAD_NAME_MAXLEN"] = "19" + } else if (_str_startswith(sys, "OpenBSD")) { + V["_PYTHREAD_NAME_MAXLEN"] = "23" + } else { + V["_PYTHREAD_NAME_MAXLEN"] = "" + } + if (((V["_PYTHREAD_NAME_MAXLEN"] != "") && (V["_PYTHREAD_NAME_MAXLEN"] != "no"))) { + pyconf_define("_PYTHREAD_NAME_MAXLEN", V["_PYTHREAD_NAME_MAXLEN"], 0, "Maximum length in bytes of a thread name") + } + v_export("_PYTHREAD_NAME_MAXLEN") +} + +# --- conf_wasm --- +function u_setup_wasm_options( sys_rel) { + sys_rel = V["ac_sys_system"] "/" V["ac_sys_release"] + if ((_str_startswith(sys_rel, "atheos") || _str_startswith(sys_rel, "Linux/1"))) { + pyconf_error("This system (" sys_rel ") is no longer supported. See README for details.") + } + pyconf_checking("for --enable-wasm-dynamic-linking") + if (pyconf_option_given("enable_wasm_dynamic_linking")) { + if ((!((V["ac_sys_system"] == "Emscripten") || (V["ac_sys_system"] == "WASI")))) { + pyconf_error("--enable-wasm-dynamic-linking only applies to Emscripten and WASI") + } + V["enable_wasm_dynamic_linking"] = pyconf_option_value_or("enable_wasm_dynamic_linking", "no") + } else { + V["enable_wasm_dynamic_linking"] = "no" + } + pyconf_result(((V["enable_wasm_dynamic_linking"] != "no") ? V["enable_wasm_dynamic_linking"] : "missing")) + pyconf_checking("for --enable-wasm-pthreads") + if (pyconf_option_given("enable_wasm_pthreads")) { + if ((!((V["ac_sys_system"] == "Emscripten") || (V["ac_sys_system"] == "WASI")))) { + pyconf_error("--enable-wasm-pthreads only applies to Emscripten and WASI") + } + V["enable_wasm_pthreads"] = pyconf_option_value_or("enable_wasm_pthreads", "no") + } else { + V["enable_wasm_pthreads"] = "missing" + } + pyconf_result(V["enable_wasm_pthreads"]) +} + +function u_setup_wasm_flags() { + V["LINKFORSHARED"] = "" + if ((V["ac_sys_system"] == "Emscripten")) { + u__setup_emscripten_flags() + } else if ((V["ac_sys_system"] == "WASI")) { + u__setup_wasi_flags() + } + if ((V["enable_wasm_dynamic_linking"] == "yes")) { + V["ac_cv_func_dlopen"] = "yes" + } else if ((V["enable_wasm_dynamic_linking"] == "no")) { + V["ac_cv_func_dlopen"] = "no" + } + if ((!("ARCH_TRIPLES" in V))) { + V["ARCH_TRIPLES"] = "" + } + if ((!("wasm_debug" in V))) { + V["wasm_debug"] = "no" + } + if ((!("ac_cv_func_dlopen" in V))) { + } + v_export("BASECFLAGS") + v_export("CFLAGS_NODIST") + v_export("LDFLAGS_NODIST") + v_export("LDFLAGS_NOLTO") + v_export("LINKFORSHARED") + v_export("WASM_ASSETS_DIR") + v_export("WASM_STDLIB") + V["UNIVERSAL_ARCH_FLAGS"] = "" + v_export("UNIVERSAL_ARCH_FLAGS") +} + +function u__setup_emscripten_flags( WASM_LINKFORSHARED_DEBUG) { + V["wasm_debug"] = ((V["Py_DEBUG"] == "yes") ? "yes" : "no") + V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sALLOW_MEMORY_GROWTH -sINITIAL_MEMORY=20971520" + V["LDFLAGS_NODIST"] = V["LDFLAGS_NODIST"] " -sWASM_BIGINT" + V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sFORCE_FILESYSTEM -lidbfs.js -lnodefs.js -lproxyfs.js -lworkerfs.js" + V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sEXPORTED_RUNTIME_METHODS=FS,callMain,ENV,HEAPU32,TTY" + V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sEXPORTED_FUNCTIONS=_main,_Py_Version,__PyRuntime,_PyGILState_GetThisThreadState,__Py_DumpTraceback" + V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sSTACK_SIZE=5MB" + V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sTEXTDECODER=2" + if (((V["enable_wasm_dynamic_linking"] != "") && (V["enable_wasm_dynamic_linking"] != "no"))) { + V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sMAIN_MODULE" + } + if (((V["enable_wasm_pthreads"] != "") && (V["enable_wasm_pthreads"] != "no"))) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -pthread" + V["LDFLAGS_NODIST"] = V["LDFLAGS_NODIST"] " -sUSE_PTHREADS" + V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sPROXY_TO_PTHREAD" + } + V["LDFLAGS_NODIST"] = V["LDFLAGS_NODIST"] " -sEXIT_RUNTIME" + WASM_LINKFORSHARED_DEBUG = "-gseparate-dwarf --emit-symbol-map" + if (((V["wasm_debug"] != "") && (V["wasm_debug"] != "no"))) { + V["LDFLAGS_NODIST"] = V["LDFLAGS_NODIST"] " -sASSERTIONS" + V["LINKFORSHARED"] = V["LINKFORSHARED"] " " WASM_LINKFORSHARED_DEBUG + } else { + V["LINKFORSHARED"] = V["LINKFORSHARED"] " -O2 -g0" + } +} + +function u__setup_wasi_flags() { + pyconf_define("_WASI_EMULATED_SIGNAL", 1, 0, "Define to 1 if you want to emulate signals on WASI") + pyconf_define("_WASI_EMULATED_GETPID", 1, 0, "Define to 1 if you want to emulate getpid() on WASI") + pyconf_define("_WASI_EMULATED_PROCESS_CLOCKS", 1, 0, "Define to 1 if you want to emulate process clocks on WASI") + V["LIBS"] = V["LIBS"] " -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks" + if (((V["enable_wasm_pthreads"] != "") && (V["enable_wasm_pthreads"] != "no"))) { + V["CFLAGS"] = V["CFLAGS"] " -target wasm32-wasi-threads -pthread" + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -target wasm32-wasi-threads -pthread" + V["LDFLAGS_NODIST"] = V["LDFLAGS_NODIST"] " -target wasm32-wasi-threads -pthread -Wl,--import-memory -Wl,--export-memory -Wl,--max-memory=10485760" + } + V["LDFLAGS_NODIST"] = V["LDFLAGS_NODIST"] " -z stack-size=16777216 -Wl,--stack-first -Wl,--initial-memory=41943040" +} + +function u_setup_platform_objects() { + V["PLATFORM_HEADERS"] = "" + V["PLATFORM_OBJS"] = "" + if ((V["ac_sys_system"] == "Emscripten")) { + V["PLATFORM_OBJS"] = V["PLATFORM_OBJS"] " Python/emscripten_signal.o Python/emscripten_trampoline.o Python/emscripten_trampoline_wasm.o Python/emscripten_syscalls.o" + V["PLATFORM_HEADERS"] = V["PLATFORM_HEADERS"] " $(srcdir)/Include/internal/pycore_emscripten_signal.h $(srcdir)/Include/internal/pycore_emscripten_trampoline.h" + } + v_export("PLATFORM_HEADERS") + v_export("PLATFORM_OBJS") +} + +# === Main === +BEGIN { + pyconf_init() + _pyconf_register_options() + _pyconf_init_constants() + pyconf_parse_args() + if (pyconf_check_help()) { + exit 0 + } + u_setup_platform_defines() + u_setup_source_dirs() + u_setup_git_metadata() + u_setup_canonical_host() + u_setup_build_python() + u_setup_prefix_and_dirs() + u_setup_version_and_config_args() + u_setup_pkg_config() + u_setup_missing_stdlib_config() + u_setup_machdep() + u_setup_host_prefix() + u_setup_ios_cross_tools() + u_setup_universalsdk() + u_setup_framework_name() + u_setup_framework() + u_setup_app_store_compliance() + u_setup_host_platform() + u_setup_xopen_source() + u_setup_deployment_targets_and_flags() + u_setup_macos_compiler() + u_setup_compiler_detection() + u_setup_cxx() + u_setup_platform_triplet() + u_setup_stack_direction() + u_setup_pep11_tier() + u_setup_android_api() + u_setup_wasm_options() + u_setup_exe_suffix() + u_setup_library_names() + u_setup_shared_options() + u_setup_ldlibrary() + u_setup_hostrunner() + u_setup_library_deps() + u_setup_build_tools() + u_setup_disable_gil() + u_setup_pydebug() + u_setup_trace_refs() + u_setup_pystats() + u_setup_assertions() + u_setup_optimizations() + u_setup_profile_task() + u_locate_llvm_bin() + u_setup_lto() + u_setup_pgo_flags() + u_setup_bolt() + u_setup_strict_overflow() + u_setup_opt_and_debug_cflags() + u_setup_wasm_flags() + u_setup_basecflags_overflow() + u_setup_safety_options() + u_setup_gcc_warnings() + u_setup_experimental_jit() + u_check_pthreads() + u_check_headers() + u_check_types_and_macros() + u_check_sizes() + u_setup_next_framework() + u_setup_dsymutil() + u_check_dyld() + u_setup_sanitizers() + u_setup_shared_lib_suffix() + u_setup_ldshared() + u_setup_ccshared() + u_setup_linkforshared() + u_setup_shared_lib_exports() + u_setup_perf_trampoline() + u_check_base_libraries() + u_detect_uuid() + u_check_remaining_libs() + u_setup_hash_algorithm() + u_setup_tzpath() + u_check_network_libs() + u_setup_expat() + u_detect_libffi() + u_detect_libmpdec() + u_detect_sqlite3() + u_detect_tcltk() + u_detect_gdbm() + u_detect_dbm() + u_setup_pthreads() + u_check_ipv6() + u_check_can_sockets() + u_setup_doc_strings() + u_check_stdatomic() + u_setup_mimalloc() + u_setup_pymalloc() + u_setup_c_locale_coercion() + u_setup_valgrind() + u_setup_dtrace() + u_setup_platform_objects() + u_setup_dynload() + u_check_posix_functions() + u_check_special_functions() + u_check_compression_libraries() + u_check_netdb_socket_funcs() + u_check_declarations() + u_check_pty_and_misc_funcs() + u_check_clock_functions() + u_check_device_macros() + u_check_getaddrinfo() + u_check_structs() + u_check_compiler_characteristics() + u_check_gethostbyname_r() + u_check_math_library() + u_check_gcc_asm_and_floating_point() + u_check_c99_math() + u_check_posix_semaphores() + u_check_big_digits() + u_check_wchar() + u_check_endianness_and_soabi() + u_setup_module_deps() + u_setup_install_paths() + u_check_sign_extension_and_getc() + u_check_readline() + u_check_misc_runtime() + u_check_stat_timestamps() + u_check_curses() + u_check_device_files() + u_check_socklen_t() + u_check_mbstowcs() + u_check_computed_gotos() + u_check_tail_call_interp() + u_check_remote_debug() + u_check_aix_pipe_buf() + u_setup_thread_headers_and_srcdirs() + u_check_compiler_bugs() + u_check_ensurepip() + u_check_dirent() + u_check_getrandom() + u_check_posix_shmem() + u_check_openssl() + u_check_ssl_cipher_suites() + u_check_builtin_hashlib_hashes() + u_check_test_modules() + u_check_libatomic() + u_check_thread_name_maxlen() + u_setup_platform_na_modules() + u_setup_stdlib_modules() + u_setup_hacl() + u_setup_remaining_modules() + u_check_jit_stencils() + u_generate_output() + pyconf_output() + exit 0 +} + From e01ea4211446b5dee968744af34445677f7a71c9 Mon Sep 17 00:00:00 2001 From: Neil Schemenauer Date: Wed, 18 Mar 2026 10:08:34 -0700 Subject: [PATCH 3/6] Port configure.ac changes to configure.py. --- Tools/configure/conf_buildopts.py | 12 ++++++----- Tools/configure/conf_compiler.py | 31 ++++++++++++++++++++++++++++ Tools/configure/conf_math.py | 18 +++++----------- Tools/configure/conf_optimization.py | 5 ++++- Tools/configure/conf_platform.py | 20 +++++++++++++++++- Tools/configure/conf_wasm.py | 4 +++- 6 files changed, 69 insertions(+), 21 deletions(-) diff --git a/Tools/configure/conf_buildopts.py b/Tools/configure/conf_buildopts.py index 07ac4f2def938d..6be909b96a6cf8 100644 --- a/Tools/configure/conf_buildopts.py +++ b/Tools/configure/conf_buildopts.py @@ -535,12 +535,14 @@ def setup_dtrace(v): def setup_perf_trampoline(v): """Check and configure perf trampoline support.""" pyconf.checking("perf trampoline") - if v.PLATFORM_TRIPLET in ( - "x86_64-linux-gnu", - "aarch64-linux-gnu", - "darwin", - ): + if v.PLATFORM_TRIPLET in ("x86_64-linux-gnu", "aarch64-linux-gnu"): perf_trampoline = True + elif v.PLATFORM_TRIPLET == "darwin": + target = v.get("MACOSX_DEPLOYMENT_TARGET", "") + if pyconf.fnmatch_any(target, ["10.[0-9]", "10.1[0-1]"]): + perf_trampoline = False + else: + perf_trampoline = True else: perf_trampoline = False pyconf.result(perf_trampoline) diff --git a/Tools/configure/conf_compiler.py b/Tools/configure/conf_compiler.py index 87955f0f51f9e7..ba0a5c651d7b08 100644 --- a/Tools/configure/conf_compiler.py +++ b/Tools/configure/conf_compiler.py @@ -558,6 +558,37 @@ def check_stdatomic(v): "Has builtin __atomic_load_n() and __atomic_store_n() functions", ) + # Check for __builtin_shufflevector with 128-bit vector support on an + # architecture where it compiles to worthwhile native SIMD instructions. + # Used for SIMD-accelerated bytes.hex() in Python/pystrhex.c. + pyconf.checking("for __builtin_shufflevector") + ac_cv_efficient_builtin_shufflevector = pyconf.link_check( + source=( + "#if !defined(__x86_64__) && !defined(__aarch64__) && \\\n" + " !(defined(__arm__) && defined(__ARM_NEON))\n" + '# error "128-bit vector SIMD not worthwhile on this architecture"\n' + "#endif\n" + "typedef unsigned char v16u8 __attribute__((vector_size(16)));\n" + "int main(void) {\n" + " v16u8 a = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};\n" + " v16u8 b = {16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};\n" + " v16u8 c = __builtin_shufflevector(a, b,\n" + " 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23);\n" + " (void)c;\n" + " return 0;\n" + "}\n" + ), + cache_var="ac_cv_efficient_builtin_shufflevector", + ) + pyconf.result(ac_cv_efficient_builtin_shufflevector) + if ac_cv_efficient_builtin_shufflevector: + pyconf.define( + "HAVE_EFFICIENT_BUILTIN_SHUFFLEVECTOR", + 1, + "Define if compiler supports __builtin_shufflevector with 128-bit " + "vectors AND the target architecture has native SIMD", + ) + def check_sizes(v): """Check sizeof/alignof for fundamental types and pthread types.""" diff --git a/Tools/configure/conf_math.py b/Tools/configure/conf_math.py index 915a78d7367833..893e690bd0baaa 100644 --- a/Tools/configure/conf_math.py +++ b/Tools/configure/conf_math.py @@ -90,19 +90,11 @@ def _define_float_little(): def _define_float_unknown(): - if "arm" in pyconf.host_cpu: - pyconf.define( - "DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754", - 1, - "Define if C doubles are 64-bit IEEE 754 binary format, " - "stored in ARM mixed-endian order (byte order 45670123)", - ) - else: - pyconf.error( - "Unknown float word ordering. You need to manually " - "preset ax_cv_c_float_words_bigendian=no (or yes) " - "according to your system." - ) + pyconf.error( + "Unknown float word ordering. You need to manually " + "preset ax_cv_c_float_words_bigendian=no (or yes) " + "according to your system." + ) def check_gcc_asm_and_floating_point(v): diff --git a/Tools/configure/conf_optimization.py b/Tools/configure/conf_optimization.py index b5f84af53fd69e..e8fef294cb49e3 100644 --- a/Tools/configure/conf_optimization.py +++ b/Tools/configure/conf_optimization.py @@ -230,7 +230,10 @@ def setup_pgo_flags(v): "build but could not be found." ) elif v.ac_cv_cc_name == "gcc": - v.PGO_PROF_GEN_FLAG = "-fprofile-generate" + if pyconf.check_compile_flag("-fprofile-update=atomic"): + v.PGO_PROF_GEN_FLAG = "-fprofile-generate -fprofile-update=atomic" + else: + v.PGO_PROF_GEN_FLAG = "-fprofile-generate" v.PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" v.LLVM_PROF_MERGER = "true" v.LLVM_PROF_FILE = "" diff --git a/Tools/configure/conf_platform.py b/Tools/configure/conf_platform.py index 7a0cdea18af211..58bd2d8c321b0e 100644 --- a/Tools/configure/conf_platform.py +++ b/Tools/configure/conf_platform.py @@ -927,7 +927,6 @@ def check_headers(v): "shadow.h", "signal.h", "spawn.h", - "stropts.h", "sys/audioio.h", "sys/bsdtty.h", "sys/devpoll.h", @@ -975,6 +974,25 @@ def check_headers(v): "utime.h", "utmp.h", ) + # On Linux, stropts.h may be empty + pyconf.checking("whether stropts.h has I_PUSH") + has_i_push = pyconf.compile_check( + preamble=( + "#ifdef HAVE_SYS_TYPES_H\n" + "# include \n" + "#endif\n" + "#include \n" + ), + body="(void)I_PUSH", + ) + pyconf.result(has_i_push) + if has_i_push: + pyconf.define( + "HAVE_STROPTS_H", + 1, + "Define to 1 if you have the header file.", + ) + # AC_HEADER_DIRENT: check for dirent.h pyconf.check_headers("dirent.h") diff --git a/Tools/configure/conf_wasm.py b/Tools/configure/conf_wasm.py index b0f664ed306c93..2c434616813ed3 100644 --- a/Tools/configure/conf_wasm.py +++ b/Tools/configure/conf_wasm.py @@ -83,6 +83,7 @@ def setup_wasm_flags(v): v.export("CFLAGS_NODIST") v.export("LDFLAGS_NODIST") v.export("LDFLAGS_NOLTO") + v.export("EXE_LDFLAGS") v.export("LINKFORSHARED") v.export("WASM_ASSETS_DIR") v.export("WASM_STDLIB") @@ -104,7 +105,8 @@ def _setup_emscripten_flags(v): ) v.LINKFORSHARED += ( " -sEXPORTED_FUNCTIONS=_main,_Py_Version,__PyRuntime," - "_PyGILState_GetThisThreadState,__Py_DumpTraceback" + "_PyGILState_GetThisThreadState,__Py_DumpTraceback," + "__PyEM_EMSCRIPTEN_TRAMPOLINE_OFFSET" ) v.LINKFORSHARED += " -sSTACK_SIZE=5MB" v.LINKFORSHARED += " -sTEXTDECODER=2" From 60dbb52b4508451c94cec92871a9fa68c1e4f17c Mon Sep 17 00:00:00 2001 From: Neil Schemenauer Date: Wed, 18 Mar 2026 10:19:17 -0700 Subject: [PATCH 4/6] Re-gen configure-new (transpiled configure.py). --- configure-new | 1023 +++++++++++++++++++++++++------------------------ 1 file changed, 523 insertions(+), 500 deletions(-) diff --git a/configure-new b/configure-new index 1b3e6f3e57a7bb..4b4d3ef2a91e54 100755 --- a/configure-new +++ b/configure-new @@ -2415,10 +2415,21 @@ function u_setup_dtrace( _opt_result, ac_cv_dtrace_link, dtrace, dtrace_cmd, } } -function u_setup_perf_trampoline( PERF_TRAMPOLINE_OBJ, perf_trampoline) { +function u_setup_perf_trampoline( PERF_TRAMPOLINE_OBJ, perf_trampoline, target, v) { pyconf_checking("perf trampoline") - if ((((V["PLATFORM_TRIPLET"] == "x86_64-linux-gnu") || (V["PLATFORM_TRIPLET"] == "aarch64-linux-gnu")) || (V["PLATFORM_TRIPLET"] == "darwin"))) { + if (((V["PLATFORM_TRIPLET"] == "x86_64-linux-gnu") || (V["PLATFORM_TRIPLET"] == "aarch64-linux-gnu"))) { perf_trampoline = "yes" + } else if ((V["PLATFORM_TRIPLET"] == "darwin")) { + target = (("MACOSX_DEPLOYMENT_TARGET" in v) ? v["MACOSX_DEPLOYMENT_TARGET"] : "") + delete _va3 + _va3[1] = "10.[0-9]" + _va3[2] = "10.1[0-1]" + _va3[0] = 2 + if (pyconf_fnmatch_any(target, _va3)) { + perf_trampoline = "no" + } else { + perf_trampoline = "yes" + } } else { perf_trampoline = "no" } @@ -2615,10 +2626,10 @@ function u_setup_safety_options( _i_flag, _opt_result, flag, _al_2) { _al_2[6] = "-Wall" for (_i_flag = 1; (_i_flag <= 6); _i_flag = (_i_flag + 1)) { flag = _al_2[_i_flag] - delete _va3 - _va3[1] = "-Werror" - _va3[0] = 1 - if (pyconf_check_compile_flag(flag, _va3)) { + delete _va4 + _va4[1] = "-Werror" + _va4[0] = 1 + if (pyconf_check_compile_flag(flag, _va4)) { V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " " flag } else { pyconf_warn(flag " not supported") @@ -2627,10 +2638,10 @@ function u_setup_safety_options( _i_flag, _opt_result, flag, _al_2) { } _opt_result = pyconf_option_process_bool("enable_slower_safety") if (((_opt_result != "") && (_opt_result != "no"))) { - delete _va4 - _va4[1] = "-Werror" - _va4[0] = 1 - if (pyconf_check_compile_flag("-D_FORTIFY_SOURCE=3", _va4)) { + delete _va5 + _va5[1] = "-Werror" + _va5[0] = 1 + if (pyconf_check_compile_flag("-D_FORTIFY_SOURCE=3", _va5)) { V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3" } else { pyconf_warn("-D_FORTIFY_SOURCE=3 not supported") @@ -2648,10 +2659,10 @@ function u_setup_gcc_warnings( cc_ver, cc_with_fna, cc_with_fsa, fna_supporte return } V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -std=c11" - delete _va5 - _va5[1] = "-Werror" - _va5[0] = 1 - if (pyconf_check_compile_flag("-Wextra", _va5)) { + delete _va6 + _va6[1] = "-Werror" + _va6[0] = 1 + if (pyconf_check_compile_flag("-Wextra", _va6)) { V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Wextra" } cc_with_fna = V["CC"] " -fno-strict-aliasing" @@ -2666,49 +2677,49 @@ function u_setup_gcc_warnings( cc_ver, cc_with_fna, cc_with_fsa, fna_supporte V["BASECFLAGS"] = V["BASECFLAGS"] " -fno-strict-aliasing" } if ((V["ac_cv_cc_name"] == "icc")) { - delete _va6 - _va6[1] = "-Werror" - _va6[0] = 1 - if (pyconf_check_compile_flag("-Wunused-result", _va6)) { + delete _va7 + _va7[1] = "-Werror" + _va7[0] = 1 + if (pyconf_check_compile_flag("-Wunused-result", _va7)) { V["BASECFLAGS"] = V["BASECFLAGS"] " -Wno-unused-result" V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Wno-unused-result" } } - delete _va7 - _va7[1] = "-Werror" - _va7[0] = 1 - if (pyconf_check_compile_flag("-Wno-unused-parameter", _va7)) { - V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Wno-unused-parameter" - } delete _va8 _va8[1] = "-Werror" _va8[0] = 1 - if (pyconf_check_compile_flag("-Wno-missing-field-initializers", _va8)) { - V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Wno-missing-field-initializers" + if (pyconf_check_compile_flag("-Wno-unused-parameter", _va8)) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Wno-unused-parameter" } delete _va9 _va9[1] = "-Werror" _va9[0] = 1 - if (pyconf_check_compile_flag("-Wsign-compare", _va9)) { - V["BASECFLAGS"] = V["BASECFLAGS"] " -Wsign-compare" + if (pyconf_check_compile_flag("-Wno-missing-field-initializers", _va9)) { + V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Wno-missing-field-initializers" } delete _va10 _va10[1] = "-Werror" _va10[0] = 1 - if (pyconf_check_compile_flag("-Wunreachable-code", _va10)) { - delete _va11 - _va11[1] = V["CC"] - _va11[2] = "--version" - _va11[0] = 2 - cc_ver = pyconf_cmd_output(_va11) + if (pyconf_check_compile_flag("-Wsign-compare", _va10)) { + V["BASECFLAGS"] = V["BASECFLAGS"] " -Wsign-compare" + } + delete _va11 + _va11[1] = "-Werror" + _va11[0] = 1 + if (pyconf_check_compile_flag("-Wunreachable-code", _va11)) { + delete _va12 + _va12[1] = V["CC"] + _va12[2] = "--version" + _va12[0] = 2 + cc_ver = pyconf_cmd_output(_va12) if (((V["Py_DEBUG"] != "yes") && (!(index(cc_ver, "Free Software Foundation") > 0)))) { V["BASECFLAGS"] = V["BASECFLAGS"] " -Wunreachable-code" } } - delete _va12 - _va12[1] = "-Werror" - _va12[0] = 1 - if (pyconf_check_compile_flag("-Wstrict-prototypes", _va12)) { + delete _va13 + _va13[1] = "-Werror" + _va13[0] = 1 + if (pyconf_check_compile_flag("-Wstrict-prototypes", _va13)) { V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Wstrict-prototypes" } if (pyconf_check_compile_flag("-Werror=implicit-function-declaration")) { @@ -2768,7 +2779,7 @@ function u_check_computed_gotos( cg_result) { } } -function u_check_stdatomic( ac_cv_builtin_atomic, ac_cv_header_stdatomic_h) { +function u_check_stdatomic( ac_cv_builtin_atomic, ac_cv_efficient_builtin_shufflevector, ac_cv_header_stdatomic_h) { pyconf_checking("for stdatomic.h") ac_cv_header_stdatomic_h = (pyconf_link_check("", "#include \natomic_int int_var;\natomic_uintptr_t uintptr_var;\nint main() {\n atomic_store_explicit(&int_var, 5, memory_order_relaxed);\n atomic_store_explicit(&uintptr_var, 0, memory_order_relaxed);\n int loaded_value = atomic_load_explicit(&int_var, memory_order_seq_cst);\n return 0;\n}\n") ? "yes" : "no") pyconf_result(ac_cv_header_stdatomic_h) @@ -2782,6 +2793,12 @@ function u_check_stdatomic( ac_cv_builtin_atomic, ac_cv_header_stdatomic_h) { if (((ac_cv_builtin_atomic != "") && (ac_cv_builtin_atomic != "no"))) { pyconf_define("HAVE_BUILTIN_ATOMIC", 1, 0, "Has builtin __atomic_load_n() and __atomic_store_n() functions") } + pyconf_checking("for __builtin_shufflevector") + ac_cv_efficient_builtin_shufflevector = (pyconf_link_check("", "#if !defined(__x86_64__) && !defined(__aarch64__) && \\\n !(defined(__arm__) && defined(__ARM_NEON))\n# error \"128-bit vector SIMD not worthwhile on this architecture\"\n#endif\ntypedef unsigned char v16u8 __attribute__((vector_size(16)));\nint main(void) {\n v16u8 a = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};\n v16u8 b = {16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};\n v16u8 c = __builtin_shufflevector(a, b,\n 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23);\n (void)c;\n return 0;\n}\n") ? "yes" : "no") + pyconf_result(ac_cv_efficient_builtin_shufflevector) + if (((ac_cv_efficient_builtin_shufflevector != "") && (ac_cv_efficient_builtin_shufflevector != "no"))) { + pyconf_define("HAVE_EFFICIENT_BUILTIN_SHUFFLEVECTOR", 1, 0, "Define if compiler supports __builtin_shufflevector with 128-bit vectors AND the target architecture has native SIMD") + } } function u_check_sizes( ac_cv_have_pthread_t, save_CC) { @@ -2891,13 +2908,13 @@ function u_detect_libffi( ac_cv_ffi_complex_double_supported, ctypes_malloc_c if ((V["have_libffi"] == "missing")) { pkg = pyconf_find_prog("pkg-config") if (((pkg != "") && (pkg != "no"))) { - delete _va13 - _va13[1] = pkg - _va13[2] = "--cflags" - _va13[3] = "--libs" - _va13[4] = "libffi" - _va13[0] = 4 - pyconf_cmd_status(_va13, _ar_4) + delete _va14 + _va14[1] = pkg + _va14[2] = "--cflags" + _va14[3] = "--libs" + _va14[4] = "libffi" + _va14[0] = 4 + pyconf_cmd_status(_va14, _ar_4) status = _ar_4[0] output = _ar_4[1] if ((status == 0)) { @@ -2962,19 +2979,19 @@ function u_detect_sqlite3( _i_f, _n_f, check_cflags, enable_loadable_sqlite_e pyconf_check_emscripten_port("LIBSQLITE3", "-sUSE_SQLITE3") pkg = pyconf_find_prog("pkg-config") if (((pkg != "") && (pkg != "no"))) { - delete _va14 - _va14[1] = pkg - _va14[2] = "--atleast-version=3.15.2" - _va14[3] = "sqlite3" - _va14[0] = 3 - if (pyconf_cmd(_va14)) { - delete _va15 - _va15[1] = pkg - _va15[2] = "--cflags" - _va15[3] = "--libs" - _va15[4] = "sqlite3" - _va15[0] = 4 - pyconf_cmd_status(_va15, _ar_6) + delete _va15 + _va15[1] = pkg + _va15[2] = "--atleast-version=3.15.2" + _va15[3] = "sqlite3" + _va15[0] = 3 + if (pyconf_cmd(_va15)) { + delete _va16 + _va16[1] = pkg + _va16[2] = "--cflags" + _va16[3] = "--libs" + _va16[4] = "sqlite3" + _va16[0] = 4 + pyconf_cmd_status(_va16, _ar_6) status = _ar_6[0] output = _ar_6[1] if ((status == 0)) { @@ -3050,19 +3067,19 @@ function u_detect_tcltk( _i_q, _x11_cflags, _x11_libs, output, parts, pkg, q, _al_11[5] = "tcl85 >= 8.5.12 tk85 >= 8.5.12" for (_i_q = 1; (_i_q <= 5); _i_q = (_i_q + 1)) { q = _al_11[_i_q] - delete _va16 - _va16[1] = pkg - _va16[2] = "--exists" - _va16[3] = q - _va16[0] = 3 - if (pyconf_cmd(_va16)) { - delete _va17 - _va17[1] = pkg - _va17[2] = "--cflags" - _va17[3] = "--libs" - _va17[4] = q - _va17[0] = 4 - pyconf_cmd_status(_va17, _ar_9) + delete _va17 + _va17[1] = pkg + _va17[2] = "--exists" + _va17[3] = q + _va17[0] = 3 + if (pyconf_cmd(_va17)) { + delete _va18 + _va18[1] = pkg + _va18[2] = "--cflags" + _va18[3] = "--libs" + _va18[4] = q + _va18[0] = 4 + pyconf_cmd_status(_va18, _ar_9) status = _ar_9[0] output = _ar_9[1] if ((status == 0)) { @@ -3076,19 +3093,19 @@ function u_detect_tcltk( _i_q, _x11_cflags, _x11_libs, output, parts, pkg, q, } } if ((_str_startswith(V["ac_sys_system"], "FreeBSD") && ((pkg != "") && (pkg != "no")))) { - delete _va18 - _va18[1] = pkg - _va18[2] = "--exists" - _va18[3] = "x11" - _va18[0] = 3 - if (pyconf_cmd(_va18)) { - delete _va19 - _va19[1] = pkg - _va19[2] = "--cflags" - _va19[3] = "--libs" - _va19[4] = "x11" - _va19[0] = 4 - pyconf_cmd_status(_va19, _ar_12) + delete _va19 + _va19[1] = pkg + _va19[2] = "--exists" + _va19[3] = "x11" + _va19[0] = 3 + if (pyconf_cmd(_va19)) { + delete _va20 + _va20[1] = pkg + _va20[2] = "--cflags" + _va20[3] = "--libs" + _va20[4] = "x11" + _va20[0] = 4 + pyconf_cmd_status(_va20, _ar_12) status = _ar_12[0] output = _ar_12[1] if ((status == 0)) { @@ -3116,10 +3133,10 @@ function u_detect_uuid( LIBUUID_CFLAGS, LIBUUID_LIBS, ac_cv_have_uuid_generat LIBUUID_CFLAGS = V["LIBUUID_CFLAGS"] LIBUUID_LIBS = V["LIBUUID_LIBS"] have_uuid = "missing" - delete _va20 - _va20[1] = "uuid.h" - _va20[0] = 1 - if (pyconf_check_headers(_va20)) { + delete _va21 + _va21[1] = "uuid.h" + _va21[0] = 1 + if (pyconf_check_headers(_va21)) { has_create = (pyconf_check_func("uuid_create", "", "HAVE_UUID_CREATE") ? "yes" : "no") has_enc_be = (pyconf_check_func("uuid_enc_be", "", "HAVE_UUID_ENC_BE") ? "yes" : "no") if ((((has_create != "") && (has_create != "no")) && ((has_enc_be != "") && (has_enc_be != "no")))) { @@ -3140,10 +3157,10 @@ function u_detect_uuid( LIBUUID_CFLAGS, LIBUUID_LIBS, ac_cv_have_uuid_generat save_LIBS = V["LIBS"] V["CPPFLAGS"] = _str_strip(V["CPPFLAGS"] " " LIBUUID_CFLAGS) V["LIBS"] = _str_strip(V["LIBS"] " " LIBUUID_LIBS) - delete _va21 - _va21[1] = "uuid/uuid.h" - _va21[0] = 1 - if (pyconf_check_headers(_va21)) { + delete _va22 + _va22[1] = "uuid/uuid.h" + _va22[0] = 1 + if (pyconf_check_headers(_va22)) { ac_cv_have_uuid_uuid_h = "yes" if (pyconf_check_lib("uuid", "uuid_generate_time", "", "")) { have_uuid = "yes" @@ -3161,10 +3178,10 @@ function u_detect_uuid( LIBUUID_CFLAGS, LIBUUID_LIBS, ac_cv_have_uuid_generat } } if ((have_uuid == "missing")) { - delete _va22 - _va22[1] = "uuid/uuid.h" - _va22[0] = 1 - if (pyconf_check_headers(_va22)) { + delete _va23 + _va23[1] = "uuid/uuid.h" + _va23[0] = 1 + if (pyconf_check_headers(_va23)) { if (pyconf_check_func("uuid_generate_time", "", "HAVE_UUID_GENERATE_TIME")) { have_uuid = "yes" ac_cv_have_uuid_uuid_h = "yes" @@ -3455,11 +3472,11 @@ function u_check_compression_libraries( _found_bz2, _found_lzma, _found_zstd, ok = (pyconf_compile_check("", "#include \n\nint main(void) { \n #if ZSTD_VERSION_NUMBER < 10405\n # error \"zstd version is too old\"\n #endif; return 0; }") ? "yes" : "no") if (((ok != "") && (ok != "no"))) { pyconf_result("yes") - delete _va23 - _va23[1] = "zstd.h" - _va23[2] = "zdict.h" - _va23[0] = 2 - if (pyconf_check_headers(_va23)) { + delete _va24 + _va24[1] = "zstd.h" + _va24[2] = "zdict.h" + _va24[0] = 2 + if (pyconf_check_headers(_va24)) { _found_zstd = "yes" } } else { @@ -3683,11 +3700,11 @@ function u_setup_source_dirs( builddir, out_of_tree, srcdir_abs, srcdir_raw) } function u_setup_git_metadata( HAS_GIT, git_dir) { - delete _va24 - _va24[1] = V["srcdir_abs"] - _va24[2] = ".git" - _va24[0] = 2 - git_dir = pyconf_path_join(_va24) + delete _va25 + _va25[1] = V["srcdir_abs"] + _va25[2] = ".git" + _va25[0] = 2 + git_dir = pyconf_path_join(_va25) if (pyconf_path_exists(git_dir)) { HAS_GIT = ((pyconf_find_prog("git") != "") ? "yes" : "no") } else { @@ -3737,12 +3754,12 @@ function u_setup_build_python( PYTHON_FOR_FREEZE, PYTHON_FOR_REGEN, bp_raw, b if ((!(pyconf_find_prog(with_build_python) != ""))) { pyconf_error("error: invalid or missing build python binary '" with_build_python "'") } - delete _va25 - _va25[1] = with_build_python - _va25[2] = "-c" - _va25[3] = "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')" - _va25[0] = 3 - build_python_ver = pyconf_cmd_output(_va25) + delete _va26 + _va26[1] = with_build_python + _va26[2] = "-c" + _va26[3] = "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')" + _va26[0] = 3 + build_python_ver = pyconf_cmd_output(_va26) if ((build_python_ver != PYTHON_VERSION)) { pyconf_error("error: '" with_build_python "' has incompatible version " build_python_ver " (expected: " PYTHON_VERSION ")") } @@ -3760,11 +3777,11 @@ function u_setup_build_python( PYTHON_FOR_FREEZE, PYTHON_FOR_REGEN, bp_raw, b v_export("PYTHON_FOR_BUILD") pyconf_checking("Python for regen version") if ((pyconf_find_prog(PYTHON_FOR_REGEN) != "")) { - delete _va26 - _va26[1] = PYTHON_FOR_REGEN - _va26[2] = "-V" - _va26[0] = 2 - pyconf_result(pyconf_cmd_output(_va26)) + delete _va27 + _va27[1] = PYTHON_FOR_REGEN + _va27[2] = "-V" + _va27[0] = 2 + pyconf_result(pyconf_cmd_output(_va27)) } else { pyconf_result("missing") } @@ -3772,18 +3789,18 @@ function u_setup_build_python( PYTHON_FOR_FREEZE, PYTHON_FOR_REGEN, bp_raw, b v_export("PYTHON_FOR_FREEZE") u_setup_freeze_module() if ((with_build_python == "")) { - delete _va27 - _va27[1] = "python" PYTHON_VERSION - _va27[2] = "python3.15" - _va27[3] = "python3.14" - _va27[4] = "python3.13" - _va27[5] = "python3.12" - _va27[6] = "python3.11" - _va27[7] = "python3.10" - _va27[8] = "python3" - _va27[9] = "python" - _va27[0] = 9 - PYTHON_FOR_REGEN = pyconf_check_progs(_va27) + delete _va28 + _va28[1] = "python" PYTHON_VERSION + _va28[2] = "python3.15" + _va28[3] = "python3.14" + _va28[4] = "python3.13" + _va28[5] = "python3.12" + _va28[6] = "python3.11" + _va28[7] = "python3.10" + _va28[8] = "python3" + _va28[9] = "python" + _va28[0] = 9 + PYTHON_FOR_REGEN = pyconf_check_progs(_va28) } V["PYTHON_FOR_REGEN"] = PYTHON_FOR_REGEN v_export("PYTHON_FOR_REGEN") @@ -3901,14 +3918,14 @@ function u_setup_universalsdk( _, dylib, enable_universalsdk, file_out, usdk_ enable_universalsdk = "" if ((usdk_raw != "")) { if ((usdk_raw == "yes")) { - delete _va28 - _va28[1] = "/usr/bin/xcodebuild" - _va28[2] = "-version" - _va28[3] = "-sdk" - _va28[4] = "macosx" - _va28[5] = "Path" - _va28[0] = 5 - val = pyconf_cmd_output(_va28) + delete _va29 + _va29[1] = "/usr/bin/xcodebuild" + _va29[2] = "-version" + _va29[3] = "-sdk" + _va29[4] = "macosx" + _va29[5] = "Path" + _va29[0] = 5 + val = pyconf_cmd_output(_va29) if ((!(index(val, ".sdk") > 0))) { val = "/Developer/SDKs/MacOSX10.4u.sdk" if ((!pyconf_path_is_dir(val))) { @@ -3942,17 +3959,17 @@ function u_setup_universalsdk( _, dylib, enable_universalsdk, file_out, usdk_ v_export("ARCH_RUN_32BIT") V["UNIVERSAL_ARCHS"] = "32-bit" if (((pyconf_platform_system() == "Darwin") && ((V["UNIVERSALSDK"] != "") && (V["UNIVERSALSDK"] != "no")))) { - delete _va29 - _va29[1] = V["UNIVERSALSDK"] - _va29[2] = "usr/lib/libSystem.dylib" - _va29[0] = 2 - dylib = pyconf_path_join(_va29) delete _va30 - _va30[1] = "/usr/bin/file" - _va30[2] = "-L" - _va30[3] = dylib - _va30[0] = 3 - pyconf_cmd_status(_va30, _ar_17) + _va30[1] = V["UNIVERSALSDK"] + _va30[2] = "usr/lib/libSystem.dylib" + _va30[0] = 2 + dylib = pyconf_path_join(_va30) + delete _va31 + _va31[1] = "/usr/bin/file" + _va31[2] = "-L" + _va31[3] = dylib + _va31[0] = 3 + pyconf_cmd_status(_va31, _ar_17) _ = _ar_17[0] file_out = _ar_17[1] if ((!(index(file_out, "ppc") > 0))) { @@ -4071,13 +4088,13 @@ function u__setup_framework_darwin(val, ac_default_prefix, mdir) { V["prefix"] = V["PYTHONFRAMEWORKINSTALLDIR"] "/Versions/" V["VERSION"] V["PYTHONFRAMEWORKINSTALLNAMEPREFIX"] = V["prefix"] V["RESSRCDIR"] = "Mac/Resources/framework" - delete _va31 - _va31[1] = "Mac/Makefile" - _va31[2] = "Mac/PythonLauncher/Makefile" - _va31[3] = "Mac/Resources/framework/Info.plist" - _va31[4] = "Mac/Resources/app/Info.plist" - _va31[0] = 4 - pyconf_config_files(_va31) + delete _va32 + _va32[1] = "Mac/Makefile" + _va32[2] = "Mac/PythonLauncher/Makefile" + _va32[3] = "Mac/Resources/framework/Info.plist" + _va32[4] = "Mac/Resources/app/Info.plist" + _va32[0] = 4 + pyconf_config_files(_va32) } function u__setup_framework_ios() { @@ -4090,10 +4107,10 @@ function u__setup_framework_ios() { V["prefix"] = V["PYTHONFRAMEWORKPREFIX"] V["PYTHONFRAMEWORKINSTALLNAMEPREFIX"] = "@rpath/" V["PYTHONFRAMEWORKDIR"] V["RESSRCDIR"] = "Apple/iOS/Resources" - delete _va32 - _va32[1] = "Apple/iOS/Resources/Info.plist" - _va32[0] = 1 - pyconf_config_files(_va32) + delete _va33 + _va33[1] = "Apple/iOS/Resources/Info.plist" + _va33[0] = 1 + pyconf_config_files(_va33) } function u__export_framework_vars() { @@ -4181,11 +4198,11 @@ function u_setup_macos_compiler( HAS_XCRUN, found_clang, found_gcc, ver) { pyconf_checking("macOS SDKROOT") if ((!((V["SDKROOT"] != "") && (V["SDKROOT"] != "no")))) { if (((HAS_XCRUN != "") && (HAS_XCRUN != "no"))) { - delete _va33 - _va33[1] = "xcrun" - _va33[2] = "--show-sdk-path" - _va33[0] = 2 - V["SDKROOT"] = pyconf_cmd_output(_va33) + delete _va34 + _va34[1] = "xcrun" + _va34[2] = "--show-sdk-path" + _va34[0] = 2 + V["SDKROOT"] = pyconf_cmd_output(_va34) } else { V["SDKROOT"] = "/" } @@ -4195,11 +4212,11 @@ function u_setup_macos_compiler( HAS_XCRUN, found_clang, found_gcc, ver) { found_gcc = pyconf_find_prog("gcc") found_clang = pyconf_find_prog("clang") if ((((found_gcc != "") && (found_gcc != "no")) && ((found_clang != "") && (found_clang != "no")))) { - delete _va34 - _va34[1] = found_gcc - _va34[2] = "--version" - _va34[0] = 2 - ver = pyconf_cmd_output(_va34) + delete _va35 + _va35[1] = found_gcc + _va35[2] = "--version" + _va35[0] = 2 + ver = pyconf_cmd_output(_va35) if ((index(ver, "llvm-gcc") > 0)) { V["CC"] = found_clang V["CXX"] = found_clang "++" @@ -4208,20 +4225,20 @@ function u_setup_macos_compiler( HAS_XCRUN, found_clang, found_gcc, ver) { V["CC"] = found_clang V["CXX"] = found_clang "++" } else if (((!((found_gcc != "") && (found_gcc != "no"))) && (!((found_clang != "") && (found_clang != "no"))))) { - delete _va35 - _va35[1] = "/usr/bin/xcrun" - _va35[2] = "-find" - _va35[3] = "clang" - _va35[0] = 3 - found_clang = pyconf_cmd_output(_va35) + delete _va36 + _va36[1] = "/usr/bin/xcrun" + _va36[2] = "-find" + _va36[3] = "clang" + _va36[0] = 3 + found_clang = pyconf_cmd_output(_va36) if (((found_clang != "") && (found_clang != "no"))) { V["CC"] = found_clang - delete _va36 - _va36[1] = "/usr/bin/xcrun" - _va36[2] = "-find" - _va36[3] = "clang++" - _va36[0] = 3 - V["CXX"] = pyconf_cmd_output(_va36) + delete _va37 + _va37[1] = "/usr/bin/xcrun" + _va37[2] = "-find" + _va37[3] = "clang++" + _va37[0] = 3 + V["CXX"] = pyconf_cmd_output(_va37) } } } @@ -4277,10 +4294,10 @@ function u__setup_darwin_flags() { V["CPP"] = "cpp-4.0" } pyconf_result(V["CC"]) - delete _va37 - _va37[1] = "-Werror" - _va37[0] = 1 - if (pyconf_check_compile_flag("-Wunguarded-availability", _va37)) { + delete _va38 + _va38[1] = "-Werror" + _va38[0] = 1 + if (pyconf_check_compile_flag("-Wunguarded-availability", _va38)) { V["CFLAGS_NODIST"] = V["CFLAGS_NODIST"] " -Werror=unguarded-availability" } V["LIPO_INTEL64_FLAGS"] = "" @@ -4361,11 +4378,11 @@ function u__setup_universal_archs( ua) { function u__setup_macos_deployment_target( _tmp_split, arch, cur_target, cur_target_major, cur_target_minor, parts, sw, _idx_tmp) { delete _idx_tmp pyconf_checking("which MACOSX_DEPLOYMENT_TARGET to use") - delete _va38 - _va38[1] = "sw_vers" - _va38[2] = "-productVersion" - _va38[0] = 2 - sw = pyconf_cmd_output(_va38) + delete _va39 + _va39[1] = "sw_vers" + _va39[2] = "-productVersion" + _va39[0] = 2 + sw = pyconf_cmd_output(_va39) parts = _str_replace(sw, ".", " ") cur_target_major = (((parts != "") && (parts != "no")) ? _split_index(parts, " ", 1) : 0) cur_target_minor = ((length(parts) > 1) ? _split_index(parts, " ", 2) : 0) @@ -4377,10 +4394,10 @@ function u__setup_macos_deployment_target( _tmp_split, arch, cur_target, cur_ cur_target = "10.5" } } else { - delete _va39 - _va39[1] = "/usr/bin/arch" - _va39[0] = 1 - arch = pyconf_cmd_output(_va39) + delete _va40 + _va40[1] = "/usr/bin/arch" + _va40[0] = 1 + arch = pyconf_cmd_output(_va40) if ((arch == "i386")) { cur_target = "10.4" } @@ -4450,11 +4467,7 @@ function u__define_float_little() { } function u__define_float_unknown() { - if ((index(pyconf_host_cpu, "arm") > 0)) { - pyconf_define("DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754", 1, 0, "Define if C doubles are 64-bit IEEE 754 binary format, stored in ARM mixed-endian order (byte order 45670123)") - } else { - pyconf_error("Unknown float word ordering. You need to manually preset ax_cv_c_float_words_bigendian=no (or yes) according to your system.") - } + pyconf_error("Unknown float word ordering. You need to manually preset ax_cv_c_float_words_bigendian=no (or yes) according to your system.") } function u_check_gcc_asm_and_floating_point( ac_cv_gcc_asm_for_mc68881, ac_cv_gcc_asm_for_x64, ac_cv_gcc_asm_for_x87, ac_cv_x87_double_rounding, saved_cc) { @@ -4606,19 +4619,19 @@ function u_detect_libmpdec( _i_p, _n_p, _opt_result, ac_cv_gcc_asm_for_x64, a pkg = pyconf_find_prog("pkg-config") found_pkg = "no" if (((pkg != "") && (pkg != "no"))) { - delete _va40 - _va40[1] = pkg - _va40[2] = "--atleast-version=2.5.0" - _va40[3] = "libmpdec" - _va40[0] = 3 - if (pyconf_cmd(_va40)) { - delete _va41 - _va41[1] = pkg - _va41[2] = "--cflags" - _va41[3] = "--libs" - _va41[4] = "libmpdec" - _va41[0] = 4 - pyconf_cmd_status(_va41, _ar_20) + delete _va41 + _va41[1] = pkg + _va41[2] = "--atleast-version=2.5.0" + _va41[3] = "libmpdec" + _va41[0] = 3 + if (pyconf_cmd(_va41)) { + delete _va42 + _va42[1] = pkg + _va42[2] = "--cflags" + _va42[3] = "--libs" + _va42[4] = "libmpdec" + _va42[0] = 4 + pyconf_cmd_status(_va42, _ar_20) status = _ar_20[0] output = _ar_20[1] if ((status == 0)) { @@ -4764,63 +4777,42 @@ function u_setup_freeze_module( FREEZE_MODULE, FREEZE_MODULE_BOOTSTRAP, FREEZ function u_setup_platform_na_modules( host_cpu, sys) { sys = V["ac_sys_system"] if ((sys == "AIX")) { - delete _va42 - _va42[1] = "_scproxy" - _va42[0] = 1 - pyconf_stdlib_module_set_na(_va42) - } else if (_str_startswith(sys, "VxWorks")) { delete _va43 _va43[1] = "_scproxy" - _va43[2] = "termios" - _va43[3] = "grp" - _va43[0] = 3 + _va43[0] = 1 pyconf_stdlib_module_set_na(_va43) - } else if ((sys == "Darwin")) { - } else if ((sys == "iOS")) { + } else if (_str_startswith(sys, "VxWorks")) { delete _va44 - _va44[1] = "_curses" - _va44[2] = "_curses_panel" - _va44[3] = "_gdbm" - _va44[4] = "_multiprocessing" - _va44[5] = "_posixshmem" - _va44[6] = "_posixsubprocess" - _va44[7] = "_scproxy" - _va44[8] = "_tkinter" - _va44[9] = "grp" - _va44[10] = "nis" - _va44[11] = "readline" - _va44[12] = "pwd" - _va44[13] = "spwd" - _va44[14] = "syslog" - _va44[0] = 14 + _va44[1] = "_scproxy" + _va44[2] = "termios" + _va44[3] = "grp" + _va44[0] = 3 pyconf_stdlib_module_set_na(_va44) - } else if (((_str_startswith(sys, "CYGWIN") || _str_startswith(sys, "QNX")) || _str_startswith(sys, "FreeBSD"))) { + } else if ((sys == "Darwin")) { + } else if ((sys == "iOS")) { delete _va45 - _va45[1] = "_scproxy" - _va45[0] = 1 + _va45[1] = "_curses" + _va45[2] = "_curses_panel" + _va45[3] = "_gdbm" + _va45[4] = "_multiprocessing" + _va45[5] = "_posixshmem" + _va45[6] = "_posixsubprocess" + _va45[7] = "_scproxy" + _va45[8] = "_tkinter" + _va45[9] = "grp" + _va45[10] = "nis" + _va45[11] = "readline" + _va45[12] = "pwd" + _va45[13] = "spwd" + _va45[14] = "syslog" + _va45[0] = 14 pyconf_stdlib_module_set_na(_va45) - } else if ((sys == "Emscripten")) { + } else if (((_str_startswith(sys, "CYGWIN") || _str_startswith(sys, "QNX")) || _str_startswith(sys, "FreeBSD"))) { delete _va46 - _va46[1] = "_curses" - _va46[2] = "_curses_panel" - _va46[3] = "_dbm" - _va46[4] = "_gdbm" - _va46[5] = "_multiprocessing" - _va46[6] = "_posixshmem" - _va46[7] = "_posixsubprocess" - _va46[8] = "_scproxy" - _va46[9] = "_tkinter" - _va46[10] = "_interpreters" - _va46[11] = "_interpchannels" - _va46[12] = "_interpqueues" - _va46[13] = "grp" - _va46[14] = "pwd" - _va46[15] = "resource" - _va46[16] = "syslog" - _va46[17] = "readline" - _va46[0] = 17 + _va46[1] = "_scproxy" + _va46[0] = 1 pyconf_stdlib_module_set_na(_va46) - } else if ((sys == "WASI")) { + } else if ((sys == "Emscripten")) { delete _va47 _va47[1] = "_curses" _va47[2] = "_curses_panel" @@ -4838,26 +4830,47 @@ function u_setup_platform_na_modules( host_cpu, sys) { _va47[14] = "pwd" _va47[15] = "resource" _va47[16] = "syslog" - _va47[0] = 16 + _va47[17] = "readline" + _va47[0] = 17 pyconf_stdlib_module_set_na(_va47) + } else if ((sys == "WASI")) { delete _va48 - _va48[1] = "_ctypes_test" - _va48[2] = "_remote_debugging" - _va48[3] = "_testimportmultiple" - _va48[4] = "_testmultiphase" - _va48[5] = "_testsinglephase" - _va48[6] = "fcntl" - _va48[7] = "mmap" - _va48[8] = "termios" - _va48[9] = "xxlimited" - _va48[10] = "xxlimited_35" - _va48[0] = 10 + _va48[1] = "_curses" + _va48[2] = "_curses_panel" + _va48[3] = "_dbm" + _va48[4] = "_gdbm" + _va48[5] = "_multiprocessing" + _va48[6] = "_posixshmem" + _va48[7] = "_posixsubprocess" + _va48[8] = "_scproxy" + _va48[9] = "_tkinter" + _va48[10] = "_interpreters" + _va48[11] = "_interpchannels" + _va48[12] = "_interpqueues" + _va48[13] = "grp" + _va48[14] = "pwd" + _va48[15] = "resource" + _va48[16] = "syslog" + _va48[0] = 16 pyconf_stdlib_module_set_na(_va48) - } else { delete _va49 - _va49[1] = "_scproxy" - _va49[0] = 1 + _va49[1] = "_ctypes_test" + _va49[2] = "_remote_debugging" + _va49[3] = "_testimportmultiple" + _va49[4] = "_testmultiphase" + _va49[5] = "_testsinglephase" + _va49[6] = "fcntl" + _va49[7] = "mmap" + _va49[8] = "termios" + _va49[9] = "xxlimited" + _va49[10] = "xxlimited_35" + _va49[0] = 10 pyconf_stdlib_module_set_na(_va49) + } else { + delete _va50 + _va50[1] = "_scproxy" + _va50[0] = 1 + pyconf_stdlib_module_set_na(_va50) } host_cpu = V["host_cpu"] if (((host_cpu == "wasm32") || (host_cpu == "wasm64"))) { @@ -5085,11 +5098,11 @@ function u_check_ipv6( BASECFLAGS, _i_i, i, ipv6lib, ipv6libdir, ipv6trylibc, V["BASECFLAGS"] = BASECFLAGS if ((((V["ipv6"] != "") && (V["ipv6"] != "no")) && (ipv6lib != "none"))) { pyconf_checking("ipv6 library") - delete _va50 - _va50[1] = ipv6libdir - _va50[2] = "lib" ipv6lib ".a" - _va50[0] = 2 - libpath = pyconf_path_join(_va50) + delete _va51 + _va51[1] = ipv6libdir + _va51[2] = "lib" ipv6lib ".a" + _va51[0] = 2 + libpath = pyconf_path_join(_va51) if ((((ipv6libdir != "") && (ipv6libdir != "no")) && pyconf_path_is_file(libpath))) { V["LIBS"] = "-L" ipv6libdir " -l" ipv6lib " " V["LIBS"] pyconf_result("lib" ipv6lib) @@ -5260,11 +5273,11 @@ function u_locate_llvm_bin( clang_bin, clang_dir, clang_target, llvm_bin_dir, if ((((clang_bin != "") && (clang_bin != "no")) && pyconf_path_is_symlink(clang_bin))) { clang_dir = pyconf_path_parent(clang_bin) clang_target = pyconf_readlink(clang_bin) - delete _va51 - _va51[1] = clang_dir - _va51[2] = pyconf_path_parent(clang_target) - _va51[0] = 2 - llvm_bin_dir = pyconf_path_join(_va51) + delete _va52 + _va52[1] = clang_dir + _va52[2] = pyconf_path_parent(clang_target) + _va52[0] = 2 + llvm_bin_dir = pyconf_path_join(_va52) llvm_path = llvm_path os_pathsep llvm_bin_dir } } @@ -5349,12 +5362,12 @@ function u__setup_lto_clang( LLVM_AR, LLVM_AR_FOUND, xcrun_out, xcrun_status, LLVM_AR_FOUND = ((((LLVM_AR != "") && (LLVM_AR != "no")) && pyconf_is_executable(LLVM_AR)) ? "found" : "not-found") v_export("LLVM_AR_FOUND") if ((_str_startswith(V["ac_sys_system"], "Darwin") && (LLVM_AR_FOUND == "not-found"))) { - delete _va52 - _va52[1] = "/usr/bin/xcrun" - _va52[2] = "-find" - _va52[3] = "ar" - _va52[0] = 3 - pyconf_cmd_status(_va52, _ar_25) + delete _va53 + _va53[1] = "/usr/bin/xcrun" + _va53[2] = "-find" + _va53[3] = "ar" + _va53[0] = 3 + pyconf_cmd_status(_va53, _ar_25) xcrun_status = _ar_25[0] xcrun_out = _ar_25[1] if (((xcrun_status == 0) && ((xcrun_out != "") && (xcrun_out != "no")))) { @@ -5404,12 +5417,12 @@ function u_setup_pgo_flags( LLVM_PROF_FOUND, xcrun_out, xcrun_status, _ar_26) LLVM_PROF_FOUND = ((((V["LLVM_PROFDATA"] != "") && (V["LLVM_PROFDATA"] != "no")) && pyconf_is_executable(V["LLVM_PROFDATA"])) ? "found" : "not-found") v_export("LLVM_PROF_FOUND") if ((_str_startswith(V["ac_sys_system"], "Darwin") && (LLVM_PROF_FOUND == "not-found"))) { - delete _va53 - _va53[1] = "/usr/bin/xcrun" - _va53[2] = "-find" - _va53[3] = "llvm-profdata" - _va53[0] = 3 - pyconf_cmd_status(_va53, _ar_26) + delete _va54 + _va54[1] = "/usr/bin/xcrun" + _va54[2] = "-find" + _va54[3] = "llvm-profdata" + _va54[0] = 3 + pyconf_cmd_status(_va54, _ar_26) xcrun_status = _ar_26[0] xcrun_out = _ar_26[1] if (((xcrun_status == 0) && ((xcrun_out != "") && (xcrun_out != "no")))) { @@ -5435,7 +5448,11 @@ function u_setup_pgo_flags( LLVM_PROF_FOUND, xcrun_out, xcrun_status, _ar_26) } } } else if ((V["ac_cv_cc_name"] == "gcc")) { - V["PGO_PROF_GEN_FLAG"] = "-fprofile-generate" + if (pyconf_check_compile_flag("-fprofile-update=atomic")) { + V["PGO_PROF_GEN_FLAG"] = "-fprofile-generate -fprofile-update=atomic" + } else { + V["PGO_PROF_GEN_FLAG"] = "-fprofile-generate" + } V["PGO_PROF_USE_FLAG"] = "-fprofile-use -fprofile-correction" V["LLVM_PROF_MERGER"] = "true" V["LLVM_PROF_FILE"] = "" @@ -5517,38 +5534,38 @@ function u__setup_bolt_flags() { # --- conf_output --- function u_generate_output( cc, host, srcdir_rel) { - delete _va54 - _va54[1] = "Makefile.pre" - _va54[2] = "Misc/python.pc" - _va54[3] = "Misc/python-embed.pc" - _va54[4] = "Misc/python-config.sh" - _va54[5] = "Modules/Setup.bootstrap" - _va54[6] = "Modules/Setup.stdlib" - _va54[0] = 6 - pyconf_config_files(_va54) delete _va55 - _va55[1] = "Modules/ld_so_aix" - _va55[0] = 1 - pyconf_config_files_x(_va55) + _va55[1] = "Makefile.pre" + _va55[2] = "Misc/python.pc" + _va55[3] = "Misc/python-embed.pc" + _va55[4] = "Misc/python-config.sh" + _va55[5] = "Modules/Setup.bootstrap" + _va55[6] = "Modules/Setup.stdlib" + _va55[0] = 6 + pyconf_config_files(_va55) + delete _va56 + _va56[1] = "Modules/ld_so_aix" + _va56[0] = 1 + pyconf_config_files_x(_va56) pyconf_output() if ((!((pyconf_no_create != "") && (pyconf_no_create != "no")))) { if ((!pyconf_path_exists("Modules/Setup.local"))) { pyconf_write_file("Modules/Setup.local", "# Edit this file for local setup changes\n") } srcdir_rel = (((pyconf_srcdir != "") && (pyconf_srcdir != "no")) ? pyconf_relpath(pyconf_srcdir) : ".") - delete _va56 - _va56[1] = "/bin/sh" - _va56[2] = srcdir_rel "/Modules/makesetup" - _va56[3] = "-c" - _va56[4] = srcdir_rel "/Modules/config.c.in" - _va56[5] = "-s" - _va56[6] = "Modules" - _va56[7] = "Modules/Setup.local" - _va56[8] = "Modules/Setup.stdlib" - _va56[9] = "Modules/Setup.bootstrap" - _va56[10] = srcdir_rel "/Modules/Setup" - _va56[0] = 10 - if ((!pyconf_cmd(_va56))) { + delete _va57 + _va57[1] = "/bin/sh" + _va57[2] = srcdir_rel "/Modules/makesetup" + _va57[3] = "-c" + _va57[4] = srcdir_rel "/Modules/config.c.in" + _va57[5] = "-s" + _va57[6] = "Modules" + _va57[7] = "Modules/Setup.local" + _va57[8] = "Modules/Setup.stdlib" + _va57[9] = "Modules/Setup.bootstrap" + _va57[10] = srcdir_rel "/Modules/Setup" + _va57[0] = 10 + if ((!pyconf_cmd(_va57))) { pyconf_error("makesetup failed") } pyconf_rename_file("config.c", "Modules/config.c") @@ -5658,23 +5675,23 @@ function u_setup_machdep( SUNOS_VERSION, ac_md_release, ac_md_system, _split_ } V["ac_sys_release"] = "" } else { - delete _va57 - _va57[1] = "uname" - _va57[2] = "-s" - _va57[0] = 2 - V["ac_sys_system"] = pyconf_cmd_output(_va57) + delete _va58 + _va58[1] = "uname" + _va58[2] = "-s" + _va58[0] = 2 + V["ac_sys_system"] = pyconf_cmd_output(_va58) if ((((V["ac_sys_system"] == "AIX") || (V["ac_sys_system"] == "UnixWare")) || (V["ac_sys_system"] == "OpenUNIX"))) { - delete _va58 - _va58[1] = "uname" - _va58[2] = "-v" - _va58[0] = 2 - V["ac_sys_release"] = pyconf_cmd_output(_va58) - } else { delete _va59 _va59[1] = "uname" - _va59[2] = "-r" + _va59[2] = "-v" _va59[0] = 2 V["ac_sys_release"] = pyconf_cmd_output(_va59) + } else { + delete _va60 + _va60[1] = "uname" + _va60[2] = "-r" + _va60[0] = 2 + V["ac_sys_release"] = pyconf_cmd_output(_va60) } } ac_md_system = tolower(_str_replace(_str_replace(V["ac_sys_system"], "/", ""), " ", "")) @@ -5744,11 +5761,11 @@ function u_setup_host_platform( _tmp_split, emcc_ver, host_device, host_ident } else if (pyconf_fnmatch(V["host"], "*-*-vxworks*")) { host_ident = V["host_cpu"] } else if (pyconf_fnmatch(V["host"], "*-*-emscripten")) { - delete _va60 - _va60[1] = "emcc" - _va60[2] = "-dumpversion" - _va60[0] = 2 - emcc_ver = _split_index(pyconf_cmd_output(_va60), "-", 1) + delete _va61 + _va61[1] = "emcc" + _va61[2] = "-dumpversion" + _va61[0] = 2 + emcc_ver = _split_index(pyconf_cmd_output(_va61), "-", 1) host_ident = emcc_ver "-" V["host_cpu"] } else if ((_str_startswith(V["host"], "wasm32-") || _str_startswith(V["host"], "wasm64-"))) { host_ident = V["host_cpu"] @@ -5798,28 +5815,28 @@ function u_check_endianness_and_soabi( abiflags, abiflags_no_d, soabi_platfor function u_setup_xopen_source( sys_rel) { V["define_xopen_source"] = "yes" sys_rel = V["ac_sys_system"] "/" V["ac_sys_release"] - delete _va61 - _va61[1] = "OpenBSD/2.*" - _va61[2] = "OpenBSD/3.*" - _va61[3] = "OpenBSD/4.0*" - _va61[4] = "OpenBSD/4.1*" - _va61[5] = "OpenBSD/4.2*" - _va61[6] = "OpenBSD/4.3*" - _va61[7] = "OpenBSD/4.4*" - _va61[8] = "OpenBSD/4.5*" - _va61[9] = "OpenBSD/4.6*" - _va61[0] = 9 - if (pyconf_fnmatch_any(sys_rel, _va61)) { + delete _va62 + _va62[1] = "OpenBSD/2.*" + _va62[2] = "OpenBSD/3.*" + _va62[3] = "OpenBSD/4.0*" + _va62[4] = "OpenBSD/4.1*" + _va62[5] = "OpenBSD/4.2*" + _va62[6] = "OpenBSD/4.3*" + _va62[7] = "OpenBSD/4.4*" + _va62[8] = "OpenBSD/4.5*" + _va62[9] = "OpenBSD/4.6*" + _va62[0] = 9 + if (pyconf_fnmatch_any(sys_rel, _va62)) { V["define_xopen_source"] = "no" pyconf_define("_BSD_SOURCE", 1, 0, "Define on OpenBSD to activate all library features") } else if (_str_startswith(sys_rel, "OpenBSD/")) { pyconf_define("_BSD_SOURCE", 1, 0, "Define on OpenBSD to activate all library features") } else { - delete _va62 - _va62[1] = "NetBSD/1.5*" - _va62[2] = "NetBSD/1.6*" - _va62[0] = 2 - if (pyconf_fnmatch_any(sys_rel, _va62)) { + delete _va63 + _va63[1] = "NetBSD/1.5*" + _va63[2] = "NetBSD/1.6*" + _va63[0] = 2 + if (pyconf_fnmatch_any(sys_rel, _va63)) { V["define_xopen_source"] = "no" } else if (_str_startswith(sys_rel, "SunOS/")) { V["define_xopen_source"] = "no" @@ -5828,11 +5845,11 @@ function u_setup_xopen_source( sys_rel) { } else if (_str_startswith(sys_rel, "SCO_SV/3.2")) { V["define_xopen_source"] = "no" } else { - delete _va63 - _va63[1] = "Darwin/[6789].*" - _va63[2] = "Darwin/[12][0-9].*" - _va63[0] = 2 - if (pyconf_fnmatch_any(sys_rel, _va63)) { + delete _va64 + _va64[1] = "Darwin/[6789].*" + _va64[2] = "Darwin/[12][0-9].*" + _va64[0] = 2 + if (pyconf_fnmatch_any(sys_rel, _va64)) { V["define_xopen_source"] = "no" } else if (_str_startswith(sys_rel, "iOS/")) { V["define_xopen_source"] = "no" @@ -5859,11 +5876,11 @@ function u_setup_platform_triplet( _i_line, _n_line, line, triplet_result, tr delete _as_27 delete _split_tmp pyconf_checking("for the platform triplet based on compiler characteristics") - delete _va64 - _va64[1] = pyconf_srcdir - _va64[2] = "Misc/platform_triplet.c" - _va64[0] = 2 - triplet_result_returncode = pyconf_run_capture("$CPP $CPPFLAGS " pyconf_path_join(_va64)) + delete _va65 + _va65[1] = pyconf_srcdir + _va65[2] = "Misc/platform_triplet.c" + _va65[0] = 2 + triplet_result_returncode = pyconf_run_capture("$CPP $CPPFLAGS " pyconf_path_join(_va65)) triplet_result_stdout = _pyconf_run_cmd_stdout triplet_result_stderr = _pyconf_run_cmd_stderr V["PLATFORM_TRIPLET"] = "" @@ -5882,11 +5899,11 @@ function u_setup_platform_triplet( _i_line, _n_line, line, triplet_result, tr if (((_str_startswith(V["ac_sys_system"], "Darwin") || (V["ac_sys_system"] == "iOS")) || _str_startswith(V["ac_sys_system"], "FreeBSD"))) { V["MULTIARCH"] = "" } else { - delete _va65 - _va65[1] = V["CC"] - _va65[2] = "--print-multiarch" - _va65[0] = 2 - V["MULTIARCH"] = pyconf_cmd_output(_va65) + delete _va66 + _va66[1] = V["CC"] + _va66[2] = "--print-multiarch" + _va66[0] = 2 + V["MULTIARCH"] = pyconf_cmd_output(_va66) } if ((((V["PLATFORM_TRIPLET"] != "") && (V["PLATFORM_TRIPLET"] != "no")) && ((V["MULTIARCH"] != "") && (V["MULTIARCH"] != "no")))) { if ((V["PLATFORM_TRIPLET"] != V["MULTIARCH"])) { @@ -6005,24 +6022,24 @@ function u_check_pty_and_misc_funcs() { V["LIBS"] = V["LIBS"] " -lbsd" } } - delete _va66 - _va66[1] = "setns" - _va66[2] = "unshare" - _va66[0] = 2 - pyconf_check_funcs(_va66) delete _va67 - _va67[1] = "fseek64" - _va67[2] = "fseeko" - _va67[3] = "fstatvfs" - _va67[4] = "ftell64" - _va67[5] = "ftello" - _va67[6] = "statvfs" - _va67[0] = 6 + _va67[1] = "setns" + _va67[2] = "unshare" + _va67[0] = 2 pyconf_check_funcs(_va67) delete _va68 - _va68[1] = "dup2" - _va68[0] = 1 - pyconf_replace_funcs(_va68) + _va68[1] = "fseek64" + _va68[2] = "fseeko" + _va68[3] = "fstatvfs" + _va68[4] = "ftell64" + _va68[5] = "ftello" + _va68[6] = "statvfs" + _va68[0] = 6 + pyconf_check_funcs(_va68) + delete _va69 + _va69[1] = "dup2" + _va69[0] = 1 + pyconf_replace_funcs(_va69) if (pyconf_check_func("getpgrp", "", "HAVE_GETPGRP")) { if (pyconf_compile_check("", "#include \n\nint main(void) { getpgrp(0); return 0; }")) { pyconf_define("GETPGRP_HAVE_ARG", 1, 0, "Define if getpgrp() must be called as getpgrp(0).") @@ -6185,12 +6202,12 @@ function u_check_posix_functions( ANDROID_API_LEVEL, _i_name, blocked_len, ma pyconf_check_func("lchmod", "", "HAVE_LCHMOD") } if ((V["ac_sys_system"] != "iOS")) { - delete _va69 - _va69[1] = "getentropy" - _va69[2] = "getgroups" - _va69[3] = "system" - _va69[0] = 3 - pyconf_check_funcs(_va69) + delete _va70 + _va70[1] = "getentropy" + _va70[2] = "getgroups" + _va70[3] = "system" + _va70[0] = 3 + pyconf_check_funcs(_va70) } } @@ -6290,7 +6307,7 @@ function u_check_special_functions( _pyconf_cond_sys_eventfd_h, _pyconf_cond_ } } -function u_check_headers( save_CFLAGS) { +function u_check_headers( has_i_push, save_CFLAGS) { pyconf_define("STDC_HEADERS", 1, 0, "Define to 1 if you have the ANSI C header files.") pyconf_check_header("stdio.h", "", "", "HAVE_STDIO_H", "ac_cv_header_stdio_h") pyconf_check_header("stdlib.h", "", "", "HAVE_STDLIB_H", "ac_cv_header_stdlib_h") @@ -6337,7 +6354,6 @@ function u_check_headers( save_CFLAGS) { pyconf_check_header("shadow.h", "", "", "HAVE_SHADOW_H", "ac_cv_header_shadow_h") pyconf_check_header("signal.h", "", "", "HAVE_SIGNAL_H", "ac_cv_header_signal_h") pyconf_check_header("spawn.h", "", "", "HAVE_SPAWN_H", "ac_cv_header_spawn_h") - pyconf_check_header("stropts.h", "", "", "HAVE_STROPTS_H", "ac_cv_header_stropts_h") pyconf_check_header("sys/audioio.h", "", "", "HAVE_SYS_AUDIOIO_H", "ac_cv_header_sys_audioio_h") pyconf_check_header("sys/bsdtty.h", "", "", "HAVE_SYS_BSDTTY_H", "ac_cv_header_sys_bsdtty_h") pyconf_check_header("sys/devpoll.h", "", "", "HAVE_SYS_DEVPOLL_H", "ac_cv_header_sys_devpoll_h") @@ -6384,6 +6400,12 @@ function u_check_headers( save_CFLAGS) { pyconf_check_header("util.h", "", "", "HAVE_UTIL_H", "ac_cv_header_util_h") pyconf_check_header("utime.h", "", "", "HAVE_UTIME_H", "ac_cv_header_utime_h") pyconf_check_header("utmp.h", "", "", "HAVE_UTMP_H", "ac_cv_header_utmp_h") + pyconf_checking("whether stropts.h has I_PUSH") + has_i_push = (pyconf_compile_check("", "#ifdef HAVE_SYS_TYPES_H\n# include \n#endif\n#include \n\nint main(void) { (void)I_PUSH; return 0; }") ? "yes" : "no") + pyconf_result(has_i_push) + if (((has_i_push != "") && (has_i_push != "no"))) { + pyconf_define("HAVE_STROPTS_H", 1, 0, "Define to 1 if you have the header file.") + } pyconf_check_header("dirent.h", "", "", "HAVE_DIRENT_H", "ac_cv_header_dirent_h") if (pyconf_check_header("sys/mkdev.h")) { pyconf_define("MAJOR_IN_MKDEV", 1, 0, "Define to 1 if major, minor, and makedev are declared in .") @@ -6425,10 +6447,10 @@ function u_check_types_and_macros( use_lfs) { pyconf_define("_LARGEFILE_SOURCE", 1, 0, "This must be defined on some systems to enable large file support.") pyconf_define("_FILE_OFFSET_BITS", 64, 0, "This must be set to 64 on some systems to enable large file support.") } - delete _va70 - _va70[1] = "cat >> confdefs.h <<\\EOF\n#if defined(SCO_DS)\n#undef _OFF_T\n#endif\nEOF\n" - _va70[0] = 1 - pyconf_shell(_va70) + delete _va71 + _va71[1] = "cat >> confdefs.h <<\\EOF\n#if defined(SCO_DS)\n#undef _OFF_T\n#endif\nEOF\n" + _va71[0] = 1 + pyconf_shell(_va71) pyconf_macro("AC_TYPE_MODE_T") pyconf_macro("AC_TYPE_OFF_T") pyconf_macro("AC_TYPE_PID_T") @@ -6481,28 +6503,28 @@ function u_check_openssl( LIBCRYPTO_LIBS_len, _i_arg, _i_f, _i_p, _n_arg, _n_ } else { pkg_config = V["PKG_CONFIG"] if (((pkg_config != "") && (pkg_config != "no"))) { - delete _va71 - _va71[1] = pkg_config - _va71[2] = "--cflags" - _va71[3] = "openssl" - _va71[0] = 3 - pyconf_cmd_status(_va71, _ar_30) - s1 = _ar_30[0] - pc_cflags = _ar_30[1] delete _va72 _va72[1] = pkg_config - _va72[2] = "--libs" + _va72[2] = "--cflags" _va72[3] = "openssl" _va72[0] = 3 - pyconf_cmd_status(_va72, _ar_31) - s2 = _ar_31[0] - pc_libs = _ar_31[1] + pyconf_cmd_status(_va72, _ar_30) + s1 = _ar_30[0] + pc_cflags = _ar_30[1] delete _va73 _va73[1] = pkg_config - _va73[2] = "--libs-only-L" + _va73[2] = "--libs" _va73[3] = "openssl" _va73[0] = 3 - pyconf_cmd_status(_va73, _ar_32) + pyconf_cmd_status(_va73, _ar_31) + s2 = _ar_31[0] + pc_libs = _ar_31[1] + delete _va74 + _va74[1] = pkg_config + _va74[2] = "--libs-only-L" + _va74[3] = "openssl" + _va74[0] = 3 + pyconf_cmd_status(_va74, _ar_32) s3 = _ar_32[0] pc_ldflags = _ar_32[1] if ((((s1 == 0) && (s2 == 0)) && (s3 == 0))) { @@ -6542,11 +6564,11 @@ function u_check_openssl( LIBCRYPTO_LIBS_len, _i_arg, _i_f, _i_p, _n_arg, _n_ _n_p = split(ssl_h_paths, _as_35, " ") for (_i_p = 1; (_i_p <= _n_p); _i_p = (_i_p + 1)) { p = _as_35[_i_p] - delete _va74 - _va74[1] = p - _va74[2] = "openssl/ssl.h" - _va74[0] = 2 - if (pyconf_path_exists(pyconf_path_join(_va74))) { + delete _va75 + _va75[1] = p + _va75[2] = "openssl/ssl.h" + _va75[0] = 2 + if (pyconf_path_exists(pyconf_path_join(_va75))) { found_ssl = "yes" break } @@ -6714,10 +6736,10 @@ function u_setup_hacl( LIBHACL_FLAG_D, LIBHACL_FLAG_I, build_cpu, build_vendo build_vendor = V["build_vendor"] use_hacl_universal2 = ((((V["UNIVERSAL_ARCHS"] == "universal2") ? "yes" : "no") != "") ? ((V["UNIVERSAL_ARCHS"] == "universal2") ? "yes" : "no") : (((build_cpu == "aarch64") && (build_vendor == "apple")) ? "yes" : "no")) if (((!((V["ac_sys_system"] == "Linux-android") || (V["ac_sys_system"] == "WASI"))) || (((V["ANDROID_API_LEVEL"] != "") && (V["ANDROID_API_LEVEL"] != "no")) && (V["ANDROID_API_LEVEL"] >= 28)))) { - delete _va75 - _va75[1] = "-Werror" - _va75[0] = 1 - if (pyconf_check_compile_flag("-msse -msse2 -msse3 -msse4.1 -msse4.2", _va75)) { + delete _va76 + _va76[1] = "-Werror" + _va76[0] = 1 + if (pyconf_check_compile_flag("-msse -msse2 -msse3 -msse4.1 -msse4.2", _va76)) { V["LIBHACL_SIMD128_FLAGS"] = "-msse -msse2 -msse3 -msse4.1 -msse4.2" pyconf_define("_Py_HACL_CAN_COMPILE_VEC128", 1, 0, "HACL* library can compile SIMD128 implementations") if (((use_hacl_universal2 != "") && (use_hacl_universal2 != "no"))) { @@ -6736,10 +6758,10 @@ function u_setup_hacl( LIBHACL_FLAG_D, LIBHACL_FLAG_I, build_cpu, build_vendo v_export("LIBHACL_SIMD128_FLAGS") v_export("LIBHACL_BLAKE2_SIMD128_OBJS") if (((!((V["ac_sys_system"] == "Linux-android") || (V["ac_sys_system"] == "WASI"))) || (((V["ANDROID_API_LEVEL"] != "") && (V["ANDROID_API_LEVEL"] != "no")) && (V["ANDROID_API_LEVEL"] >= 28)))) { - delete _va76 - _va76[1] = "-Werror" - _va76[0] = 1 - if (pyconf_check_compile_flag("-mavx2", _va76)) { + delete _va77 + _va77[1] = "-Werror" + _va77[0] = 1 + if (pyconf_check_compile_flag("-mavx2", _va77)) { V["LIBHACL_SIMD256_FLAGS"] = "-mavx2" pyconf_define("_Py_HACL_CAN_COMPILE_VEC256", 1, 0, "HACL* library can compile SIMD256 implementations") if (((use_hacl_universal2 != "") && (use_hacl_universal2 != "no"))) { @@ -6865,13 +6887,13 @@ function u_setup_ldshared( _tmp_split, dt, dt_major, dt_minor, dt_parts, has_ V["LDCXXSHARED"] = "$(CXX) -shared $(CCSHARED)" } else { rel = V["ac_sys_release"] - delete _va77 - _va77[1] = "0.*" - _va77[2] = "1.*" - _va77[3] = "2.[0-7]" - _va77[4] = "2.[0-7].*" - _va77[0] = 4 - if (pyconf_fnmatch_any(rel, _va77)) { + delete _va78 + _va78[1] = "0.*" + _va78[2] = "1.*" + _va78[3] = "2.[0-7]" + _va78[4] = "2.[0-7].*" + _va78[0] = 4 + if (pyconf_fnmatch_any(rel, _va78)) { V["LDSHARED"] = "ld -Bshareable " V["LDFLAGS"] } else { V["LDSHARED"] = "$(CC) -shared $(CCSHARED)" @@ -6916,11 +6938,11 @@ function u_setup_ccshared() { if (((V["ac_cv_gcc_compat"] != "") && (V["ac_cv_gcc_compat"] != "no"))) { V["CCSHARED"] = "-fPIC" } else { - delete _va78 - _va78[1] = "uname" - _va78[2] = "-p" - _va78[0] = 2 - if ((pyconf_cmd_output(_va78) == "sparc")) { + delete _va79 + _va79[1] = "uname" + _va79[2] = "-p" + _va79[0] = 2 + if ((pyconf_cmd_output(_va79) == "sparc")) { V["CCSHARED"] = "-xcode=pic32" } else { V["CCSHARED"] = "-Kpic" @@ -6987,12 +7009,12 @@ function u_setup_linkforshared( _, has_elf, has_elf__elf_out, help_out, sr, s } } else if (_str_startswith(sr, "SunOS/5")) { if (((V["ac_cv_gcc_compat"] != "") && (V["ac_cv_gcc_compat"] != "no"))) { - delete _va79 - _va79[1] = V["CC"] - _va79[2] = "-Xlinker" - _va79[3] = "--help" - _va79[0] = 3 - pyconf_cmd_status(_va79, _ar_39) + delete _va80 + _va80[1] = V["CC"] + _va80[2] = "-Xlinker" + _va80[3] = "--help" + _va80[0] = 3 + pyconf_cmd_status(_va80, _ar_39) _ = _ar_39[0] help_out = _ar_39[1] if ((index(help_out, "export-dynamic") > 0)) { @@ -7202,19 +7224,19 @@ function u_check_base_libraries( _i_h, ac_cv_require_ldl, eh_results_len, h, _al_42[3] = "dlfcn.h" for (_i_h = 1; (_i_h <= 3); _i_h = (_i_h + 1)) { h = _al_42[_i_h] - delete _va80 - _va80[1] = h - _va80[0] = 1 - eh_results[(eh_results_len + 1)] = (pyconf_check_headers(_va80) ? "yes" : "no") + delete _va81 + _va81[1] = h + _va81[0] = 1 + eh_results[(eh_results_len + 1)] = (pyconf_check_headers(_va81) ? "yes" : "no") eh_results_len = (eh_results_len + 1) eh_results[0] = eh_results_len } if (_any(eh_results)) { - delete _va81 - _va81[1] = "backtrace" - _va81[2] = "dladdr1" - _va81[0] = 2 - if (pyconf_check_funcs(_va81)) { + delete _va82 + _va82[1] = "backtrace" + _va82[2] = "dladdr1" + _va82[0] = 2 + if (pyconf_check_funcs(_va82)) { ac_cv_require_ldl = "yes" } } @@ -7240,12 +7262,12 @@ function u_check_remaining_libs( AIX_BUILDDATE, ac_cv_aligned_required) { pyconf_result("no") } pyconf_checking("for the system builddate") - delete _va82 - _va82[1] = "sh" - _va82[2] = "-c" - _va82[3] = "lslpp -Lcq bos.mp64 | awk -F: '{ print $NF }'" - _va82[0] = 3 - AIX_BUILDDATE = pyconf_cmd_output(_va82) + delete _va83 + _va83[1] = "sh" + _va83[2] = "-c" + _va83[3] = "lslpp -Lcq bos.mp64 | awk -F: '{ print $NF }'" + _va83[0] = 3 + AIX_BUILDDATE = pyconf_cmd_output(_va83) pyconf_define("AIX_BUILDDATE", AIX_BUILDDATE, 1, "BUILD_GNU_TYPE + AIX_BUILDDATE are used to construct the PEP425 tag of the build system.") pyconf_result(AIX_BUILDDATE) } @@ -7449,17 +7471,17 @@ function u_setup_library_names( _, ld_prog, ld_ver, _ar_45) { pyconf_checking("for GNU ld") ld_prog = "ld" if ((V["ac_cv_cc_name"] == "gcc")) { - delete _va83 - _va83[1] = V["CC"] - _va83[2] = "-print-prog-name=ld" - _va83[0] = 2 - ld_prog = pyconf_cmd_output(_va83) - } - delete _va84 - _va84[1] = ld_prog - _va84[2] = "-V" - _va84[0] = 2 - pyconf_cmd_status(_va84, _ar_45) + delete _va84 + _va84[1] = V["CC"] + _va84[2] = "-print-prog-name=ld" + _va84[0] = 2 + ld_prog = pyconf_cmd_output(_va84) + } + delete _va85 + _va85[1] = ld_prog + _va85[2] = "-V" + _va85[0] = 2 + pyconf_cmd_status(_va85, _ar_45) _ = _ar_45[0] ld_ver = _ar_45[1] V["GNULD"] = ((index(ld_ver, "GNU") > 0) ? "yes" : "no") @@ -7550,11 +7572,11 @@ function u__setup_ldlibrary_shared( mach) { V["PY3LIBRARY"] = "libpython3.so" } } else if ((_str_startswith(V["ac_sys_system"], "hp") || _str_startswith(V["ac_sys_system"], "HP"))) { - delete _va85 - _va85[1] = "uname" - _va85[2] = "-m" - _va85[0] = 2 - mach = pyconf_cmd_output(_va85) + delete _va86 + _va86[1] = "uname" + _va86[2] = "-m" + _va86[0] = 2 + mach = pyconf_cmd_output(_va86) V["LDLIBRARY"] = ((mach == "ia64") ? "libpython$(LDVERSION).so" : "libpython$(LDVERSION).sl") V["BLDLIBRARY"] = "-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)" V["RUNSHARED"] = u__runshared("SHLIB_PATH") @@ -7614,11 +7636,11 @@ function u_setup_library_deps() { } function u_setup_build_tools() { - delete _va86 - _va86[1] = "ar" - _va86[2] = "aal" - _va86[0] = 2 - V["AR"] = ((V["AR"] != "") ? V["AR"] : pyconf_check_tools(_va86)) + delete _va87 + _va87[1] = "ar" + _va87[2] = "aal" + _va87[0] = 2 + V["AR"] = ((V["AR"] != "") ? V["AR"] : pyconf_check_tools(_va87)) v_export("AR") V["ARFLAGS"] = ((V["ARFLAGS"] != "") ? V["ARFLAGS"] : "rcs") v_export("ARFLAGS") @@ -7798,31 +7820,31 @@ function u_check_posix_semaphores( ac_cv_broken_sem_getvalue, ac_cv_posix_sem if (((ac_cv_broken_sem_getvalue != "") && (ac_cv_broken_sem_getvalue != "no"))) { pyconf_define("HAVE_BROKEN_SEM_GETVALUE", 1, 0, "define to 1 if your sem_getvalue is broken.") } - delete _va87 - _va87[1] = "RTLD_LAZY" - _va87[2] = "RTLD_NOW" - _va87[3] = "RTLD_GLOBAL" - _va87[4] = "RTLD_LOCAL" - _va87[5] = "RTLD_NODELETE" - _va87[6] = "RTLD_NOLOAD" - _va87[7] = "RTLD_DEEPBIND" - _va87[8] = "RTLD_MEMBER" - _va87[9] = "--" - _va87[10] = "dlfcn.h" - _va87[0] = 10 - pyconf_check_decls(_va87) + delete _va88 + _va88[1] = "RTLD_LAZY" + _va88[2] = "RTLD_NOW" + _va88[3] = "RTLD_GLOBAL" + _va88[4] = "RTLD_LOCAL" + _va88[5] = "RTLD_NODELETE" + _va88[6] = "RTLD_NOLOAD" + _va88[7] = "RTLD_DEEPBIND" + _va88[8] = "RTLD_MEMBER" + _va88[9] = "--" + _va88[10] = "dlfcn.h" + _va88[0] = 10 + pyconf_check_decls(_va88) } function u_setup_thread_headers_and_srcdirs( _i_dir, _i_h, _n_dir, _n_h, dir, h, header_refs_len, thread_headers, _as_46, _as_47, header_refs) { delete _as_46 delete _as_47 delete header_refs - delete _va88 - _va88[1] = pyconf_srcdir - _va88[2] = "Python" - _va88[3] = "thread_*.h" - _va88[0] = 3 - thread_headers = pyconf_glob_files(pyconf_path_join(_va88)) + delete _va89 + _va89[1] = pyconf_srcdir + _va89[2] = "Python" + _va89[3] = "thread_*.h" + _va89[0] = 3 + thread_headers = pyconf_glob_files(pyconf_path_join(_va89)) _n_h = split(thread_headers, _as_46, " ") for (_i_h = 1; (_i_h <= _n_h); _i_h = (_i_h + 1)) { h = _as_46[_i_h] @@ -7918,6 +7940,7 @@ function u_setup_wasm_flags() { v_export("CFLAGS_NODIST") v_export("LDFLAGS_NODIST") v_export("LDFLAGS_NOLTO") + v_export("EXE_LDFLAGS") v_export("LINKFORSHARED") v_export("WASM_ASSETS_DIR") v_export("WASM_STDLIB") @@ -7931,7 +7954,7 @@ function u__setup_emscripten_flags( WASM_LINKFORSHARED_DEBUG) { V["LDFLAGS_NODIST"] = V["LDFLAGS_NODIST"] " -sWASM_BIGINT" V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sFORCE_FILESYSTEM -lidbfs.js -lnodefs.js -lproxyfs.js -lworkerfs.js" V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sEXPORTED_RUNTIME_METHODS=FS,callMain,ENV,HEAPU32,TTY" - V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sEXPORTED_FUNCTIONS=_main,_Py_Version,__PyRuntime,_PyGILState_GetThisThreadState,__Py_DumpTraceback" + V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sEXPORTED_FUNCTIONS=_main,_Py_Version,__PyRuntime,_PyGILState_GetThisThreadState,__Py_DumpTraceback,__PyEM_EMSCRIPTEN_TRAMPOLINE_OFFSET" V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sSTACK_SIZE=5MB" V["LINKFORSHARED"] = V["LINKFORSHARED"] " -sTEXTDECODER=2" if (((V["enable_wasm_dynamic_linking"] != "") && (V["enable_wasm_dynamic_linking"] != "no"))) { From 561c4ffad2f39f4a978200427afa29abfb527d6e Mon Sep 17 00:00:00 2001 From: Neil Schemenauer Date: Wed, 18 Mar 2026 10:38:19 -0700 Subject: [PATCH 5/6] Use v.MACOSX_DEPLOYMENT_TARGET, not v.get(...). --- Tools/configure/conf_buildopts.py | 2 +- configure-new | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Tools/configure/conf_buildopts.py b/Tools/configure/conf_buildopts.py index 6be909b96a6cf8..59e67362b52bf9 100644 --- a/Tools/configure/conf_buildopts.py +++ b/Tools/configure/conf_buildopts.py @@ -538,7 +538,7 @@ def setup_perf_trampoline(v): if v.PLATFORM_TRIPLET in ("x86_64-linux-gnu", "aarch64-linux-gnu"): perf_trampoline = True elif v.PLATFORM_TRIPLET == "darwin": - target = v.get("MACOSX_DEPLOYMENT_TARGET", "") + target = v.MACOSX_DEPLOYMENT_TARGET if pyconf.fnmatch_any(target, ["10.[0-9]", "10.1[0-1]"]): perf_trampoline = False else: diff --git a/configure-new b/configure-new index 4b4d3ef2a91e54..9894777ec4bec2 100755 --- a/configure-new +++ b/configure-new @@ -2415,12 +2415,12 @@ function u_setup_dtrace( _opt_result, ac_cv_dtrace_link, dtrace, dtrace_cmd, } } -function u_setup_perf_trampoline( PERF_TRAMPOLINE_OBJ, perf_trampoline, target, v) { +function u_setup_perf_trampoline( PERF_TRAMPOLINE_OBJ, perf_trampoline, target) { pyconf_checking("perf trampoline") if (((V["PLATFORM_TRIPLET"] == "x86_64-linux-gnu") || (V["PLATFORM_TRIPLET"] == "aarch64-linux-gnu"))) { perf_trampoline = "yes" } else if ((V["PLATFORM_TRIPLET"] == "darwin")) { - target = (("MACOSX_DEPLOYMENT_TARGET" in v) ? v["MACOSX_DEPLOYMENT_TARGET"] : "") + target = V["MACOSX_DEPLOYMENT_TARGET"] delete _va3 _va3[1] = "10.[0-9]" _va3[2] = "10.1[0-1]" From 313278670a8a15d99a2c797c2477ab4f94838a35 Mon Sep 17 00:00:00 2001 From: Neil Schemenauer Date: Wed, 18 Mar 2026 10:47:39 -0700 Subject: [PATCH 6/6] Add lint check for `v.get(...)` and simlar errors. --- .../configure/transpiler/lint_transpilable.py | 20 ++++++++++++++++++- Tools/configure/transpiler/transpile.py | 15 ++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Tools/configure/transpiler/lint_transpilable.py b/Tools/configure/transpiler/lint_transpilable.py index 4bb5d337c7b949..25805caf3363e4 100644 --- a/Tools/configure/transpiler/lint_transpilable.py +++ b/Tools/configure/transpiler/lint_transpilable.py @@ -174,6 +174,17 @@ } ) +# Allowed Vars (v) method calls. The Vars object uses __getattr__ to +# return env/empty-string for unknown attributes, so calling anything +# other than these real methods (e.g. v.get()) silently returns a string +# and then fails at runtime with "TypeError: 'str' object is not callable". +ALLOWED_VARS_METHODS = frozenset( + { + "export", + "is_set", + } +) + # Allowed string methods that have shell equivalents. ALLOWED_STR_METHODS = frozenset( { @@ -810,11 +821,18 @@ def _check_call(self, node): self._check_expr(kw.value) return - # v.export(...) and other Vars methods — allowed + # v.export(...) / v.is_set(...) — allowed Vars methods if isinstance(func, ast.Attribute) and isinstance( func.value, ast.Name ): if func.value.id == "v": + if func.attr not in ALLOWED_VARS_METHODS: + self._warn( + node, + f"v.{func.attr}(): not in allowed Vars methods" + f" ({', '.join(sorted(ALLOWED_VARS_METHODS))})" + " — use v.ATTR for attribute access instead", + ) for arg in node.args: self._check_expr(arg) for kw in node.keywords: diff --git a/Tools/configure/transpiler/transpile.py b/Tools/configure/transpiler/transpile.py index 82340160bc39f8..49ceae3d1a055b 100644 --- a/Tools/configure/transpiler/transpile.py +++ b/Tools/configure/transpiler/transpile.py @@ -14,6 +14,7 @@ from . import py_to_pysh from .pysh_ast import ModuleInfo, OptionInfo from .py_to_pysh import parse_option_decl +from .lint_transpilable import lint_file from . import pysh_to_awk from . import awk_emit @@ -41,6 +42,20 @@ def transpile_configure(script_dir: str) -> str: + # Lint conf_*.py files before transpiling + import glob as _glob + + conf_files = sorted(_glob.glob(os.path.join(script_dir, "conf_*.py"))) + all_violations = [] + for filepath in conf_files: + result = lint_file(filepath) + all_violations.extend(result.violations) + if all_violations: + msgs = "\n".join(f" {v}" for v in all_violations) + raise ValueError( + f"lint check failed with {len(all_violations)} violation(s):\n{msgs}" + ) + # Parse Python source, produce Python AST, transform to pysh AST program = py_to_pysh.parse_program(script_dir) # Transform pysh AST → AWK AST