From da5d914dfd438073d9cf727d9a5b5aba536ad398 Mon Sep 17 00:00:00 2001 From: Alex Tacescu Date: Sun, 22 Feb 2026 14:11:38 -0800 Subject: [PATCH 1/9] Initial migration to diplomat ffi --- .bazelrc | 1 - AGENTS.md | 5 +- CMakeLists.txt | 51 +- MODULE.bazel | 25 +- MODULE.bazel.lock | 1078 ++++++++++++----- cpp/BUILD.bazel | 47 +- cpp/README.md | 15 +- cpp/capi/Cargo.toml | 16 - cpp/capi/src/lib.rs | 345 ------ cpp/include/dv.hpp | 160 +-- cpp/include/dv_c.h | 66 - docs/docs/c_cpp.md | 63 +- docs/docs/dev/code.md | 4 +- docs/docs/intro.md | 6 +- docs/docs/python.md | 2 +- examples/README.md | 10 +- examples/c/BUILD.bazel | 2 +- examples/c/CMakeLists.txt | 12 +- examples/c/main.c | 45 +- examples/cpp/BUILD.bazel | 2 +- examples/cpp/CMakeLists.txt | 10 +- examples/cpp/main.cpp | 71 +- ffi/diplomat/BUILD.bazel | 32 + ffi/diplomat/Cargo.toml | 20 + ffi/diplomat/src/lib.rs | 226 ++++ generated/diplomat/c/BUILD.bazel | 12 + generated/diplomat/c/BaseUnits.d.h | 29 + generated/diplomat/c/BaseUnits.h | 22 + generated/diplomat/c/DimensionalVariable.d.h | 19 + generated/diplomat/c/DimensionalVariable.h | 124 ++ generated/diplomat/c/diplomat_runtime.h | 82 ++ generated/diplomat/cpp/BUILD.bazel | 19 + generated/diplomat/cpp/BaseUnits.d.hpp | 51 + generated/diplomat/cpp/BaseUnits.hpp | 51 + .../diplomat/cpp/DimensionalVariable.d.hpp | 121 ++ .../diplomat/cpp/DimensionalVariable.hpp | 371 ++++++ generated/diplomat/cpp/diplomat_runtime.hpp | 567 +++++++++ generated/diplomat/nanobind/BUILD.bazel | 42 + generated/diplomat/nanobind/dv_py_ext.cpp | 68 ++ generated/diplomat/nanobind/dv_pyo3_ext.cpp | 68 ++ .../diplomat/nanobind/include/BaseUnits.d.hpp | 52 + .../diplomat/nanobind/include/BaseUnits.hpp | 51 + .../include/DimensionalVariable.d.hpp | 124 ++ .../nanobind/include/DimensionalVariable.hpp | 371 ++++++ .../include/diplomat_nanobind_common.hpp | 306 +++++ .../nanobind/include/diplomat_runtime.hpp | 567 +++++++++ generated/diplomat/nanobind/nb_combined.cpp | 1 + .../sub_modules/dv_py/BaseUnits_binding.cpp | 21 + .../dv_py/DimensionalVariable_binding.cpp | 54 + .../sub_modules/dv_pyo3/BaseUnits_binding.cpp | 21 + .../dv_pyo3/DimensionalVariable_binding.cpp | 54 + python/BUILD.bazel | 22 +- python/Cargo.toml | 23 - python/dv_py/__init__.py | 293 ++++- python/pyproject.toml | 10 +- python/src/lib.rs | 415 ------- tools/BUILD.bazel | 3 +- tools/diplomat_codegen/BUILD.bazel | 12 + tools/diplomat_codegen/main.rs | 47 + tools/requirements.in | 2 +- tools/requirements.txt | 18 +- tools/update_versions.py | 27 +- 62 files changed, 4886 insertions(+), 1568 deletions(-) delete mode 100644 cpp/capi/Cargo.toml delete mode 100644 cpp/capi/src/lib.rs delete mode 100644 cpp/include/dv_c.h create mode 100644 ffi/diplomat/BUILD.bazel create mode 100644 ffi/diplomat/Cargo.toml create mode 100644 ffi/diplomat/src/lib.rs create mode 100644 generated/diplomat/c/BUILD.bazel create mode 100644 generated/diplomat/c/BaseUnits.d.h create mode 100644 generated/diplomat/c/BaseUnits.h create mode 100644 generated/diplomat/c/DimensionalVariable.d.h create mode 100644 generated/diplomat/c/DimensionalVariable.h create mode 100644 generated/diplomat/c/diplomat_runtime.h create mode 100644 generated/diplomat/cpp/BUILD.bazel create mode 100644 generated/diplomat/cpp/BaseUnits.d.hpp create mode 100644 generated/diplomat/cpp/BaseUnits.hpp create mode 100644 generated/diplomat/cpp/DimensionalVariable.d.hpp create mode 100644 generated/diplomat/cpp/DimensionalVariable.hpp create mode 100644 generated/diplomat/cpp/diplomat_runtime.hpp create mode 100644 generated/diplomat/nanobind/BUILD.bazel create mode 100644 generated/diplomat/nanobind/dv_py_ext.cpp create mode 100644 generated/diplomat/nanobind/dv_pyo3_ext.cpp create mode 100644 generated/diplomat/nanobind/include/BaseUnits.d.hpp create mode 100644 generated/diplomat/nanobind/include/BaseUnits.hpp create mode 100644 generated/diplomat/nanobind/include/DimensionalVariable.d.hpp create mode 100644 generated/diplomat/nanobind/include/DimensionalVariable.hpp create mode 100644 generated/diplomat/nanobind/include/diplomat_nanobind_common.hpp create mode 100644 generated/diplomat/nanobind/include/diplomat_runtime.hpp create mode 100644 generated/diplomat/nanobind/nb_combined.cpp create mode 100644 generated/diplomat/nanobind/sub_modules/dv_py/BaseUnits_binding.cpp create mode 100644 generated/diplomat/nanobind/sub_modules/dv_py/DimensionalVariable_binding.cpp create mode 100644 generated/diplomat/nanobind/sub_modules/dv_pyo3/BaseUnits_binding.cpp create mode 100644 generated/diplomat/nanobind/sub_modules/dv_pyo3/DimensionalVariable_binding.cpp delete mode 100644 python/Cargo.toml delete mode 100644 python/src/lib.rs create mode 100644 tools/diplomat_codegen/BUILD.bazel create mode 100644 tools/diplomat_codegen/main.rs diff --git a/.bazelrc b/.bazelrc index 9f494eb..c776487 100644 --- a/.bazelrc +++ b/.bazelrc @@ -11,4 +11,3 @@ run --macos_minimum_os=10.12 test --macos_minimum_os=10.12 # FIXME: Temporary workaround for pyo3 stubgen issues. See ticket #45 -build --@rules_rust_pyo3//settings:experimental_stubgen=False diff --git a/AGENTS.md b/AGENTS.md index 2d8c3a6..74a1d91 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -93,9 +93,8 @@ This project is a library in multiple languages for handling units and checking - Raise and assert `DVError` for invalid operations. ### C/C++ (bindings) -- Headers live in `cpp/include`: - - `dv_c.h` for C API - - `dv.hpp` for C++ RAII wrapper +- Bazel-facing bindings are generated under `generated/diplomat/{c,cpp}`. +- `cpp/include/dv.hpp` is a thin compatibility wrapper over the generated Diplomat C++ bindings. - CMake support is minimal; prefer Bazel for consistency. ### Docs (Docusaurus) diff --git a/CMakeLists.txt b/CMakeLists.txt index 52202c4..debabce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,52 +1,7 @@ cmake_minimum_required(VERSION 3.20) project(dv LANGUAGES C CXX) -# Options -option(DV_BUILD_SHARED "Build shared library" ON) - -# Build Rust C-ABI via Cargo. We use ExternalProject for portability. -include(ExternalProject) -set(DV_RUST_DIR ${CMAKE_CURRENT_LIST_DIR}/cpp/capi) -set(DV_BUILD_CMD cargo build --manifest-path ${DV_RUST_DIR}/Cargo.toml --release) - -ExternalProject_Add(dv_capi_ext - SOURCE_DIR ${DV_RUST_DIR} - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND "" - BUILD_COMMAND ${DV_BUILD_CMD} - INSTALL_COMMAND "" - BUILD_BYPRODUCTS - ${DV_RUST_DIR}/target/release/libdv_capi.a - ${DV_RUST_DIR}/target/release/libdv_capi.dylib -) - -# Library artifact path -if(APPLE) - set(DV_CAPI_SHARED ${DV_RUST_DIR}/target/release/libdv_capi.dylib) -elseif(UNIX) - set(DV_CAPI_SHARED ${DV_RUST_DIR}/target/release/libdv_capi.so) -elseif(WIN32) - set(DV_CAPI_SHARED ${DV_RUST_DIR}/target/release/dv_capi.dll) -endif() -set(DV_CAPI_STATIC ${DV_RUST_DIR}/target/release/libdv_capi.a) - -add_library(dv_c STATIC IMPORTED GLOBAL) -set_target_properties(dv_c PROPERTIES - IMPORTED_LOCATION ${DV_CAPI_STATIC} - INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/cpp/include +message(FATAL_ERROR + "CMake support is temporarily disabled during the Diplomat migration. " + "Use Bazel targets (e.g. //examples/c:c_example and //examples/cpp:cpp_example)." ) -add_dependencies(dv_c dv_capi_ext) - -# Help executables find the dylib at runtime on macOS when running from build tree -if(APPLE) - set_property(TARGET dv_c PROPERTY INTERFACE_LINK_DIRECTORIES ${DV_RUST_DIR}/target/release) -endif() - -add_library(dv_cpp INTERFACE) -target_include_directories(dv_cpp INTERFACE ${CMAKE_CURRENT_LIST_DIR}/cpp/include) -target_link_libraries(dv_cpp INTERFACE dv_c) - -add_subdirectory(cpp) - -add_subdirectory(examples/c) -add_subdirectory(examples/cpp) diff --git a/MODULE.bazel b/MODULE.bazel index 8faafc4..0b257c5 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -9,9 +9,8 @@ module(name = "dv") # Import Bazel Dependencies # ============================================================================= -bazel_dep(name = "platforms", version="1.0.0") +bazel_dep(name = "platforms", version = "1.0.0") bazel_dep(name = "rules_rust", version = "0.67.0") -bazel_dep(name = "rules_rust_pyo3", version = "0.67.0") bazel_dep(name = "rules_cc", version = "0.2.8") bazel_dep(name = "rules_python", version = "1.6.3") bazel_dep(name = "rules_uv", version = "0.88.0") @@ -32,23 +31,28 @@ crate.spec( package = "serde_json", version = "1.0", ) +crate.spec( + package = "diplomat", + version = "0.14.0", +) +crate.spec( + package = "diplomat-runtime", + version = "0.14.0", +) +crate.spec( + package = "diplomat-tool", + version = "0.14.1", +) crate.from_specs() use_repo(crate, "crates") -# ============================================================================== -# PyO3 Setup -# ============================================================================== -register_toolchains( - "@rules_rust_pyo3//toolchains:toolchain", - "@rules_rust_pyo3//toolchains:rust_toolchain", -) - # ============================================================================== # C/C++ Setup # ============================================================================== # Hermetic C/C++ toolchains (LLVM/Clang) bazel_dep(name = "toolchains_llvm", version = "1.5.0") + llvm = use_extension("@toolchains_llvm//toolchain/extensions:llvm.bzl", "llvm") llvm.toolchain( name = "llvm_toolchain", @@ -89,6 +93,7 @@ use_repo(pip, "pypi") # By default you get the node version from DEFAULT_NODE_VERSION in @rules_nodejs//nodejs:repositories.bzl # Optionally you can pin a different node version: bazel_dep(name = "rules_nodejs", version = "6.3.0") + node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node", dev_dependency = True) node.toolchain(node_version = "20.13.1") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 8cc0053..cef85d6 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -161,8 +161,6 @@ "https://bcr.bazel.build/modules/rules_python/1.6.3/source.json": "f0be74977e5604a6526c8a416cda22985093ff7d5d380d41722d7e44015cc419", "https://bcr.bazel.build/modules/rules_rust/0.67.0/MODULE.bazel": "87c3816c4321352dcfd9e9e26b58e84efc5b21351ae3ef8fb5d0d57bde7237f5", "https://bcr.bazel.build/modules/rules_rust/0.67.0/source.json": "a8ef4d3be30eb98e060cad9e5875a55b603195487f76e01b619b51a1df4641cc", - "https://bcr.bazel.build/modules/rules_rust_pyo3/0.67.0/MODULE.bazel": "52d069a749a163092b7c4b3b64ba513b942d53faf0515a6f60edc2c99ec42210", - "https://bcr.bazel.build/modules/rules_rust_pyo3/0.67.0/source.json": "fbac254181d020283453e515c8206760f1059ce48689553a9e289b6a3a56bf71", "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", "https://bcr.bazel.build/modules/rules_shell/0.6.1/MODULE.bazel": "72e76b0eea4e81611ef5452aa82b3da34caca0c8b7b5c0c9584338aa93bae26b", "https://bcr.bazel.build/modules/rules_shell/0.6.1/source.json": "20ec05cd5e592055e214b2da8ccb283c7f2a421ea0dc2acbf1aa792e11c03d0c", @@ -188,6 +186,126 @@ }, "selectedYankedVersions": {}, "moduleExtensions": { + "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { + "general": { + "bzlTransitiveDigest": "hayesuSMre0bdf1Oyb2NQRQGTj1fzjyjE3sxlqlzlYM=", + "usagesDigest": "BBPrPIaT5exyvlLOE9kinBChl4NlhfgJuX8ztyq8nH4=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "pnpm": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", + "attributes": { + "package": "pnpm", + "version": "8.6.7", + "root_package": "", + "link_workspace": "", + "link_packages": {}, + "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==", + "url": "", + "commit": "", + "patch_args": [ + "-p0" + ], + "patches": [], + "custom_postinstall": "", + "npm_auth": "", + "npm_auth_basic": "", + "npm_auth_username": "", + "npm_auth_password": "", + "lifecycle_hooks": [], + "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])", + "generate_bzl_library_targets": false, + "extract_full_archive": true, + "exclude_package_contents": [], + "system_tar": "auto" + } + }, + "pnpm__links": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", + "attributes": { + "package": "pnpm", + "version": "8.6.7", + "dev": false, + "root_package": "", + "link_packages": {}, + "deps": {}, + "transitive_closure": {}, + "lifecycle_build_target": false, + "lifecycle_hooks_env": [], + "lifecycle_hooks_execution_requirements": [ + "no-sandbox" + ], + "lifecycle_hooks_use_default_shell_env": false, + "bins": {}, + "package_visibility": [ + "//visibility:public" + ], + "replace_package": "", + "exclude_package_contents": [] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "aspect_rules_js+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_rules_js+", + "aspect_rules_js", + "aspect_rules_js+" + ], + [ + "aspect_rules_js+", + "aspect_tools_telemetry_report", + "aspect_tools_telemetry++telemetry+aspect_tools_telemetry_report" + ], + [ + "aspect_rules_js+", + "bazel_features", + "bazel_features+" + ], + [ + "aspect_rules_js+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_rules_js+", + "bazel_tools", + "bazel_tools" + ], + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ] + ] + } + }, "@@aspect_tools_telemetry+//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "gA7tPEdJXhskzPIEUxjX9IdDrM6+WjfbgXJ8Ez47umk=", @@ -684,7 +802,7 @@ "@@rules_rust+//crate_universe:extensions.bzl%crate": { "general": { "bzlTransitiveDigest": "24f89aZmQ72kZSapU+kl1MImmOMesD/oSwUItDmPu/Y=", - "usagesDigest": "VtuXxCm1hBObZsgKy+1BQ5XFuJvwK5I4l6pdTRAJ9es=", + "usagesDigest": "UJld+3fhkayro0teBjub+ThgZ/ZCcQ/CM0rDeNxz79Y=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": { @@ -702,682 +820,1036 @@ "repoRuleId": "@@rules_rust+//crate_universe:extensions.bzl%_generate_repo", "attributes": { "contents": { - "BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files(\n [\n \"cargo-bazel.json\",\n \"crates.bzl\",\n \"defs.bzl\",\n ] + glob(\n allow_empty = True,\n include = [\"*.bazel\"],\n ),\n)\n\nfilegroup(\n name = \"srcs\",\n srcs = glob(\n allow_empty = True,\n include = [\n \"*.bazel\",\n \"*.bzl\",\n ],\n ),\n)\n\n# Workspace Member Dependencies\nalias(\n name = \"serde_json-1.0.149\",\n actual = \"@crates__serde_json-1.0.149//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json\",\n actual = \"@crates__serde_json-1.0.149//:serde_json\",\n tags = [\"manual\"],\n)\n", + "BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files(\n [\n \"cargo-bazel.json\",\n \"crates.bzl\",\n \"defs.bzl\",\n ] + glob(\n allow_empty = True,\n include = [\"*.bazel\"],\n ),\n)\n\nfilegroup(\n name = \"srcs\",\n srcs = glob(\n allow_empty = True,\n include = [\n \"*.bazel\",\n \"*.bzl\",\n ],\n ),\n)\n\n# Workspace Member Dependencies\nalias(\n name = \"diplomat-0.14.0\",\n actual = \"@crates__diplomat-0.14.0//:diplomat\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"diplomat\",\n actual = \"@crates__diplomat-0.14.0//:diplomat\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"diplomat-runtime-0.14.0\",\n actual = \"@crates__diplomat-runtime-0.14.0//:diplomat_runtime\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"diplomat-runtime\",\n actual = \"@crates__diplomat-runtime-0.14.0//:diplomat_runtime\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"diplomat-tool-0.14.1\",\n actual = \"@crates__diplomat-tool-0.14.1//:diplomat_tool\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"diplomat-tool\",\n actual = \"@crates__diplomat-tool-0.14.1//:diplomat_tool\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json-1.0.149\",\n actual = \"@crates__serde_json-1.0.149//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json\",\n actual = \"@crates__serde_json-1.0.149//:serde_json\",\n tags = [\"manual\"],\n)\n", "alias_rules.bzl": "\"\"\"Alias that transitions its target to `compilation_mode=opt`. Use `transition_alias=\"opt\"` to enable.\"\"\"\n\nload(\"@rules_cc//cc:defs.bzl\", \"CcInfo\")\nload(\"@rules_rust//rust:rust_common.bzl\", \"COMMON_PROVIDERS\")\n\ndef _transition_alias_impl(ctx):\n # `ctx.attr.actual` is a list of 1 item due to the transition\n providers = [ctx.attr.actual[0][provider] for provider in COMMON_PROVIDERS]\n if CcInfo in ctx.attr.actual[0]:\n providers.append(ctx.attr.actual[0][CcInfo])\n return providers\n\ndef _change_compilation_mode(compilation_mode):\n def _change_compilation_mode_impl(_settings, _attr):\n return {\n \"//command_line_option:compilation_mode\": compilation_mode,\n }\n\n return transition(\n implementation = _change_compilation_mode_impl,\n inputs = [],\n outputs = [\n \"//command_line_option:compilation_mode\",\n ],\n )\n\ndef _transition_alias_rule(compilation_mode):\n return rule(\n implementation = _transition_alias_impl,\n provides = COMMON_PROVIDERS,\n attrs = {\n \"actual\": attr.label(\n mandatory = True,\n doc = \"`rust_library()` target to transition to `compilation_mode=opt`.\",\n providers = COMMON_PROVIDERS,\n cfg = _change_compilation_mode(compilation_mode),\n ),\n \"_allowlist_function_transition\": attr.label(\n default = \"@bazel_tools//tools/allowlists/function_transition_allowlist\",\n ),\n },\n doc = \"Transitions a Rust library crate to the `compilation_mode=opt`.\",\n )\n\ntransition_alias_dbg = _transition_alias_rule(\"dbg\")\ntransition_alias_fastbuild = _transition_alias_rule(\"fastbuild\")\ntransition_alias_opt = _transition_alias_rule(\"opt\")\n", - "defs.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\"\"\"\n# `crates_repository` API\n\n- [aliases](#aliases)\n- [crate_deps](#crate_deps)\n- [all_crate_deps](#all_crate_deps)\n- [crate_repositories](#crate_repositories)\n\n\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"new_git_repository\")\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nload(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")\nload(\"@bazel_skylib//lib:selects.bzl\", \"selects\")\nload(\"@rules_rust//crate_universe/private:local_crate_mirror.bzl\", \"local_crate_mirror\")\n\n###############################################################################\n# MACROS API\n###############################################################################\n\n# An identifier that represent common dependencies (unconditional).\n_COMMON_CONDITION = \"\"\n\ndef _flatten_dependency_maps(all_dependency_maps):\n \"\"\"Flatten a list of dependency maps into one dictionary.\n\n Dependency maps have the following structure:\n\n ```python\n DEPENDENCIES_MAP = {\n # The first key in the map is a Bazel package\n # name of the workspace this file is defined in.\n \"workspace_member_package\": {\n\n # Not all dependencies are supported for all platforms.\n # the condition key is the condition required to be true\n # on the host platform.\n \"condition\": {\n\n # An alias to a crate target. # The label of the crate target the\n # Aliases are only crate names. # package name refers to.\n \"package_name\": \"@full//:label\",\n }\n }\n }\n ```\n\n Args:\n all_dependency_maps (list): A list of dicts as described above\n\n Returns:\n dict: A dictionary as described above\n \"\"\"\n dependencies = {}\n\n for workspace_deps_map in all_dependency_maps:\n for pkg_name, conditional_deps_map in workspace_deps_map.items():\n if pkg_name not in dependencies:\n non_frozen_map = dict()\n for key, values in conditional_deps_map.items():\n non_frozen_map.update({key: dict(values.items())})\n dependencies.setdefault(pkg_name, non_frozen_map)\n continue\n\n for condition, deps_map in conditional_deps_map.items():\n # If the condition has not been recorded, do so and continue\n if condition not in dependencies[pkg_name]:\n dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))\n continue\n\n # Alert on any miss-matched dependencies\n inconsistent_entries = []\n for crate_name, crate_label in deps_map.items():\n existing = dependencies[pkg_name][condition].get(crate_name)\n if existing and existing != crate_label:\n inconsistent_entries.append((crate_name, existing, crate_label))\n dependencies[pkg_name][condition].update({crate_name: crate_label})\n\n return dependencies\n\ndef crate_deps(deps, package_name = None):\n \"\"\"Finds the fully qualified label of the requested crates for the package where this macro is called.\n\n Args:\n deps (list): The desired list of crate targets.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()`.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if not deps:\n return []\n\n if package_name == None:\n package_name = native.package_name()\n\n # Join both sets of dependencies\n dependencies = _flatten_dependency_maps([\n _NORMAL_DEPENDENCIES,\n _NORMAL_DEV_DEPENDENCIES,\n _PROC_MACRO_DEPENDENCIES,\n _PROC_MACRO_DEV_DEPENDENCIES,\n _BUILD_DEPENDENCIES,\n _BUILD_PROC_MACRO_DEPENDENCIES,\n ]).pop(package_name, {})\n\n # Combine all conditional packages so we can easily index over a flat list\n # TODO: Perhaps this should actually return select statements and maintain\n # the conditionals of the dependencies\n flat_deps = {}\n for deps_set in dependencies.values():\n for crate_name, crate_label in deps_set.items():\n flat_deps.update({crate_name: crate_label})\n\n missing_crates = []\n crate_targets = []\n for crate_target in deps:\n if crate_target not in flat_deps:\n missing_crates.append(crate_target)\n else:\n crate_targets.append(flat_deps[crate_target])\n\n if missing_crates:\n fail(\"Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`\".format(\n missing_crates,\n package_name,\n dependencies,\n ))\n\n return crate_targets\n\ndef all_crate_deps(\n normal = False, \n normal_dev = False, \n proc_macro = False, \n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Finds the fully qualified label of all requested direct crate dependencies \\\n for the package where this macro is called.\n\n If no parameters are set, all normal dependencies are returned. Setting any one flag will\n otherwise impact the contents of the returned list.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_dependency_maps = []\n if normal:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n if normal_dev:\n all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)\n if proc_macro:\n all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)\n if proc_macro_dev:\n all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)\n if build:\n all_dependency_maps.append(_BUILD_DEPENDENCIES)\n if build_proc_macro:\n all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)\n\n # Default to always using normal dependencies\n if not all_dependency_maps:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n\n dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)\n\n if not dependencies:\n if dependencies == None:\n fail(\"Tried to get all_crate_deps for package \" + package_name + \" but that package had no Cargo.toml file\")\n else:\n return []\n\n crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())\n for condition, deps in dependencies.items():\n crate_deps += selects.with_or({\n tuple(_CONDITIONS[condition]): deps.values(),\n \"//conditions:default\": [],\n })\n\n return crate_deps\n\ndef aliases(\n normal = False,\n normal_dev = False,\n proc_macro = False,\n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Produces a map of Crate alias names to their original label\n\n If no dependency kinds are specified, `normal` and `proc_macro` are used by default.\n Setting any one flag will otherwise determine the contents of the returned dict.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n dict: The aliases of all associated packages\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_aliases_maps = []\n if normal:\n all_aliases_maps.append(_NORMAL_ALIASES)\n if normal_dev:\n all_aliases_maps.append(_NORMAL_DEV_ALIASES)\n if proc_macro:\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n if proc_macro_dev:\n all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)\n if build:\n all_aliases_maps.append(_BUILD_ALIASES)\n if build_proc_macro:\n all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)\n\n # Default to always using normal aliases\n if not all_aliases_maps:\n all_aliases_maps.append(_NORMAL_ALIASES)\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n\n aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)\n\n if not aliases:\n return dict()\n\n common_items = aliases.pop(_COMMON_CONDITION, {}).items()\n\n # If there are only common items in the dictionary, immediately return them\n if not len(aliases.keys()) == 1:\n return dict(common_items)\n\n # Build a single select statement where each conditional has accounted for the\n # common set of aliases.\n crate_aliases = {\"//conditions:default\": dict(common_items)}\n for condition, deps in aliases.items():\n condition_triples = _CONDITIONS[condition]\n for triple in condition_triples:\n if triple in crate_aliases:\n crate_aliases[triple].update(deps)\n else:\n crate_aliases.update({triple: dict(deps.items() + common_items)})\n\n return select(crate_aliases)\n\n###############################################################################\n# WORKSPACE MEMBER DEPS AND ALIASES\n###############################################################################\n\n_NORMAL_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"serde_json\": Label(\"@crates//:serde_json-1.0.149\"),\n },\n },\n}\n\n\n_NORMAL_ALIASES = {\n \"\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_NORMAL_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_NORMAL_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_CONDITIONS = {\n \"aarch64-apple-darwin\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"aarch64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(any())\": [],\n \"wasm32-unknown-unknown\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"wasm32-wasip1\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"x86_64-pc-windows-msvc\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"x86_64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"x86_64-unknown-nixos-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n}\n\n###############################################################################\n\ndef crate_repositories():\n \"\"\"A macro for defining repositories for all generated crates.\n\n Returns:\n A list of repos visible to the module through the module extension.\n \"\"\"\n maybe(\n http_archive,\n name = \"crates__itoa-1.0.17\",\n sha256 = \"92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itoa/1.0.17/download\"],\n strip_prefix = \"itoa-1.0.17\",\n build_file = Label(\"@crates//crates:BUILD.itoa-1.0.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memchr-2.8.0\",\n sha256 = \"f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memchr/2.8.0/download\"],\n strip_prefix = \"memchr-2.8.0\",\n build_file = Label(\"@crates//crates:BUILD.memchr-2.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro2-1.0.106\",\n sha256 = \"8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2/1.0.106/download\"],\n strip_prefix = \"proc-macro2-1.0.106\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro2-1.0.106.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quote-1.0.44\",\n sha256 = \"21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quote/1.0.44/download\"],\n strip_prefix = \"quote-1.0.44\",\n build_file = Label(\"@crates//crates:BUILD.quote-1.0.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde-1.0.228\",\n sha256 = \"9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde/1.0.228/download\"],\n strip_prefix = \"serde-1.0.228\",\n build_file = Label(\"@crates//crates:BUILD.serde-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_core-1.0.228\",\n sha256 = \"41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_core/1.0.228/download\"],\n strip_prefix = \"serde_core-1.0.228\",\n build_file = Label(\"@crates//crates:BUILD.serde_core-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_derive-1.0.228\",\n sha256 = \"d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_derive/1.0.228/download\"],\n strip_prefix = \"serde_derive-1.0.228\",\n build_file = Label(\"@crates//crates:BUILD.serde_derive-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_json-1.0.149\",\n sha256 = \"83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_json/1.0.149/download\"],\n strip_prefix = \"serde_json-1.0.149\",\n build_file = Label(\"@crates//crates:BUILD.serde_json-1.0.149.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-2.0.117\",\n sha256 = \"e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/2.0.117/download\"],\n strip_prefix = \"syn-2.0.117\",\n build_file = Label(\"@crates//crates:BUILD.syn-2.0.117.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-ident-1.0.24\",\n sha256 = \"e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-ident/1.0.24/download\"],\n strip_prefix = \"unicode-ident-1.0.24\",\n build_file = Label(\"@crates//crates:BUILD.unicode-ident-1.0.24.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zmij-1.0.21\",\n sha256 = \"b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zmij/1.0.21/download\"],\n strip_prefix = \"zmij-1.0.21\",\n build_file = Label(\"@crates//crates:BUILD.zmij-1.0.21.bazel\"),\n )\n\n return [\n struct(repo=\"crates__serde_json-1.0.149\", is_dev_dep = False),\n ]\n" + "defs.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\"\"\"\n# `crates_repository` API\n\n- [aliases](#aliases)\n- [crate_deps](#crate_deps)\n- [all_crate_deps](#all_crate_deps)\n- [crate_repositories](#crate_repositories)\n\n\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"new_git_repository\")\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nload(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")\nload(\"@bazel_skylib//lib:selects.bzl\", \"selects\")\nload(\"@rules_rust//crate_universe/private:local_crate_mirror.bzl\", \"local_crate_mirror\")\n\n###############################################################################\n# MACROS API\n###############################################################################\n\n# An identifier that represent common dependencies (unconditional).\n_COMMON_CONDITION = \"\"\n\ndef _flatten_dependency_maps(all_dependency_maps):\n \"\"\"Flatten a list of dependency maps into one dictionary.\n\n Dependency maps have the following structure:\n\n ```python\n DEPENDENCIES_MAP = {\n # The first key in the map is a Bazel package\n # name of the workspace this file is defined in.\n \"workspace_member_package\": {\n\n # Not all dependencies are supported for all platforms.\n # the condition key is the condition required to be true\n # on the host platform.\n \"condition\": {\n\n # An alias to a crate target. # The label of the crate target the\n # Aliases are only crate names. # package name refers to.\n \"package_name\": \"@full//:label\",\n }\n }\n }\n ```\n\n Args:\n all_dependency_maps (list): A list of dicts as described above\n\n Returns:\n dict: A dictionary as described above\n \"\"\"\n dependencies = {}\n\n for workspace_deps_map in all_dependency_maps:\n for pkg_name, conditional_deps_map in workspace_deps_map.items():\n if pkg_name not in dependencies:\n non_frozen_map = dict()\n for key, values in conditional_deps_map.items():\n non_frozen_map.update({key: dict(values.items())})\n dependencies.setdefault(pkg_name, non_frozen_map)\n continue\n\n for condition, deps_map in conditional_deps_map.items():\n # If the condition has not been recorded, do so and continue\n if condition not in dependencies[pkg_name]:\n dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))\n continue\n\n # Alert on any miss-matched dependencies\n inconsistent_entries = []\n for crate_name, crate_label in deps_map.items():\n existing = dependencies[pkg_name][condition].get(crate_name)\n if existing and existing != crate_label:\n inconsistent_entries.append((crate_name, existing, crate_label))\n dependencies[pkg_name][condition].update({crate_name: crate_label})\n\n return dependencies\n\ndef crate_deps(deps, package_name = None):\n \"\"\"Finds the fully qualified label of the requested crates for the package where this macro is called.\n\n Args:\n deps (list): The desired list of crate targets.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()`.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if not deps:\n return []\n\n if package_name == None:\n package_name = native.package_name()\n\n # Join both sets of dependencies\n dependencies = _flatten_dependency_maps([\n _NORMAL_DEPENDENCIES,\n _NORMAL_DEV_DEPENDENCIES,\n _PROC_MACRO_DEPENDENCIES,\n _PROC_MACRO_DEV_DEPENDENCIES,\n _BUILD_DEPENDENCIES,\n _BUILD_PROC_MACRO_DEPENDENCIES,\n ]).pop(package_name, {})\n\n # Combine all conditional packages so we can easily index over a flat list\n # TODO: Perhaps this should actually return select statements and maintain\n # the conditionals of the dependencies\n flat_deps = {}\n for deps_set in dependencies.values():\n for crate_name, crate_label in deps_set.items():\n flat_deps.update({crate_name: crate_label})\n\n missing_crates = []\n crate_targets = []\n for crate_target in deps:\n if crate_target not in flat_deps:\n missing_crates.append(crate_target)\n else:\n crate_targets.append(flat_deps[crate_target])\n\n if missing_crates:\n fail(\"Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`\".format(\n missing_crates,\n package_name,\n dependencies,\n ))\n\n return crate_targets\n\ndef all_crate_deps(\n normal = False, \n normal_dev = False, \n proc_macro = False, \n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Finds the fully qualified label of all requested direct crate dependencies \\\n for the package where this macro is called.\n\n If no parameters are set, all normal dependencies are returned. Setting any one flag will\n otherwise impact the contents of the returned list.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_dependency_maps = []\n if normal:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n if normal_dev:\n all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)\n if proc_macro:\n all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)\n if proc_macro_dev:\n all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)\n if build:\n all_dependency_maps.append(_BUILD_DEPENDENCIES)\n if build_proc_macro:\n all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)\n\n # Default to always using normal dependencies\n if not all_dependency_maps:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n\n dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)\n\n if not dependencies:\n if dependencies == None:\n fail(\"Tried to get all_crate_deps for package \" + package_name + \" but that package had no Cargo.toml file\")\n else:\n return []\n\n crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())\n for condition, deps in dependencies.items():\n crate_deps += selects.with_or({\n tuple(_CONDITIONS[condition]): deps.values(),\n \"//conditions:default\": [],\n })\n\n return crate_deps\n\ndef aliases(\n normal = False,\n normal_dev = False,\n proc_macro = False,\n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Produces a map of Crate alias names to their original label\n\n If no dependency kinds are specified, `normal` and `proc_macro` are used by default.\n Setting any one flag will otherwise determine the contents of the returned dict.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n dict: The aliases of all associated packages\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_aliases_maps = []\n if normal:\n all_aliases_maps.append(_NORMAL_ALIASES)\n if normal_dev:\n all_aliases_maps.append(_NORMAL_DEV_ALIASES)\n if proc_macro:\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n if proc_macro_dev:\n all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)\n if build:\n all_aliases_maps.append(_BUILD_ALIASES)\n if build_proc_macro:\n all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)\n\n # Default to always using normal aliases\n if not all_aliases_maps:\n all_aliases_maps.append(_NORMAL_ALIASES)\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n\n aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)\n\n if not aliases:\n return dict()\n\n common_items = aliases.pop(_COMMON_CONDITION, {}).items()\n\n # If there are only common items in the dictionary, immediately return them\n if not len(aliases.keys()) == 1:\n return dict(common_items)\n\n # Build a single select statement where each conditional has accounted for the\n # common set of aliases.\n crate_aliases = {\"//conditions:default\": dict(common_items)}\n for condition, deps in aliases.items():\n condition_triples = _CONDITIONS[condition]\n for triple in condition_triples:\n if triple in crate_aliases:\n crate_aliases[triple].update(deps)\n else:\n crate_aliases.update({triple: dict(deps.items() + common_items)})\n\n return select(crate_aliases)\n\n###############################################################################\n# WORKSPACE MEMBER DEPS AND ALIASES\n###############################################################################\n\n_NORMAL_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"diplomat-runtime\": Label(\"@crates//:diplomat-runtime-0.14.0\"),\n \"diplomat-tool\": Label(\"@crates//:diplomat-tool-0.14.1\"),\n \"serde_json\": Label(\"@crates//:serde_json-1.0.149\"),\n },\n },\n}\n\n\n_NORMAL_ALIASES = {\n \"\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_NORMAL_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_NORMAL_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"diplomat\": Label(\"@crates//:diplomat-0.14.0\"),\n },\n },\n}\n\n\n_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_CONDITIONS = {\n \"aarch64-apple-darwin\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"aarch64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(any())\": [],\n \"cfg(windows)\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"wasm32-unknown-unknown\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"wasm32-wasip1\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"x86_64-pc-windows-msvc\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"x86_64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"x86_64-unknown-nixos-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n}\n\n###############################################################################\n\ndef crate_repositories():\n \"\"\"A macro for defining repositories for all generated crates.\n\n Returns:\n A list of repos visible to the module through the module extension.\n \"\"\"\n maybe(\n http_archive,\n name = \"crates__anstream-0.6.21\",\n sha256 = \"43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstream/0.6.21/download\"],\n strip_prefix = \"anstream-0.6.21\",\n build_file = Label(\"@crates//crates:BUILD.anstream-0.6.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-1.0.13\",\n sha256 = \"5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle/1.0.13/download\"],\n strip_prefix = \"anstyle-1.0.13\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-1.0.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-parse-0.2.7\",\n sha256 = \"4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-parse/0.2.7/download\"],\n strip_prefix = \"anstyle-parse-0.2.7\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-parse-0.2.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-query-1.1.5\",\n sha256 = \"40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-query/1.1.5/download\"],\n strip_prefix = \"anstyle-query-1.1.5\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-query-1.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-wincon-3.0.11\",\n sha256 = \"291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-wincon/3.0.11/download\"],\n strip_prefix = \"anstyle-wincon-3.0.11\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-wincon-3.0.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__askama-0.14.0\",\n sha256 = \"f75363874b771be265f4ffe307ca705ef6f3baa19011c149da8674a87f1b75c4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/askama/0.14.0/download\"],\n strip_prefix = \"askama-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.askama-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__askama_derive-0.14.0\",\n sha256 = \"129397200fe83088e8a68407a8e2b1f826cf0086b21ccdb866a722c8bcd3a94f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/askama_derive/0.14.0/download\"],\n strip_prefix = \"askama_derive-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.askama_derive-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__askama_parser-0.14.0\",\n sha256 = \"d6ab5630b3d5eaf232620167977f95eb51f3432fc76852328774afbd242d4358\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/askama_parser/0.14.0/download\"],\n strip_prefix = \"askama_parser-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.askama_parser-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__basic-toml-0.1.10\",\n sha256 = \"ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/basic-toml/0.1.10/download\"],\n strip_prefix = \"basic-toml-0.1.10\",\n build_file = Label(\"@crates//crates:BUILD.basic-toml-0.1.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bitflags-2.11.0\",\n sha256 = \"843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitflags/2.11.0/download\"],\n strip_prefix = \"bitflags-2.11.0\",\n build_file = Label(\"@crates//crates:BUILD.bitflags-2.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap-4.5.60\",\n sha256 = \"2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap/4.5.60/download\"],\n strip_prefix = \"clap-4.5.60\",\n build_file = Label(\"@crates//crates:BUILD.clap-4.5.60.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap_builder-4.5.60\",\n sha256 = \"24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_builder/4.5.60/download\"],\n strip_prefix = \"clap_builder-4.5.60\",\n build_file = Label(\"@crates//crates:BUILD.clap_builder-4.5.60.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap_derive-4.5.55\",\n sha256 = \"a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_derive/4.5.55/download\"],\n strip_prefix = \"clap_derive-4.5.55\",\n build_file = Label(\"@crates//crates:BUILD.clap_derive-4.5.55.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap_lex-1.0.0\",\n sha256 = \"3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_lex/1.0.0/download\"],\n strip_prefix = \"clap_lex-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.clap_lex-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__colorchoice-1.0.4\",\n sha256 = \"b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/colorchoice/1.0.4/download\"],\n strip_prefix = \"colorchoice-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.colorchoice-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__colored-3.1.1\",\n sha256 = \"faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/colored/3.1.1/download\"],\n strip_prefix = \"colored-3.1.1\",\n build_file = Label(\"@crates//crates:BUILD.colored-3.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__diplomat-0.14.0\",\n sha256 = \"9adb46b05e2f53dcf6a7dfc242e4ce9eb60c369b6b6eb10826a01e93167f59c6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/diplomat/0.14.0/download\"],\n strip_prefix = \"diplomat-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.diplomat-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__diplomat-runtime-0.14.0\",\n sha256 = \"0569bd3caaf13829da7ee4e83dbf9197a0e1ecd72772da6d08f0b4c9285c8d29\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/diplomat-runtime/0.14.0/download\"],\n strip_prefix = \"diplomat-runtime-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.diplomat-runtime-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__diplomat-tool-0.14.1\",\n sha256 = \"a69fa451d9a76f2c17bb0dd37603825a71f8199f64eb9bf9d2b6664695efe1e4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/diplomat-tool/0.14.1/download\"],\n strip_prefix = \"diplomat-tool-0.14.1\",\n build_file = Label(\"@crates//crates:BUILD.diplomat-tool-0.14.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__diplomat_core-0.14.0\",\n sha256 = \"51731530ed7f2d4495019abc7df3744f53338e69e2863a6a64ae91821c763df1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/diplomat_core/0.14.0/download\"],\n strip_prefix = \"diplomat_core-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.diplomat_core-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__displaydoc-0.2.5\",\n sha256 = \"97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/displaydoc/0.2.5/download\"],\n strip_prefix = \"displaydoc-0.2.5\",\n build_file = Label(\"@crates//crates:BUILD.displaydoc-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__either-1.15.0\",\n sha256 = \"48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/either/1.15.0/download\"],\n strip_prefix = \"either-1.15.0\",\n build_file = Label(\"@crates//crates:BUILD.either-1.15.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__equivalent-1.0.2\",\n sha256 = \"877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/equivalent/1.0.2/download\"],\n strip_prefix = \"equivalent-1.0.2\",\n build_file = Label(\"@crates//crates:BUILD.equivalent-1.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__getopts-0.2.24\",\n sha256 = \"cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/getopts/0.2.24/download\"],\n strip_prefix = \"getopts-0.2.24\",\n build_file = Label(\"@crates//crates:BUILD.getopts-0.2.24.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.16.1\",\n sha256 = \"841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.16.1/download\"],\n strip_prefix = \"hashbrown-0.16.1\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.16.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__heck-0.5.0\",\n sha256 = \"2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/heck/0.5.0/download\"],\n strip_prefix = \"heck-0.5.0\",\n build_file = Label(\"@crates//crates:BUILD.heck-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__indenter-0.3.4\",\n sha256 = \"964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indenter/0.3.4/download\"],\n strip_prefix = \"indenter-0.3.4\",\n build_file = Label(\"@crates//crates:BUILD.indenter-0.3.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__indexmap-2.13.0\",\n sha256 = \"7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indexmap/2.13.0/download\"],\n strip_prefix = \"indexmap-2.13.0\",\n build_file = Label(\"@crates//crates:BUILD.indexmap-2.13.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__is_terminal_polyfill-1.70.2\",\n sha256 = \"a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/is_terminal_polyfill/1.70.2/download\"],\n strip_prefix = \"is_terminal_polyfill-1.70.2\",\n build_file = Label(\"@crates//crates:BUILD.is_terminal_polyfill-1.70.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itertools-0.14.0\",\n sha256 = \"2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itertools/0.14.0/download\"],\n strip_prefix = \"itertools-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.itertools-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itoa-1.0.17\",\n sha256 = \"92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itoa/1.0.17/download\"],\n strip_prefix = \"itoa-1.0.17\",\n build_file = Label(\"@crates//crates:BUILD.itoa-1.0.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memchr-2.8.0\",\n sha256 = \"f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memchr/2.8.0/download\"],\n strip_prefix = \"memchr-2.8.0\",\n build_file = Label(\"@crates//crates:BUILD.memchr-2.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__once_cell_polyfill-1.70.2\",\n sha256 = \"384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/once_cell_polyfill/1.70.2/download\"],\n strip_prefix = \"once_cell_polyfill-1.70.2\",\n build_file = Label(\"@crates//crates:BUILD.once_cell_polyfill-1.70.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__percent-encoding-2.3.2\",\n sha256 = \"9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/percent-encoding/2.3.2/download\"],\n strip_prefix = \"percent-encoding-2.3.2\",\n build_file = Label(\"@crates//crates:BUILD.percent-encoding-2.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro2-1.0.106\",\n sha256 = \"8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2/1.0.106/download\"],\n strip_prefix = \"proc-macro2-1.0.106\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro2-1.0.106.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pulldown-cmark-0.13.0\",\n sha256 = \"1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pulldown-cmark/0.13.0/download\"],\n strip_prefix = \"pulldown-cmark-0.13.0\",\n build_file = Label(\"@crates//crates:BUILD.pulldown-cmark-0.13.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pulldown-cmark-escape-0.11.0\",\n sha256 = \"007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pulldown-cmark-escape/0.11.0/download\"],\n strip_prefix = \"pulldown-cmark-escape-0.11.0\",\n build_file = Label(\"@crates//crates:BUILD.pulldown-cmark-escape-0.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quote-1.0.44\",\n sha256 = \"21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quote/1.0.44/download\"],\n strip_prefix = \"quote-1.0.44\",\n build_file = Label(\"@crates//crates:BUILD.quote-1.0.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustc-hash-2.1.1\",\n sha256 = \"357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc-hash/2.1.1/download\"],\n strip_prefix = \"rustc-hash-2.1.1\",\n build_file = Label(\"@crates//crates:BUILD.rustc-hash-2.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde-1.0.228\",\n sha256 = \"9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde/1.0.228/download\"],\n strip_prefix = \"serde-1.0.228\",\n build_file = Label(\"@crates//crates:BUILD.serde-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_core-1.0.228\",\n sha256 = \"41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_core/1.0.228/download\"],\n strip_prefix = \"serde_core-1.0.228\",\n build_file = Label(\"@crates//crates:BUILD.serde_core-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_derive-1.0.228\",\n sha256 = \"d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_derive/1.0.228/download\"],\n strip_prefix = \"serde_derive-1.0.228\",\n build_file = Label(\"@crates//crates:BUILD.serde_derive-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_json-1.0.149\",\n sha256 = \"83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_json/1.0.149/download\"],\n strip_prefix = \"serde_json-1.0.149\",\n build_file = Label(\"@crates//crates:BUILD.serde_json-1.0.149.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_spanned-0.6.9\",\n sha256 = \"bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_spanned/0.6.9/download\"],\n strip_prefix = \"serde_spanned-0.6.9\",\n build_file = Label(\"@crates//crates:BUILD.serde_spanned-0.6.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__smallvec-1.15.1\",\n sha256 = \"67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smallvec/1.15.1/download\"],\n strip_prefix = \"smallvec-1.15.1\",\n build_file = Label(\"@crates//crates:BUILD.smallvec-1.15.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strck-1.0.0\",\n sha256 = \"42316e70da376f3d113a68d138a60d8a9883c604fe97942721ec2068dab13a9f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strck/1.0.0/download\"],\n strip_prefix = \"strck-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.strck-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strsim-0.11.1\",\n sha256 = \"7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strsim/0.11.1/download\"],\n strip_prefix = \"strsim-0.11.1\",\n build_file = Label(\"@crates//crates:BUILD.strsim-0.11.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-2.0.117\",\n sha256 = \"e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/2.0.117/download\"],\n strip_prefix = \"syn-2.0.117\",\n build_file = Label(\"@crates//crates:BUILD.syn-2.0.117.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-inline-mod-0.6.0\",\n sha256 = \"2fa6dca1fdb7b2ed46dd534a326725419d4fb10f23d8c85a8b2860e5eb25d0f9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn-inline-mod/0.6.0/download\"],\n strip_prefix = \"syn-inline-mod-0.6.0\",\n build_file = Label(\"@crates//crates:BUILD.syn-inline-mod-0.6.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__toml-0.8.23\",\n sha256 = \"dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/toml/0.8.23/download\"],\n strip_prefix = \"toml-0.8.23\",\n build_file = Label(\"@crates//crates:BUILD.toml-0.8.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__toml_datetime-0.6.11\",\n sha256 = \"22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/toml_datetime/0.6.11/download\"],\n strip_prefix = \"toml_datetime-0.6.11\",\n build_file = Label(\"@crates//crates:BUILD.toml_datetime-0.6.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__toml_edit-0.22.27\",\n sha256 = \"41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/toml_edit/0.22.27/download\"],\n strip_prefix = \"toml_edit-0.22.27\",\n build_file = Label(\"@crates//crates:BUILD.toml_edit-0.22.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__toml_write-0.1.2\",\n sha256 = \"5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/toml_write/0.1.2/download\"],\n strip_prefix = \"toml_write-0.1.2\",\n build_file = Label(\"@crates//crates:BUILD.toml_write-0.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicase-2.9.0\",\n sha256 = \"dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicase/2.9.0/download\"],\n strip_prefix = \"unicase-2.9.0\",\n build_file = Label(\"@crates//crates:BUILD.unicase-2.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-ident-1.0.24\",\n sha256 = \"e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-ident/1.0.24/download\"],\n strip_prefix = \"unicode-ident-1.0.24\",\n build_file = Label(\"@crates//crates:BUILD.unicode-ident-1.0.24.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-width-0.2.2\",\n sha256 = \"b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-width/0.2.2/download\"],\n strip_prefix = \"unicode-width-0.2.2\",\n build_file = Label(\"@crates//crates:BUILD.unicode-width-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__utf8parse-0.2.2\",\n sha256 = \"06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/utf8parse/0.2.2/download\"],\n strip_prefix = \"utf8parse-0.2.2\",\n build_file = Label(\"@crates//crates:BUILD.utf8parse-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-link-0.2.1\",\n sha256 = \"f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-link/0.2.1/download\"],\n strip_prefix = \"windows-link-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-link-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.61.2\",\n sha256 = \"ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.61.2/download\"],\n strip_prefix = \"windows-sys-0.61.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.61.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__winnow-0.7.14\",\n sha256 = \"5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winnow/0.7.14/download\"],\n strip_prefix = \"winnow-0.7.14\",\n build_file = Label(\"@crates//crates:BUILD.winnow-0.7.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zmij-1.0.21\",\n sha256 = \"b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zmij/1.0.21/download\"],\n strip_prefix = \"zmij-1.0.21\",\n build_file = Label(\"@crates//crates:BUILD.zmij-1.0.21.bazel\"),\n )\n\n return [\n struct(repo=\"crates__diplomat-0.14.0\", is_dev_dep = False),\n struct(repo=\"crates__diplomat-runtime-0.14.0\", is_dev_dep = False),\n struct(repo=\"crates__diplomat-tool-0.14.1\", is_dev_dep = False),\n struct(repo=\"crates__serde_json-1.0.149\", is_dev_dep = False),\n ]\n" } } }, - "crates__itoa-1.0.17": { + "crates__anstream-0.6.21": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2", + "sha256": "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/itoa/1.0.17/download" + "https://static.crates.io/crates/anstream/0.6.21/download" ], - "strip_prefix": "itoa-1.0.17", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"itoa\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=itoa\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.17\",\n)\n" + "strip_prefix": "anstream-0.6.21", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstream\",\n deps = [\n \"@crates__anstyle-1.0.13//:anstyle\",\n \"@crates__anstyle-parse-0.2.7//:anstyle_parse\",\n \"@crates__anstyle-query-1.1.5//:anstyle_query\",\n \"@crates__colorchoice-1.0.4//:colorchoice\",\n \"@crates__is_terminal_polyfill-1.70.2//:is_terminal_polyfill\",\n \"@crates__utf8parse-0.2.2//:utf8parse\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__anstyle-wincon-3.0.11//:anstyle_wincon\", # x86_64-pc-windows-msvc\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"auto\",\n \"default\",\n \"wincon\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstream\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.21\",\n)\n" } }, - "crates__memchr-2.8.0": { + "crates__anstyle-1.0.13": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79", + "sha256": "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/memchr/2.8.0/download" + "https://static.crates.io/crates/anstyle/1.0.13/download" ], - "strip_prefix": "memchr-2.8.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"memchr\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=memchr\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.8.0\",\n)\n" + "strip_prefix": "anstyle-1.0.13", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstyle\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstyle\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.13\",\n)\n" } }, - "crates__proc-macro2-1.0.106": { + "crates__anstyle-parse-0.2.7": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934", + "sha256": "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/proc-macro2/1.0.106/download" + "https://static.crates.io/crates/anstyle-parse/0.2.7/download" ], - "strip_prefix": "proc-macro2-1.0.106", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"proc_macro2\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:build_script_build\",\n \"@crates__unicode-ident-1.0.24//:unicode_ident\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"proc-macro\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=proc-macro2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.106\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"proc-macro\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"proc-macro2\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=proc-macro2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.106\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "strip_prefix": "anstyle-parse-0.2.7", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstyle_parse\",\n deps = [\n \"@crates__utf8parse-0.2.2//:utf8parse\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"utf8\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstyle-parse\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.7\",\n)\n" } }, - "crates__quote-1.0.44": { + "crates__anstyle-query-1.1.5": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4", + "sha256": "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/quote/1.0.44/download" + "https://static.crates.io/crates/anstyle-query/1.1.5/download" ], - "strip_prefix": "quote-1.0.44", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"quote\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.44//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"proc-macro\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=quote\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.44\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"proc-macro\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"quote\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=quote\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.44\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "strip_prefix": "anstyle-query-1.1.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstyle_query\",\n deps = select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstyle-query\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.5\",\n)\n" } }, - "crates__serde-1.0.228": { + "crates__anstyle-wincon-3.0.11": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e", + "sha256": "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/serde/1.0.228/download" + "https://static.crates.io/crates/anstyle-wincon/3.0.11/download" ], - "strip_prefix": "serde-1.0.228", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde\",\n deps = [\n \"@crates__serde-1.0.228//:build_script_build\",\n \"@crates__serde_core-1.0.228//:serde_core\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.228\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.228\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "strip_prefix": "anstyle-wincon-3.0.11", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstyle_wincon\",\n deps = [\n \"@crates__anstyle-1.0.13//:anstyle\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__once_cell_polyfill-1.70.2//:once_cell_polyfill\", # cfg(windows)\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstyle-wincon\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.0.11\",\n)\n" } }, - "crates__serde_core-1.0.228": { + "crates__askama-0.14.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad", + "sha256": "f75363874b771be265f4ffe307ca705ef6f3baa19011c149da8674a87f1b75c4", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/serde_core/1.0.228/download" + "https://static.crates.io/crates/askama/0.14.0/download" ], - "strip_prefix": "serde_core-1.0.228", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_core\",\n deps = [\n \"@crates__serde_core-1.0.228//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.228\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde_core\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.228\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "strip_prefix": "askama-0.14.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"askama\",\n deps = [\n \"@crates__itoa-1.0.17//:itoa\",\n \"@crates__percent-encoding-2.3.2//:percent_encoding\",\n ],\n proc_macro_deps = [\n \"@crates__askama_derive-0.14.0//:askama_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"config\",\n \"default\",\n \"derive\",\n \"std\",\n \"urlencode\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=askama\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.0\",\n)\n" } }, - "crates__serde_derive-1.0.228": { + "crates__askama_derive-0.14.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79", + "sha256": "129397200fe83088e8a68407a8e2b1f826cf0086b21ccdb866a722c8bcd3a94f", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/serde_derive/1.0.228/download" + "https://static.crates.io/crates/askama_derive/0.14.0/download" ], - "strip_prefix": "serde_derive-1.0.228", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"serde_derive\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.44//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.228\",\n)\n" + "strip_prefix": "askama_derive-0.14.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"askama_derive\",\n deps = [\n \"@crates__askama_parser-0.14.0//:askama_parser\",\n \"@crates__basic-toml-0.1.10//:basic_toml\",\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.44//:quote\",\n \"@crates__rustc-hash-2.1.1//:rustc_hash\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n proc_macro_deps = [\n \"@crates__serde_derive-1.0.228//:serde_derive\",\n ],\n aliases = {\n \"@crates__askama_parser-0.14.0//:askama_parser\": \"parser\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"config\",\n \"default\",\n \"derive\",\n \"std\",\n \"urlencode\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=askama_derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.0\",\n)\n" } }, - "crates__serde_json-1.0.149": { + "crates__askama_parser-0.14.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86", + "sha256": "d6ab5630b3d5eaf232620167977f95eb51f3432fc76852328774afbd242d4358", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/serde_json/1.0.149/download" + "https://static.crates.io/crates/askama_parser/0.14.0/download" ], - "strip_prefix": "serde_json-1.0.149", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_json\",\n deps = [\n \"@crates__itoa-1.0.17//:itoa\",\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__serde_core-1.0.228//:serde_core\",\n \"@crates__serde_json-1.0.149//:build_script_build\",\n \"@crates__zmij-1.0.21//:zmij\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_json\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.149\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde_json\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_json\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.149\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "strip_prefix": "askama_parser-0.14.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"askama_parser\",\n deps = [\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__winnow-0.7.14//:winnow\",\n ],\n proc_macro_deps = [\n \"@crates__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"config\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=askama_parser\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.0\",\n)\n" } }, - "crates__syn-2.0.117": { + "crates__basic-toml-0.1.10": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99", + "sha256": "ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/syn/2.0.117/download" + "https://static.crates.io/crates/basic-toml/0.1.10/download" ], - "strip_prefix": "syn-2.0.117", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"syn\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.44//:quote\",\n \"@crates__unicode-ident-1.0.24//:unicode_ident\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"clone-impls\",\n \"derive\",\n \"parsing\",\n \"printing\",\n \"proc-macro\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=syn\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.0.117\",\n)\n" + "strip_prefix": "basic-toml-0.1.10", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"basic_toml\",\n deps = [\n \"@crates__serde-1.0.228//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=basic-toml\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.10\",\n)\n" } }, - "crates__unicode-ident-1.0.24": { + "crates__bitflags-2.11.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75", + "sha256": "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/unicode-ident/1.0.24/download" + "https://static.crates.io/crates/bitflags/2.11.0/download" ], - "strip_prefix": "unicode-ident-1.0.24", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"unicode_ident\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=unicode-ident\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.24\",\n)\n" + "strip_prefix": "bitflags-2.11.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bitflags\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bitflags\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.11.0\",\n)\n" } }, - "crates__zmij-1.0.21": { + "crates__clap-4.5.60": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa", + "sha256": "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/zmij/1.0.21/download" + "https://static.crates.io/crates/clap/4.5.60/download" ], - "strip_prefix": "zmij-1.0.21", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"zmij\",\n deps = [\n \"@crates__zmij-1.0.21//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zmij\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.21\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"zmij\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zmij\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.21\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" - } - } - }, - "moduleExtensionMetadata": { - "useAllRepos": "NO", - "reproducible": false - }, - "recordedRepoMappingEntries": [ - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "rules_cc+", - "bazel_tools", - "bazel_tools" - ], - [ - "rules_cc+", - "rules_cc", - "rules_cc+" - ], - [ - "rules_rust+", - "bazel_features", - "bazel_features+" - ], - [ - "rules_rust+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "rules_rust+", - "bazel_tools", - "bazel_tools" - ], - [ - "rules_rust+", - "rules_cc", - "rules_cc+" - ], - [ - "rules_rust+", - "rules_rust", - "rules_rust+" - ] - ] - } - }, - "@@rules_rust_pyo3+//private:internal_extensions.bzl%rust_ext": { - "general": { - "bzlTransitiveDigest": "mplWnTye6O3jkHSbTUhWt4BLjkwzs8HGGqF011UFz8Q=", - "usagesDigest": "rnHKoNtVZJoyWkyB/t+nXUGsKOy2Z7tAFDc5sSwvxy8=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "rpyo3c": { - "repoRuleId": "@@rules_rust+//crate_universe/private:crates_vendor.bzl%crates_vendor_remote_repository", - "attributes": { - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.bazel", - "defs_module": "@@rules_rust_pyo3+//3rdparty/crates:defs.bzl" + "strip_prefix": "clap-4.5.60", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"clap\",\n deps = [\n \"@crates__clap_builder-4.5.60//:clap_builder\",\n ],\n proc_macro_deps = [\n \"@crates__clap_derive-4.5.55//:clap_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"color\",\n \"default\",\n \"derive\",\n \"error-context\",\n \"help\",\n \"std\",\n \"suggestions\",\n \"usage\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clap\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.5.60\",\n)\n" } }, - "rpyo3c__anyhow-1.0.100": { + "crates__clap_builder-4.5.60": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/anyhow/1.0.100/download" + "https://static.crates.io/crates/clap_builder/4.5.60/download" ], - "strip_prefix": "anyhow-1.0.100", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.anyhow-1.0.100.bazel" + "strip_prefix": "clap_builder-4.5.60", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"clap_builder\",\n deps = [\n \"@crates__anstream-0.6.21//:anstream\",\n \"@crates__anstyle-1.0.13//:anstyle\",\n \"@crates__clap_lex-1.0.0//:clap_lex\",\n \"@crates__strsim-0.11.1//:strsim\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"color\",\n \"error-context\",\n \"help\",\n \"std\",\n \"suggestions\",\n \"usage\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clap_builder\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.5.60\",\n)\n" } }, - "rpyo3c__autocfg-1.5.0": { + "crates__clap_derive-4.5.55": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/autocfg/1.5.0/download" + "https://static.crates.io/crates/clap_derive/4.5.55/download" ], - "strip_prefix": "autocfg-1.5.0", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.autocfg-1.5.0.bazel" + "strip_prefix": "clap_derive-4.5.55", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"clap_derive\",\n deps = [\n \"@crates__heck-0.5.0//:heck\",\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.44//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clap_derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.5.55\",\n)\n" } }, - "rpyo3c__goblin-0.10.1": { + "crates__clap_lex-1.0.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "d6a80adfd63bd7ffd94fefc3d22167880c440a724303080e5aa686fa36abaa96", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/goblin/0.10.1/download" + "https://static.crates.io/crates/clap_lex/1.0.0/download" ], - "strip_prefix": "goblin-0.10.1", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.goblin-0.10.1.bazel" + "strip_prefix": "clap_lex-1.0.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"clap_lex\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clap_lex\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.0\",\n)\n" } }, - "rpyo3c__heck-0.5.0": { + "crates__colorchoice-1.0.4": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/heck/0.5.0/download" + "https://static.crates.io/crates/colorchoice/1.0.4/download" ], - "strip_prefix": "heck-0.5.0", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.heck-0.5.0.bazel" + "strip_prefix": "colorchoice-1.0.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"colorchoice\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=colorchoice\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.4\",\n)\n" } }, - "rpyo3c__indoc-2.0.6": { + "crates__colored-3.1.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/indoc/2.0.6/download" + "https://static.crates.io/crates/colored/3.1.1/download" ], - "strip_prefix": "indoc-2.0.6", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.indoc-2.0.6.bazel" + "strip_prefix": "colored-3.1.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"colored\",\n deps = select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=colored\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.1.1\",\n)\n" } }, - "rpyo3c__itoa-1.0.15": { + "crates__diplomat-0.14.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9adb46b05e2f53dcf6a7dfc242e4ce9eb60c369b6b6eb10826a01e93167f59c6", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/itoa/1.0.15/download" + "https://static.crates.io/crates/diplomat/0.14.0/download" ], - "strip_prefix": "itoa-1.0.15", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.itoa-1.0.15.bazel" + "strip_prefix": "diplomat-0.14.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"diplomat\",\n deps = [\n \"@crates__diplomat_core-0.14.0//:diplomat_core\",\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.44//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=diplomat\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.0\",\n)\n" } }, - "rpyo3c__libc-0.2.176": { + "crates__diplomat-runtime-0.14.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0569bd3caaf13829da7ee4e83dbf9197a0e1ecd72772da6d08f0b4c9285c8d29", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/libc/0.2.176/download" + "https://static.crates.io/crates/diplomat-runtime/0.14.0/download" ], - "strip_prefix": "libc-0.2.176", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.libc-0.2.176.bazel" + "strip_prefix": "diplomat-runtime-0.14.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"diplomat_runtime\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=diplomat-runtime\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.0\",\n)\n" } }, - "rpyo3c__log-0.4.28": { + "crates__diplomat-tool-0.14.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a69fa451d9a76f2c17bb0dd37603825a71f8199f64eb9bf9d2b6664695efe1e4", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/log/0.4.28/download" + "https://static.crates.io/crates/diplomat-tool/0.14.1/download" ], - "strip_prefix": "log-0.4.28", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.log-0.4.28.bazel" + "strip_prefix": "diplomat-tool-0.14.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"diplomat_tool\",\n deps = [\n \"@crates__askama-0.14.0//:askama\",\n \"@crates__clap-4.5.60//:clap\",\n \"@crates__colored-3.1.1//:colored\",\n \"@crates__diplomat_core-0.14.0//:diplomat_core\",\n \"@crates__heck-0.5.0//:heck\",\n \"@crates__indenter-0.3.4//:indenter\",\n \"@crates__itertools-0.14.0//:itertools\",\n \"@crates__pulldown-cmark-0.13.0//:pulldown_cmark\",\n \"@crates__quote-1.0.44//:quote\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__syn-2.0.117//:syn\",\n \"@crates__syn-inline-mod-0.6.0//:syn_inline_mod\",\n \"@crates__toml-0.8.23//:toml\",\n ],\n proc_macro_deps = [\n \"@crates__displaydoc-0.2.5//:displaydoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=diplomat-tool\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.1\",\n)\n" } }, - "rpyo3c__memchr-2.7.6": { + "crates__diplomat_core-0.14.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "51731530ed7f2d4495019abc7df3744f53338e69e2863a6a64ae91821c763df1", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/memchr/2.7.6/download" + "https://static.crates.io/crates/diplomat_core/0.14.0/download" ], - "strip_prefix": "memchr-2.7.6", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.memchr-2.7.6.bazel" + "strip_prefix": "diplomat_core-0.14.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"diplomat_core\",\n deps = [\n \"@crates__either-1.15.0//:either\",\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.44//:quote\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__smallvec-1.15.1//:smallvec\",\n \"@crates__strck-1.0.0//:strck\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n proc_macro_deps = [\n \"@crates__displaydoc-0.2.5//:displaydoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"displaydoc\",\n \"either\",\n \"hir\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=diplomat_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.0\",\n)\n" } }, - "rpyo3c__memoffset-0.9.1": { + "crates__displaydoc-0.2.5": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/memoffset/0.9.1/download" + "https://static.crates.io/crates/displaydoc/0.2.5/download" ], - "strip_prefix": "memoffset-0.9.1", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.memoffset-0.9.1.bazel" + "strip_prefix": "displaydoc-0.2.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"displaydoc\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.44//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=displaydoc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.5\",\n)\n" } }, - "rpyo3c__once_cell-1.21.3": { + "crates__either-1.15.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/once_cell/1.21.3/download" + "https://static.crates.io/crates/either/1.15.0/download" ], - "strip_prefix": "once_cell-1.21.3", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.once_cell-1.21.3.bazel" + "strip_prefix": "either-1.15.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"either\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n \"use_std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=either\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.15.0\",\n)\n" } }, - "rpyo3c__plain-0.2.3": { + "crates__equivalent-1.0.2": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/plain/0.2.3/download" + "https://static.crates.io/crates/equivalent/1.0.2/download" ], - "strip_prefix": "plain-0.2.3", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.plain-0.2.3.bazel" + "strip_prefix": "equivalent-1.0.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"equivalent\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=equivalent\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.2\",\n)\n" } }, - "rpyo3c__portable-atomic-1.11.1": { + "crates__getopts-0.2.24": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/portable-atomic/1.11.1/download" + "https://static.crates.io/crates/getopts/0.2.24/download" ], - "strip_prefix": "portable-atomic-1.11.1", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.portable-atomic-1.11.1.bazel" + "strip_prefix": "getopts-0.2.24", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"getopts\",\n deps = [\n \"@crates__unicode-width-0.2.2//:unicode_width\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"unicode\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=getopts\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.24\",\n)\n" } }, - "rpyo3c__proc-macro2-1.0.101": { + "crates__hashbrown-0.16.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/proc-macro2/1.0.101/download" + "https://static.crates.io/crates/hashbrown/0.16.1/download" ], - "strip_prefix": "proc-macro2-1.0.101", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.proc-macro2-1.0.101.bazel" + "strip_prefix": "hashbrown-0.16.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hashbrown\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hashbrown\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.16.1\",\n)\n" } }, - "rpyo3c__pyo3-0.26.0": { + "crates__heck-0.5.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "7ba0117f4212101ee6544044dae45abe1083d30ce7b29c4b5cbdfa2354e07383", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/pyo3/0.26.0/download" + "https://static.crates.io/crates/heck/0.5.0/download" ], - "strip_prefix": "pyo3-0.26.0", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.pyo3-0.26.0.bazel" + "strip_prefix": "heck-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"heck\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=heck\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" } }, - "rpyo3c__pyo3-build-config-0.26.0": { + "crates__indenter-0.3.4": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "patch_args": [ - "-p1" - ], - "patches": [ - "@@rules_rust_pyo3+//3rdparty/patches:resolve_cross_compile_config_path.patch" - ], - "sha256": "4fc6ddaf24947d12a9aa31ac65431fb1b851b8f4365426e182901eabfb87df5f", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/pyo3-build-config/0.26.0/download" + "https://static.crates.io/crates/indenter/0.3.4/download" ], - "strip_prefix": "pyo3-build-config-0.26.0", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.pyo3-build-config-0.26.0.bazel" + "strip_prefix": "indenter-0.3.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"indenter\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=indenter\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.4\",\n)\n" } }, - "rpyo3c__pyo3-ffi-0.26.0": { + "crates__indexmap-2.13.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "025474d3928738efb38ac36d4744a74a400c901c7596199e20e45d98eb194105", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/pyo3-ffi/0.26.0/download" + "https://static.crates.io/crates/indexmap/2.13.0/download" ], - "strip_prefix": "pyo3-ffi-0.26.0", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.pyo3-ffi-0.26.0.bazel" + "strip_prefix": "indexmap-2.13.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"indexmap\",\n deps = [\n \"@crates__equivalent-1.0.2//:equivalent\",\n \"@crates__hashbrown-0.16.1//:hashbrown\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=indexmap\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.13.0\",\n)\n" } }, - "rpyo3c__pyo3-introspection-0.26.0": { + "crates__is_terminal_polyfill-1.70.2": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "0c3470294ce4d56fa74c996e4244ec3ac04db0c621975993e62ff725844ab509", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/pyo3-introspection/0.26.0/download" + "https://static.crates.io/crates/is_terminal_polyfill/1.70.2/download" ], - "strip_prefix": "pyo3-introspection-0.26.0", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.pyo3-introspection-0.26.0.bazel" + "strip_prefix": "is_terminal_polyfill-1.70.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"is_terminal_polyfill\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=is_terminal_polyfill\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.70.2\",\n)\n" } }, - "rpyo3c__pyo3-macros-0.26.0": { + "crates__itertools-0.14.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "2e64eb489f22fe1c95911b77c44cc41e7c19f3082fc81cce90f657cdc42ffded", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/pyo3-macros/0.26.0/download" + "https://static.crates.io/crates/itertools/0.14.0/download" ], - "strip_prefix": "pyo3-macros-0.26.0", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.pyo3-macros-0.26.0.bazel" + "strip_prefix": "itertools-0.14.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"itertools\",\n deps = [\n \"@crates__either-1.15.0//:either\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"use_alloc\",\n \"use_std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=itertools\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.0\",\n)\n" } }, - "rpyo3c__pyo3-macros-backend-0.26.0": { + "crates__itoa-1.0.17": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "100246c0ecf400b475341b8455a9213344569af29a3c841d29270e53102e0fcf", - "type": "tar.gz", - "urls": [ - "https://static.crates.io/crates/pyo3-macros-backend/0.26.0/download" - ], - "strip_prefix": "pyo3-macros-backend-0.26.0", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.pyo3-macros-backend-0.26.0.bazel" + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/itoa/1.0.17/download" + ], + "strip_prefix": "itoa-1.0.17", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"itoa\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=itoa\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.17\",\n)\n" + } + }, + "crates__memchr-2.8.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/memchr/2.8.0/download" + ], + "strip_prefix": "memchr-2.8.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"memchr\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=memchr\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.8.0\",\n)\n" + } + }, + "crates__once_cell_polyfill-1.70.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/once_cell_polyfill/1.70.2/download" + ], + "strip_prefix": "once_cell_polyfill-1.70.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"once_cell_polyfill\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=once_cell_polyfill\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.70.2\",\n)\n" + } + }, + "crates__percent-encoding-2.3.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/percent-encoding/2.3.2/download" + ], + "strip_prefix": "percent-encoding-2.3.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"percent_encoding\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=percent-encoding\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.3.2\",\n)\n" + } + }, + "crates__proc-macro2-1.0.106": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/proc-macro2/1.0.106/download" + ], + "strip_prefix": "proc-macro2-1.0.106", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"proc_macro2\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:build_script_build\",\n \"@crates__unicode-ident-1.0.24//:unicode_ident\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"proc-macro\",\n \"span-locations\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=proc-macro2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.106\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"proc-macro\",\n \"span-locations\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"proc-macro2\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=proc-macro2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.106\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, - "rpyo3c__quote-1.0.41": { + "crates__pulldown-cmark-0.13.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/quote/1.0.41/download" + "https://static.crates.io/crates/pulldown-cmark/0.13.0/download" ], - "strip_prefix": "quote-1.0.41", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.quote-1.0.41.bazel" + "strip_prefix": "pulldown-cmark-0.13.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pulldown_cmark\",\n deps = [\n \"@crates__bitflags-2.11.0//:bitflags\",\n \"@crates__getopts-0.2.24//:getopts\",\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__pulldown-cmark-0.13.0//:build_script_build\",\n \"@crates__pulldown-cmark-escape-0.11.0//:pulldown_cmark_escape\",\n \"@crates__unicase-2.9.0//:unicase\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"getopts\",\n \"html\",\n \"pulldown-cmark-escape\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pulldown-cmark\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.13.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"getopts\",\n \"html\",\n \"pulldown-cmark-escape\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"pulldown-cmark\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pulldown-cmark\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.13.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, - "rpyo3c__ryu-1.0.20": { + "crates__pulldown-cmark-escape-0.11.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/ryu/1.0.20/download" + "https://static.crates.io/crates/pulldown-cmark-escape/0.11.0/download" ], - "strip_prefix": "ryu-1.0.20", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.ryu-1.0.20.bazel" + "strip_prefix": "pulldown-cmark-escape-0.11.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pulldown_cmark_escape\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pulldown-cmark-escape\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.11.0\",\n)\n" } }, - "rpyo3c__scroll-0.13.0": { + "crates__quote-1.0.44": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "c1257cd4248b4132760d6524d6dda4e053bc648c9070b960929bf50cfb1e7add", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/scroll/0.13.0/download" + "https://static.crates.io/crates/quote/1.0.44/download" ], - "strip_prefix": "scroll-0.13.0", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.scroll-0.13.0.bazel" + "strip_prefix": "quote-1.0.44", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"quote\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.44//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"proc-macro\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=quote\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.44\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"proc-macro\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"quote\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=quote\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.44\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, - "rpyo3c__scroll_derive-0.13.1": { + "crates__rustc-hash-2.1.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "ed76efe62313ab6610570951494bdaa81568026e0318eaa55f167de70eeea67d", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/scroll_derive/0.13.1/download" + "https://static.crates.io/crates/rustc-hash/2.1.1/download" ], - "strip_prefix": "scroll_derive-0.13.1", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.scroll_derive-0.13.1.bazel" + "strip_prefix": "rustc-hash-2.1.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rustc_hash\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rustc-hash\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.1.1\",\n)\n" } }, - "rpyo3c__serde-1.0.228": { + "crates__serde-1.0.228": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, "sha256": "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e", "type": "tar.gz", "urls": [ "https://static.crates.io/crates/serde/1.0.228/download" ], "strip_prefix": "serde-1.0.228", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.serde-1.0.228.bazel" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde\",\n deps = [\n \"@crates__serde-1.0.228//:build_script_build\",\n \"@crates__serde_core-1.0.228//:serde_core\",\n ],\n proc_macro_deps = [\n \"@crates__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"derive\",\n \"serde_derive\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.228\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"derive\",\n \"serde_derive\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.228\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, - "rpyo3c__serde_core-1.0.228": { + "crates__serde_core-1.0.228": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, "sha256": "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad", "type": "tar.gz", "urls": [ "https://static.crates.io/crates/serde_core/1.0.228/download" ], "strip_prefix": "serde_core-1.0.228", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.serde_core-1.0.228.bazel" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_core\",\n deps = [\n \"@crates__serde_core-1.0.228//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"result\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.228\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"result\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde_core\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.228\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, - "rpyo3c__serde_derive-1.0.228": { + "crates__serde_derive-1.0.228": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, "sha256": "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79", "type": "tar.gz", "urls": [ "https://static.crates.io/crates/serde_derive/1.0.228/download" ], "strip_prefix": "serde_derive-1.0.228", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.serde_derive-1.0.228.bazel" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"serde_derive\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.44//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.228\",\n)\n" + } + }, + "crates__serde_json-1.0.149": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_json/1.0.149/download" + ], + "strip_prefix": "serde_json-1.0.149", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_json\",\n deps = [\n \"@crates__itoa-1.0.17//:itoa\",\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__serde_core-1.0.228//:serde_core\",\n \"@crates__serde_json-1.0.149//:build_script_build\",\n \"@crates__zmij-1.0.21//:zmij\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_json\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.149\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde_json\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_json\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.149\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crates__serde_spanned-0.6.9": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_spanned/0.6.9/download" + ], + "strip_prefix": "serde_spanned-0.6.9", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_spanned\",\n deps = [\n \"@crates__serde-1.0.228//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_spanned\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.9\",\n)\n" + } + }, + "crates__smallvec-1.15.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/smallvec/1.15.1/download" + ], + "strip_prefix": "smallvec-1.15.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"smallvec\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=smallvec\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.15.1\",\n)\n" + } + }, + "crates__strck-1.0.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "42316e70da376f3d113a68d138a60d8a9883c604fe97942721ec2068dab13a9f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/strck/1.0.0/download" + ], + "strip_prefix": "strck-1.0.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"strck\",\n deps = [\n \"@crates__unicode-ident-1.0.24//:unicode_ident\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"ident\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=strck\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.0\",\n)\n" + } + }, + "crates__strsim-0.11.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/strsim/0.11.1/download" + ], + "strip_prefix": "strsim-0.11.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"strsim\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=strsim\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.11.1\",\n)\n" + } + }, + "crates__syn-2.0.117": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/syn/2.0.117/download" + ], + "strip_prefix": "syn-2.0.117", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"syn\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.44//:quote\",\n \"@crates__unicode-ident-1.0.24//:unicode_ident\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"clone-impls\",\n \"default\",\n \"derive\",\n \"extra-traits\",\n \"full\",\n \"parsing\",\n \"printing\",\n \"proc-macro\",\n \"visit-mut\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=syn\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.0.117\",\n)\n" + } + }, + "crates__syn-inline-mod-0.6.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2fa6dca1fdb7b2ed46dd534a326725419d4fb10f23d8c85a8b2860e5eb25d0f9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/syn-inline-mod/0.6.0/download" + ], + "strip_prefix": "syn-inline-mod-0.6.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"syn_inline_mod\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=syn-inline-mod\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.0\",\n)\n" + } + }, + "crates__toml-0.8.23": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/toml/0.8.23/download" + ], + "strip_prefix": "toml-0.8.23", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"toml\",\n deps = [\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_spanned-0.6.9//:serde_spanned\",\n \"@crates__toml_datetime-0.6.11//:toml_datetime\",\n \"@crates__toml_edit-0.22.27//:toml_edit\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"display\",\n \"parse\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=toml\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.23\",\n)\n" + } + }, + "crates__toml_datetime-0.6.11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/toml_datetime/0.6.11/download" + ], + "strip_prefix": "toml_datetime-0.6.11", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"toml_datetime\",\n deps = [\n \"@crates__serde-1.0.228//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=toml_datetime\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.11\",\n)\n" + } + }, + "crates__toml_edit-0.22.27": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/toml_edit/0.22.27/download" + ], + "strip_prefix": "toml_edit-0.22.27", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"toml_edit\",\n deps = [\n \"@crates__indexmap-2.13.0//:indexmap\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_spanned-0.6.9//:serde_spanned\",\n \"@crates__toml_datetime-0.6.11//:toml_datetime\",\n \"@crates__toml_write-0.1.2//:toml_write\",\n \"@crates__winnow-0.7.14//:winnow\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"display\",\n \"parse\",\n \"serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=toml_edit\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.22.27\",\n)\n" + } + }, + "crates__toml_write-0.1.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/toml_write/0.1.2/download" + ], + "strip_prefix": "toml_write-0.1.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"toml_write\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=toml_write\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.2\",\n)\n" + } + }, + "crates__unicase-2.9.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicase/2.9.0/download" + ], + "strip_prefix": "unicase-2.9.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"unicase\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=unicase\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.9.0\",\n)\n" + } + }, + "crates__unicode-ident-1.0.24": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-ident/1.0.24/download" + ], + "strip_prefix": "unicode-ident-1.0.24", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"unicode_ident\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=unicode-ident\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.24\",\n)\n" + } + }, + "crates__unicode-width-0.2.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-width/0.2.2/download" + ], + "strip_prefix": "unicode-width-0.2.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"unicode_width\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"cjk\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=unicode-width\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.2\",\n)\n" } }, - "rpyo3c__serde_json-1.0.145": { + "crates__utf8parse-0.2.2": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/serde_json/1.0.145/download" + "https://static.crates.io/crates/utf8parse/0.2.2/download" ], - "strip_prefix": "serde_json-1.0.145", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.serde_json-1.0.145.bazel" + "strip_prefix": "utf8parse-0.2.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"utf8parse\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=utf8parse\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.2\",\n)\n" } }, - "rpyo3c__syn-2.0.106": { + "crates__windows-link-0.2.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/syn/2.0.106/download" + "https://static.crates.io/crates/windows-link/0.2.1/download" ], - "strip_prefix": "syn-2.0.106", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.syn-2.0.106.bazel" + "strip_prefix": "windows-link-0.2.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_link\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-link\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.1\",\n)\n" } }, - "rpyo3c__target-lexicon-0.13.3": { + "crates__windows-sys-0.61.2": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/target-lexicon/0.13.3/download" + "https://static.crates.io/crates/windows-sys/0.61.2/download" ], - "strip_prefix": "target-lexicon-0.13.3", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.target-lexicon-0.13.3.bazel" + "strip_prefix": "windows-sys-0.61.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_sys\",\n deps = [\n \"@crates__windows-link-0.2.1//:windows_link\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"Win32\",\n \"Win32_Foundation\",\n \"Win32_System\",\n \"Win32_System_Console\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.61.2\",\n)\n" } }, - "rpyo3c__unicode-ident-1.0.19": { + "crates__winnow-0.7.14": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/unicode-ident/1.0.19/download" + "https://static.crates.io/crates/winnow/0.7.14/download" ], - "strip_prefix": "unicode-ident-1.0.19", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.unicode-ident-1.0.19.bazel" + "strip_prefix": "winnow-0.7.14", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"winnow\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=winnow\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.14\",\n)\n" } }, - "rpyo3c__unindent-0.2.4": { + "crates__zmij-1.0.21": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "sha256": "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3", + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/unindent/0.2.4/download" + "https://static.crates.io/crates/zmij/1.0.21/download" ], - "strip_prefix": "unindent-0.2.4", - "build_file": "@@rules_rust_pyo3+//3rdparty/crates:BUILD.unindent-0.2.4.bazel" + "strip_prefix": "zmij-1.0.21", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'dv'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"zmij\",\n deps = [\n \"@crates__zmij-1.0.21//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zmij\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.21\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"zmij\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zmij\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.21\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } } }, "moduleExtensionMetadata": { - "explicitRootModuleDirectDeps": [ - "rpyo3c", - "rpyo3c__pyo3-0.26.0", - "rpyo3c__pyo3-ffi-0.26.0", - "rpyo3c__pyo3-introspection-0.26.0" - ], - "explicitRootModuleDirectDevDeps": [], "useAllRepos": "NO", "reproducible": false }, "recordedRepoMappingEntries": [ [ - "rules_rust+", + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "rules_cc+", "bazel_tools", "bazel_tools" ], [ - "rules_rust_pyo3+", + "rules_cc+", + "rules_cc", + "rules_cc+" + ], + [ + "rules_rust+", + "bazel_features", + "bazel_features+" + ], + [ + "rules_rust+", "bazel_skylib", "bazel_skylib+" ], [ - "rules_rust_pyo3+", + "rules_rust+", "bazel_tools", "bazel_tools" ], [ - "rules_rust_pyo3+", - "rpyo3c", - "rules_rust_pyo3++rust_ext+rpyo3c" + "rules_rust+", + "rules_cc", + "rules_cc+" ], [ - "rules_rust_pyo3+", + "rules_rust+", "rules_rust", "rules_rust+" ] diff --git a/cpp/BUILD.bazel b/cpp/BUILD.bazel index fa58de6..9441094 100644 --- a/cpp/BUILD.bazel +++ b/cpp/BUILD.bazel @@ -1,55 +1,20 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_binary") -load("@rules_rust//rust:defs.bzl", "rust_shared_library", "rust_static_library") +load("@rules_cc//cc:defs.bzl", "cc_library") package(default_visibility = ["//visibility:public"]) -# ============================================================================= -# C/C++ Interface -# ============================================================================= - -# C/C++ headers -cc_library( +alias( name = "dv_headers", - hdrs = [ - "include/dv_c.h", - "include/dv.hpp", - ], - includes = ["include"], + actual = ":dv_cpp", ) -# Linkable library for C/C++ that exposes the Rust C ABI. -cc_library( +alias( name = "dv_c", - hdrs = ["include/dv_c.h"], - deps = ["//cpp:dv_capi_static"], - includes = ["include"], + actual = "//generated/diplomat/c:dv_diplomat_c", ) cc_library( name = "dv_cpp", hdrs = ["include/dv.hpp"], - deps = [":dv_c"], includes = ["include"], -) - -# ============================================================================= -# C-compatible Rust Library -# ============================================================================= - -# C ABI shared library for C/C++ consumers -rust_shared_library( - name = "dv_capi_shared", - srcs = ["capi/src/lib.rs"], - crate_name = "dv_capi", - edition = "2021", - deps = ["//core:dv_rs"], -) - -# Static variant for C/C++ to link without runtime dylib. -rust_static_library( - name = "dv_capi_static", - srcs = ["capi/src/lib.rs"], - crate_name = "dv_capi", - edition = "2021", - deps = ["//core:dv_rs"], + deps = ["//generated/diplomat/cpp:dv_diplomat_cpp"], ) diff --git a/cpp/README.md b/cpp/README.md index 86ed3f5..fbe77d4 100644 --- a/cpp/README.md +++ b/cpp/README.md @@ -1,13 +1,10 @@ # dv C/C++ Bindings -This folder contains C and C++ headers wrapping the Rust core via a small C ABI shim. +The Bazel-facing C/C++ bindings now come from Diplomat-generated sources under `generated/diplomat/`. -See full docs under docs site pages “C” and “C++”. +- C target alias: `//cpp:dv_c` +- C++ target alias: `//cpp:dv_cpp` -Quick usage: -- Bazel: `bazel run //cpp:demo_c` and `bazel run //cpp:demo_cpp` -- CMake: `cmake -S . -B build && cmake --build build --target dv_c_demo dv_cpp_demo` - -Headers in `cpp/include`: -- `dv_c.h`: C API -- `dv.hpp`: C++ RAII wrapper +See: +- `/Users/alex/code/alextac98/dv/generated/diplomat/c` +- `/Users/alex/code/alextac98/dv/generated/diplomat/cpp` diff --git a/cpp/capi/Cargo.toml b/cpp/capi/Cargo.toml deleted file mode 100644 index 4227a53..0000000 --- a/cpp/capi/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "dv_capi" -version = "0.1.0" -edition = "2021" -authors = ["Alex Tacescu "] -license = "Apache-2.0" -description = "C ABI bindings for dv (DimensionalVariable)" -publish = false - -[lib] -name = "dv_capi" -crate-type = ["staticlib", "cdylib"] -path = "src/lib.rs" - -[dependencies] -dv = { path = "../../core" } diff --git a/cpp/capi/src/lib.rs b/cpp/capi/src/lib.rs deleted file mode 100644 index 3e82d3a..0000000 --- a/cpp/capi/src/lib.rs +++ /dev/null @@ -1,345 +0,0 @@ -//! C ABI for dv core. - -use std::ffi::{CStr, CString}; -use std::os::raw::{c_char, c_double, c_int}; -use std::ptr; - -use dv_rs::{units, DimensionalVariable}; - -// Opaque handle for C API -#[repr(C)] -pub struct dv_var { - inner: DimensionalVariable, -} - -// Thread-local last error string for C API callers. -thread_local! { - static LAST_ERROR: std::cell::RefCell> = const { std::cell::RefCell::new(None) }; -} - -fn set_last_error(msg: String) { - LAST_ERROR.with(|e| *e.borrow_mut() = Some(msg)); -} - -#[no_mangle] -pub extern "C" fn dv_last_error_message() -> *const c_char { - LAST_ERROR.with(|e| { - if let Some(ref s) = *e.borrow() { - // Leak a CString per call; caller should copy immediately. We can reuse a TLS buffer if needed. - let c = CString::new(s.as_str()).unwrap_or_else(|_| CString::new("invalid error").unwrap()); - let ptr = c.as_ptr(); - std::mem::forget(c); - ptr - } else { - ptr::null() - } - }) -} - -#[no_mangle] -pub extern "C" fn dv_free_cstring(s: *mut c_char) { - if s.is_null() { return; } - unsafe { let _ = CString::from_raw(s); } -} - -#[no_mangle] -pub extern "C" fn dv_base_units_size() -> usize { - units::BASE_UNITS_SIZE -} - -// Create a variable from value and unit string. -#[no_mangle] -pub extern "C" fn dv_var_new(value: c_double, unit_str: *const c_char) -> *mut dv_var { - if unit_str.is_null() { - set_last_error("unit_str was null".to_string()); - return ptr::null_mut(); - } - let cstr = unsafe { CStr::from_ptr(unit_str) }; - let unit = match cstr.to_str() { - Ok(s) => s, - Err(_) => { - set_last_error("unit_str not valid UTF-8".to_string()); - return ptr::null_mut(); - } - }; - match DimensionalVariable::new(value, unit) { - Ok(inner) => Box::into_raw(Box::new(dv_var { inner })), - Err(e) => { - set_last_error(e); - ptr::null_mut() - } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_free(ptr_: *mut dv_var) { - if ptr_.is_null() { return; } - unsafe { let _ = Box::from_raw(ptr_); } -} - -#[no_mangle] -pub extern "C" fn dv_var_value(ptr_: *const dv_var) -> c_double { - if ptr_.is_null() { return f64::NAN; } - let v = unsafe { &(*ptr_) }; - v.inner.value() -} - -// Returns 1 if unitless, 0 otherwise. -#[no_mangle] -pub extern "C" fn dv_var_is_unitless(ptr_: *const dv_var) -> c_int { - if ptr_.is_null() { return 0; } - let v = unsafe { &(*ptr_) }; - if v.inner.is_unitless() { 1 } else { 0 } -} - -// Attempt to convert to a target unit; on success stores into out_value and returns 1. On failure, returns 0 and sets last error. -#[no_mangle] -pub extern "C" fn dv_var_value_in(ptr_: *const dv_var, unit_str: *const c_char, out_value: *mut c_double) -> c_int { - if ptr_.is_null() { set_last_error("null dv_var".to_string()); return 0; } - if unit_str.is_null() { set_last_error("unit_str was null".to_string()); return 0; } - if out_value.is_null() { set_last_error("out_value was null".to_string()); return 0; } - let v = unsafe { &(*ptr_) }; - let cstr = unsafe { CStr::from_ptr(unit_str) }; - let unit = match cstr.to_str() { Ok(s) => s, Err(_) => { set_last_error("unit_str not valid UTF-8".to_string()); return 0; } }; - match v.inner.value_in(unit) { - Ok(val) => { unsafe { *out_value = val; } 1 }, - Err(e) => { set_last_error(e); 0 } - } -} - -// Arithmetic operations. All return a newly allocated dv_var* or null on error. -#[no_mangle] -pub extern "C" fn dv_var_add(a: *const dv_var, b: *const dv_var) -> *mut dv_var { - if a.is_null() || b.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - let b = unsafe { &(*b) }; - match a.inner.try_add(&b.inner) { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: v })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_sub(a: *const dv_var, b: *const dv_var) -> *mut dv_var { - if a.is_null() || b.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - let b = unsafe { &(*b) }; - match a.inner.try_sub(&b.inner) { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: v })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_mul(a: *const dv_var, b: *const dv_var) -> *mut dv_var { - if a.is_null() || b.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - let b = unsafe { &(*b) }; - let v = &a.inner * &b.inner; - Box::into_raw(Box::new(dv_var { inner: v })) -} - -#[no_mangle] -pub extern "C" fn dv_var_div(a: *const dv_var, b: *const dv_var) -> *mut dv_var { - if a.is_null() || b.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - let b = unsafe { &(*b) }; - let v = &a.inner / &b.inner; - Box::into_raw(Box::new(dv_var { inner: v })) -} - -#[no_mangle] -pub extern "C" fn dv_var_mul_scalar(a: *const dv_var, s: c_double) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - let v = &a.inner * s; - Box::into_raw(Box::new(dv_var { inner: v })) -} - -#[no_mangle] -pub extern "C" fn dv_var_div_scalar(a: *const dv_var, s: c_double) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - let v = &a.inner / s; - Box::into_raw(Box::new(dv_var { inner: v })) -} - -#[no_mangle] -pub extern "C" fn dv_var_powi(a: *const dv_var, exp: c_int) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - let v = a.inner.powi(exp as i32); - Box::into_raw(Box::new(dv_var { inner: v })) -} - -#[no_mangle] -pub extern "C" fn dv_var_powf(a: *const dv_var, exp: c_double) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - match a.inner.powf(exp) { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: v })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_sqrt(a: *const dv_var) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - match a.inner.sqrt() { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: v })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_ln(a: *const dv_var) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - match a.inner.ln() { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: DimensionalVariable { value: v, unit: [0.0; units::BASE_UNITS_SIZE] } })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_log2(a: *const dv_var) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - match a.inner.log2() { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: DimensionalVariable { value: v, unit: [0.0; units::BASE_UNITS_SIZE] } })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_log10(a: *const dv_var) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - match a.inner.log10() { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: DimensionalVariable { value: v, unit: [0.0; units::BASE_UNITS_SIZE] } })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_sin(a: *const dv_var) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - match a.inner.sin() { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: DimensionalVariable { value: v, unit: [0.0; units::BASE_UNITS_SIZE] } })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_cos(a: *const dv_var) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - match a.inner.cos() { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: DimensionalVariable { value: v, unit: [0.0; units::BASE_UNITS_SIZE] } })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_tan(a: *const dv_var) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - match a.inner.tan() { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: DimensionalVariable { value: v, unit: [0.0; units::BASE_UNITS_SIZE] } })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_neg(a: *const dv_var) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - let v = a.inner.neg(); - Box::into_raw(Box::new(dv_var { inner: v })) -} - -#[no_mangle] -pub extern "C" fn dv_var_abs(a: *const dv_var) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - let v = a.inner.abs(); - Box::into_raw(Box::new(dv_var { inner: v })) -} - -#[no_mangle] -pub extern "C" fn dv_var_asin(a: *const dv_var) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - match a.inner.asin() { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: v })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_acos(a: *const dv_var) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - match a.inner.acos() { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: v })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_var_atan(a: *const dv_var) -> *mut dv_var { - if a.is_null() { set_last_error("null operand".to_string()); return ptr::null_mut(); } - let a = unsafe { &(*a) }; - match a.inner.atan() { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: v })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -// Free-standing trigonometric functions that take raw f64 and return angle in radians - -/// Convert a dv_var to a string representation. -/// Returns a newly allocated C string that must be freed with dv_free_cstring. -/// Returns null on error. -#[no_mangle] -pub extern "C" fn dv_var_to_string(ptr_: *const dv_var) -> *mut c_char { - if ptr_.is_null() { - set_last_error("null dv_var".to_string()); - return ptr::null_mut(); - } - let v = unsafe { &(*ptr_) }; - let s = v.inner.to_string(); - match CString::new(s) { - Ok(c) => c.into_raw(), - Err(_) => { - set_last_error("failed to create C string".to_string()); - ptr::null_mut() - } - } -} - -#[no_mangle] -pub extern "C" fn dv_asin(x: c_double) -> *mut dv_var { - match dv_rs::asin(x) { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: v })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_acos(x: c_double) -> *mut dv_var { - match dv_rs::acos(x) { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: v })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} - -#[no_mangle] -pub extern "C" fn dv_atan(x: c_double) -> *mut dv_var { - match dv_rs::atan(x) { - Ok(v) => Box::into_raw(Box::new(dv_var { inner: v })), - Err(e) => { set_last_error(e); ptr::null_mut() } - } -} diff --git a/cpp/include/dv.hpp b/cpp/include/dv.hpp index 4215618..6a507cc 100644 --- a/cpp/include/dv.hpp +++ b/cpp/include/dv.hpp @@ -1,102 +1,122 @@ #pragma once -#include "dv_c.h" + +#include "DimensionalVariable.hpp" + +#include #include #include -#include +#include namespace dv { inline std::string last_error() { - const char* msg = dv_last_error_message(); - return msg ? std::string(msg) : std::string(); + return "dv operation failed"; +} + +template +inline T unwrap_or_throw(diplomat::result&& result, const char* msg = "dv operation failed") { + auto v = std::move(result).ok(); + if (!v.has_value()) { + throw std::runtime_error(msg); + } + return std::move(*v); +} + +template +inline T unwrap_utf8_and_throw( + diplomat::result, diplomat::Utf8Error>&& result, + const char* msg = "dv operation failed" +) { + auto outer = std::move(result).ok(); + if (!outer.has_value()) { + throw std::runtime_error("invalid UTF-8"); + } + auto inner = std::move(*outer).ok(); + if (!inner.has_value()) { + throw std::runtime_error(msg); + } + return std::move(*inner); } class DV { public: - DV() : ptr_(nullptr) {} - DV(double value, const char* unit) : ptr_(dv_var_new(value, unit)) { - if (!ptr_) throw std::runtime_error(last_error()); - } + DV() = default; + + DV(double value, const char* unit) + : ptr_(unwrap_utf8_and_throw>(DimensionalVariable::new_(value, unit))) {} + DV(const DV&) = delete; DV& operator=(const DV&) = delete; - DV(DV&& o) noexcept : ptr_(o.ptr_) { o.ptr_ = nullptr; } - DV& operator=(DV&& o) noexcept { if (this != &o) { reset(); ptr_ = o.ptr_; o.ptr_ = nullptr; } return *this; } - ~DV() { reset(); } + DV(DV&&) noexcept = default; + DV& operator=(DV&&) noexcept = default; + ~DV() = default; - void reset() { if (ptr_) { dv_var_free(ptr_); ptr_ = nullptr; } } - bool valid() const { return ptr_ != nullptr; } - const dv_var* cptr() const { return ptr_; } - dv_var* ptr() { return ptr_; } + double value() const { return ptr_->value(); } + bool is_unitless() const { return ptr_->is_unitless(); } - double value() const { return dv_var_value(ptr_); } - bool is_unitless() const { return dv_var_is_unitless(ptr_) != 0; } double value_in(const char* unit) const { - double out = 0.0; - if (!dv_var_value_in(ptr_, unit, &out)) { - throw std::runtime_error(last_error()); - } - return out; + return unwrap_utf8_and_throw(ptr_->value_in(unit)); } - // Arithmetic: return new objects - friend DV operator+(const DV& a, const DV& b) { return from_new(dv_var_add(a.cptr(), b.cptr())); } - friend DV operator-(const DV& a, const DV& b) { return from_new(dv_var_sub(a.cptr(), b.cptr())); } - friend DV operator*(const DV& a, const DV& b) { return from_new(dv_var_mul(a.cptr(), b.cptr())); } - friend DV operator/(const DV& a, const DV& b) { return from_new(dv_var_div(a.cptr(), b.cptr())); } - - friend DV operator*(const DV& a, double s) { return from_new(dv_var_mul_scalar(a.cptr(), s)); } - friend DV operator*(double s, const DV& a) { return from_new(dv_var_mul_scalar(a.cptr(), s)); } - friend DV operator/(const DV& a, double s) { return from_new(dv_var_div_scalar(a.cptr(), s)); } - - DV powi(int e) const { return from_new(dv_var_powi(cptr(), e)); } - DV powf(double e) const { return from_new(dv_var_powf(cptr(), e)); } - DV sqrt() const { return from_new(dv_var_sqrt(cptr())); } - DV ln() const { return from_new(dv_var_ln(cptr())); } - DV log2() const { return from_new(dv_var_log2(cptr())); } - DV log10() const { return from_new(dv_var_log10(cptr())); } - DV sin() const { return from_new(dv_var_sin(cptr())); } - DV cos() const { return from_new(dv_var_cos(cptr())); } - DV tan() const { return from_new(dv_var_tan(cptr())); } - DV abs() const { return from_new(dv_var_abs(cptr())); } - friend DV operator-(const DV& a) { return from_new(dv_var_neg(a.cptr())); } - - /// Convert to string representation (e.g., "9.81 m/s^2") - std::string to_string() const { - char* s = dv_var_to_string(ptr_); - if (!s) throw std::runtime_error(last_error()); - std::string result(s); - dv_free_cstring(s); - return result; + DV powi(int e) const { return from_ptr(ptr_->powi(e)); } + DV powf(double e) const { return from_ptr(unwrap_or_throw>(ptr_->powf(e))); } + DV sqrt() const { return from_ptr(unwrap_or_throw>(ptr_->sqrt())); } + DV ln() const { return from_ptr(unwrap_or_throw>(ptr_->ln())); } + DV log2() const { return from_ptr(unwrap_or_throw>(ptr_->log2())); } + DV log10() const { return from_ptr(unwrap_or_throw>(ptr_->log10())); } + DV sin() const { return from_ptr(unwrap_or_throw>(ptr_->sin())); } + DV cos() const { return from_ptr(unwrap_or_throw>(ptr_->cos())); } + DV tan() const { return from_ptr(unwrap_or_throw>(ptr_->tan())); } + DV abs() const { return from_ptr(ptr_->abs()); } + DV asin() const { return from_ptr(unwrap_or_throw>(ptr_->asin())); } + DV acos() const { return from_ptr(unwrap_or_throw>(ptr_->acos())); } + DV atan() const { return from_ptr(unwrap_or_throw>(ptr_->atan())); } + + std::string to_string() const { return unwrap_or_throw(ptr_->to_string()); } + + friend DV operator+(const DV& a, const DV& b) { + return from_ptr(unwrap_or_throw>(a.ptr_->add(*b.ptr_))); } - - /// Stream output operator - friend std::ostream& operator<<(std::ostream& os, const DV& v) { - return os << v.to_string(); + friend DV operator-(const DV& a, const DV& b) { + return from_ptr(unwrap_or_throw>(a.ptr_->sub(*b.ptr_))); } - - // Inverse trigonometric functions (return angle in radians) - DV asin() const { return from_new(dv_var_asin(cptr())); } - DV acos() const { return from_new(dv_var_acos(cptr())); } - DV atan() const { return from_new(dv_var_atan(cptr())); } + friend DV operator*(const DV& a, const DV& b) { + return from_ptr(a.ptr_->mul(*b.ptr_)); + } + friend DV operator/(const DV& a, const DV& b) { + return from_ptr(a.ptr_->div(*b.ptr_)); + } + friend DV operator*(const DV& a, double s) { return from_ptr(a.ptr_->mul_scalar(s)); } + friend DV operator*(double s, const DV& a) { return from_ptr(a.ptr_->mul_scalar(s)); } + friend DV operator/(const DV& a, double s) { return from_ptr(a.ptr_->div_scalar(s)); } + friend DV operator/(double s, const DV& a) { return from_ptr(a.ptr_->rdiv_scalar(s)); } + friend DV operator-(const DV& a) { return from_ptr(a.ptr_->neg()); } + + friend bool operator==(const DV& a, const DV& b) { return a.ptr_->equals(*b.ptr_); } + friend bool operator!=(const DV& a, const DV& b) { return a.ptr_->not_equals(*b.ptr_); } + friend bool operator<(const DV& a, const DV& b) { return unwrap_or_throw(a.ptr_->less_than(*b.ptr_)); } + friend bool operator<=(const DV& a, const DV& b) { return unwrap_or_throw(a.ptr_->less_equal(*b.ptr_)); } + friend bool operator>(const DV& a, const DV& b) { return unwrap_or_throw(a.ptr_->greater_than(*b.ptr_)); } + friend bool operator>=(const DV& a, const DV& b) { return unwrap_or_throw(a.ptr_->greater_equal(*b.ptr_)); } private: - static DV from_new(dv_var* p) { - if (!p) throw std::runtime_error(last_error()); - DV v; v.ptr_ = p; return v; + explicit DV(std::unique_ptr p) : ptr_(std::move(p)) {} + + static DV from_ptr(std::unique_ptr p) { + if (!p) throw std::runtime_error("dv operation failed"); + return DV(std::move(p)); } - dv_var* ptr_; + std::unique_ptr ptr_; friend DV asin(double x); friend DV acos(double x); friend DV atan(double x); }; -inline size_t base_units_size() { return dv_base_units_size(); } - -// Free-standing inverse trigonometric functions (take raw double, return angle in radians) -inline DV asin(double x) { return DV::from_new(dv_asin(x)); } -inline DV acos(double x) { return DV::from_new(dv_acos(x)); } -inline DV atan(double x) { return DV::from_new(dv_atan(x)); } +inline size_t base_units_size() { return DimensionalVariable::base_units_size(); } +inline DV asin(double x) { return DV::from_ptr(unwrap_or_throw>(DimensionalVariable::asin_scalar(x))); } +inline DV acos(double x) { return DV::from_ptr(unwrap_or_throw>(DimensionalVariable::acos_scalar(x))); } +inline DV atan(double x) { return DV::from_ptr(unwrap_or_throw>(DimensionalVariable::atan_scalar(x))); } } // namespace dv diff --git a/cpp/include/dv_c.h b/cpp/include/dv_c.h deleted file mode 100644 index e19af48..0000000 --- a/cpp/include/dv_c.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef DV_C_H -#define DV_C_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef struct dv_var dv_var; // opaque - -// Error handling: call after a function returns failure to get a message (UTF-8). The pointer is valid until next API call. -const char* dv_last_error_message(void); - -// Util -size_t dv_base_units_size(void); -void dv_free_cstring(char* s); // Free a string returned by dv_var_to_string - -// Lifecycle -dv_var* dv_var_new(double value, const char* unit_str); -void dv_var_free(dv_var* v); - -// Accessors -double dv_var_value(const dv_var* v); -int dv_var_is_unitless(const dv_var* v); -int dv_var_value_in(const dv_var* v, const char* unit_str, double* out_value); -char* dv_var_to_string(const dv_var* v); // Returns allocated string, must free with dv_free_cstring - -// Arithmetic -dv_var* dv_var_add(const dv_var* a, const dv_var* b); -dv_var* dv_var_sub(const dv_var* a, const dv_var* b); -dv_var* dv_var_mul(const dv_var* a, const dv_var* b); -dv_var* dv_var_div(const dv_var* a, const dv_var* b); - -// Scalar ops -dv_var* dv_var_mul_scalar(const dv_var* a, double s); -dv_var* dv_var_div_scalar(const dv_var* a, double s); - -// Powers -dv_var* dv_var_powi(const dv_var* a, int exp); -dv_var* dv_var_powf(const dv_var* a, double exp); -dv_var* dv_var_sqrt(const dv_var* a); -dv_var* dv_var_ln(const dv_var* a); -dv_var* dv_var_log2(const dv_var* a); -dv_var* dv_var_log10(const dv_var* a); -dv_var* dv_var_sin(const dv_var* a); -dv_var* dv_var_cos(const dv_var* a); -dv_var* dv_var_tan(const dv_var* a); -dv_var* dv_var_neg(const dv_var* a); -dv_var* dv_var_abs(const dv_var* a); - -// Inverse trigonometric functions (return angle in radians) -dv_var* dv_var_asin(const dv_var* a); -dv_var* dv_var_acos(const dv_var* a); -dv_var* dv_var_atan(const dv_var* a); - -// Free-standing inverse trigonometric functions (take raw double, return angle in radians) -dv_var* dv_asin(double x); -dv_var* dv_acos(double x); -dv_var* dv_atan(double x); - -#ifdef __cplusplus -} -#endif - -#endif // DV_C_H diff --git a/docs/docs/c_cpp.md b/docs/docs/c_cpp.md index 492ce02..a1da79a 100644 --- a/docs/docs/c_cpp.md +++ b/docs/docs/c_cpp.md @@ -5,36 +5,23 @@ sidebar_position: 3 # DV with C/C++ -DV has been designed to work in either C or C++, with either Bazel or CMake as a build system. +DV has been designed to work in either C or C++, and the primary supported build path is Bazel. ## A note about build systems We currently do not publish C/C++ libraries, so you will need to build the library from scratch every time (see [GH-32](https://github.com/alextac98/dv/issues/32)). -For CMake, you'll need to make sure that Cargo is installed on the system you intend to build. Follow instructions here: https://rust-lang.org/tools/install - For Bazel, make sure you properly have both Rust and C/C++ toolchains (ideally hermetic) set up and running. We recommend [llvm-toolchains](https://github.com/bazel-contrib/toolchains_llvm) for C/C++ hermeticity. ## C++ -DV exposes a C API and a thin C++ wrapper (`dv.hpp`). You can use it from Bazel or CMake. +DV exposes generated C and C++ bindings via Diplomat. ```cpp -#include "dv.hpp" -#include -#include +#include "DimensionalVariable.hpp" int main() { - dv::DV mass(10.0, "kg"); - dv::DV accel(9.81, "m/s^2"); - dv::DV force = mass * accel; // N - std::cout << "force = " << force.value_in("lbf") << " lbf\n"; - - // Working with angles - dv::DV angle_rad(M_PI / 4.0, "rad"); - dv::DV angle_deg(45.0, "deg"); - std::cout << "45 degrees = " << angle_deg.value_in("rad") << " radians\n"; - + // See examples/cpp/main.cpp for the generated Diplomat C++ API with result handling. return 0; } @@ -57,40 +44,25 @@ load("@rules_cc//cc:defs.bzl", "cc_binary") cc_binary( name = "example", srcs = ["main.cpp"], - deps = ["@dv//cpp:dv_cpp"], # C++ wrapper + deps = ["@dv//cpp:dv_cpp"], # alias to generated Diplomat C++ bindings ) ``` -### CMake with C++ - -```cmake title="CMakeLists.txt" -include(FetchContent) -FetchContent_Declare(dv GIT_REPOSITORY https://github.com/alextac98/dv.git GIT_TAG main) -FetchContent_MakeAvailable(dv) - -add_executable(example main.cpp) -target_link_libraries(example PRIVATE dv_cpp) -``` - ### Static vs dynamic linking - Default in this repo uses static linking to avoid runtime `rpath` issues. -- If you choose dynamic linking on macOS, set `install_name` to `@rpath/libdv_capi.dylib` and add an rpath (e.g., `@loader_path`). +- If you choose dynamic linking on macOS, ensure your produced shared library install name/rpath are configured appropriately for your build system. ## C -Use the C header `dv_c.h` for a simple opaque handle API. +Use the generated C header `DimensionalVariable.h` for the opaque handle API. ```c -#include "dv_c.h" -#include -int main(){ - dv_var* d = dv_var_new(10.0, "m"); - dv_var* t = dv_var_new(2.0, "s"); - dv_var* v = dv_var_div(d, t); - double mph = 0.0; dv_var_value_in(v, "mi/hr", &mph); - printf("%f\n", mph); - dv_var_free(v); dv_var_free(d); dv_var_free(t); +#include "DimensionalVariable.h" +int main(void){ + // See examples/c/main.c for Diplomat-generated result structs and string views. + // The generated API names are prefixed with `DimensionalVariable_*`. + return 0; } ``` @@ -115,13 +87,6 @@ cc_binary( ) ``` -### CMake with C - -```cmake title="CMakeLists.txt" -include(FetchContent) -FetchContent_Declare(dv GIT_REPOSITORY https://github.com/alextac98/dv.git GIT_TAG main) -FetchContent_MakeAvailable(dv) +### CMake -add_executable(example_c main.c) -target_link_libraries(example_c PRIVATE dv_c) -``` +CMake support is being updated for the Diplomat-based binding generation. Use Bazel for now. diff --git a/docs/docs/dev/code.md b/docs/docs/dev/code.md index 0ba5d81..075a148 100644 --- a/docs/docs/dev/code.md +++ b/docs/docs/dev/code.md @@ -32,8 +32,8 @@ bazel run //core:serve_docs #### Python ```shell -# Build the extension -bazel build //python:maturin_build +# Build the extension module (.so) +bazel build //generated/diplomat/nanobind:dv_pyo3.so # Run tests bazel test //python:test_dv diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 5279fbb..f2297b8 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -99,9 +99,9 @@ DV fixes all of these issues Status | Language | Notes -------|----------|------ ✅ Core | Rust | Reference implementation -✅ C | C ABI (`dv_c.h`) -✅ C++ | C++ RAII wrapper (`dv.hpp`) -✅ Python | Python via PyO3 +✅ C | Diplomat-generated C bindings +✅ C++ | Diplomat-generated C++ bindings +✅ Python | Diplomat-generated nanobind bindings (+ Python compatibility wrapper) 🛠 Planned | JavaScript / TypeScript | WASM or N-API layer 🛠 Planned | Java | JNI via C ABI (or pure port) 🛠 Planned | Matlab | MEX wrapper diff --git a/docs/docs/python.md b/docs/docs/python.md index 76791d1..31ca60a 100644 --- a/docs/docs/python.md +++ b/docs/docs/python.md @@ -16,7 +16,7 @@ sidebar_position: 3 # -DV supports python via PyO3 bindings to the core library. Any Rust `Results<>` are converted to Python exceptions. +DV supports Python via Diplomat-generated nanobind bindings, with a thin Python compatibility wrapper (`python/dv_py/__init__.py`) preserving the ergonomic API. The project currently builds for these architectures: * Linux diff --git a/examples/README.md b/examples/README.md index d1d3279..3cdb709 100644 --- a/examples/README.md +++ b/examples/README.md @@ -14,13 +14,7 @@ This directory contains minimal examples for each supported language. ## CMake (C/C++) -From the repository root: - -1. Configure - - `cmake -S . -B build` -2. Build targets - - `cmake --build build --target dv_example_c` - - `cmake --build build --target dv_example_cpp` +CMake examples are temporarily unavailable during the Diplomat migration. Use the Bazel targets above. ## Cargo (Rust) @@ -28,5 +22,5 @@ From the repository root: Notes -- The C and C++ examples link against the Rust C-ABI produced by the `cpp/capi` crate via the imported `dv_c` and `dv_cpp` targets. +- The C and C++ examples now use Diplomat-generated C/C++ bindings (via `//generated/diplomat/...`) and the `ffi/diplomat` Rust bridge. - The Rust example depends on the core crate directly via a path dependency and uses Bazel via `//core:dv_rs` when built with Bazel. diff --git a/examples/c/BUILD.bazel b/examples/c/BUILD.bazel index da07193..1805ca4 100644 --- a/examples/c/BUILD.bazel +++ b/examples/c/BUILD.bazel @@ -5,5 +5,5 @@ package(default_visibility = ["//visibility:public"]) cc_binary( name = "c_example", srcs = ["main.c"], - deps = ["//cpp:dv_c"], + deps = ["//generated/diplomat/c:dv_diplomat_c"], ) diff --git a/examples/c/CMakeLists.txt b/examples/c/CMakeLists.txt index dbc824c..ad347a9 100644 --- a/examples/c/CMakeLists.txt +++ b/examples/c/CMakeLists.txt @@ -1,14 +1,4 @@ cmake_minimum_required(VERSION 3.20) project(dv_c_example C) -# Expect to be added from repo root as part of the overall build. Use include and link from cpp/ setup. -add_executable(dv_example_c main.c) -target_include_directories(dv_example_c PRIVATE ${CMAKE_CURRENT_LIST_DIR}/../../cpp/include) -target_link_libraries(dv_example_c PRIVATE dv_c m) - -if(APPLE) - # Allow running example if dv_capi.dylib is used at runtime - set_target_properties(dv_example_c PROPERTIES - BUILD_RPATH ${CMAKE_CURRENT_LIST_DIR}/../../cpp/capi/target/release - ) -endif() +message(FATAL_ERROR "Use Bazel: cmake example support is disabled during the Diplomat migration.") diff --git a/examples/c/main.c b/examples/c/main.c index ffaaad1..aba7172 100644 --- a/examples/c/main.c +++ b/examples/c/main.c @@ -1,36 +1,37 @@ -#include "dv_c.h" +#include "DimensionalVariable.h" #include +#include -static void print_last_error(const char* prefix) { - const char* msg = dv_last_error_message(); - if (msg && *msg) { - fprintf(stderr, "%s: %s\n", prefix, msg); - } else { - fprintf(stderr, "%s: (unknown error)\n", prefix); - } +static DiplomatStringView str_view(const char* s) { + DiplomatStringView v; + v.data = s; + v.len = strlen(s); + return v; } int main(void) { - dv_var* d = dv_var_new(42.0, "m"); - if (!d) { print_last_error("dv_var_new(d)"); return 1; } + DimensionalVariable_new_result d_res = DimensionalVariable_new(42.0, str_view("m")); + if (!d_res.is_ok) { fprintf(stderr, "DimensionalVariable_new(d) failed\n"); return 1; } + DimensionalVariable* d = d_res.ok; - dv_var* t = dv_var_new(3.0, "s"); - if (!t) { print_last_error("dv_var_new(t)"); dv_var_free(d); return 1; } + DimensionalVariable_new_result t_res = DimensionalVariable_new(3.0, str_view("s")); + if (!t_res.is_ok) { fprintf(stderr, "DimensionalVariable_new(t) failed\n"); DimensionalVariable_destroy(d); return 1; } + DimensionalVariable* t = t_res.ok; - dv_var* v = dv_var_div(d, t); // 14 m/s - if (!v) { print_last_error("dv_var_div(d,t)"); dv_var_free(d); dv_var_free(t); return 1; } + DimensionalVariable* v = DimensionalVariable_div(d, t); // 14 m/s + if (!v) { fprintf(stderr, "DimensionalVariable_div(d,t) failed\n"); DimensionalVariable_destroy(d); DimensionalVariable_destroy(t); return 1; } - double mph = 0.0; - if (!dv_var_value_in(v, "mi/hr", &mph)) { - print_last_error("dv_var_value_in(v, mi/hr)"); - dv_var_free(v); dv_var_free(d); dv_var_free(t); + DimensionalVariable_value_in_result mph_res = DimensionalVariable_value_in(v, str_view("mi/hr")); + if (!mph_res.is_ok) { + fprintf(stderr, "DimensionalVariable_value_in(v, mi/hr) failed\n"); + DimensionalVariable_destroy(v); DimensionalVariable_destroy(d); DimensionalVariable_destroy(t); return 1; } - printf("speed = %.4f mi/hr\n", mph); + printf("speed = %.4f mi/hr\n", mph_res.ok); - dv_var_free(v); - dv_var_free(d); - dv_var_free(t); + DimensionalVariable_destroy(v); + DimensionalVariable_destroy(d); + DimensionalVariable_destroy(t); return 0; } diff --git a/examples/cpp/BUILD.bazel b/examples/cpp/BUILD.bazel index 08c693c..3b43cbf 100644 --- a/examples/cpp/BUILD.bazel +++ b/examples/cpp/BUILD.bazel @@ -5,5 +5,5 @@ package(default_visibility = ["//visibility:public"]) cc_binary( name = "cpp_example", srcs = ["main.cpp"], - deps = ["//cpp:dv_cpp"], + deps = ["//generated/diplomat/cpp:dv_diplomat_cpp"], ) diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt index 5766c43..abec6e5 100644 --- a/examples/cpp/CMakeLists.txt +++ b/examples/cpp/CMakeLists.txt @@ -1,12 +1,4 @@ cmake_minimum_required(VERSION 3.20) project(dv_cpp_example CXX) -add_executable(dv_example_cpp main.cpp) -target_include_directories(dv_example_cpp PRIVATE ${CMAKE_CURRENT_LIST_DIR}/../../cpp/include) -target_link_libraries(dv_example_cpp PRIVATE dv_cpp) - -if(APPLE) - set_target_properties(dv_example_cpp PROPERTIES - BUILD_RPATH ${CMAKE_CURRENT_LIST_DIR}/../../cpp/capi/target/release - ) -endif() +message(FATAL_ERROR "Use Bazel: cmake example support is disabled during the Diplomat migration.") diff --git a/examples/cpp/main.cpp b/examples/cpp/main.cpp index 8e501ef..cfcc69b 100644 --- a/examples/cpp/main.cpp +++ b/examples/cpp/main.cpp @@ -1,26 +1,55 @@ -#include "dv.hpp" -#include +#include "DimensionalVariable.hpp" + #include +#include +#include +#include +#include +#include + +template +T expect_ok(diplomat::result&& result, const char* what) { + auto v = std::move(result).ok(); + if (!v.has_value()) { + throw std::runtime_error(what); + } + return std::move(*v); +} + +template +T expect_utf8_and_ok(diplomat::result, diplomat::Utf8Error>&& result, const char* what) { + auto outer = std::move(result).ok(); + if (!outer.has_value()) { + throw std::runtime_error("utf8 error"); + } + auto inner = std::move(*outer).ok(); + if (!inner.has_value()) { + throw std::runtime_error(what); + } + return std::move(*inner); +} int main() { - dv::DV mass(10.0, "kg"); - dv::DV accel(9.81, "m/s^2"); - dv::DV force = mass * accel; // N - std::cout << "force = " << force.value_in("lbf") << " lbf\n"; - - // Working with angles - dv::DV angle_rad(M_PI / 4.0, "rad"); - dv::DV angle_deg(45.0, "deg"); - std::cout << "45 degrees = " << angle_deg.value_in("rad") << " radians\n"; - std::cout << "π/4 radians = " << angle_rad.value_in("deg") << " degrees\n"; - - // Free-standing inverse trig functions - dv::DV angle_from_asin = dv::asin(0.5); - dv::DV angle_from_acos = dv::acos(0.5); - dv::DV angle_from_atan = dv::atan(1.0); - std::cout << "asin(0.5) = " << angle_from_asin.value_in("rad") << " rad\n"; - std::cout << "acos(0.5) = " << angle_from_acos.value_in("rad") << " rad\n"; - std::cout << "atan(1.0) = " << angle_from_atan.value_in("deg") << " deg (should be 45)\n"; - + auto mass = expect_utf8_and_ok>(DimensionalVariable::new_(10.0, "kg"), "mass"); + auto accel = expect_utf8_and_ok>(DimensionalVariable::new_(9.81, "m/s^2"), "accel"); + auto force = mass->mul(*accel); + auto force_lbf = expect_utf8_and_ok(force->value_in("lbf"), "force.value_in"); + std::cout << "force = " << force_lbf << " lbf\n"; + + auto angle_deg = expect_utf8_and_ok>(DimensionalVariable::new_(45.0, "deg"), "angle_deg"); + auto angle_rad = expect_utf8_and_ok>(DimensionalVariable::new_(M_PI / 4.0, "rad"), "angle_rad"); + std::cout << "45 degrees = " << expect_utf8_and_ok(angle_deg->value_in("rad"), "deg->rad") << " radians\n"; + std::cout << "pi/4 radians = " << expect_utf8_and_ok(angle_rad->value_in("deg"), "rad->deg") << " degrees\n"; + + auto asin_angle = expect_ok>(DimensionalVariable::asin_scalar(0.5), "asin"); + auto acos_angle = expect_ok>(DimensionalVariable::acos_scalar(0.5), "acos"); + auto atan_angle = expect_ok>(DimensionalVariable::atan_scalar(1.0), "atan"); + std::cout << "asin(0.5) = " << expect_utf8_and_ok(asin_angle->value_in("rad"), "asin rad") << " rad\n"; + std::cout << "acos(0.5) = " << expect_utf8_and_ok(acos_angle->value_in("deg"), "acos deg") << " deg\n"; + std::cout << "atan(1.0) = " << expect_utf8_and_ok(atan_angle->value_in("deg"), "atan deg") << " deg (should be 45)\n"; + + auto force_str = expect_ok(force->to_string(), "to_string"); + std::cout << "force string = " << force_str << "\n"; + return 0; } diff --git a/ffi/diplomat/BUILD.bazel b/ffi/diplomat/BUILD.bazel new file mode 100644 index 0000000..16ea2e8 --- /dev/null +++ b/ffi/diplomat/BUILD.bazel @@ -0,0 +1,32 @@ +load("@rules_rust//rust:defs.bzl", "rust_library", "rust_static_library") + +package(default_visibility = ["//visibility:public"]) + +exports_files(["Cargo.toml"]) + +rust_library( + name = "dv_diplomat_bridge", + srcs = ["src/lib.rs"], + edition = "2021", + proc_macro_deps = [ + "@crates//:diplomat", + ], + deps = [ + "//core:dv_rs", + "@crates//:diplomat-runtime", + ], +) + +rust_static_library( + name = "dv_diplomat_capi_static", + srcs = ["src/lib.rs"], + crate_name = "dv_diplomat_bridge", + edition = "2021", + proc_macro_deps = [ + "@crates//:diplomat", + ], + deps = [ + "//core:dv_rs", + "@crates//:diplomat-runtime", + ], +) diff --git a/ffi/diplomat/Cargo.toml b/ffi/diplomat/Cargo.toml new file mode 100644 index 0000000..f738a6e --- /dev/null +++ b/ffi/diplomat/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "dv_diplomat_bridge" +version = "0.1.0" +edition = "2021" +authors = ["Alex Tacescu "] +license = "Apache-2.0" +description = "Diplomat bridge for dv (DimensionalVariable)" +publish = false + +[lib] +name = "dv_diplomat_bridge" +path = "src/lib.rs" + +[dependencies.dv_rs] +package = "dv" +path = "../../core" + +[dependencies] +diplomat = "0.14.0" +diplomat-runtime = "0.14.0" diff --git a/ffi/diplomat/src/lib.rs b/ffi/diplomat/src/lib.rs new file mode 100644 index 0000000..1ef46a9 --- /dev/null +++ b/ffi/diplomat/src/lib.rs @@ -0,0 +1,226 @@ +#![allow(clippy::needless_return)] + +#[diplomat::bridge] +pub mod ffi { + use core::fmt::Write as _; + use diplomat_runtime::DiplomatWrite; + use dv_rs::DimensionalVariable as CoreDV; + use dv_rs::units; + + fn into_boxed_dv(dv: CoreDV) -> Box { + Box::new(DimensionalVariable(dv)) + } + + fn clone_core(dv: &CoreDV) -> CoreDV { + CoreDV { + value: dv.value, + unit: dv.unit, + } + } + + #[diplomat::rust_link(dv_rs::units::BASE_UNITS_SIZE, Mod)] + pub struct BaseUnits { + pub m: f64, + pub kg: f64, + pub s: f64, + pub k: f64, + pub a: f64, + pub mol: f64, + pub cd: f64, + pub rad: f64, + } + + #[diplomat::opaque] + pub struct DimensionalVariable(CoreDV); + + impl DimensionalVariable { + pub fn new(value: f64, unit: &str) -> Result, ()> { + match CoreDV::new(value, unit) { + Ok(dv) => Ok(Box::new(DimensionalVariable(dv))), + Err(_) => Err(()), + } + } + + pub fn asin_scalar(x: f64) -> Result, ()> { + dv_rs::asin(x).map(into_boxed_dv).map_err(|_| ()) + } + + pub fn acos_scalar(x: f64) -> Result, ()> { + dv_rs::acos(x).map(into_boxed_dv).map_err(|_| ()) + } + + pub fn atan_scalar(x: f64) -> Result, ()> { + dv_rs::atan(x).map(into_boxed_dv).map_err(|_| ()) + } + + pub fn base_units_size() -> usize { + units::BASE_UNITS_SIZE + } + + pub fn value(&self) -> f64 { + self.0.value() + } + + pub fn value_in(&self, unit: &str) -> Result { + self.0.value_in(unit).map_err(|_| ()) + } + + pub fn is_unitless(&self) -> bool { + self.0.is_unitless() + } + + pub fn base_units(&self) -> BaseUnits { + let u = self.0.unit(); + BaseUnits { + m: u[0], + kg: u[1], + s: u[2], + k: u[3], + a: u[4], + mol: u[5], + cd: u[6], + rad: u[7], + } + } + + pub fn add(&self, other: &DimensionalVariable) -> Result, ()> { + self.0.try_add(&other.0).map(into_boxed_dv).map_err(|_| ()) + } + + pub fn sub(&self, other: &DimensionalVariable) -> Result, ()> { + self.0.try_sub(&other.0).map(into_boxed_dv).map_err(|_| ()) + } + + pub fn mul(&self, other: &DimensionalVariable) -> Box { + into_boxed_dv(&self.0 * &other.0) + } + + pub fn div(&self, other: &DimensionalVariable) -> Box { + into_boxed_dv(&self.0 / &other.0) + } + + pub fn mul_scalar(&self, scalar: f64) -> Box { + into_boxed_dv(&self.0 * scalar) + } + + pub fn div_scalar(&self, scalar: f64) -> Box { + into_boxed_dv(&self.0 / scalar) + } + + pub fn rdiv_scalar(&self, scalar: f64) -> Box { + into_boxed_dv(scalar / &self.0) + } + + pub fn powi(&self, exp: i32) -> Box { + into_boxed_dv(self.0.powi(exp)) + } + + pub fn powf(&self, exp: f64) -> Result, ()> { + self.0.powf(exp).map(into_boxed_dv).map_err(|_| ()) + } + + pub fn sqrt(&self) -> Result, ()> { + self.0.sqrt().map(into_boxed_dv).map_err(|_| ()) + } + + pub fn ln(&self) -> Result, ()> { + self.0 + .ln() + .map(|v| CoreDV { value: v, unit: [0.0; units::BASE_UNITS_SIZE] }) + .map(into_boxed_dv) + .map_err(|_| ()) + } + + pub fn log2(&self) -> Result, ()> { + self.0 + .log2() + .map(|v| CoreDV { value: v, unit: [0.0; units::BASE_UNITS_SIZE] }) + .map(into_boxed_dv) + .map_err(|_| ()) + } + + pub fn log10(&self) -> Result, ()> { + self.0 + .log10() + .map(|v| CoreDV { value: v, unit: [0.0; units::BASE_UNITS_SIZE] }) + .map(into_boxed_dv) + .map_err(|_| ()) + } + + pub fn sin(&self) -> Result, ()> { + self.0 + .sin() + .map(|v| CoreDV { value: v, unit: [0.0; units::BASE_UNITS_SIZE] }) + .map(into_boxed_dv) + .map_err(|_| ()) + } + + pub fn cos(&self) -> Result, ()> { + self.0 + .cos() + .map(|v| CoreDV { value: v, unit: [0.0; units::BASE_UNITS_SIZE] }) + .map(into_boxed_dv) + .map_err(|_| ()) + } + + pub fn tan(&self) -> Result, ()> { + self.0 + .tan() + .map(|v| CoreDV { value: v, unit: [0.0; units::BASE_UNITS_SIZE] }) + .map(into_boxed_dv) + .map_err(|_| ()) + } + + pub fn asin(&self) -> Result, ()> { + self.0.asin().map(into_boxed_dv).map_err(|_| ()) + } + + pub fn acos(&self) -> Result, ()> { + self.0.acos().map(into_boxed_dv).map_err(|_| ()) + } + + pub fn atan(&self) -> Result, ()> { + self.0.atan().map(into_boxed_dv).map_err(|_| ()) + } + + pub fn neg(&self) -> Box { + into_boxed_dv(self.0.neg()) + } + + pub fn abs(&self) -> Box { + into_boxed_dv(self.0.abs()) + } + + pub fn equals(&self, other: &DimensionalVariable) -> bool { + self.0 == other.0 + } + + pub fn not_equals(&self, other: &DimensionalVariable) -> bool { + self.0 != other.0 + } + + pub fn less_than(&self, other: &DimensionalVariable) -> Result { + self.0.partial_cmp(&other.0).map(|o| o.is_lt()).ok_or(()) + } + + pub fn less_equal(&self, other: &DimensionalVariable) -> Result { + self.0.partial_cmp(&other.0).map(|o| o.is_lt() || o.is_eq()).ok_or(()) + } + + pub fn greater_than(&self, other: &DimensionalVariable) -> Result { + self.0.partial_cmp(&other.0).map(|o| o.is_gt()).ok_or(()) + } + + pub fn greater_equal(&self, other: &DimensionalVariable) -> Result { + self.0.partial_cmp(&other.0).map(|o| o.is_gt() || o.is_eq()).ok_or(()) + } + + pub fn clone_var(&self) -> Box { + into_boxed_dv(clone_core(&self.0)) + } + + pub fn to_string(&self, to: &mut DiplomatWrite) -> Result<(), ()> { + write!(to, "{}", self.0).map_err(|_| ()) + } + } +} diff --git a/generated/diplomat/c/BUILD.bazel b/generated/diplomat/c/BUILD.bazel new file mode 100644 index 0000000..a865ad6 --- /dev/null +++ b/generated/diplomat/c/BUILD.bazel @@ -0,0 +1,12 @@ +load("@rules_cc//cc:defs.bzl", "cc_library") + +package(default_visibility = ["//visibility:public"]) + +cc_library( + name = "dv_diplomat_c", + hdrs = glob(["*.h"]), + includes = ["."], + deps = [ + "//ffi/diplomat:dv_diplomat_capi_static", + ], +) diff --git a/generated/diplomat/c/BaseUnits.d.h b/generated/diplomat/c/BaseUnits.d.h new file mode 100644 index 0000000..bc02f41 --- /dev/null +++ b/generated/diplomat/c/BaseUnits.d.h @@ -0,0 +1,29 @@ +#ifndef BaseUnits_D_H +#define BaseUnits_D_H + +#include +#include +#include +#include +#include "diplomat_runtime.h" + + + + + +typedef struct BaseUnits { + double m; + double kg; + double s; + double k; + double a; + double mol; + double cd; + double rad; +} BaseUnits; + +typedef struct BaseUnits_option {union { BaseUnits ok; }; bool is_ok; } BaseUnits_option; + + + +#endif // BaseUnits_D_H diff --git a/generated/diplomat/c/BaseUnits.h b/generated/diplomat/c/BaseUnits.h new file mode 100644 index 0000000..8fc6324 --- /dev/null +++ b/generated/diplomat/c/BaseUnits.h @@ -0,0 +1,22 @@ +#ifndef BaseUnits_H +#define BaseUnits_H + +#include +#include +#include +#include +#include "diplomat_runtime.h" + + +#include "BaseUnits.d.h" + + + + +// No Content + + + + + +#endif // BaseUnits_H diff --git a/generated/diplomat/c/DimensionalVariable.d.h b/generated/diplomat/c/DimensionalVariable.d.h new file mode 100644 index 0000000..29ebdcc --- /dev/null +++ b/generated/diplomat/c/DimensionalVariable.d.h @@ -0,0 +1,19 @@ +#ifndef DimensionalVariable_D_H +#define DimensionalVariable_D_H + +#include +#include +#include +#include +#include "diplomat_runtime.h" + + + + + +typedef struct DimensionalVariable DimensionalVariable; + + + + +#endif // DimensionalVariable_D_H diff --git a/generated/diplomat/c/DimensionalVariable.h b/generated/diplomat/c/DimensionalVariable.h new file mode 100644 index 0000000..39cb490 --- /dev/null +++ b/generated/diplomat/c/DimensionalVariable.h @@ -0,0 +1,124 @@ +#ifndef DimensionalVariable_H +#define DimensionalVariable_H + +#include +#include +#include +#include +#include "diplomat_runtime.h" + +#include "BaseUnits.d.h" + +#include "DimensionalVariable.d.h" + + + + + + +typedef struct DimensionalVariable_new_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_new_result; +DimensionalVariable_new_result DimensionalVariable_new(double value, DiplomatStringView unit); + +typedef struct DimensionalVariable_asin_scalar_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_asin_scalar_result; +DimensionalVariable_asin_scalar_result DimensionalVariable_asin_scalar(double x); + +typedef struct DimensionalVariable_acos_scalar_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_acos_scalar_result; +DimensionalVariable_acos_scalar_result DimensionalVariable_acos_scalar(double x); + +typedef struct DimensionalVariable_atan_scalar_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_atan_scalar_result; +DimensionalVariable_atan_scalar_result DimensionalVariable_atan_scalar(double x); + +size_t DimensionalVariable_base_units_size(void); + +double DimensionalVariable_value(const DimensionalVariable* self); + +typedef struct DimensionalVariable_value_in_result {union {double ok; }; bool is_ok;} DimensionalVariable_value_in_result; +DimensionalVariable_value_in_result DimensionalVariable_value_in(const DimensionalVariable* self, DiplomatStringView unit); + +bool DimensionalVariable_is_unitless(const DimensionalVariable* self); + +BaseUnits DimensionalVariable_base_units(const DimensionalVariable* self); + +typedef struct DimensionalVariable_add_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_add_result; +DimensionalVariable_add_result DimensionalVariable_add(const DimensionalVariable* self, const DimensionalVariable* other); + +typedef struct DimensionalVariable_sub_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sub_result; +DimensionalVariable_sub_result DimensionalVariable_sub(const DimensionalVariable* self, const DimensionalVariable* other); + +DimensionalVariable* DimensionalVariable_mul(const DimensionalVariable* self, const DimensionalVariable* other); + +DimensionalVariable* DimensionalVariable_div(const DimensionalVariable* self, const DimensionalVariable* other); + +DimensionalVariable* DimensionalVariable_mul_scalar(const DimensionalVariable* self, double scalar); + +DimensionalVariable* DimensionalVariable_div_scalar(const DimensionalVariable* self, double scalar); + +DimensionalVariable* DimensionalVariable_rdiv_scalar(const DimensionalVariable* self, double scalar); + +DimensionalVariable* DimensionalVariable_powi(const DimensionalVariable* self, int32_t exp); + +typedef struct DimensionalVariable_powf_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_powf_result; +DimensionalVariable_powf_result DimensionalVariable_powf(const DimensionalVariable* self, double exp); + +typedef struct DimensionalVariable_sqrt_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sqrt_result; +DimensionalVariable_sqrt_result DimensionalVariable_sqrt(const DimensionalVariable* self); + +typedef struct DimensionalVariable_ln_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_ln_result; +DimensionalVariable_ln_result DimensionalVariable_ln(const DimensionalVariable* self); + +typedef struct DimensionalVariable_log2_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_log2_result; +DimensionalVariable_log2_result DimensionalVariable_log2(const DimensionalVariable* self); + +typedef struct DimensionalVariable_log10_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_log10_result; +DimensionalVariable_log10_result DimensionalVariable_log10(const DimensionalVariable* self); + +typedef struct DimensionalVariable_sin_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sin_result; +DimensionalVariable_sin_result DimensionalVariable_sin(const DimensionalVariable* self); + +typedef struct DimensionalVariable_cos_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_cos_result; +DimensionalVariable_cos_result DimensionalVariable_cos(const DimensionalVariable* self); + +typedef struct DimensionalVariable_tan_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_tan_result; +DimensionalVariable_tan_result DimensionalVariable_tan(const DimensionalVariable* self); + +typedef struct DimensionalVariable_asin_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_asin_result; +DimensionalVariable_asin_result DimensionalVariable_asin(const DimensionalVariable* self); + +typedef struct DimensionalVariable_acos_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_acos_result; +DimensionalVariable_acos_result DimensionalVariable_acos(const DimensionalVariable* self); + +typedef struct DimensionalVariable_atan_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_atan_result; +DimensionalVariable_atan_result DimensionalVariable_atan(const DimensionalVariable* self); + +DimensionalVariable* DimensionalVariable_neg(const DimensionalVariable* self); + +DimensionalVariable* DimensionalVariable_abs(const DimensionalVariable* self); + +bool DimensionalVariable_equals(const DimensionalVariable* self, const DimensionalVariable* other); + +bool DimensionalVariable_not_equals(const DimensionalVariable* self, const DimensionalVariable* other); + +typedef struct DimensionalVariable_less_than_result {union {bool ok; }; bool is_ok;} DimensionalVariable_less_than_result; +DimensionalVariable_less_than_result DimensionalVariable_less_than(const DimensionalVariable* self, const DimensionalVariable* other); + +typedef struct DimensionalVariable_less_equal_result {union {bool ok; }; bool is_ok;} DimensionalVariable_less_equal_result; +DimensionalVariable_less_equal_result DimensionalVariable_less_equal(const DimensionalVariable* self, const DimensionalVariable* other); + +typedef struct DimensionalVariable_greater_than_result {union {bool ok; }; bool is_ok;} DimensionalVariable_greater_than_result; +DimensionalVariable_greater_than_result DimensionalVariable_greater_than(const DimensionalVariable* self, const DimensionalVariable* other); + +typedef struct DimensionalVariable_greater_equal_result {union {bool ok; }; bool is_ok;} DimensionalVariable_greater_equal_result; +DimensionalVariable_greater_equal_result DimensionalVariable_greater_equal(const DimensionalVariable* self, const DimensionalVariable* other); + +DimensionalVariable* DimensionalVariable_clone_var(const DimensionalVariable* self); + +typedef struct DimensionalVariable_to_string_result { bool is_ok;} DimensionalVariable_to_string_result; +DimensionalVariable_to_string_result DimensionalVariable_to_string(const DimensionalVariable* self, DiplomatWrite* write); + +void DimensionalVariable_destroy(DimensionalVariable* self); + + + + + +#endif // DimensionalVariable_H diff --git a/generated/diplomat/c/diplomat_runtime.h b/generated/diplomat/c/diplomat_runtime.h new file mode 100644 index 0000000..e5d6b29 --- /dev/null +++ b/generated/diplomat/c/diplomat_runtime.h @@ -0,0 +1,82 @@ +#ifndef DIPLOMAT_RUNTIME_C_H +#define DIPLOMAT_RUNTIME_C_H + +#include +#include +#include +#include + +// These come from `uchar.h`, which is not available on all platforms. +// Redefining them in C is no problem, however in >C++11 they are fundamental +// types, which don't like being redefined. +#if !(__cplusplus >= 201100) +// https://en.cppreference.com/w/c/string/multibyte/char16_t +typedef uint_least16_t char16_t; +// https://en.cppreference.com/w/c/string/multibyte/char32_t +typedef uint_least32_t char32_t; +#endif + +static_assert(sizeof(char) == sizeof(uint8_t), "your architecture's `char` is not 8 bits"); +static_assert(sizeof(char16_t) == sizeof(uint16_t), "your architecture's `char16_t` is not 16 bits"); +static_assert(sizeof(char32_t) == sizeof(uint32_t), "your architecture's `char32_t` is not 32 bits"); + +typedef struct DiplomatWrite { + void* context; + char* buf; + size_t len; + size_t cap; + bool grow_failed; + void (*flush)(struct DiplomatWrite*); + bool (*grow)(struct DiplomatWrite*, size_t); +} DiplomatWrite; + +bool diplomat_is_str(const char* buf, size_t len); + +#define MAKE_SLICES(name, c_ty) \ + typedef struct Diplomat##name##View { \ + const c_ty* data; \ + size_t len; \ + } Diplomat##name##View; \ + typedef struct Diplomat##name##ViewMut { \ + c_ty* data; \ + size_t len; \ + } Diplomat##name##ViewMut; \ + typedef struct Diplomat##name##Array { \ + const c_ty* data; \ + size_t len; \ + } Diplomat##name##Array; + +#define MAKE_SLICES_AND_OPTIONS(name, c_ty) \ + MAKE_SLICES(name, c_ty) \ + typedef struct Option##name {union { c_ty ok; }; bool is_ok; } Option##name; \ + typedef struct Option##name##View {union { Diplomat##name##View ok; }; bool is_ok; } Option##name##View; \ + typedef struct Option##name##ViewMut {union { Diplomat##name##ViewMut ok; }; bool is_ok; } Option##name##ViewMut; \ + typedef struct Option##name##Array {union { Diplomat##name##Array ok; }; bool is_ok; } Option##name##Array; \ + +MAKE_SLICES_AND_OPTIONS(I8, int8_t) +MAKE_SLICES_AND_OPTIONS(U8, uint8_t) +MAKE_SLICES_AND_OPTIONS(I16, int16_t) +MAKE_SLICES_AND_OPTIONS(U16, uint16_t) +MAKE_SLICES_AND_OPTIONS(I32, int32_t) +MAKE_SLICES_AND_OPTIONS(U32, uint32_t) +MAKE_SLICES_AND_OPTIONS(I64, int64_t) +MAKE_SLICES_AND_OPTIONS(U64, uint64_t) +MAKE_SLICES_AND_OPTIONS(Isize, intptr_t) +MAKE_SLICES_AND_OPTIONS(Usize, size_t) +MAKE_SLICES_AND_OPTIONS(F32, float) +MAKE_SLICES_AND_OPTIONS(F64, double) +MAKE_SLICES_AND_OPTIONS(Bool, bool) +MAKE_SLICES_AND_OPTIONS(Char, char32_t) +MAKE_SLICES_AND_OPTIONS(String, char) +MAKE_SLICES_AND_OPTIONS(String16, char16_t) +MAKE_SLICES_AND_OPTIONS(Strings, DiplomatStringView) +MAKE_SLICES_AND_OPTIONS(Strings16, DiplomatString16View) + +DiplomatWrite diplomat_simple_write(char* buf, size_t buf_size); + +DiplomatWrite* diplomat_buffer_write_create(size_t cap); +char* diplomat_buffer_write_get_bytes(DiplomatWrite* t); +size_t diplomat_buffer_write_len(DiplomatWrite* t); +void diplomat_buffer_write_destroy(DiplomatWrite* t); + +#endif diff --git a/generated/diplomat/cpp/BUILD.bazel b/generated/diplomat/cpp/BUILD.bazel new file mode 100644 index 0000000..8cf732e --- /dev/null +++ b/generated/diplomat/cpp/BUILD.bazel @@ -0,0 +1,19 @@ +load("@rules_cc//cc:defs.bzl", "cc_library") + +package(default_visibility = ["//visibility:public"]) + +cc_library( + name = "headers", + hdrs = glob(["*.hpp"]), + includes = ["."], +) + +cc_library( + name = "dv_diplomat_cpp", + hdrs = glob(["*.hpp"]), + includes = ["."], + deps = [ + ":headers", + "//ffi/diplomat:dv_diplomat_capi_static", + ], +) diff --git a/generated/diplomat/cpp/BaseUnits.d.hpp b/generated/diplomat/cpp/BaseUnits.d.hpp new file mode 100644 index 0000000..a83bf07 --- /dev/null +++ b/generated/diplomat/cpp/BaseUnits.d.hpp @@ -0,0 +1,51 @@ +#ifndef BaseUnits_D_HPP +#define BaseUnits_D_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include "diplomat_runtime.hpp" + + +namespace diplomat { +namespace capi { + struct BaseUnits { + double m; + double kg; + double s; + double k; + double a; + double mol; + double cd; + double rad; + }; + + typedef struct BaseUnits_option {union { BaseUnits ok; }; bool is_ok; } BaseUnits_option; +} // namespace capi +} // namespace + + +/** + * See the [Rust documentation for `BASE_UNITS_SIZE`](https://docs.rs/dv_rs/latest/dv_rs/units/BASE_UNITS_SIZE/index.html) for more information. + */ +struct BaseUnits { + double m; + double kg; + double s; + double k; + double a; + double mol; + double cd; + double rad; + + inline diplomat::capi::BaseUnits AsFFI() const; + inline static BaseUnits FromFFI(diplomat::capi::BaseUnits c_struct); +}; + + +#endif // BaseUnits_D_HPP diff --git a/generated/diplomat/cpp/BaseUnits.hpp b/generated/diplomat/cpp/BaseUnits.hpp new file mode 100644 index 0000000..17ef0d4 --- /dev/null +++ b/generated/diplomat/cpp/BaseUnits.hpp @@ -0,0 +1,51 @@ +#ifndef BaseUnits_HPP +#define BaseUnits_HPP + +#include "BaseUnits.d.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include "diplomat_runtime.hpp" + + +namespace diplomat { +namespace capi { + +} // namespace capi +} // namespace + + +inline diplomat::capi::BaseUnits BaseUnits::AsFFI() const { + return diplomat::capi::BaseUnits { + /* .m = */ m, + /* .kg = */ kg, + /* .s = */ s, + /* .k = */ k, + /* .a = */ a, + /* .mol = */ mol, + /* .cd = */ cd, + /* .rad = */ rad, + }; +} + +inline BaseUnits BaseUnits::FromFFI(diplomat::capi::BaseUnits c_struct) { + return BaseUnits { + /* .m = */ c_struct.m, + /* .kg = */ c_struct.kg, + /* .s = */ c_struct.s, + /* .k = */ c_struct.k, + /* .a = */ c_struct.a, + /* .mol = */ c_struct.mol, + /* .cd = */ c_struct.cd, + /* .rad = */ c_struct.rad, + }; +} + + +#endif // BaseUnits_HPP diff --git a/generated/diplomat/cpp/DimensionalVariable.d.hpp b/generated/diplomat/cpp/DimensionalVariable.d.hpp new file mode 100644 index 0000000..2155dab --- /dev/null +++ b/generated/diplomat/cpp/DimensionalVariable.d.hpp @@ -0,0 +1,121 @@ +#ifndef DimensionalVariable_D_HPP +#define DimensionalVariable_D_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include "diplomat_runtime.hpp" + +struct BaseUnits; + + + + +namespace diplomat { +namespace capi { + struct DimensionalVariable; +} // namespace capi +} // namespace + +class DimensionalVariable { +public: + + inline static diplomat::result, std::monostate>, diplomat::Utf8Error> new_(double value, std::string_view unit); + + inline static diplomat::result, std::monostate> asin_scalar(double x); + + inline static diplomat::result, std::monostate> acos_scalar(double x); + + inline static diplomat::result, std::monostate> atan_scalar(double x); + + inline static size_t base_units_size(); + + inline double value() const; + + inline diplomat::result, diplomat::Utf8Error> value_in(std::string_view unit) const; + + inline bool is_unitless() const; + + inline BaseUnits base_units() const; + + inline diplomat::result, std::monostate> add(const DimensionalVariable& other) const; + + inline diplomat::result, std::monostate> sub(const DimensionalVariable& other) const; + + inline std::unique_ptr mul(const DimensionalVariable& other) const; + + inline std::unique_ptr div(const DimensionalVariable& other) const; + + inline std::unique_ptr mul_scalar(double scalar) const; + + inline std::unique_ptr div_scalar(double scalar) const; + + inline std::unique_ptr rdiv_scalar(double scalar) const; + + inline std::unique_ptr powi(int32_t exp) const; + + inline diplomat::result, std::monostate> powf(double exp) const; + + inline diplomat::result, std::monostate> sqrt() const; + + inline diplomat::result, std::monostate> ln() const; + + inline diplomat::result, std::monostate> log2() const; + + inline diplomat::result, std::monostate> log10() const; + + inline diplomat::result, std::monostate> sin() const; + + inline diplomat::result, std::monostate> cos() const; + + inline diplomat::result, std::monostate> tan() const; + + inline diplomat::result, std::monostate> asin() const; + + inline diplomat::result, std::monostate> acos() const; + + inline diplomat::result, std::monostate> atan() const; + + inline std::unique_ptr neg() const; + + inline std::unique_ptr abs() const; + + inline bool equals(const DimensionalVariable& other) const; + + inline bool not_equals(const DimensionalVariable& other) const; + + inline diplomat::result less_than(const DimensionalVariable& other) const; + + inline diplomat::result less_equal(const DimensionalVariable& other) const; + + inline diplomat::result greater_than(const DimensionalVariable& other) const; + + inline diplomat::result greater_equal(const DimensionalVariable& other) const; + + inline std::unique_ptr clone_var() const; + + inline diplomat::result to_string() const; + template + inline diplomat::result to_string_write(W& writeable_output) const; + + inline const diplomat::capi::DimensionalVariable* AsFFI() const; + inline diplomat::capi::DimensionalVariable* AsFFI(); + inline static const DimensionalVariable* FromFFI(const diplomat::capi::DimensionalVariable* ptr); + inline static DimensionalVariable* FromFFI(diplomat::capi::DimensionalVariable* ptr); + inline static void operator delete(void* ptr); +private: + DimensionalVariable() = delete; + DimensionalVariable(const DimensionalVariable&) = delete; + DimensionalVariable(DimensionalVariable&&) noexcept = delete; + DimensionalVariable operator=(const DimensionalVariable&) = delete; + DimensionalVariable operator=(DimensionalVariable&&) noexcept = delete; + static void operator delete[](void*, size_t) = delete; +}; + + +#endif // DimensionalVariable_D_HPP diff --git a/generated/diplomat/cpp/DimensionalVariable.hpp b/generated/diplomat/cpp/DimensionalVariable.hpp new file mode 100644 index 0000000..72d50d4 --- /dev/null +++ b/generated/diplomat/cpp/DimensionalVariable.hpp @@ -0,0 +1,371 @@ +#ifndef DimensionalVariable_HPP +#define DimensionalVariable_HPP + +#include "DimensionalVariable.d.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include "BaseUnits.hpp" +#include "diplomat_runtime.hpp" + + +namespace diplomat { +namespace capi { + extern "C" { + + typedef struct DimensionalVariable_new_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_new_result; + DimensionalVariable_new_result DimensionalVariable_new(double value, diplomat::capi::DiplomatStringView unit); + + typedef struct DimensionalVariable_asin_scalar_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_asin_scalar_result; + DimensionalVariable_asin_scalar_result DimensionalVariable_asin_scalar(double x); + + typedef struct DimensionalVariable_acos_scalar_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_acos_scalar_result; + DimensionalVariable_acos_scalar_result DimensionalVariable_acos_scalar(double x); + + typedef struct DimensionalVariable_atan_scalar_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_atan_scalar_result; + DimensionalVariable_atan_scalar_result DimensionalVariable_atan_scalar(double x); + + size_t DimensionalVariable_base_units_size(void); + + double DimensionalVariable_value(const diplomat::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_value_in_result {union {double ok; }; bool is_ok;} DimensionalVariable_value_in_result; + DimensionalVariable_value_in_result DimensionalVariable_value_in(const diplomat::capi::DimensionalVariable* self, diplomat::capi::DiplomatStringView unit); + + bool DimensionalVariable_is_unitless(const diplomat::capi::DimensionalVariable* self); + + diplomat::capi::BaseUnits DimensionalVariable_base_units(const diplomat::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_add_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_add_result; + DimensionalVariable_add_result DimensionalVariable_add(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); + + typedef struct DimensionalVariable_sub_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sub_result; + DimensionalVariable_sub_result DimensionalVariable_sub(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); + + diplomat::capi::DimensionalVariable* DimensionalVariable_mul(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); + + diplomat::capi::DimensionalVariable* DimensionalVariable_div(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); + + diplomat::capi::DimensionalVariable* DimensionalVariable_mul_scalar(const diplomat::capi::DimensionalVariable* self, double scalar); + + diplomat::capi::DimensionalVariable* DimensionalVariable_div_scalar(const diplomat::capi::DimensionalVariable* self, double scalar); + + diplomat::capi::DimensionalVariable* DimensionalVariable_rdiv_scalar(const diplomat::capi::DimensionalVariable* self, double scalar); + + diplomat::capi::DimensionalVariable* DimensionalVariable_powi(const diplomat::capi::DimensionalVariable* self, int32_t exp); + + typedef struct DimensionalVariable_powf_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_powf_result; + DimensionalVariable_powf_result DimensionalVariable_powf(const diplomat::capi::DimensionalVariable* self, double exp); + + typedef struct DimensionalVariable_sqrt_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sqrt_result; + DimensionalVariable_sqrt_result DimensionalVariable_sqrt(const diplomat::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_ln_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_ln_result; + DimensionalVariable_ln_result DimensionalVariable_ln(const diplomat::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_log2_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_log2_result; + DimensionalVariable_log2_result DimensionalVariable_log2(const diplomat::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_log10_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_log10_result; + DimensionalVariable_log10_result DimensionalVariable_log10(const diplomat::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_sin_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sin_result; + DimensionalVariable_sin_result DimensionalVariable_sin(const diplomat::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_cos_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_cos_result; + DimensionalVariable_cos_result DimensionalVariable_cos(const diplomat::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_tan_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_tan_result; + DimensionalVariable_tan_result DimensionalVariable_tan(const diplomat::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_asin_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_asin_result; + DimensionalVariable_asin_result DimensionalVariable_asin(const diplomat::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_acos_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_acos_result; + DimensionalVariable_acos_result DimensionalVariable_acos(const diplomat::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_atan_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_atan_result; + DimensionalVariable_atan_result DimensionalVariable_atan(const diplomat::capi::DimensionalVariable* self); + + diplomat::capi::DimensionalVariable* DimensionalVariable_neg(const diplomat::capi::DimensionalVariable* self); + + diplomat::capi::DimensionalVariable* DimensionalVariable_abs(const diplomat::capi::DimensionalVariable* self); + + bool DimensionalVariable_equals(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); + + bool DimensionalVariable_not_equals(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); + + typedef struct DimensionalVariable_less_than_result {union {bool ok; }; bool is_ok;} DimensionalVariable_less_than_result; + DimensionalVariable_less_than_result DimensionalVariable_less_than(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); + + typedef struct DimensionalVariable_less_equal_result {union {bool ok; }; bool is_ok;} DimensionalVariable_less_equal_result; + DimensionalVariable_less_equal_result DimensionalVariable_less_equal(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); + + typedef struct DimensionalVariable_greater_than_result {union {bool ok; }; bool is_ok;} DimensionalVariable_greater_than_result; + DimensionalVariable_greater_than_result DimensionalVariable_greater_than(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); + + typedef struct DimensionalVariable_greater_equal_result {union {bool ok; }; bool is_ok;} DimensionalVariable_greater_equal_result; + DimensionalVariable_greater_equal_result DimensionalVariable_greater_equal(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); + + diplomat::capi::DimensionalVariable* DimensionalVariable_clone_var(const diplomat::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_to_string_result { bool is_ok;} DimensionalVariable_to_string_result; + DimensionalVariable_to_string_result DimensionalVariable_to_string(const diplomat::capi::DimensionalVariable* self, diplomat::capi::DiplomatWrite* write); + + void DimensionalVariable_destroy(DimensionalVariable* self); + + } // extern "C" +} // namespace capi +} // namespace + +inline diplomat::result, std::monostate>, diplomat::Utf8Error> DimensionalVariable::new_(double value, std::string_view unit) { + if (!diplomat::capi::diplomat_is_str(unit.data(), unit.size())) { + return diplomat::Err(); + } + auto result = diplomat::capi::DimensionalVariable_new(value, + {unit.data(), unit.size()}); + return diplomat::Ok, std::monostate>>(result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err())); +} + +inline diplomat::result, std::monostate> DimensionalVariable::asin_scalar(double x) { + auto result = diplomat::capi::DimensionalVariable_asin_scalar(x); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::acos_scalar(double x) { + auto result = diplomat::capi::DimensionalVariable_acos_scalar(x); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::atan_scalar(double x) { + auto result = diplomat::capi::DimensionalVariable_atan_scalar(x); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline size_t DimensionalVariable::base_units_size() { + auto result = diplomat::capi::DimensionalVariable_base_units_size(); + return result; +} + +inline double DimensionalVariable::value() const { + auto result = diplomat::capi::DimensionalVariable_value(this->AsFFI()); + return result; +} + +inline diplomat::result, diplomat::Utf8Error> DimensionalVariable::value_in(std::string_view unit) const { + if (!diplomat::capi::diplomat_is_str(unit.data(), unit.size())) { + return diplomat::Err(); + } + auto result = diplomat::capi::DimensionalVariable_value_in(this->AsFFI(), + {unit.data(), unit.size()}); + return diplomat::Ok>(result.is_ok ? diplomat::result(diplomat::Ok(result.ok)) : diplomat::result(diplomat::Err())); +} + +inline bool DimensionalVariable::is_unitless() const { + auto result = diplomat::capi::DimensionalVariable_is_unitless(this->AsFFI()); + return result; +} + +inline BaseUnits DimensionalVariable::base_units() const { + auto result = diplomat::capi::DimensionalVariable_base_units(this->AsFFI()); + return BaseUnits::FromFFI(result); +} + +inline diplomat::result, std::monostate> DimensionalVariable::add(const DimensionalVariable& other) const { + auto result = diplomat::capi::DimensionalVariable_add(this->AsFFI(), + other.AsFFI()); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::sub(const DimensionalVariable& other) const { + auto result = diplomat::capi::DimensionalVariable_sub(this->AsFFI(), + other.AsFFI()); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline std::unique_ptr DimensionalVariable::mul(const DimensionalVariable& other) const { + auto result = diplomat::capi::DimensionalVariable_mul(this->AsFFI(), + other.AsFFI()); + return std::unique_ptr(DimensionalVariable::FromFFI(result)); +} + +inline std::unique_ptr DimensionalVariable::div(const DimensionalVariable& other) const { + auto result = diplomat::capi::DimensionalVariable_div(this->AsFFI(), + other.AsFFI()); + return std::unique_ptr(DimensionalVariable::FromFFI(result)); +} + +inline std::unique_ptr DimensionalVariable::mul_scalar(double scalar) const { + auto result = diplomat::capi::DimensionalVariable_mul_scalar(this->AsFFI(), + scalar); + return std::unique_ptr(DimensionalVariable::FromFFI(result)); +} + +inline std::unique_ptr DimensionalVariable::div_scalar(double scalar) const { + auto result = diplomat::capi::DimensionalVariable_div_scalar(this->AsFFI(), + scalar); + return std::unique_ptr(DimensionalVariable::FromFFI(result)); +} + +inline std::unique_ptr DimensionalVariable::rdiv_scalar(double scalar) const { + auto result = diplomat::capi::DimensionalVariable_rdiv_scalar(this->AsFFI(), + scalar); + return std::unique_ptr(DimensionalVariable::FromFFI(result)); +} + +inline std::unique_ptr DimensionalVariable::powi(int32_t exp) const { + auto result = diplomat::capi::DimensionalVariable_powi(this->AsFFI(), + exp); + return std::unique_ptr(DimensionalVariable::FromFFI(result)); +} + +inline diplomat::result, std::monostate> DimensionalVariable::powf(double exp) const { + auto result = diplomat::capi::DimensionalVariable_powf(this->AsFFI(), + exp); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::sqrt() const { + auto result = diplomat::capi::DimensionalVariable_sqrt(this->AsFFI()); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::ln() const { + auto result = diplomat::capi::DimensionalVariable_ln(this->AsFFI()); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::log2() const { + auto result = diplomat::capi::DimensionalVariable_log2(this->AsFFI()); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::log10() const { + auto result = diplomat::capi::DimensionalVariable_log10(this->AsFFI()); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::sin() const { + auto result = diplomat::capi::DimensionalVariable_sin(this->AsFFI()); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::cos() const { + auto result = diplomat::capi::DimensionalVariable_cos(this->AsFFI()); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::tan() const { + auto result = diplomat::capi::DimensionalVariable_tan(this->AsFFI()); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::asin() const { + auto result = diplomat::capi::DimensionalVariable_asin(this->AsFFI()); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::acos() const { + auto result = diplomat::capi::DimensionalVariable_acos(this->AsFFI()); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline diplomat::result, std::monostate> DimensionalVariable::atan() const { + auto result = diplomat::capi::DimensionalVariable_atan(this->AsFFI()); + return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); +} + +inline std::unique_ptr DimensionalVariable::neg() const { + auto result = diplomat::capi::DimensionalVariable_neg(this->AsFFI()); + return std::unique_ptr(DimensionalVariable::FromFFI(result)); +} + +inline std::unique_ptr DimensionalVariable::abs() const { + auto result = diplomat::capi::DimensionalVariable_abs(this->AsFFI()); + return std::unique_ptr(DimensionalVariable::FromFFI(result)); +} + +inline bool DimensionalVariable::equals(const DimensionalVariable& other) const { + auto result = diplomat::capi::DimensionalVariable_equals(this->AsFFI(), + other.AsFFI()); + return result; +} + +inline bool DimensionalVariable::not_equals(const DimensionalVariable& other) const { + auto result = diplomat::capi::DimensionalVariable_not_equals(this->AsFFI(), + other.AsFFI()); + return result; +} + +inline diplomat::result DimensionalVariable::less_than(const DimensionalVariable& other) const { + auto result = diplomat::capi::DimensionalVariable_less_than(this->AsFFI(), + other.AsFFI()); + return result.is_ok ? diplomat::result(diplomat::Ok(result.ok)) : diplomat::result(diplomat::Err()); +} + +inline diplomat::result DimensionalVariable::less_equal(const DimensionalVariable& other) const { + auto result = diplomat::capi::DimensionalVariable_less_equal(this->AsFFI(), + other.AsFFI()); + return result.is_ok ? diplomat::result(diplomat::Ok(result.ok)) : diplomat::result(diplomat::Err()); +} + +inline diplomat::result DimensionalVariable::greater_than(const DimensionalVariable& other) const { + auto result = diplomat::capi::DimensionalVariable_greater_than(this->AsFFI(), + other.AsFFI()); + return result.is_ok ? diplomat::result(diplomat::Ok(result.ok)) : diplomat::result(diplomat::Err()); +} + +inline diplomat::result DimensionalVariable::greater_equal(const DimensionalVariable& other) const { + auto result = diplomat::capi::DimensionalVariable_greater_equal(this->AsFFI(), + other.AsFFI()); + return result.is_ok ? diplomat::result(diplomat::Ok(result.ok)) : diplomat::result(diplomat::Err()); +} + +inline std::unique_ptr DimensionalVariable::clone_var() const { + auto result = diplomat::capi::DimensionalVariable_clone_var(this->AsFFI()); + return std::unique_ptr(DimensionalVariable::FromFFI(result)); +} + +inline diplomat::result DimensionalVariable::to_string() const { + std::string output; + diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output); + auto result = diplomat::capi::DimensionalVariable_to_string(this->AsFFI(), + &write); + return result.is_ok ? diplomat::result(diplomat::Ok(std::move(output))) : diplomat::result(diplomat::Err()); +} +template +inline diplomat::result DimensionalVariable::to_string_write(W& writeable) const { + diplomat::capi::DiplomatWrite write = diplomat::WriteTrait::Construct(writeable); + auto result = diplomat::capi::DimensionalVariable_to_string(this->AsFFI(), + &write); + return result.is_ok ? diplomat::result(diplomat::Ok()) : diplomat::result(diplomat::Err()); +} + +inline const diplomat::capi::DimensionalVariable* DimensionalVariable::AsFFI() const { + return reinterpret_cast(this); +} + +inline diplomat::capi::DimensionalVariable* DimensionalVariable::AsFFI() { + return reinterpret_cast(this); +} + +inline const DimensionalVariable* DimensionalVariable::FromFFI(const diplomat::capi::DimensionalVariable* ptr) { + return reinterpret_cast(ptr); +} + +inline DimensionalVariable* DimensionalVariable::FromFFI(diplomat::capi::DimensionalVariable* ptr) { + return reinterpret_cast(ptr); +} + +inline void DimensionalVariable::operator delete(void* ptr) { + diplomat::capi::DimensionalVariable_destroy(reinterpret_cast(ptr)); +} + + +#endif // DimensionalVariable_HPP diff --git a/generated/diplomat/cpp/diplomat_runtime.hpp b/generated/diplomat/cpp/diplomat_runtime.hpp new file mode 100644 index 0000000..60ba46b --- /dev/null +++ b/generated/diplomat/cpp/diplomat_runtime.hpp @@ -0,0 +1,567 @@ +#ifndef DIPLOMAT_RUNTIME_CPP_H +#define DIPLOMAT_RUNTIME_CPP_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#if __cplusplus >= 202002L +#include +#else +#include +#endif + + +namespace diplomat { + +namespace capi { +extern "C" { + +static_assert(sizeof(char) == sizeof(uint8_t), "your architecture's `char` is not 8 bits"); +static_assert(sizeof(char16_t) == sizeof(uint16_t), "your architecture's `char16_t` is not 16 bits"); +static_assert(sizeof(char32_t) == sizeof(uint32_t), "your architecture's `char32_t` is not 32 bits"); + +typedef struct DiplomatWrite { + void* context; + char* buf; + size_t len; + size_t cap; + bool grow_failed; + void (*flush)(struct DiplomatWrite*); + bool (*grow)(struct DiplomatWrite*, size_t); +} DiplomatWrite; + +bool diplomat_is_str(const char* buf, size_t len); + +#define MAKE_SLICES(name, c_ty) \ + typedef struct Diplomat##name##View { \ + const c_ty* data; \ + size_t len; \ + } Diplomat##name##View; \ + typedef struct Diplomat##name##ViewMut { \ + c_ty* data; \ + size_t len; \ + } Diplomat##name##ViewMut; \ + typedef struct Diplomat##name##Array { \ + const c_ty* data; \ + size_t len; \ + } Diplomat##name##Array; + +#define MAKE_SLICES_AND_OPTIONS(name, c_ty) \ + MAKE_SLICES(name, c_ty) \ + typedef struct Option##name {union { c_ty ok; }; bool is_ok; } Option##name; \ + typedef struct Option##name##View {union { Diplomat##name##View ok; }; bool is_ok; } Option##name##View; \ + typedef struct Option##name##ViewMut {union { Diplomat##name##ViewMut ok; }; bool is_ok; } Option##name##ViewMut; \ + typedef struct Option##name##Array {union { Diplomat##name##Array ok; }; bool is_ok; } Option##name##Array; \ + +MAKE_SLICES_AND_OPTIONS(I8, int8_t) +MAKE_SLICES_AND_OPTIONS(U8, uint8_t) +MAKE_SLICES_AND_OPTIONS(I16, int16_t) +MAKE_SLICES_AND_OPTIONS(U16, uint16_t) +MAKE_SLICES_AND_OPTIONS(I32, int32_t) +MAKE_SLICES_AND_OPTIONS(U32, uint32_t) +MAKE_SLICES_AND_OPTIONS(I64, int64_t) +MAKE_SLICES_AND_OPTIONS(U64, uint64_t) +MAKE_SLICES_AND_OPTIONS(Isize, intptr_t) +MAKE_SLICES_AND_OPTIONS(Usize, size_t) +MAKE_SLICES_AND_OPTIONS(F32, float) +MAKE_SLICES_AND_OPTIONS(F64, double) +MAKE_SLICES_AND_OPTIONS(Bool, bool) +MAKE_SLICES_AND_OPTIONS(Char, char32_t) +MAKE_SLICES_AND_OPTIONS(String, char) +MAKE_SLICES_AND_OPTIONS(String16, char16_t) +MAKE_SLICES_AND_OPTIONS(Strings, DiplomatStringView) +MAKE_SLICES_AND_OPTIONS(Strings16, DiplomatString16View) + +} // extern "C" +} // namespace capi + +extern "C" inline void _flush(capi::DiplomatWrite* w) { + std::string* string = reinterpret_cast(w->context); + string->resize(w->len); +} + +extern "C" inline bool _grow(capi::DiplomatWrite* w, uintptr_t requested) { + std::string* string = reinterpret_cast(w->context); + string->resize(requested); + w->cap = string->length(); + w->buf = &(*string)[0]; + return true; +} + +inline capi::DiplomatWrite WriteFromString(std::string& string) { + capi::DiplomatWrite w; + w.context = &string; + w.buf = &string[0]; + w.len = string.length(); + w.cap = string.length(); + // Will never become true, as _grow is infallible. + w.grow_failed = false; + w.flush = _flush; + w.grow = _grow; + return w; +} + +// This "trait" allows one to use _write() methods to efficiently +// write to a custom string type. To do this you need to write a specialized +// `WriteTrait` (see WriteTrait below) +// that is capable of constructing a DiplomatWrite, which can wrap +// your string type with appropriate resize/flush functionality. +template struct WriteTrait { + // Fill in this method on a specialization to implement this trait + // static inline capi::DiplomatWrite Construct(T& t); +}; + +template<> struct WriteTrait { + static inline capi::DiplomatWrite Construct(std::string& t) { + return diplomat::WriteFromString(t); + } +}; + +template struct Ok { + T inner; + + // Move constructor always allowed + Ok(T&& i): inner(std::forward(i)) {} + + // copy constructor allowed only for trivially copyable types + template::value>::type> + Ok(const T& i) : inner(i) {} + + Ok() = default; + Ok(Ok&&) noexcept = default; + Ok(const Ok &) = default; + Ok& operator=(const Ok&) = default; + Ok& operator=(Ok&&) noexcept = default; +}; + + +template struct Err { + T inner; + + // Move constructor always allowed + Err(T&& i): inner(std::forward(i)) {} + + // copy constructor allowed only for trivially copyable types + template::value>::type> + Err(const T& i) : inner(i) {} + + Err() = default; + Err(Err&&) noexcept = default; + Err(const Err &) = default; + Err& operator=(const Err&) = default; + Err& operator=(Err&&) noexcept = default; +}; + +template struct fn_traits; + +template +class result { +protected: + std::variant, Err> val; +public: + template + friend struct fn_traits; + + result(Ok&& v): val(std::move(v)) {} + result(Err&& v): val(std::move(v)) {} + result() = default; + result(const result &) = default; + result& operator=(const result&) = default; + result& operator=(result&&) noexcept = default; + result(result &&) noexcept = default; + ~result() = default; + bool is_ok() const { + return std::holds_alternative>(this->val); + } + bool is_err() const { + return std::holds_alternative>(this->val); + } + + template, std::nullptr_t> = nullptr> + std::optional ok() && { + if (!this->is_ok()) { + return std::nullopt; + } + return std::make_optional(std::move(std::get>(std::move(this->val)).inner)); + } + + template, std::nullptr_t> = nullptr> + std::optional err() && { + if (!this->is_err()) { + return std::nullopt; + } + return std::make_optional(std::move(std::get>(std::move(this->val)).inner)); + } + + // std::optional does not work with reference types directly, so wrap them if present + template, std::nullptr_t> = nullptr> + std::optional>> ok() && { + if (!this->is_ok()) { + return std::nullopt; + } + return std::make_optional(std::reference_wrapper(std::forward(std::get>(std::move(this->val)).inner))); + } + + template, std::nullptr_t> = nullptr> + std::optional>> err() && { + if (!this->is_err()) { + return std::nullopt; + } + return std::make_optional(std::reference_wrapper(std::forward(std::get>(std::move(this->val)).inner))); + } + + void set_ok(T&& t) { + this->val = Ok(std::move(t)); + } + + void set_err(E&& e) { + this->val = Err(std::move(e)); + } + + template + result replace_ok(T2&& t) { + if (this->is_err()) { + return result(Err(std::get>(std::move(this->val)))); + } else { + return result(Ok(std::move(t))); + } + } +}; + +class Utf8Error {}; + +// Use custom std::span on C++17, otherwise use std::span +#if __cplusplus >= 202002L + +constexpr std::size_t dynamic_extent = std::dynamic_extent; +template using span = std::span; + +#else // __cplusplus < 202002L + +// C++-17-compatible-ish std::span +constexpr size_t dynamic_extent = std::numeric_limits::max(); +template +class span { +public: + constexpr span(T *data = nullptr, size_t size = Extent) + : data_(data), size_(size) {} + + constexpr span(const span &o) + : data_(o.data_), size_(o.size_) {} + template + constexpr span(std::array, N> &arr) + : data_(const_cast(arr.data())), size_(N) {} + + constexpr T* data() const noexcept { + return this->data_; + } + constexpr size_t size() const noexcept { + return this->size_; + } + + constexpr T *begin() const noexcept { return data(); } + constexpr T *end() const noexcept { return data() + size(); } + + void operator=(span o) { + data_ = o.data_; + size_ = o.size_; + } + +private: + T* data_; + size_t size_; +}; + +#endif // __cplusplus >= 202002L + +// An ABI stable std::basic_string_view equivalent for the case of string +// views in slices +template > +class basic_string_view_for_slice { +public: + using std_string_view = std::basic_string_view; + using traits_type = typename std_string_view::traits_type; + using value_type = typename std_string_view::value_type; + using pointer = typename std_string_view::pointer; + using const_pointer = typename std_string_view::const_pointer; + using size_type = typename std_string_view::size_type; + using difference_type = typename std_string_view::difference_type; + + constexpr basic_string_view_for_slice() noexcept + : basic_string_view_for_slice{std_string_view{}} {} + + constexpr basic_string_view_for_slice(const basic_string_view_for_slice& other) noexcept = default; + + constexpr basic_string_view_for_slice(const const_pointer s, const size_type count) + : basic_string_view_for_slice{std_string_view{s, count}} {} + + constexpr basic_string_view_for_slice(const const_pointer s) + : basic_string_view_for_slice{std_string_view{s}} {} + + constexpr basic_string_view_for_slice& operator=(const basic_string_view_for_slice& view) noexcept = default; + + constexpr basic_string_view_for_slice(const std_string_view& s) noexcept + : data_{s.data(), s.size()} {} + + constexpr basic_string_view_for_slice& operator=(const std_string_view& s) noexcept { + data_ = {s.data(), s.size()}; + return *this; + } + + constexpr operator std_string_view() const noexcept { return {data(), size()}; } + constexpr std_string_view as_sv() const noexcept { return *this; } + + constexpr const_pointer data() const noexcept { return data_.data; } + constexpr size_type size() const noexcept { return data_.len; } + +private: + using capi_type = + std::conditional_t, + capi::DiplomatStringView, + std::conditional_t, + capi::DiplomatString16View, + void>>; + + static_assert(!std::is_void_v, + "ABI compatible string_views are only supported for char and char16_t"); + + capi_type data_; +}; + +// We only implement these specialisations as diplomat doesn't provide c abi +// types for others +using string_view_for_slice = basic_string_view_for_slice; +using u16string_view_for_slice = basic_string_view_for_slice; + +using string_view_span = span; +using u16string_view_span = span; + +// Interop between std::function & our C Callback wrapper type + +template +struct as_ffi { + using type = T; +}; + +template +struct as_ffi>().AsFFI())>> { + using type = decltype(std::declval>().AsFFI()); +}; + +template +using as_ffi_t = typename as_ffi::type; + +template +using replace_string_view_t = std::conditional_t, capi::DiplomatStringView, T>; + +template +struct diplomat_c_span_convert { + using type = T; +}; + +#define MAKE_SLICE_CONVERTERS(name, c_ty) \ + template \ + struct diplomat_c_span_convert>>> { \ + using type = diplomat::capi::Diplomat##name##View; \ + }; \ + template \ + struct diplomat_c_span_convert>>> { \ + using type = diplomat::capi::Diplomat##name##ViewMut; \ + }; \ + +MAKE_SLICE_CONVERTERS(I8, int8_t) +MAKE_SLICE_CONVERTERS(U8, uint8_t) +MAKE_SLICE_CONVERTERS(I16, int16_t) +MAKE_SLICE_CONVERTERS(U16, uint16_t) +MAKE_SLICE_CONVERTERS(I32, int32_t) +MAKE_SLICE_CONVERTERS(U32, uint32_t) +MAKE_SLICE_CONVERTERS(I64, int64_t) +MAKE_SLICE_CONVERTERS(U64, uint64_t) +MAKE_SLICE_CONVERTERS(F32, float) +MAKE_SLICE_CONVERTERS(F64, double) +MAKE_SLICE_CONVERTERS(Bool, bool) +MAKE_SLICE_CONVERTERS(Char, char32_t) +MAKE_SLICE_CONVERTERS(String, char) +MAKE_SLICE_CONVERTERS(String16, char16_t) + +template +using diplomat_c_span_convert_t = typename diplomat_c_span_convert::type; + +/// Replace the argument types from the std::function with the argument types for th function pointer +template +using replace_fn_t = diplomat_c_span_convert_t>>; + +template struct fn_traits> { + using fn_ptr_t = Ret(Args...); + using function_t = std::function; + using ret = Ret; + + // For a given T, creates a function that take in the C ABI version & return the C++ type. + template + static T replace(replace_fn_t val) { + if constexpr(std::is_same_v) { + return std::string_view{val.data, val.len}; + } else if constexpr (!std::is_same_v>) { + return T{ val.data, val.len }; + } else if constexpr (!std::is_same_v>) { + if constexpr (std::is_lvalue_reference_v) { + return *std::remove_reference_t::FromFFI(val); + } + else { + return T::FromFFI(val); + } + } + else { + return val; + } + } + + template + static replace_fn_t replace_ret(T val) { + if constexpr(std::is_same_v) { + return {val.data(), val.size()}; + } else if constexpr (!std::is_same_v>) { + // Can we convert straight away to our slice type, or (in the case of ABI compatible structs), do we have to do a reinterpret cast? + if constexpr(std::is_same_v().data()), decltype(replace_fn_t::data)>) { + return replace_fn_t { val.data(), val.size() }; + } else { + return replace_fn_t { reinterpret_cast::data)>(val.data()), val.size() }; + } + } else if constexpr(!std::is_same_v>) { + return val.AsFFI(); + } else { + return val; + } + } + + static Ret c_run_callback(const void *cb, replace_fn_t... args) { + return (*reinterpret_cast(cb))(replace(args)...); + } + + template + static TOut c_run_callback_result(const void *cb, replace_fn_t... args) { + result res = c_run_callback(cb, args...); + + auto is_ok = res.is_ok(); + + constexpr bool has_ok = !std::is_same_v; + constexpr bool has_err = !std::is_same_v; + + TOut out; + out.is_ok = is_ok; + + if constexpr (has_ok) { + if (is_ok) { + out.ok = replace_ret(std::get>(res.val).inner); + } + } + + if constexpr(has_err) { + if (!is_ok) { + out.err = replace_ret(std::get>(res.val).inner); + } + } + + return out; + } + + // For DiplomatOption<> + template + static TOut c_run_callback_diplomat_option(const void *cb, replace_fn_t... args) { + constexpr bool has_ok = !std::is_same_v; + + std::optional ret = c_run_callback(cb, args...); + + bool is_ok = ret.has_value(); + + TOut out; + out.is_ok = is_ok; + + if constexpr(has_ok) { + if (is_ok) { + out.ok = replace_ret(ret.value()); + } + } + return out; + } + + // All we need to do is just convert one pointer to another, while keeping the arguments the same: + template + static T c_run_callback_diplomat_opaque(const void* cb, replace_fn_t... args) { + Ret out = c_run_callback(cb, args...); + + return out->AsFFI(); + } + + static void c_delete(const void *cb) { + delete reinterpret_cast(cb); + } + + fn_traits(function_t) {} // Allows less clunky construction (avoids decltype) +}; + +// additional deduction guide required +template +fn_traits(T) -> fn_traits; + +// Trait for extracting inner types from either T*, std::optional, or std::unique_ptr. +// These are the three potential types returned by next() functions +template struct inner { /* only T*, std::optional, and std::unique_ptr are supported */ }; +template struct inner { using type = T; }; +template struct inner> { using type = T; }; +template struct inner>{ using type = T; }; + +template::type> +inline const U get_inner_if_present(T v) { + if constexpr(std::is_same_v) { + return std::move(v); + } else { + return *std::move(v); + } +} + +// Adapter for iterator types +template struct has_next : std::false_type {}; +template struct has_next < T, std::void_t().next())>> : std::true_type {}; +template constexpr bool has_next_v = has_next::value; + +/// Helper template enabling native iteration over unique ptrs to objects which implement next() +template +struct next_to_iter_helper { + static_assert(has_next_v, "next_to_iter_helper may only be used with types implementing next()"); + using next_type = decltype(std::declval().next()); + + // STL Iterator trait definitions + using value_type = typename inner::type; + using difference_type = void; + using reference = std::add_lvalue_reference_t; + using iterator_category = std::input_iterator_tag; + + next_to_iter_helper(std::unique_ptr&& ptr) : _ptr(std::move(ptr)), _curr(_ptr->next()) {} + + // https://en.cppreference.com/w/cpp/named_req/InputIterator requires that the type be copyable + next_to_iter_helper(const next_to_iter_helper& o) : _ptr(o._ptr), _curr(o._curr) {} + + void operator++() { _curr = _ptr->next(); } + void operator++(int) { ++(*this); } + const value_type& operator*() const { return *_curr; } + + bool operator!=(std::nullopt_t) { + return (bool)_curr; + } + + std::shared_ptr _ptr; // shared to satisfy the copyable requirement + next_type _curr; +}; + +} // namespace diplomat + +#endif \ No newline at end of file diff --git a/generated/diplomat/nanobind/BUILD.bazel b/generated/diplomat/nanobind/BUILD.bazel new file mode 100644 index 0000000..e7efc5e --- /dev/null +++ b/generated/diplomat/nanobind/BUILD.bazel @@ -0,0 +1,42 @@ +load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") + +package(default_visibility = ["//visibility:public"]) + +NANOBIND_REPO = "external/rules_python++pip+pypi_312_nanobind/site-packages/nanobind" + +cc_library( + name = "headers", + hdrs = glob(["include/*.hpp"]), + includes = ["include"], +) + +cc_library( + name = "nanobind_wheel_files", + hdrs = ["@pypi//nanobind:extracted_whl_files"], +) + +cc_binary( + name = "dv_pyo3.so", + srcs = [ + "dv_pyo3_ext.cpp", + "sub_modules/dv_pyo3/BaseUnits_binding.cpp", + "sub_modules/dv_pyo3/DimensionalVariable_binding.cpp", + "@@rules_python++pip+pypi_312_nanobind//:site-packages/nanobind/src/nb_combined.cpp", + ], + copts = [ + "-std=c++17", + "-faligned-allocation", + "-fvisibility=hidden", + "-I" + NANOBIND_REPO + "/include", + "-I" + NANOBIND_REPO + "/src", + "-I" + NANOBIND_REPO + "/ext/robin_map/include", + ], + deps = [ + ":headers", + ":nanobind_wheel_files", + "//ffi/diplomat:dv_diplomat_capi_static", + "@python_3_12//:libpython", + "@python_3_12//:python_headers", + ], + linkshared = True, +) diff --git a/generated/diplomat/nanobind/dv_py_ext.cpp b/generated/diplomat/nanobind/dv_py_ext.cpp new file mode 100644 index 0000000..4a9b99f --- /dev/null +++ b/generated/diplomat/nanobind/dv_py_ext.cpp @@ -0,0 +1,68 @@ +#include "diplomat_nanobind_common.hpp" +#include <../src/nb_internals.h> // Required for shimming + +// Forward declarations for binding add functions +namespace dv_py{ + +void add_BaseUnits_binding(nb::module_); +void add_DimensionalVariable_binding(nb::module_); +} + +// Nanobind does not usually support custom deleters, so we're shimming some of the machinery to add that ability. +// On module init, the dummy type will have the normal nanobind inst_dealloc function in the tp_dealloc slot, so we +// pull it out, store it here, and then call it in the tp_dealloc function we are shimming in to all our types. +// Our custom tp_dealloc function will call the tp_free function instead of `delete`, allowing us effectively to override +// the delete operator. +// See https://nanobind.readthedocs.io/en/latest/lowlevel.html#customizing-type-creation and +// https://github.com/wjakob/nanobind/discussions/932 +void (*nb_tp_dealloc)(void *) = nullptr; + +void diplomat_tp_dealloc(PyObject *self) +{ + using namespace nb::detail; + PyTypeObject *tp = Py_TYPE(self); + const type_data *t = nb_type_data(tp); + + nb_inst *inst = (nb_inst *)self; + void *p = inst_ptr(inst); + if (inst->destruct) + { + inst->destruct = false; + check(t->flags & (uint32_t)type_flags::is_destructible, + "nanobind::detail::inst_dealloc(\"%s\"): attempted to call " + "the destructor of a non-destructible type!", + t->name); + if (t->flags & (uint32_t)type_flags::has_destruct) + t->destruct(p); + } + if (inst->cpp_delete) + { + inst->cpp_delete = false; + auto tp_free = (freefunc)(PyType_GetSlot(tp, Py_tp_free)); + (*tp_free)(p); + } + (*nb_tp_dealloc)(self); +} + +struct _Dummy {}; + +NB_MODULE(dv_py, mod) +{ + using namespace dv_py; + + { + nb::class_<_Dummy> dummy(mod, "__dummy__"); + nb_tp_dealloc = (void (*)(void *))nb::type_get_slot(dummy, Py_tp_dealloc); + } + + nb::class_(mod, "monostate") + .def("__repr__", [](const std::monostate &) + { return ""; }) + .def("__str__", [](const std::monostate &) + { return ""; });// Module declarations + // Add bindings + add_BaseUnits_binding(mod); + add_DimensionalVariable_binding(mod); + + +} \ No newline at end of file diff --git a/generated/diplomat/nanobind/dv_pyo3_ext.cpp b/generated/diplomat/nanobind/dv_pyo3_ext.cpp new file mode 100644 index 0000000..400c0c2 --- /dev/null +++ b/generated/diplomat/nanobind/dv_pyo3_ext.cpp @@ -0,0 +1,68 @@ +#include "diplomat_nanobind_common.hpp" +#include <../src/nb_internals.h> // Required for shimming + +// Forward declarations for binding add functions +namespace dv_pyo3{ + +void add_BaseUnits_binding(nb::module_); +void add_DimensionalVariable_binding(nb::module_); +} + +// Nanobind does not usually support custom deleters, so we're shimming some of the machinery to add that ability. +// On module init, the dummy type will have the normal nanobind inst_dealloc function in the tp_dealloc slot, so we +// pull it out, store it here, and then call it in the tp_dealloc function we are shimming in to all our types. +// Our custom tp_dealloc function will call the tp_free function instead of `delete`, allowing us effectively to override +// the delete operator. +// See https://nanobind.readthedocs.io/en/latest/lowlevel.html#customizing-type-creation and +// https://github.com/wjakob/nanobind/discussions/932 +void (*nb_tp_dealloc)(void *) = nullptr; + +void diplomat_tp_dealloc(PyObject *self) +{ + using namespace nb::detail; + PyTypeObject *tp = Py_TYPE(self); + const type_data *t = nb_type_data(tp); + + nb_inst *inst = (nb_inst *)self; + void *p = inst_ptr(inst); + if (inst->destruct) + { + inst->destruct = false; + check(t->flags & (uint32_t)type_flags::is_destructible, + "nanobind::detail::inst_dealloc(\"%s\"): attempted to call " + "the destructor of a non-destructible type!", + t->name); + if (t->flags & (uint32_t)type_flags::has_destruct) + t->destruct(p); + } + if (inst->cpp_delete) + { + inst->cpp_delete = false; + auto tp_free = (freefunc)(PyType_GetSlot(tp, Py_tp_free)); + (*tp_free)(p); + } + (*nb_tp_dealloc)(self); +} + +struct _Dummy {}; + +NB_MODULE(dv_pyo3, mod) +{ + using namespace dv_pyo3; + + { + nb::class_<_Dummy> dummy(mod, "__dummy__"); + nb_tp_dealloc = (void (*)(void *))nb::type_get_slot(dummy, Py_tp_dealloc); + } + + nb::class_(mod, "monostate") + .def("__repr__", [](const std::monostate &) + { return ""; }) + .def("__str__", [](const std::monostate &) + { return ""; });// Module declarations + // Add bindings + add_BaseUnits_binding(mod); + add_DimensionalVariable_binding(mod); + + +} \ No newline at end of file diff --git a/generated/diplomat/nanobind/include/BaseUnits.d.hpp b/generated/diplomat/nanobind/include/BaseUnits.d.hpp new file mode 100644 index 0000000..50740a5 --- /dev/null +++ b/generated/diplomat/nanobind/include/BaseUnits.d.hpp @@ -0,0 +1,52 @@ +#ifndef DV_PYO3_BaseUnits_D_HPP +#define DV_PYO3_BaseUnits_D_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include "diplomat_runtime.hpp" + + +namespace dv_pyo3 { +namespace capi { + struct BaseUnits { + double m; + double kg; + double s; + double k; + double a; + double mol; + double cd; + double rad; + }; + + typedef struct BaseUnits_option {union { BaseUnits ok; }; bool is_ok; } BaseUnits_option; +} // namespace capi +} // namespace + + +namespace dv_pyo3 { +/** + * See the [Rust documentation for `BASE_UNITS_SIZE`](https://docs.rs/dv_rs/latest/dv_rs/units/BASE_UNITS_SIZE/index.html) for more information. + */ +struct BaseUnits { + double m; + double kg; + double s; + double k; + double a; + double mol; + double cd; + double rad; + + inline dv_pyo3::capi::BaseUnits AsFFI() const; + inline static dv_pyo3::BaseUnits FromFFI(dv_pyo3::capi::BaseUnits c_struct); +}; + +} // namespace +#endif // DV_PYO3_BaseUnits_D_HPP diff --git a/generated/diplomat/nanobind/include/BaseUnits.hpp b/generated/diplomat/nanobind/include/BaseUnits.hpp new file mode 100644 index 0000000..ff20551 --- /dev/null +++ b/generated/diplomat/nanobind/include/BaseUnits.hpp @@ -0,0 +1,51 @@ +#ifndef DV_PYO3_BaseUnits_HPP +#define DV_PYO3_BaseUnits_HPP + +#include "BaseUnits.d.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include "diplomat_runtime.hpp" + + +namespace dv_pyo3 { +namespace capi { + +} // namespace capi +} // namespace + + +inline dv_pyo3::capi::BaseUnits dv_pyo3::BaseUnits::AsFFI() const { + return dv_pyo3::capi::BaseUnits { + /* .m = */ m, + /* .kg = */ kg, + /* .s = */ s, + /* .k = */ k, + /* .a = */ a, + /* .mol = */ mol, + /* .cd = */ cd, + /* .rad = */ rad, + }; +} + +inline dv_pyo3::BaseUnits dv_pyo3::BaseUnits::FromFFI(dv_pyo3::capi::BaseUnits c_struct) { + return dv_pyo3::BaseUnits { + /* .m = */ c_struct.m, + /* .kg = */ c_struct.kg, + /* .s = */ c_struct.s, + /* .k = */ c_struct.k, + /* .a = */ c_struct.a, + /* .mol = */ c_struct.mol, + /* .cd = */ c_struct.cd, + /* .rad = */ c_struct.rad, + }; +} + + +#endif // DV_PYO3_BaseUnits_HPP diff --git a/generated/diplomat/nanobind/include/DimensionalVariable.d.hpp b/generated/diplomat/nanobind/include/DimensionalVariable.d.hpp new file mode 100644 index 0000000..eec25b9 --- /dev/null +++ b/generated/diplomat/nanobind/include/DimensionalVariable.d.hpp @@ -0,0 +1,124 @@ +#ifndef DV_PYO3_DimensionalVariable_D_HPP +#define DV_PYO3_DimensionalVariable_D_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include "diplomat_runtime.hpp" +namespace dv_pyo3 { +namespace capi { struct DimensionalVariable; } +class DimensionalVariable; +struct BaseUnits; +} // namespace dv_pyo3 + + + +namespace dv_pyo3 { +namespace capi { + struct DimensionalVariable; +} // namespace capi +} // namespace + +namespace dv_pyo3 { +class DimensionalVariable { +public: + + inline static dv_pyo3::diplomat::result, std::monostate>, dv_pyo3::diplomat::Utf8Error> new_(double value, std::string_view unit); + + inline static dv_pyo3::diplomat::result, std::monostate> asin_scalar(double x); + + inline static dv_pyo3::diplomat::result, std::monostate> acos_scalar(double x); + + inline static dv_pyo3::diplomat::result, std::monostate> atan_scalar(double x); + + inline static size_t base_units_size(); + + inline double value() const; + + inline dv_pyo3::diplomat::result, dv_pyo3::diplomat::Utf8Error> value_in(std::string_view unit) const; + + inline bool is_unitless() const; + + inline dv_pyo3::BaseUnits base_units() const; + + inline dv_pyo3::diplomat::result, std::monostate> add(const dv_pyo3::DimensionalVariable& other) const; + + inline dv_pyo3::diplomat::result, std::monostate> sub(const dv_pyo3::DimensionalVariable& other) const; + + inline std::unique_ptr mul(const dv_pyo3::DimensionalVariable& other) const; + + inline std::unique_ptr div(const dv_pyo3::DimensionalVariable& other) const; + + inline std::unique_ptr mul_scalar(double scalar) const; + + inline std::unique_ptr div_scalar(double scalar) const; + + inline std::unique_ptr rdiv_scalar(double scalar) const; + + inline std::unique_ptr powi(int32_t exp) const; + + inline dv_pyo3::diplomat::result, std::monostate> powf(double exp) const; + + inline dv_pyo3::diplomat::result, std::monostate> sqrt() const; + + inline dv_pyo3::diplomat::result, std::monostate> ln() const; + + inline dv_pyo3::diplomat::result, std::monostate> log2() const; + + inline dv_pyo3::diplomat::result, std::monostate> log10() const; + + inline dv_pyo3::diplomat::result, std::monostate> sin() const; + + inline dv_pyo3::diplomat::result, std::monostate> cos() const; + + inline dv_pyo3::diplomat::result, std::monostate> tan() const; + + inline dv_pyo3::diplomat::result, std::monostate> asin() const; + + inline dv_pyo3::diplomat::result, std::monostate> acos() const; + + inline dv_pyo3::diplomat::result, std::monostate> atan() const; + + inline std::unique_ptr neg() const; + + inline std::unique_ptr abs() const; + + inline bool equals(const dv_pyo3::DimensionalVariable& other) const; + + inline bool not_equals(const dv_pyo3::DimensionalVariable& other) const; + + inline dv_pyo3::diplomat::result less_than(const dv_pyo3::DimensionalVariable& other) const; + + inline dv_pyo3::diplomat::result less_equal(const dv_pyo3::DimensionalVariable& other) const; + + inline dv_pyo3::diplomat::result greater_than(const dv_pyo3::DimensionalVariable& other) const; + + inline dv_pyo3::diplomat::result greater_equal(const dv_pyo3::DimensionalVariable& other) const; + + inline std::unique_ptr clone_var() const; + + inline dv_pyo3::diplomat::result to_string() const; + template + inline dv_pyo3::diplomat::result to_string_write(W& writeable_output) const; + + inline const dv_pyo3::capi::DimensionalVariable* AsFFI() const; + inline dv_pyo3::capi::DimensionalVariable* AsFFI(); + inline static const dv_pyo3::DimensionalVariable* FromFFI(const dv_pyo3::capi::DimensionalVariable* ptr); + inline static dv_pyo3::DimensionalVariable* FromFFI(dv_pyo3::capi::DimensionalVariable* ptr); + inline static void operator delete(void* ptr); +private: + DimensionalVariable() = delete; + DimensionalVariable(const dv_pyo3::DimensionalVariable&) = delete; + DimensionalVariable(dv_pyo3::DimensionalVariable&&) noexcept = delete; + DimensionalVariable operator=(const dv_pyo3::DimensionalVariable&) = delete; + DimensionalVariable operator=(dv_pyo3::DimensionalVariable&&) noexcept = delete; + static void operator delete[](void*, size_t) = delete; +}; + +} // namespace +#endif // DV_PYO3_DimensionalVariable_D_HPP diff --git a/generated/diplomat/nanobind/include/DimensionalVariable.hpp b/generated/diplomat/nanobind/include/DimensionalVariable.hpp new file mode 100644 index 0000000..a32922f --- /dev/null +++ b/generated/diplomat/nanobind/include/DimensionalVariable.hpp @@ -0,0 +1,371 @@ +#ifndef DV_PYO3_DimensionalVariable_HPP +#define DV_PYO3_DimensionalVariable_HPP + +#include "DimensionalVariable.d.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include "BaseUnits.hpp" +#include "diplomat_runtime.hpp" + + +namespace dv_pyo3 { +namespace capi { + extern "C" { + + typedef struct DimensionalVariable_new_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_new_result; + DimensionalVariable_new_result DimensionalVariable_new(double value, dv_pyo3::diplomat::capi::DiplomatStringView unit); + + typedef struct DimensionalVariable_asin_scalar_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_asin_scalar_result; + DimensionalVariable_asin_scalar_result DimensionalVariable_asin_scalar(double x); + + typedef struct DimensionalVariable_acos_scalar_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_acos_scalar_result; + DimensionalVariable_acos_scalar_result DimensionalVariable_acos_scalar(double x); + + typedef struct DimensionalVariable_atan_scalar_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_atan_scalar_result; + DimensionalVariable_atan_scalar_result DimensionalVariable_atan_scalar(double x); + + size_t DimensionalVariable_base_units_size(void); + + double DimensionalVariable_value(const dv_pyo3::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_value_in_result {union {double ok; }; bool is_ok;} DimensionalVariable_value_in_result; + DimensionalVariable_value_in_result DimensionalVariable_value_in(const dv_pyo3::capi::DimensionalVariable* self, dv_pyo3::diplomat::capi::DiplomatStringView unit); + + bool DimensionalVariable_is_unitless(const dv_pyo3::capi::DimensionalVariable* self); + + dv_pyo3::capi::BaseUnits DimensionalVariable_base_units(const dv_pyo3::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_add_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_add_result; + DimensionalVariable_add_result DimensionalVariable_add(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); + + typedef struct DimensionalVariable_sub_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sub_result; + DimensionalVariable_sub_result DimensionalVariable_sub(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); + + dv_pyo3::capi::DimensionalVariable* DimensionalVariable_mul(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); + + dv_pyo3::capi::DimensionalVariable* DimensionalVariable_div(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); + + dv_pyo3::capi::DimensionalVariable* DimensionalVariable_mul_scalar(const dv_pyo3::capi::DimensionalVariable* self, double scalar); + + dv_pyo3::capi::DimensionalVariable* DimensionalVariable_div_scalar(const dv_pyo3::capi::DimensionalVariable* self, double scalar); + + dv_pyo3::capi::DimensionalVariable* DimensionalVariable_rdiv_scalar(const dv_pyo3::capi::DimensionalVariable* self, double scalar); + + dv_pyo3::capi::DimensionalVariable* DimensionalVariable_powi(const dv_pyo3::capi::DimensionalVariable* self, int32_t exp); + + typedef struct DimensionalVariable_powf_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_powf_result; + DimensionalVariable_powf_result DimensionalVariable_powf(const dv_pyo3::capi::DimensionalVariable* self, double exp); + + typedef struct DimensionalVariable_sqrt_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sqrt_result; + DimensionalVariable_sqrt_result DimensionalVariable_sqrt(const dv_pyo3::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_ln_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_ln_result; + DimensionalVariable_ln_result DimensionalVariable_ln(const dv_pyo3::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_log2_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_log2_result; + DimensionalVariable_log2_result DimensionalVariable_log2(const dv_pyo3::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_log10_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_log10_result; + DimensionalVariable_log10_result DimensionalVariable_log10(const dv_pyo3::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_sin_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sin_result; + DimensionalVariable_sin_result DimensionalVariable_sin(const dv_pyo3::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_cos_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_cos_result; + DimensionalVariable_cos_result DimensionalVariable_cos(const dv_pyo3::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_tan_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_tan_result; + DimensionalVariable_tan_result DimensionalVariable_tan(const dv_pyo3::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_asin_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_asin_result; + DimensionalVariable_asin_result DimensionalVariable_asin(const dv_pyo3::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_acos_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_acos_result; + DimensionalVariable_acos_result DimensionalVariable_acos(const dv_pyo3::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_atan_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_atan_result; + DimensionalVariable_atan_result DimensionalVariable_atan(const dv_pyo3::capi::DimensionalVariable* self); + + dv_pyo3::capi::DimensionalVariable* DimensionalVariable_neg(const dv_pyo3::capi::DimensionalVariable* self); + + dv_pyo3::capi::DimensionalVariable* DimensionalVariable_abs(const dv_pyo3::capi::DimensionalVariable* self); + + bool DimensionalVariable_equals(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); + + bool DimensionalVariable_not_equals(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); + + typedef struct DimensionalVariable_less_than_result {union {bool ok; }; bool is_ok;} DimensionalVariable_less_than_result; + DimensionalVariable_less_than_result DimensionalVariable_less_than(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); + + typedef struct DimensionalVariable_less_equal_result {union {bool ok; }; bool is_ok;} DimensionalVariable_less_equal_result; + DimensionalVariable_less_equal_result DimensionalVariable_less_equal(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); + + typedef struct DimensionalVariable_greater_than_result {union {bool ok; }; bool is_ok;} DimensionalVariable_greater_than_result; + DimensionalVariable_greater_than_result DimensionalVariable_greater_than(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); + + typedef struct DimensionalVariable_greater_equal_result {union {bool ok; }; bool is_ok;} DimensionalVariable_greater_equal_result; + DimensionalVariable_greater_equal_result DimensionalVariable_greater_equal(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); + + dv_pyo3::capi::DimensionalVariable* DimensionalVariable_clone_var(const dv_pyo3::capi::DimensionalVariable* self); + + typedef struct DimensionalVariable_to_string_result { bool is_ok;} DimensionalVariable_to_string_result; + DimensionalVariable_to_string_result DimensionalVariable_to_string(const dv_pyo3::capi::DimensionalVariable* self, dv_pyo3::diplomat::capi::DiplomatWrite* write); + + void DimensionalVariable_destroy(DimensionalVariable* self); + + } // extern "C" +} // namespace capi +} // namespace + +inline dv_pyo3::diplomat::result, std::monostate>, dv_pyo3::diplomat::Utf8Error> dv_pyo3::DimensionalVariable::new_(double value, std::string_view unit) { + if (!dv_pyo3::diplomat::capi::diplomat_is_str(unit.data(), unit.size())) { + return dv_pyo3::diplomat::Err(); + } + auto result = dv_pyo3::capi::DimensionalVariable_new(value, + {unit.data(), unit.size()}); + return dv_pyo3::diplomat::Ok, std::monostate>>(result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err())); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::asin_scalar(double x) { + auto result = dv_pyo3::capi::DimensionalVariable_asin_scalar(x); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::acos_scalar(double x) { + auto result = dv_pyo3::capi::DimensionalVariable_acos_scalar(x); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::atan_scalar(double x) { + auto result = dv_pyo3::capi::DimensionalVariable_atan_scalar(x); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline size_t dv_pyo3::DimensionalVariable::base_units_size() { + auto result = dv_pyo3::capi::DimensionalVariable_base_units_size(); + return result; +} + +inline double dv_pyo3::DimensionalVariable::value() const { + auto result = dv_pyo3::capi::DimensionalVariable_value(this->AsFFI()); + return result; +} + +inline dv_pyo3::diplomat::result, dv_pyo3::diplomat::Utf8Error> dv_pyo3::DimensionalVariable::value_in(std::string_view unit) const { + if (!dv_pyo3::diplomat::capi::diplomat_is_str(unit.data(), unit.size())) { + return dv_pyo3::diplomat::Err(); + } + auto result = dv_pyo3::capi::DimensionalVariable_value_in(this->AsFFI(), + {unit.data(), unit.size()}); + return dv_pyo3::diplomat::Ok>(result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok(result.ok)) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err())); +} + +inline bool dv_pyo3::DimensionalVariable::is_unitless() const { + auto result = dv_pyo3::capi::DimensionalVariable_is_unitless(this->AsFFI()); + return result; +} + +inline dv_pyo3::BaseUnits dv_pyo3::DimensionalVariable::base_units() const { + auto result = dv_pyo3::capi::DimensionalVariable_base_units(this->AsFFI()); + return dv_pyo3::BaseUnits::FromFFI(result); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::add(const dv_pyo3::DimensionalVariable& other) const { + auto result = dv_pyo3::capi::DimensionalVariable_add(this->AsFFI(), + other.AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::sub(const dv_pyo3::DimensionalVariable& other) const { + auto result = dv_pyo3::capi::DimensionalVariable_sub(this->AsFFI(), + other.AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline std::unique_ptr dv_pyo3::DimensionalVariable::mul(const dv_pyo3::DimensionalVariable& other) const { + auto result = dv_pyo3::capi::DimensionalVariable_mul(this->AsFFI(), + other.AsFFI()); + return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); +} + +inline std::unique_ptr dv_pyo3::DimensionalVariable::div(const dv_pyo3::DimensionalVariable& other) const { + auto result = dv_pyo3::capi::DimensionalVariable_div(this->AsFFI(), + other.AsFFI()); + return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); +} + +inline std::unique_ptr dv_pyo3::DimensionalVariable::mul_scalar(double scalar) const { + auto result = dv_pyo3::capi::DimensionalVariable_mul_scalar(this->AsFFI(), + scalar); + return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); +} + +inline std::unique_ptr dv_pyo3::DimensionalVariable::div_scalar(double scalar) const { + auto result = dv_pyo3::capi::DimensionalVariable_div_scalar(this->AsFFI(), + scalar); + return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); +} + +inline std::unique_ptr dv_pyo3::DimensionalVariable::rdiv_scalar(double scalar) const { + auto result = dv_pyo3::capi::DimensionalVariable_rdiv_scalar(this->AsFFI(), + scalar); + return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); +} + +inline std::unique_ptr dv_pyo3::DimensionalVariable::powi(int32_t exp) const { + auto result = dv_pyo3::capi::DimensionalVariable_powi(this->AsFFI(), + exp); + return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::powf(double exp) const { + auto result = dv_pyo3::capi::DimensionalVariable_powf(this->AsFFI(), + exp); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::sqrt() const { + auto result = dv_pyo3::capi::DimensionalVariable_sqrt(this->AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::ln() const { + auto result = dv_pyo3::capi::DimensionalVariable_ln(this->AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::log2() const { + auto result = dv_pyo3::capi::DimensionalVariable_log2(this->AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::log10() const { + auto result = dv_pyo3::capi::DimensionalVariable_log10(this->AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::sin() const { + auto result = dv_pyo3::capi::DimensionalVariable_sin(this->AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::cos() const { + auto result = dv_pyo3::capi::DimensionalVariable_cos(this->AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::tan() const { + auto result = dv_pyo3::capi::DimensionalVariable_tan(this->AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::asin() const { + auto result = dv_pyo3::capi::DimensionalVariable_asin(this->AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::acos() const { + auto result = dv_pyo3::capi::DimensionalVariable_acos(this->AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::atan() const { + auto result = dv_pyo3::capi::DimensionalVariable_atan(this->AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); +} + +inline std::unique_ptr dv_pyo3::DimensionalVariable::neg() const { + auto result = dv_pyo3::capi::DimensionalVariable_neg(this->AsFFI()); + return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); +} + +inline std::unique_ptr dv_pyo3::DimensionalVariable::abs() const { + auto result = dv_pyo3::capi::DimensionalVariable_abs(this->AsFFI()); + return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); +} + +inline bool dv_pyo3::DimensionalVariable::equals(const dv_pyo3::DimensionalVariable& other) const { + auto result = dv_pyo3::capi::DimensionalVariable_equals(this->AsFFI(), + other.AsFFI()); + return result; +} + +inline bool dv_pyo3::DimensionalVariable::not_equals(const dv_pyo3::DimensionalVariable& other) const { + auto result = dv_pyo3::capi::DimensionalVariable_not_equals(this->AsFFI(), + other.AsFFI()); + return result; +} + +inline dv_pyo3::diplomat::result dv_pyo3::DimensionalVariable::less_than(const dv_pyo3::DimensionalVariable& other) const { + auto result = dv_pyo3::capi::DimensionalVariable_less_than(this->AsFFI(), + other.AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok(result.ok)) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result dv_pyo3::DimensionalVariable::less_equal(const dv_pyo3::DimensionalVariable& other) const { + auto result = dv_pyo3::capi::DimensionalVariable_less_equal(this->AsFFI(), + other.AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok(result.ok)) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result dv_pyo3::DimensionalVariable::greater_than(const dv_pyo3::DimensionalVariable& other) const { + auto result = dv_pyo3::capi::DimensionalVariable_greater_than(this->AsFFI(), + other.AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok(result.ok)) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err()); +} + +inline dv_pyo3::diplomat::result dv_pyo3::DimensionalVariable::greater_equal(const dv_pyo3::DimensionalVariable& other) const { + auto result = dv_pyo3::capi::DimensionalVariable_greater_equal(this->AsFFI(), + other.AsFFI()); + return result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok(result.ok)) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err()); +} + +inline std::unique_ptr dv_pyo3::DimensionalVariable::clone_var() const { + auto result = dv_pyo3::capi::DimensionalVariable_clone_var(this->AsFFI()); + return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); +} + +inline dv_pyo3::diplomat::result dv_pyo3::DimensionalVariable::to_string() const { + std::string output; + dv_pyo3::diplomat::capi::DiplomatWrite write = dv_pyo3::diplomat::WriteFromString(output); + auto result = dv_pyo3::capi::DimensionalVariable_to_string(this->AsFFI(), + &write); + return result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok(std::move(output))) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err()); +} +template +inline dv_pyo3::diplomat::result dv_pyo3::DimensionalVariable::to_string_write(W& writeable) const { + dv_pyo3::diplomat::capi::DiplomatWrite write = dv_pyo3::diplomat::WriteTrait::Construct(writeable); + auto result = dv_pyo3::capi::DimensionalVariable_to_string(this->AsFFI(), + &write); + return result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok()) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err()); +} + +inline const dv_pyo3::capi::DimensionalVariable* dv_pyo3::DimensionalVariable::AsFFI() const { + return reinterpret_cast(this); +} + +inline dv_pyo3::capi::DimensionalVariable* dv_pyo3::DimensionalVariable::AsFFI() { + return reinterpret_cast(this); +} + +inline const dv_pyo3::DimensionalVariable* dv_pyo3::DimensionalVariable::FromFFI(const dv_pyo3::capi::DimensionalVariable* ptr) { + return reinterpret_cast(ptr); +} + +inline dv_pyo3::DimensionalVariable* dv_pyo3::DimensionalVariable::FromFFI(dv_pyo3::capi::DimensionalVariable* ptr) { + return reinterpret_cast(ptr); +} + +inline void dv_pyo3::DimensionalVariable::operator delete(void* ptr) { + dv_pyo3::capi::DimensionalVariable_destroy(reinterpret_cast(ptr)); +} + + +#endif // DV_PYO3_DimensionalVariable_HPP diff --git a/generated/diplomat/nanobind/include/diplomat_nanobind_common.hpp b/generated/diplomat/nanobind/include/diplomat_nanobind_common.hpp new file mode 100644 index 0000000..67bd752 --- /dev/null +++ b/generated/diplomat/nanobind/include/diplomat_nanobind_common.hpp @@ -0,0 +1,306 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include <../src/nb_internals.h> // Required for shimming +#include "diplomat_runtime.hpp" + +namespace nb = nanobind; +using namespace nb::literals; + +namespace nanobind::detail +{ + // Nanobind does not ship with support for casting char32_t, which seems to be an oversight. + // Remove this block when upstream support is added + template <> + struct type_caster + { + using Value = char32_t; + Value value; + Py_ssize_t size; + static constexpr auto Name = const_name("str"); + template + using Cast = char32_t; + + bool from_python(handle src, uint8_t, cleanup_list *) noexcept + { + value = PyUnicode_ReadChar(src.ptr(), 0); + if (!value) + { + PyErr_Clear(); + return false; + } + size = PyUnicode_GetLength(src.ptr()); + return true; + } + + static handle from_cpp(const char32_t *value, rv_policy, + cleanup_list *) noexcept + { + if (value == nullptr) + { + PyObject *result = Py_None; + Py_INCREF(result); + return result; + } + size_t len = 0; + const char32_t *str = value; + while (*str != U'\0') + { + len++; + str++; + } + return PyUnicode_DecodeUTF32(reinterpret_cast(value), len * 4, nullptr, nullptr); + } + + static handle from_cpp(char32_t value, rv_policy, cleanup_list *) noexcept + { + return PyUnicode_DecodeUTF32(reinterpret_cast(&value), 4, nullptr, nullptr); + } + + template + NB_INLINE bool can_cast() const noexcept + { + return (value && size == 1); + } + + explicit operator char32_t() + { + if (can_cast()) + return value; + else + throw next_overload(); + } + }; + + template + struct type_caster> + { + using Value = std::reference_wrapper; + Value value; + Py_ssize_t size; + using Caster = make_caster; + static constexpr auto Name = Caster::Name; + + static handle from_cpp(std::reference_wrapper value, rv_policy p, cleanup_list *cl) noexcept + { + return Caster::from_cpp(value.get(), p, cl); + } + + NB_INLINE bool can_cast() const noexcept { return Caster::template can_cast(); } + }; + + template + struct type_caster> + { + using U = std::conditional_t, std::reference_wrapper>, T>; + using V = std::conditional_t, std::reference_wrapper>, E>; + using Value = dv_pyo3::diplomat::result; + // Can't store result directly since T& will create compiler errors. + std::optional ok_val; + std::optional err_val; + bool is_ok; + Py_ssize_t size; + using Caster = make_caster; + static constexpr auto Name = Caster::Name; + + static handle from_cpp(dv_pyo3::diplomat::result value, rv_policy p, cleanup_list *cl) noexcept + { + if (value.is_ok()) { + return Caster::from_cpp(forward_like_(std::move(value).ok().value()), p, cl); + } + + auto errorPyV = nb::cast(std::move(std::move(value).err().value())); + if (errorPyV.is_valid()) + { + PyErr_SetString(PyExc_Exception, nb::str(errorPyV).c_str()); + } + else + { + char error_msg[512]; + snprintf(error_msg, sizeof(error_msg), "Cannot convert unknown type %s to string for python error.", typeid(E).name()); + PyErr_SetString(PyExc_Exception, error_msg); + } + + return nullptr; + } + + template + using Cast = Value; + operator Value() { + if (is_ok) { + return dv_pyo3::diplomat::Ok(forward_like_(ok_val.value())); + } else { + return dv_pyo3::diplomat::Err(forward_like_(err_val.value())); + } + } + + bool from_python(handle src, uint8_t flags, cleanup_list* cleanup) noexcept { + uint8_t local_flags = flags_for_local_caster(flags); + + // We raise an exception above, but I think it's okay just to check if our conversion succeeds: + auto caster = make_caster(); + if (caster.from_python(src, local_flags, cleanup)) { + is_ok = true; + if constexpr(std::is_reference_v) { + ok_val = std::optional(std::reference_wrapper(caster.operator cast_t())); + } else { + ok_val = std::optional(caster.operator cast_t()); + } + return true; + } else { + auto err_caster = make_caster(); + uint8_t err_local_flags = flags_for_local_caster(flags); + if (err_caster.from_python(src, err_local_flags, cleanup)) { + is_ok = false; + if constexpr(std::is_reference_v) { + err_val = std::optional(std::reference_wrapper(err_caster.operator cast_t())); + } else { + err_val = std::optional(err_caster.operator cast_t()); + } + return true; + } + } + + return false; + } + + NB_INLINE bool can_cast() const noexcept { return Caster::template can_cast(); } + }; + + template + class type_caster> { + // The type referenced by the span, with const removed. + using value_type = std::remove_cv_t; + // Avoid pitfalls with std::vector + using vector_value_type = std::conditional_t, uint8_t, value_type>; + using ListCaster = list_caster, value_type>; + static_assert(sizeof(bool) == sizeof(uint8_t), "bool representation size is unexpected!"); + + + public: + using Value = dv_pyo3::diplomat::span; + Value value = dv_pyo3::diplomat::span(); + + static constexpr auto Name = ListCaster::Name; + + template + using Cast = Value; + operator Value() { return value; } + + template static constexpr bool can_cast() { return true; } + + // Cast Python -> C++ (nb::cast call) + bool from_python(handle src, uint8_t flags, cleanup_list* cleanup) noexcept { + uint8_t local_flags = flags_for_local_caster(flags); + + // First try to convert from ndarray for efficiency + // Try to get a 1D contiguous array directly using type tags + if constexpr (is_ndarray_scalar_v) { + auto caster = make_caster>>(); + if (caster.from_python(src, local_flags, cleanup)) { + // Create a span from the array data + value = dv_pyo3::diplomat::span(caster.value.data(), caster.value.shape(0)); + return true; + } + } + + // C++ std::vector is not allowed, so we convert it to std::vector for the compiler's sake. + using U = std::conditional_t, bool>, std::vector>, std::vector>; + + + // Are we a bound vector type? If so, we can pass over data directly. + if (nb::inst_check(src) && nb::isinstance(src)) { + U* bound_vec = nb::inst_ptr(src); + value = dv_pyo3::diplomat::span(reinterpret_cast(bound_vec->data()), bound_vec->size()); + return true; + } + + // Attempt to convert a native sequence. We must convert all elements & store + // them in a temporary object which will be cleaned up + if (std::is_const_v && + (!std::is_pointer_v || is_base_caster_v>)) { + ListCaster caster; + if (caster.from_python(src, local_flags, cleanup)) { + value = dv_pyo3::diplomat::span(reinterpret_cast(caster.value.data()), caster.value.size()); + // Move the owning std::vector into a capsule that will live for the duration of the function call. + // The address of the vector will change, the address of the region it references won't. + nb::capsule deleter(new std::vector(std::move(caster.value)), [](void* data) noexcept { + delete (std::vector*)data; + }); + cleanup->append(deleter.release().ptr()); + + return true; + } + } + + return false; // Python type cannot be loaded into a span. + } + + // Cast C++ -> Python (when returning a span from a C++ function) + static handle from_cpp(dv_pyo3::diplomat::span src, rv_policy policy, cleanup_list* cleanup) { + using Array = nb::ndarray, nb::numpy, nb::ndim<1>, nb::f_contig>; + if constexpr(is_ndarray_scalar_v) { + nb::object owner; + if (cleanup->self()) { + owner = nb::borrow(cleanup->self()); + policy = rv_policy::reference; + } + + object o = steal(type_caster::from_cpp( + Array((void* )src.data(), {src.size()}, owner), + policy, cleanup)); + + return o.release(); + } else { + return ListCaster::from_cpp(src, policy, cleanup); + } + } + }; + + template <> + struct type_caster { + NB_TYPE_CASTER(dv_pyo3::diplomat::string_view_for_slice, const_name("str")) + + bool from_python(handle src, uint8_t, cleanup_list *) noexcept { + Py_ssize_t size; + const char *str = PyUnicode_AsUTF8AndSize(src.ptr(), &size); + if (!str) { + PyErr_Clear(); + return false; + } + value = dv_pyo3::diplomat::string_view_for_slice(str, (size_t) size); + return true; + } + + static handle from_cpp(dv_pyo3::diplomat::string_view_for_slice value, rv_policy, cleanup_list *) noexcept { + return PyUnicode_FromStringAndSize(value.data(), value.size()); + } + }; +} + +// Return the inner type from next() +// Next returns either a std::unique_ptr or std::optional. +// When T is optional, return inner&&. When T is unique_ptr, just return it. +template +struct next_inner_extractor { + static T&& get(T&& v) { return std::move(v); } +}; + +template +struct next_inner_extractor> { + static T&& get(std::optional&& v) { return std::move(v).value(); } +}; + +// These are defined in the root module.cpp file. +extern void (*nb_tp_dealloc)(void *); +void diplomat_tp_dealloc(PyObject *self); \ No newline at end of file diff --git a/generated/diplomat/nanobind/include/diplomat_runtime.hpp b/generated/diplomat/nanobind/include/diplomat_runtime.hpp new file mode 100644 index 0000000..8dc934c --- /dev/null +++ b/generated/diplomat/nanobind/include/diplomat_runtime.hpp @@ -0,0 +1,567 @@ +#ifndef DV_PYO3_DIPLOMAT_RUNTIME_CPP_H +#define DV_PYO3_DIPLOMAT_RUNTIME_CPP_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#if __cplusplus >= 202002L +#include +#else +#include +#endif + +namespace dv_pyo3 { +namespace diplomat { + +namespace capi { +extern "C" { + +static_assert(sizeof(char) == sizeof(uint8_t), "your architecture's `char` is not 8 bits"); +static_assert(sizeof(char16_t) == sizeof(uint16_t), "your architecture's `char16_t` is not 16 bits"); +static_assert(sizeof(char32_t) == sizeof(uint32_t), "your architecture's `char32_t` is not 32 bits"); + +typedef struct DiplomatWrite { + void* context; + char* buf; + size_t len; + size_t cap; + bool grow_failed; + void (*flush)(struct DiplomatWrite*); + bool (*grow)(struct DiplomatWrite*, size_t); +} DiplomatWrite; + +bool diplomat_is_str(const char* buf, size_t len); + +#define MAKE_SLICES(name, c_ty) \ + typedef struct Diplomat##name##View { \ + const c_ty* data; \ + size_t len; \ + } Diplomat##name##View; \ + typedef struct Diplomat##name##ViewMut { \ + c_ty* data; \ + size_t len; \ + } Diplomat##name##ViewMut; \ + typedef struct Diplomat##name##Array { \ + const c_ty* data; \ + size_t len; \ + } Diplomat##name##Array; + +#define MAKE_SLICES_AND_OPTIONS(name, c_ty) \ + MAKE_SLICES(name, c_ty) \ + typedef struct Option##name {union { c_ty ok; }; bool is_ok; } Option##name; \ + typedef struct Option##name##View {union { Diplomat##name##View ok; }; bool is_ok; } Option##name##View; \ + typedef struct Option##name##ViewMut {union { Diplomat##name##ViewMut ok; }; bool is_ok; } Option##name##ViewMut; \ + typedef struct Option##name##Array {union { Diplomat##name##Array ok; }; bool is_ok; } Option##name##Array; \ + +MAKE_SLICES_AND_OPTIONS(I8, int8_t) +MAKE_SLICES_AND_OPTIONS(U8, uint8_t) +MAKE_SLICES_AND_OPTIONS(I16, int16_t) +MAKE_SLICES_AND_OPTIONS(U16, uint16_t) +MAKE_SLICES_AND_OPTIONS(I32, int32_t) +MAKE_SLICES_AND_OPTIONS(U32, uint32_t) +MAKE_SLICES_AND_OPTIONS(I64, int64_t) +MAKE_SLICES_AND_OPTIONS(U64, uint64_t) +MAKE_SLICES_AND_OPTIONS(Isize, intptr_t) +MAKE_SLICES_AND_OPTIONS(Usize, size_t) +MAKE_SLICES_AND_OPTIONS(F32, float) +MAKE_SLICES_AND_OPTIONS(F64, double) +MAKE_SLICES_AND_OPTIONS(Bool, bool) +MAKE_SLICES_AND_OPTIONS(Char, char32_t) +MAKE_SLICES_AND_OPTIONS(String, char) +MAKE_SLICES_AND_OPTIONS(String16, char16_t) +MAKE_SLICES_AND_OPTIONS(Strings, DiplomatStringView) +MAKE_SLICES_AND_OPTIONS(Strings16, DiplomatString16View) + +} // extern "C" +} // namespace capi + +extern "C" inline void _flush(capi::DiplomatWrite* w) { + std::string* string = reinterpret_cast(w->context); + string->resize(w->len); +} + +extern "C" inline bool _grow(capi::DiplomatWrite* w, uintptr_t requested) { + std::string* string = reinterpret_cast(w->context); + string->resize(requested); + w->cap = string->length(); + w->buf = &(*string)[0]; + return true; +} + +inline capi::DiplomatWrite WriteFromString(std::string& string) { + capi::DiplomatWrite w; + w.context = &string; + w.buf = &string[0]; + w.len = string.length(); + w.cap = string.length(); + // Will never become true, as _grow is infallible. + w.grow_failed = false; + w.flush = _flush; + w.grow = _grow; + return w; +} + +// This "trait" allows one to use _write() methods to efficiently +// write to a custom string type. To do this you need to write a specialized +// `WriteTrait` (see WriteTrait below) +// that is capable of constructing a DiplomatWrite, which can wrap +// your string type with appropriate resize/flush functionality. +template struct WriteTrait { + // Fill in this method on a specialization to implement this trait + // static inline capi::DiplomatWrite Construct(T& t); +}; + +template<> struct WriteTrait { + static inline capi::DiplomatWrite Construct(std::string& t) { + return diplomat::WriteFromString(t); + } +}; + +template struct Ok { + T inner; + + // Move constructor always allowed + Ok(T&& i): inner(std::forward(i)) {} + + // copy constructor allowed only for trivially copyable types + template::value>::type> + Ok(const T& i) : inner(i) {} + + Ok() = default; + Ok(Ok&&) noexcept = default; + Ok(const Ok &) = default; + Ok& operator=(const Ok&) = default; + Ok& operator=(Ok&&) noexcept = default; +}; + + +template struct Err { + T inner; + + // Move constructor always allowed + Err(T&& i): inner(std::forward(i)) {} + + // copy constructor allowed only for trivially copyable types + template::value>::type> + Err(const T& i) : inner(i) {} + + Err() = default; + Err(Err&&) noexcept = default; + Err(const Err &) = default; + Err& operator=(const Err&) = default; + Err& operator=(Err&&) noexcept = default; +}; + +template struct fn_traits; + +template +class result { +protected: + std::variant, Err> val; +public: + template + friend struct fn_traits; + + result(Ok&& v): val(std::move(v)) {} + result(Err&& v): val(std::move(v)) {} + result() = default; + result(const result &) = default; + result& operator=(const result&) = default; + result& operator=(result&&) noexcept = default; + result(result &&) noexcept = default; + ~result() = default; + bool is_ok() const { + return std::holds_alternative>(this->val); + } + bool is_err() const { + return std::holds_alternative>(this->val); + } + + template, std::nullptr_t> = nullptr> + std::optional ok() && { + if (!this->is_ok()) { + return std::nullopt; + } + return std::make_optional(std::move(std::get>(std::move(this->val)).inner)); + } + + template, std::nullptr_t> = nullptr> + std::optional err() && { + if (!this->is_err()) { + return std::nullopt; + } + return std::make_optional(std::move(std::get>(std::move(this->val)).inner)); + } + + // std::optional does not work with reference types directly, so wrap them if present + template, std::nullptr_t> = nullptr> + std::optional>> ok() && { + if (!this->is_ok()) { + return std::nullopt; + } + return std::make_optional(std::reference_wrapper(std::forward(std::get>(std::move(this->val)).inner))); + } + + template, std::nullptr_t> = nullptr> + std::optional>> err() && { + if (!this->is_err()) { + return std::nullopt; + } + return std::make_optional(std::reference_wrapper(std::forward(std::get>(std::move(this->val)).inner))); + } + + void set_ok(T&& t) { + this->val = Ok(std::move(t)); + } + + void set_err(E&& e) { + this->val = Err(std::move(e)); + } + + template + result replace_ok(T2&& t) { + if (this->is_err()) { + return result(Err(std::get>(std::move(this->val)))); + } else { + return result(Ok(std::move(t))); + } + } +}; + +class Utf8Error {}; + +// Use custom std::span on C++17, otherwise use std::span +#if __cplusplus >= 202002L + +constexpr std::size_t dynamic_extent = std::dynamic_extent; +template using span = std::span; + +#else // __cplusplus < 202002L + +// C++-17-compatible-ish std::span +constexpr size_t dynamic_extent = std::numeric_limits::max(); +template +class span { +public: + constexpr span(T *data = nullptr, size_t size = Extent) + : data_(data), size_(size) {} + + constexpr span(const span &o) + : data_(o.data_), size_(o.size_) {} + template + constexpr span(std::array, N> &arr) + : data_(const_cast(arr.data())), size_(N) {} + + constexpr T* data() const noexcept { + return this->data_; + } + constexpr size_t size() const noexcept { + return this->size_; + } + + constexpr T *begin() const noexcept { return data(); } + constexpr T *end() const noexcept { return data() + size(); } + + void operator=(span o) { + data_ = o.data_; + size_ = o.size_; + } + +private: + T* data_; + size_t size_; +}; + +#endif // __cplusplus >= 202002L + +// An ABI stable std::basic_string_view equivalent for the case of string +// views in slices +template > +class basic_string_view_for_slice { +public: + using std_string_view = std::basic_string_view; + using traits_type = typename std_string_view::traits_type; + using value_type = typename std_string_view::value_type; + using pointer = typename std_string_view::pointer; + using const_pointer = typename std_string_view::const_pointer; + using size_type = typename std_string_view::size_type; + using difference_type = typename std_string_view::difference_type; + + constexpr basic_string_view_for_slice() noexcept + : basic_string_view_for_slice{std_string_view{}} {} + + constexpr basic_string_view_for_slice(const basic_string_view_for_slice& other) noexcept = default; + + constexpr basic_string_view_for_slice(const const_pointer s, const size_type count) + : basic_string_view_for_slice{std_string_view{s, count}} {} + + constexpr basic_string_view_for_slice(const const_pointer s) + : basic_string_view_for_slice{std_string_view{s}} {} + + constexpr basic_string_view_for_slice& operator=(const basic_string_view_for_slice& view) noexcept = default; + + constexpr basic_string_view_for_slice(const std_string_view& s) noexcept + : data_{s.data(), s.size()} {} + + constexpr basic_string_view_for_slice& operator=(const std_string_view& s) noexcept { + data_ = {s.data(), s.size()}; + return *this; + } + + constexpr operator std_string_view() const noexcept { return {data(), size()}; } + constexpr std_string_view as_sv() const noexcept { return *this; } + + constexpr const_pointer data() const noexcept { return data_.data; } + constexpr size_type size() const noexcept { return data_.len; } + +private: + using capi_type = + std::conditional_t, + capi::DiplomatStringView, + std::conditional_t, + capi::DiplomatString16View, + void>>; + + static_assert(!std::is_void_v, + "ABI compatible string_views are only supported for char and char16_t"); + + capi_type data_; +}; + +// We only implement these specialisations as diplomat doesn't provide c abi +// types for others +using string_view_for_slice = basic_string_view_for_slice; +using u16string_view_for_slice = basic_string_view_for_slice; + +using string_view_span = span; +using u16string_view_span = span; + +// Interop between std::function & our C Callback wrapper type + +template +struct as_ffi { + using type = T; +}; + +template +struct as_ffi>().AsFFI())>> { + using type = decltype(std::declval>().AsFFI()); +}; + +template +using as_ffi_t = typename as_ffi::type; + +template +using replace_string_view_t = std::conditional_t, capi::DiplomatStringView, T>; + +template +struct diplomat_c_span_convert { + using type = T; +}; + +#define MAKE_SLICE_CONVERTERS(name, c_ty) \ + template \ + struct diplomat_c_span_convert>>> { \ + using type = diplomat::capi::Diplomat##name##View; \ + }; \ + template \ + struct diplomat_c_span_convert>>> { \ + using type = diplomat::capi::Diplomat##name##ViewMut; \ + }; \ + +MAKE_SLICE_CONVERTERS(I8, int8_t) +MAKE_SLICE_CONVERTERS(U8, uint8_t) +MAKE_SLICE_CONVERTERS(I16, int16_t) +MAKE_SLICE_CONVERTERS(U16, uint16_t) +MAKE_SLICE_CONVERTERS(I32, int32_t) +MAKE_SLICE_CONVERTERS(U32, uint32_t) +MAKE_SLICE_CONVERTERS(I64, int64_t) +MAKE_SLICE_CONVERTERS(U64, uint64_t) +MAKE_SLICE_CONVERTERS(F32, float) +MAKE_SLICE_CONVERTERS(F64, double) +MAKE_SLICE_CONVERTERS(Bool, bool) +MAKE_SLICE_CONVERTERS(Char, char32_t) +MAKE_SLICE_CONVERTERS(String, char) +MAKE_SLICE_CONVERTERS(String16, char16_t) + +template +using diplomat_c_span_convert_t = typename diplomat_c_span_convert::type; + +/// Replace the argument types from the std::function with the argument types for th function pointer +template +using replace_fn_t = diplomat_c_span_convert_t>>; + +template struct fn_traits> { + using fn_ptr_t = Ret(Args...); + using function_t = std::function; + using ret = Ret; + + // For a given T, creates a function that take in the C ABI version & return the C++ type. + template + static T replace(replace_fn_t val) { + if constexpr(std::is_same_v) { + return std::string_view{val.data, val.len}; + } else if constexpr (!std::is_same_v>) { + return T{ val.data, val.len }; + } else if constexpr (!std::is_same_v>) { + if constexpr (std::is_lvalue_reference_v) { + return *std::remove_reference_t::FromFFI(val); + } + else { + return T::FromFFI(val); + } + } + else { + return val; + } + } + + template + static replace_fn_t replace_ret(T val) { + if constexpr(std::is_same_v) { + return {val.data(), val.size()}; + } else if constexpr (!std::is_same_v>) { + // Can we convert straight away to our slice type, or (in the case of ABI compatible structs), do we have to do a reinterpret cast? + if constexpr(std::is_same_v().data()), decltype(replace_fn_t::data)>) { + return replace_fn_t { val.data(), val.size() }; + } else { + return replace_fn_t { reinterpret_cast::data)>(val.data()), val.size() }; + } + } else if constexpr(!std::is_same_v>) { + return val.AsFFI(); + } else { + return val; + } + } + + static Ret c_run_callback(const void *cb, replace_fn_t... args) { + return (*reinterpret_cast(cb))(replace(args)...); + } + + template + static TOut c_run_callback_result(const void *cb, replace_fn_t... args) { + result res = c_run_callback(cb, args...); + + auto is_ok = res.is_ok(); + + constexpr bool has_ok = !std::is_same_v; + constexpr bool has_err = !std::is_same_v; + + TOut out; + out.is_ok = is_ok; + + if constexpr (has_ok) { + if (is_ok) { + out.ok = replace_ret(std::get>(res.val).inner); + } + } + + if constexpr(has_err) { + if (!is_ok) { + out.err = replace_ret(std::get>(res.val).inner); + } + } + + return out; + } + + // For DiplomatOption<> + template + static TOut c_run_callback_diplomat_option(const void *cb, replace_fn_t... args) { + constexpr bool has_ok = !std::is_same_v; + + std::optional ret = c_run_callback(cb, args...); + + bool is_ok = ret.has_value(); + + TOut out; + out.is_ok = is_ok; + + if constexpr(has_ok) { + if (is_ok) { + out.ok = replace_ret(ret.value()); + } + } + return out; + } + + // All we need to do is just convert one pointer to another, while keeping the arguments the same: + template + static T c_run_callback_diplomat_opaque(const void* cb, replace_fn_t... args) { + Ret out = c_run_callback(cb, args...); + + return out->AsFFI(); + } + + static void c_delete(const void *cb) { + delete reinterpret_cast(cb); + } + + fn_traits(function_t) {} // Allows less clunky construction (avoids decltype) +}; + +// additional deduction guide required +template +fn_traits(T) -> fn_traits; + +// Trait for extracting inner types from either T*, std::optional, or std::unique_ptr. +// These are the three potential types returned by next() functions +template struct inner { /* only T*, std::optional, and std::unique_ptr are supported */ }; +template struct inner { using type = T; }; +template struct inner> { using type = T; }; +template struct inner>{ using type = T; }; + +template::type> +inline const U get_inner_if_present(T v) { + if constexpr(std::is_same_v) { + return std::move(v); + } else { + return *std::move(v); + } +} + +// Adapter for iterator types +template struct has_next : std::false_type {}; +template struct has_next < T, std::void_t().next())>> : std::true_type {}; +template constexpr bool has_next_v = has_next::value; + +/// Helper template enabling native iteration over unique ptrs to objects which implement next() +template +struct next_to_iter_helper { + static_assert(has_next_v, "next_to_iter_helper may only be used with types implementing next()"); + using next_type = decltype(std::declval().next()); + + // STL Iterator trait definitions + using value_type = typename inner::type; + using difference_type = void; + using reference = std::add_lvalue_reference_t; + using iterator_category = std::input_iterator_tag; + + next_to_iter_helper(std::unique_ptr&& ptr) : _ptr(std::move(ptr)), _curr(_ptr->next()) {} + + // https://en.cppreference.com/w/cpp/named_req/InputIterator requires that the type be copyable + next_to_iter_helper(const next_to_iter_helper& o) : _ptr(o._ptr), _curr(o._curr) {} + + void operator++() { _curr = _ptr->next(); } + void operator++(int) { ++(*this); } + const value_type& operator*() const { return *_curr; } + + bool operator!=(std::nullopt_t) { + return (bool)_curr; + } + + std::shared_ptr _ptr; // shared to satisfy the copyable requirement + next_type _curr; +}; + +} // namespace diplomat +} // namespace dv_pyo3 +#endif \ No newline at end of file diff --git a/generated/diplomat/nanobind/nb_combined.cpp b/generated/diplomat/nanobind/nb_combined.cpp new file mode 100644 index 0000000..51b0d96 --- /dev/null +++ b/generated/diplomat/nanobind/nb_combined.cpp @@ -0,0 +1 @@ +#include <../src/nb_combined.cpp> diff --git a/generated/diplomat/nanobind/sub_modules/dv_py/BaseUnits_binding.cpp b/generated/diplomat/nanobind/sub_modules/dv_py/BaseUnits_binding.cpp new file mode 100644 index 0000000..497a269 --- /dev/null +++ b/generated/diplomat/nanobind/sub_modules/dv_py/BaseUnits_binding.cpp @@ -0,0 +1,21 @@ +#include "diplomat_nanobind_common.hpp" + + +#include "BaseUnits.hpp" + +namespace dv_py { +void add_BaseUnits_binding(nb::module_ mod) { + nb::class_(mod, "BaseUnits") + .def(nb::init<>()) + .def(nb::init(), "m"_a.none(), "kg"_a.none(), "s"_a.none(), "k"_a.none(), "a"_a.none(), "mol"_a.none(), "cd"_a.none(), "rad"_a.none()) + .def_rw("m", &dv_py::BaseUnits::m) + .def_rw("kg", &dv_py::BaseUnits::kg) + .def_rw("s", &dv_py::BaseUnits::s) + .def_rw("k", &dv_py::BaseUnits::k) + .def_rw("a", &dv_py::BaseUnits::a) + .def_rw("mol", &dv_py::BaseUnits::mol) + .def_rw("cd", &dv_py::BaseUnits::cd) + .def_rw("rad", &dv_py::BaseUnits::rad); +} + +} \ No newline at end of file diff --git a/generated/diplomat/nanobind/sub_modules/dv_py/DimensionalVariable_binding.cpp b/generated/diplomat/nanobind/sub_modules/dv_py/DimensionalVariable_binding.cpp new file mode 100644 index 0000000..4401eb9 --- /dev/null +++ b/generated/diplomat/nanobind/sub_modules/dv_py/DimensionalVariable_binding.cpp @@ -0,0 +1,54 @@ +#include "diplomat_nanobind_common.hpp" + + +#include "DimensionalVariable.hpp" + +namespace dv_py { +void add_DimensionalVariable_binding(nb::module_ mod) { + PyType_Slot dv_py_DimensionalVariable_slots[] = { + {Py_tp_free, (void *)dv_py::DimensionalVariable::operator delete }, + {Py_tp_dealloc, (void *)diplomat_tp_dealloc}, + {0, nullptr}}; + + nb::class_(mod, "DimensionalVariable", nb::type_slots(dv_py_DimensionalVariable_slots)) + .def("abs", &dv_py::DimensionalVariable::abs) + .def("acos", &dv_py::DimensionalVariable::acos) + .def_static("acos_scalar", &dv_py::DimensionalVariable::acos_scalar, "x"_a) + .def("add", &dv_py::DimensionalVariable::add, "other"_a) + .def("asin", &dv_py::DimensionalVariable::asin) + .def_static("asin_scalar", &dv_py::DimensionalVariable::asin_scalar, "x"_a) + .def("atan", &dv_py::DimensionalVariable::atan) + .def_static("atan_scalar", &dv_py::DimensionalVariable::atan_scalar, "x"_a) + .def("base_units", &dv_py::DimensionalVariable::base_units) + .def_static("base_units_size", &dv_py::DimensionalVariable::base_units_size) + .def("clone_var", &dv_py::DimensionalVariable::clone_var) + .def("cos", &dv_py::DimensionalVariable::cos) + .def("div", &dv_py::DimensionalVariable::div, "other"_a) + .def("div_scalar", &dv_py::DimensionalVariable::div_scalar, "scalar"_a) + .def("equals", &dv_py::DimensionalVariable::equals, "other"_a) + .def("greater_equal", &dv_py::DimensionalVariable::greater_equal, "other"_a) + .def("greater_than", &dv_py::DimensionalVariable::greater_than, "other"_a) + .def("is_unitless", &dv_py::DimensionalVariable::is_unitless) + .def("less_equal", &dv_py::DimensionalVariable::less_equal, "other"_a) + .def("less_than", &dv_py::DimensionalVariable::less_than, "other"_a) + .def("ln", &dv_py::DimensionalVariable::ln) + .def("log10", &dv_py::DimensionalVariable::log10) + .def("log2", &dv_py::DimensionalVariable::log2) + .def("mul", &dv_py::DimensionalVariable::mul, "other"_a) + .def("mul_scalar", &dv_py::DimensionalVariable::mul_scalar, "scalar"_a) + .def("neg", &dv_py::DimensionalVariable::neg) + .def_static("new", &dv_py::DimensionalVariable::new_, "value"_a, "unit"_a) + .def("not_equals", &dv_py::DimensionalVariable::not_equals, "other"_a) + .def("powf", &dv_py::DimensionalVariable::powf, "exp"_a) + .def("powi", &dv_py::DimensionalVariable::powi, "exp"_a) + .def("rdiv_scalar", &dv_py::DimensionalVariable::rdiv_scalar, "scalar"_a) + .def("sin", &dv_py::DimensionalVariable::sin) + .def("sqrt", &dv_py::DimensionalVariable::sqrt) + .def("sub", &dv_py::DimensionalVariable::sub, "other"_a) + .def("tan", &dv_py::DimensionalVariable::tan) + .def("to_string", &dv_py::DimensionalVariable::to_string) + .def("value", &dv_py::DimensionalVariable::value) + .def("value_in", &dv_py::DimensionalVariable::value_in, "unit"_a); +} + +} \ No newline at end of file diff --git a/generated/diplomat/nanobind/sub_modules/dv_pyo3/BaseUnits_binding.cpp b/generated/diplomat/nanobind/sub_modules/dv_pyo3/BaseUnits_binding.cpp new file mode 100644 index 0000000..83b63a0 --- /dev/null +++ b/generated/diplomat/nanobind/sub_modules/dv_pyo3/BaseUnits_binding.cpp @@ -0,0 +1,21 @@ +#include "diplomat_nanobind_common.hpp" + + +#include "BaseUnits.hpp" + +namespace dv_pyo3 { +void add_BaseUnits_binding(nb::module_ mod) { + nb::class_(mod, "BaseUnits") + .def(nb::init<>()) + .def(nb::init(), "m"_a.none(), "kg"_a.none(), "s"_a.none(), "k"_a.none(), "a"_a.none(), "mol"_a.none(), "cd"_a.none(), "rad"_a.none()) + .def_rw("m", &dv_pyo3::BaseUnits::m) + .def_rw("kg", &dv_pyo3::BaseUnits::kg) + .def_rw("s", &dv_pyo3::BaseUnits::s) + .def_rw("k", &dv_pyo3::BaseUnits::k) + .def_rw("a", &dv_pyo3::BaseUnits::a) + .def_rw("mol", &dv_pyo3::BaseUnits::mol) + .def_rw("cd", &dv_pyo3::BaseUnits::cd) + .def_rw("rad", &dv_pyo3::BaseUnits::rad); +} + +} \ No newline at end of file diff --git a/generated/diplomat/nanobind/sub_modules/dv_pyo3/DimensionalVariable_binding.cpp b/generated/diplomat/nanobind/sub_modules/dv_pyo3/DimensionalVariable_binding.cpp new file mode 100644 index 0000000..99ea34d --- /dev/null +++ b/generated/diplomat/nanobind/sub_modules/dv_pyo3/DimensionalVariable_binding.cpp @@ -0,0 +1,54 @@ +#include "diplomat_nanobind_common.hpp" + + +#include "DimensionalVariable.hpp" + +namespace dv_pyo3 { +void add_DimensionalVariable_binding(nb::module_ mod) { + PyType_Slot dv_pyo3_DimensionalVariable_slots[] = { + {Py_tp_free, (void *)dv_pyo3::DimensionalVariable::operator delete }, + {Py_tp_dealloc, (void *)diplomat_tp_dealloc}, + {0, nullptr}}; + + nb::class_(mod, "DimensionalVariable", nb::type_slots(dv_pyo3_DimensionalVariable_slots)) + .def("abs", &dv_pyo3::DimensionalVariable::abs) + .def("acos", &dv_pyo3::DimensionalVariable::acos) + .def_static("acos_scalar", &dv_pyo3::DimensionalVariable::acos_scalar, "x"_a) + .def("add", &dv_pyo3::DimensionalVariable::add, "other"_a) + .def("asin", &dv_pyo3::DimensionalVariable::asin) + .def_static("asin_scalar", &dv_pyo3::DimensionalVariable::asin_scalar, "x"_a) + .def("atan", &dv_pyo3::DimensionalVariable::atan) + .def_static("atan_scalar", &dv_pyo3::DimensionalVariable::atan_scalar, "x"_a) + .def("base_units", &dv_pyo3::DimensionalVariable::base_units) + .def_static("base_units_size", &dv_pyo3::DimensionalVariable::base_units_size) + .def("clone_var", &dv_pyo3::DimensionalVariable::clone_var) + .def("cos", &dv_pyo3::DimensionalVariable::cos) + .def("div", &dv_pyo3::DimensionalVariable::div, "other"_a) + .def("div_scalar", &dv_pyo3::DimensionalVariable::div_scalar, "scalar"_a) + .def("equals", &dv_pyo3::DimensionalVariable::equals, "other"_a) + .def("greater_equal", &dv_pyo3::DimensionalVariable::greater_equal, "other"_a) + .def("greater_than", &dv_pyo3::DimensionalVariable::greater_than, "other"_a) + .def("is_unitless", &dv_pyo3::DimensionalVariable::is_unitless) + .def("less_equal", &dv_pyo3::DimensionalVariable::less_equal, "other"_a) + .def("less_than", &dv_pyo3::DimensionalVariable::less_than, "other"_a) + .def("ln", &dv_pyo3::DimensionalVariable::ln) + .def("log10", &dv_pyo3::DimensionalVariable::log10) + .def("log2", &dv_pyo3::DimensionalVariable::log2) + .def("mul", &dv_pyo3::DimensionalVariable::mul, "other"_a) + .def("mul_scalar", &dv_pyo3::DimensionalVariable::mul_scalar, "scalar"_a) + .def("neg", &dv_pyo3::DimensionalVariable::neg) + .def_static("new", &dv_pyo3::DimensionalVariable::new_, "value"_a, "unit"_a) + .def("not_equals", &dv_pyo3::DimensionalVariable::not_equals, "other"_a) + .def("powf", &dv_pyo3::DimensionalVariable::powf, "exp"_a) + .def("powi", &dv_pyo3::DimensionalVariable::powi, "exp"_a) + .def("rdiv_scalar", &dv_pyo3::DimensionalVariable::rdiv_scalar, "scalar"_a) + .def("sin", &dv_pyo3::DimensionalVariable::sin) + .def("sqrt", &dv_pyo3::DimensionalVariable::sqrt) + .def("sub", &dv_pyo3::DimensionalVariable::sub, "other"_a) + .def("tan", &dv_pyo3::DimensionalVariable::tan) + .def("to_string", &dv_pyo3::DimensionalVariable::to_string) + .def("value", &dv_pyo3::DimensionalVariable::value) + .def("value_in", &dv_pyo3::DimensionalVariable::value_in, "unit"_a); +} + +} \ No newline at end of file diff --git a/python/BUILD.bazel b/python/BUILD.bazel index 0fe9c52..c9a5d0a 100644 --- a/python/BUILD.bazel +++ b/python/BUILD.bazel @@ -1,32 +1,26 @@ load("@rules_python//python:defs.bzl", "py_library", "py_test") -load("@rules_rust_pyo3//:defs.bzl", "pyo3_extension") package(default_visibility = ["//visibility:public"]) -# Export files for version management and publishing +# Export files for version management and packaging metadata exports_files([ - "Cargo.toml", "pyproject.toml", ]) -# ============================================================================= -# Python PyO3 Extension Module -# ============================================================================= - -pyo3_extension( - name = "dv_pyo3", - srcs = ["src/lib.rs"], - deps = ["//core:dv_rs"], +genrule( + name = "dv_pyo3_ext_pkg", + srcs = ["//generated/diplomat/nanobind:dv_pyo3.so"], + outs = ["dv_py/dv_pyo3.so"], + cmd = "cp $< $@", ) -# Python library that exposes the extension module -# This creates a "dv" package by making __init__.py available at the root level +# Python library that exposes the generated nanobind extension module py_library( name = "dv_py", srcs = [ "dv_py/__init__.py", ], - data = [":dv_pyo3"], + data = [":dv_pyo3_ext_pkg"], imports = ["."], visibility = ["//visibility:public"], ) diff --git a/python/Cargo.toml b/python/Cargo.toml deleted file mode 100644 index 0e52946..0000000 --- a/python/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "dv_py" -version = "0.3.3" -edition = "2021" -authors = [ "Alex Tacescu ",] -homepage = "https://dv.alextac.com" -repository = "https://github.com/alextac98/dv" -license = "Apache-2.0" -description = "Python bindings for dv (DimensionalVariable)" -publish = false - -[lib] -name = "dv_py" -crate-type = [ "cdylib",] -path = "src/lib.rs" - -[dependencies.dv_rs] -package = "dv" -path = "../core" - -[dependencies.pyo3] -version = "0.26" -features = [ "extension-module", "abi3-py38", "generate-import-lib",] diff --git a/python/dv_py/__init__.py b/python/dv_py/__init__.py index b17e7d0..e730440 100644 --- a/python/dv_py/__init__.py +++ b/python/dv_py/__init__.py @@ -1,30 +1,271 @@ -"""Python bindings for dv (DimensionalVariable). - -This module provides dimensional analysis for physical quantities, -ensuring unit correctness in mathematical operations. - -Example: - >>> from dv import DV - >>> velocity = DV(10.0, "m/s") - >>> time = DV(2.0, "s") - >>> distance = velocity * time - >>> print(distance.value_in("m")) - 20.0 -""" - -# When used as a package, use relative import -# The .so file is in the same directory as this __init__.py +"""Python bindings for dv (DimensionalVariable) via Diplomat + nanobind.""" + +from __future__ import annotations + +from typing import Any + try: - # Try relative import first (when used as package 'dv') - from . import dv_pyo3 as dv + from . import dv_pyo3 as _nb except ImportError: - # Fall back to direct import (when __init__.py is run directly) - import dv_pyo3 as dv + import dv_pyo3 as _nb + + +class DVError(Exception): + """Library error for invalid dimensional operations.""" + + +def _map_exc(exc: Exception) -> DVError: + msg = str(exc) or "dv operation failed" + return DVError(msg) + + +def _as_inner(value: Any): + if isinstance(value, DimensionalVariable): + return value._inner + return value + + +class DimensionalVariable: + """Python compatibility wrapper around the generated nanobind object.""" + + __slots__ = ("_inner",) + + def __init__(self, value: float, unit: str): + try: + self._inner = _nb.DimensionalVariable.new(float(value), unit) + except Exception as exc: # nanobind generated exceptions are generic today + raise _map_exc(exc) from None + + @classmethod + def _from_inner(cls, inner): + obj = cls.__new__(cls) + obj._inner = inner + return obj + + def value(self) -> float: + return self._inner.value() + + def value_in(self, unit: str) -> float: + try: + return self._inner.value_in(unit) + except Exception as exc: + raise _map_exc(exc) from None + + def is_unitless(self) -> bool: + return self._inner.is_unitless() + + def base_units(self): + u = self._inner.base_units() + return (u.m, u.kg, u.s, u.k, u.a, u.mol, u.cd, u.rad) + + def clone(self): + return self._from_inner(self._inner.clone_var()) + + def add(self, other: "DimensionalVariable"): + try: + return self._from_inner(self._inner.add(other._inner)) + except Exception as exc: + raise _map_exc(exc) from None + + def sub(self, other: "DimensionalVariable"): + try: + return self._from_inner(self._inner.sub(other._inner)) + except Exception as exc: + raise _map_exc(exc) from None + + def mul(self, other: "DimensionalVariable"): + return self._from_inner(self._inner.mul(other._inner)) + + def div(self, other: "DimensionalVariable"): + return self._from_inner(self._inner.div(other._inner)) + + def mul_scalar(self, scalar: float): + return self._from_inner(self._inner.mul_scalar(float(scalar))) + + def div_scalar(self, scalar: float): + return self._from_inner(self._inner.div_scalar(float(scalar))) + + def rdiv_scalar(self, scalar: float): + return self._from_inner(self._inner.rdiv_scalar(float(scalar))) + + def powi(self, exp: int): + return self._from_inner(self._inner.powi(int(exp))) + + def powf(self, exp: float): + try: + return self._from_inner(self._inner.powf(float(exp))) + except Exception as exc: + raise _map_exc(exc) from None + + def sqrt(self): + try: + return self._from_inner(self._inner.sqrt()) + except Exception as exc: + raise _map_exc(exc) from None + + def ln(self): + try: + return self._from_inner(self._inner.ln()) + except Exception as exc: + raise _map_exc(exc) from None + + def log2(self): + try: + return self._from_inner(self._inner.log2()) + except Exception as exc: + raise _map_exc(exc) from None + + def log10(self): + try: + return self._from_inner(self._inner.log10()) + except Exception as exc: + raise _map_exc(exc) from None + + def sin(self): + try: + return self._from_inner(self._inner.sin()) + except Exception as exc: + raise _map_exc(exc) from None + + def cos(self): + try: + return self._from_inner(self._inner.cos()) + except Exception as exc: + raise _map_exc(exc) from None + + def tan(self): + try: + return self._from_inner(self._inner.tan()) + except Exception as exc: + raise _map_exc(exc) from None + + def asin(self): + try: + return self._from_inner(self._inner.asin()) + except Exception as exc: + raise _map_exc(exc) from None + + def acos(self): + try: + return self._from_inner(self._inner.acos()) + except Exception as exc: + raise _map_exc(exc) from None + + def atan(self): + try: + return self._from_inner(self._inner.atan()) + except Exception as exc: + raise _map_exc(exc) from None + + def __add__(self, other: "DimensionalVariable"): + return self.add(other) + + def __sub__(self, other: "DimensionalVariable"): + return self.sub(other) + + def __mul__(self, other): + if isinstance(other, DimensionalVariable): + return self.mul(other) + if isinstance(other, (int, float)): + return self.mul_scalar(float(other)) + raise TypeError("Cannot multiply DV with this type") + + def __rmul__(self, other): + if isinstance(other, (int, float)): + return self.mul_scalar(float(other)) + raise TypeError("Cannot multiply this type with DV") + + def __truediv__(self, other): + if isinstance(other, DimensionalVariable): + return self.div(other) + if isinstance(other, (int, float)): + return self.div_scalar(float(other)) + raise TypeError("Cannot divide DV by this type") + + def __rtruediv__(self, other): + if isinstance(other, (int, float)): + return self.rdiv_scalar(float(other)) + raise TypeError("Cannot divide this type by DV") + + def __pow__(self, exponent, _modulo=None): + if isinstance(exponent, int): + return self.powi(exponent) + if isinstance(exponent, float): + return self.powf(exponent) + raise TypeError("Exponent must be int or float") + + def __neg__(self): + return self._from_inner(self._inner.neg()) + + def __abs__(self): + return self._from_inner(self._inner.abs()) + + def __eq__(self, other): + if not isinstance(other, DimensionalVariable): + return False + return self._inner.equals(other._inner) + + def __ne__(self, other): + if not isinstance(other, DimensionalVariable): + return True + return self._inner.not_equals(other._inner) + + def __lt__(self, other): + try: + return self._inner.less_than(other._inner) + except Exception as exc: + raise _map_exc(exc) from None + + def __le__(self, other): + try: + return self._inner.less_equal(other._inner) + except Exception as exc: + raise _map_exc(exc) from None + + def __gt__(self, other): + try: + return self._inner.greater_than(other._inner) + except Exception as exc: + raise _map_exc(exc) from None + + def __ge__(self, other): + try: + return self._inner.greater_equal(other._inner) + except Exception as exc: + raise _map_exc(exc) from None + + def __repr__(self): + try: + return f"DimensionalVariable({self.value()}, '{str(self).split(' ', 1)[1]}')" + except Exception: + return "DimensionalVariable()" + + def __str__(self): + try: + return self._inner.to_string() + except Exception as exc: + raise _map_exc(exc) from None + + +def asin(x: float) -> DimensionalVariable: + try: + return DimensionalVariable._from_inner(_nb.DimensionalVariable.asin_scalar(float(x))) + except Exception as exc: + raise _map_exc(exc) from None + + +def acos(x: float) -> DimensionalVariable: + try: + return DimensionalVariable._from_inner(_nb.DimensionalVariable.acos_scalar(float(x))) + except Exception as exc: + raise _map_exc(exc) from None + + +def atan(x: float) -> DimensionalVariable: + try: + return DimensionalVariable._from_inner(_nb.DimensionalVariable.atan_scalar(float(x))) + except Exception as exc: + raise _map_exc(exc) from None -DimensionalVariable = dv.DimensionalVariable -DVError = dv.DVError -asin = dv.asin -acos = dv.acos -atan = dv.atan -__all__ = ["DimensionalVariable", "DVError", "asin", "acos", "atan"] \ No newline at end of file +__all__ = ["DimensionalVariable", "DVError", "asin", "acos", "atan"] diff --git a/python/pyproject.toml b/python/pyproject.toml index ffa6155..bcb1dc2 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -1,14 +1,10 @@ -[build-system] -requires = [ "maturin>=1.0,<2.0",] -build-backend = "maturin" - [project] name = "dv_py" version = "0.3.3" description = "Python bindings for dv (DimensionalVariable) - keeping track of units and dimensions for physical quantities" readme = "pip-readme.md" requires-python = ">=3.8" -classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: 3.15", "Programming Language :: Rust", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Physics", "Topic :: Software Development :: Libraries",] +classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: 3.15", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Physics", "Topic :: Software Development :: Libraries",] keywords = [ "units", "dimensions", "physical-quantities", "unit-conversion", "unit-checking",] [[project.authors]] name = "Alex Tacescu" @@ -22,7 +18,3 @@ Homepage = "https://dv.alextac.com" Documentation = "https://dv.alextac.com/docs/python" Repository = "https://github.com/alextac98/dv" Issues = "https://github.com/alextac98/dv/issues" - -[tool.maturin] -module-name = "dv_py.dv_pyo3" -python-source = "." diff --git a/python/src/lib.rs b/python/src/lib.rs deleted file mode 100644 index 935c0fb..0000000 --- a/python/src/lib.rs +++ /dev/null @@ -1,415 +0,0 @@ -use pyo3::prelude::*; -use pyo3::exceptions::PyTypeError; -use dv_rs::DimensionalVariable; - -pyo3::create_exception!(dv_pyo3, DVError, pyo3::exceptions::PyException); - -/// A dimensioned variable that combines a numerical value with physical units. -/// -/// The DV class performs dimensional analysis to ensure physical correctness -/// in mathematical operations. Units are stored internally as SI base unit -/// exponents (m, kg, s, K, A, mol, cd). -/// -/// Examples: -/// >>> from dv import DV -/// >>> velocity = DV(10.0, "m/s") -/// >>> time = DV(2.0, "s") -/// >>> distance = velocity * time -/// >>> distance.value_in("m") -/// 20.0 -/// >>> distance.value_in("km") -/// 0.02 -#[pyclass(name = "DimensionalVariable")] -struct PyDV { - dv: DimensionalVariable, -} - -#[pymethods] -impl PyDV { - /// Create a new dimensioned variable. - /// - /// Args: - /// value (float): The numerical value - /// unit (str): The unit string (e.g., "m/s", "kg*m/s^2") - /// - /// Returns: - /// DV: A new dimensioned variable - /// - /// Raises: - /// DVError: If the unit string is invalid - #[new] - fn new(value: f64, unit: &str) -> PyResult { - match DimensionalVariable::new(value, unit) { - Ok(dv) => Ok(PyDV { dv }), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Get the raw value in SI base units. - /// - /// Returns: - /// float: The value in SI base units - fn value(&self) -> f64 { - self.dv.value() - } - - /// Convert the value to the specified unit. - /// - /// Args: - /// unit (str): The target unit string - /// - /// Returns: - /// float: The value in the target unit - /// - /// Raises: - /// DVError: If units are incompatible or unit string is invalid - fn value_in(&self, unit: &str) -> PyResult { - match self.dv.value_in(unit) { - Ok(v) => Ok(v), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Check if the variable is dimensionless (unitless). - /// - /// Returns: - /// bool: True if dimensionless, False otherwise - fn is_unitless(&self) -> bool { - self.dv.is_unitless() - } - - /// Get the base unit exponents as a tuple. - /// - /// Returns: - /// tuple: (m, kg, s, K, A, mol, cd, rad) exponents - fn base_units(&self) -> (f64, f64, f64, f64, f64, f64, f64, f64) { - let units = self.dv.unit(); - (units[0], units[1], units[2], units[3], units[4], units[5], units[6], units[7]) - } - - /// Addition operator. - fn __add__(&self, other: &PyDV) -> PyResult { - match self.dv.try_add(&other.dv) { - Ok(result) => Ok(PyDV { dv: result }), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Subtraction operator. - fn __sub__(&self, other: &PyDV) -> PyResult { - match self.dv.try_sub(&other.dv) { - Ok(result) => Ok(PyDV { dv: result }), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Multiplication operator (DV * DV or DV * scalar). - fn __mul__(&self, other: &Bound<'_, PyAny>) -> PyResult { - // Try to extract as another PyDV - if let Ok(other_dv) = other.downcast::() { - let other_borrow = other_dv.borrow(); - Ok(PyDV { dv: &self.dv * &other_borrow.dv }) - } else if let Ok(scalar) = other.extract::() { - Ok(PyDV { dv: &self.dv * scalar }) - } else { - Err(PyTypeError::new_err("Cannot multiply DV with this type")) - } - } - - /// Right multiplication operator (scalar * DV). - fn __rmul__(&self, other: &Bound<'_, PyAny>) -> PyResult { - if let Ok(scalar) = other.extract::() { - Ok(PyDV { dv: scalar * &self.dv }) - } else { - Err(PyTypeError::new_err("Cannot multiply this type with DV")) - } - } - - /// Division operator (DV / DV or DV / scalar). - fn __truediv__(&self, other: &Bound<'_, PyAny>) -> PyResult { - // Try to extract as another PyDV - if let Ok(other_dv) = other.downcast::() { - let other_borrow = other_dv.borrow(); - Ok(PyDV { dv: &self.dv / &other_borrow.dv }) - } else if let Ok(scalar) = other.extract::() { - Ok(PyDV { dv: &self.dv / scalar }) - } else { - Err(PyTypeError::new_err("Cannot divide DV by this type")) - } - } - - /// Right division operator (scalar / DV). - fn __rtruediv__(&self, other: &Bound<'_, PyAny>) -> PyResult { - if let Ok(scalar) = other.extract::() { - Ok(PyDV { dv: scalar / &self.dv }) - } else { - Err(PyTypeError::new_err("Cannot divide this type by DV")) - } - } - - /// Power operator. - /// - /// Args: - /// exponent (int or float): The exponent - /// - /// Returns: - /// DV: The result of raising to the power - fn __pow__(&self, exponent: &Bound<'_, PyAny>, _modulo: Option<&Bound<'_, PyAny>>) -> PyResult { - if let Ok(exp_int) = exponent.extract::() { - Ok(PyDV { dv: self.dv.powi(exp_int) }) - } else if let Ok(exp_float) = exponent.extract::() { - match self.dv.powf(exp_float) { - Ok(result) => Ok(PyDV { dv: result }), - Err(e) => Err(DVError::new_err(e)), - } - } else { - Err(PyTypeError::new_err("Exponent must be int or float")) - } - } - - /// Negation operator. - fn __neg__(&self) -> PyDV { - PyDV { dv: -&self.dv } - } - - /// Absolute value. - fn __abs__(&self) -> PyDV { - PyDV { dv: self.dv.abs() } - } - - /// Equality comparison. - fn __eq__(&self, other: &PyDV) -> bool { - self.dv == other.dv - } - - /// Inequality comparison. - fn __ne__(&self, other: &PyDV) -> bool { - self.dv != other.dv - } - - /// Less than comparison. - fn __lt__(&self, other: &PyDV) -> PyResult { - match self.dv.partial_cmp(&other.dv) { - Some(std::cmp::Ordering::Less) => Ok(true), - Some(_) => Ok(false), - None => Err(DVError::new_err("Cannot compare values with incompatible units")), - } - } - - /// Less than or equal comparison. - fn __le__(&self, other: &PyDV) -> PyResult { - match self.dv.partial_cmp(&other.dv) { - Some(std::cmp::Ordering::Less) | Some(std::cmp::Ordering::Equal) => Ok(true), - Some(_) => Ok(false), - None => Err(DVError::new_err("Cannot compare values with incompatible units")), - } - } - - /// Greater than comparison. - fn __gt__(&self, other: &PyDV) -> PyResult { - match self.dv.partial_cmp(&other.dv) { - Some(std::cmp::Ordering::Greater) => Ok(true), - Some(_) => Ok(false), - None => Err(DVError::new_err("Cannot compare values with incompatible units")), - } - } - - /// Greater than or equal comparison. - fn __ge__(&self, other: &PyDV) -> PyResult { - match self.dv.partial_cmp(&other.dv) { - Some(std::cmp::Ordering::Greater) | Some(std::cmp::Ordering::Equal) => Ok(true), - Some(_) => Ok(false), - None => Err(DVError::new_err("Cannot compare values with incompatible units")), - } - } - - /// String representation (for developers/debugging). - fn __repr__(&self) -> String { - format!("DimensionalVariable({}, '{}')", self.dv.value(), self.dv.to_string().split_whitespace().skip(1).collect::>().join("")) - } - - /// String conversion (human-readable). - fn __str__(&self) -> String { - self.dv.to_string() - } - - // Mathematical functions - - /// Square root. - /// - /// Returns: - /// DV: The square root - /// - /// Raises: - /// DVError: If the operation fails - fn sqrt(&self) -> PyResult { - match self.dv.sqrt() { - Ok(result) => Ok(PyDV { dv: result }), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Natural logarithm (requires unitless value). - /// - /// Returns: - /// DV: The natural logarithm (unitless) - /// - /// Raises: - /// DVError: If the value is not unitless - fn ln(&self) -> PyResult { - match self.dv.ln() { - Ok(result) => Ok(PyDV { dv: DimensionalVariable { value: result, unit: [0.0; 8] } }), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Base-2 logarithm (requires unitless value). - /// - /// Returns: - /// DV: The base-2 logarithm (unitless) - /// - /// Raises: - /// DVError: If the value is not unitless - fn log2(&self) -> PyResult { - match self.dv.log2() { - Ok(result) => Ok(PyDV { dv: DimensionalVariable { value: result, unit: [0.0; 8] } }), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Base-10 logarithm (requires unitless value). - /// - /// Returns: - /// DV: The base-10 logarithm (unitless) - /// - /// Raises: - /// DVError: If the value is not unitless - fn log10(&self) -> PyResult { - match self.dv.log10() { - Ok(result) => Ok(PyDV { dv: DimensionalVariable { value: result, unit: [0.0; 8] } }), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Sine (requires angle). - /// - /// Returns: - /// DV: The sine (unitless) - /// - /// Raises: - /// DVError: If the value is not an angle - fn sin(&self) -> PyResult { - match self.dv.sin() { - Ok(result) => Ok(PyDV { dv: DimensionalVariable { value: result, unit: [0.0; 8] } }), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Cosine (requires angle). - /// - /// Returns: - /// DV: The cosine (unitless) - /// - /// Raises: - /// DVError: If the value is not an angle - fn cos(&self) -> PyResult { - match self.dv.cos() { - Ok(result) => Ok(PyDV { dv: DimensionalVariable { value: result, unit: [0.0; 8] } }), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Tangent (requires angle). - /// - /// Returns: - /// DV: The tangent (unitless) - /// - /// Raises: - /// DVError: If the value is not an angle - fn tan(&self) -> PyResult { - match self.dv.tan() { - Ok(result) => Ok(PyDV { dv: DimensionalVariable { value: result, unit: [0.0; 8] } }), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Arcsine (requires unitless value in [-1, 1]). - /// - /// Returns: - /// DV: The arcsine as an angle in radians - /// - /// Raises: - /// DVError: If the value is not unitless or outside [-1, 1] - fn asin(&self) -> PyResult { - match self.dv.asin() { - Ok(result) => Ok(PyDV { dv: result }), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Arccosine (requires unitless value in [-1, 1]). - /// - /// Returns: - /// DV: The arccosine as an angle in radians - /// - /// Raises: - /// DVError: If the value is not unitless or outside [-1, 1] - fn acos(&self) -> PyResult { - match self.dv.acos() { - Ok(result) => Ok(PyDV { dv: result }), - Err(e) => Err(DVError::new_err(e)), - } - } - - /// Arctangent (requires unitless value). - /// - /// Returns: - /// DV: The arctangent as an angle in radians - /// - /// Raises: - /// DVError: If the value is not unitless - fn atan(&self) -> PyResult { - match self.dv.atan() { - Ok(result) => Ok(PyDV { dv: result }), - Err(e) => Err(DVError::new_err(e)), - } - } -} - -/// Arcsine function for f64 input, returns DimensionalVariable in radians. -#[pyfunction] -fn asin(x: f64) -> PyResult { - match dv_rs::asin(x) { - Ok(result) => Ok(PyDV { dv: result }), - Err(e) => Err(DVError::new_err(e)), - } -} - -/// Arccosine function for f64 input, returns DimensionalVariable in radians. -#[pyfunction] -fn acos(x: f64) -> PyResult { - match dv_rs::acos(x) { - Ok(result) => Ok(PyDV { dv: result }), - Err(e) => Err(DVError::new_err(e)), - } -} - -/// Arctangent function for f64 input, returns DimensionalVariable in radians. -#[pyfunction] -fn atan(x: f64) -> PyResult { - match dv_rs::atan(x) { - Ok(result) => Ok(PyDV { dv: result }), - Err(e) => Err(DVError::new_err(e)), - } -} - -/// Python module for dv (DimensionalVariable). -#[pymodule] -fn dv_pyo3(m: &Bound<'_, PyModule>) -> PyResult<()> { - m.add_class::()?; - m.add("DVError", m.py().get_type::())?; - m.add_function(wrap_pyfunction!(asin, m)?)?; - m.add_function(wrap_pyfunction!(acos, m)?)?; - m.add_function(wrap_pyfunction!(atan, m)?)?; - Ok(()) -} diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel index ea8bfd8..52e5510 100644 --- a/tools/BUILD.bazel +++ b/tools/BUILD.bazel @@ -17,11 +17,10 @@ py_binary( data = [ "//:VERSION.toml", "//core:Cargo.toml", - "//python:Cargo.toml", "//python:pyproject.toml", ], deps = [ "@pypi//toml", "@pypi//requests", ], -) \ No newline at end of file +) diff --git a/tools/diplomat_codegen/BUILD.bazel b/tools/diplomat_codegen/BUILD.bazel new file mode 100644 index 0000000..a199421 --- /dev/null +++ b/tools/diplomat_codegen/BUILD.bazel @@ -0,0 +1,12 @@ +load("@rules_rust//rust:defs.bzl", "rust_binary") + +package(default_visibility = ["//visibility:public"]) + +rust_binary( + name = "diplomat_codegen", + srcs = ["main.rs"], + edition = "2021", + deps = [ + "@crates//:diplomat-tool", + ], +) diff --git a/tools/diplomat_codegen/main.rs b/tools/diplomat_codegen/main.rs new file mode 100644 index 0000000..7023703 --- /dev/null +++ b/tools/diplomat_codegen/main.rs @@ -0,0 +1,47 @@ +use std::env; +use std::path::PathBuf; + +use diplomat_tool::config::Config; +use diplomat_tool::DocsUrlGenerator; + +fn main() -> std::io::Result<()> { + let mut args = env::args().skip(1); + let target_language = args + .next() + .expect("usage: diplomat_codegen [--entry ]"); + let out_dir = PathBuf::from( + args.next() + .expect("usage: diplomat_codegen [--entry ]"), + ); + + let mut entry = PathBuf::from("src/lib.rs"); + let mut config = Config::default(); + let mut cli_config = Vec::new(); + while let Some(arg) = args.next() { + match arg.as_str() { + "--entry" => { + entry = PathBuf::from( + args.next() + .expect("--entry requires a path argument"), + ); + } + "--config" => { + cli_config.push( + args.next() + .expect("--config requires a key=value argument"), + ); + } + _ => panic!("unknown argument: {arg}"), + } + } + config.read_cli_settings(cli_config); + + diplomat_tool::gen( + &entry, + &target_language, + &out_dir, + &DocsUrlGenerator::with_base_urls(None, Default::default()), + config, + false, + ) +} diff --git a/tools/requirements.in b/tools/requirements.in index 61e1dd7..5d98ce1 100644 --- a/tools/requirements.in +++ b/tools/requirements.in @@ -1,4 +1,4 @@ toml requests pytest -maturin +nanobind diff --git a/tools/requirements.txt b/tools/requirements.txt index f5548f9..5266d4b 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -95,21 +95,9 @@ iniconfig==2.3.0 \ --hash=sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730 \ --hash=sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12 # via pytest -maturin==1.10.2 \ - --hash=sha256:04df81ee295dcda37828bd025a4ac688ea856e3946e4cb300a8f44a448de0069 \ - --hash=sha256:07a82864352feeaf2167247c8206937ef6c6ae9533025d416b7004ade0ea601d \ - --hash=sha256:11c73815f21a755d2129c410e6cb19dbfacbc0155bfc46c706b69930c2eb794b \ - --hash=sha256:259292563da89850bf8f7d37aa4ddba22905214c1e180b1c8f55505dfd8c0e81 \ - --hash=sha256:7fbd997c5347649ee7987bd05a92bd5b8b07efa4ac3f8bcbf6196e07eb573d89 \ - --hash=sha256:96e1d391e4c1fa87edf2a37e4d53d5f2e5f39dd880b9d8306ac9f8eb212d23f8 \ - --hash=sha256:a217aa7c42aa332fb8e8377eb07314e1f02cf0fe036f614aca4575121952addd \ - --hash=sha256:a41ec70d99e27c05377be90f8e3c3def2a7bae4d0d9d5ea874aaf2d1da625d5c \ - --hash=sha256:a4c29a770ea2c76082e0afc6d4efd8ee94405588bfae00d10828f72e206c739b \ - --hash=sha256:da031771d9fb6ddb1d373638ec2556feee29e4507365cd5749a2d354bcadd818 \ - --hash=sha256:da777766fd584440dc9fecd30059a94f85e4983f58b09e438ae38ee4b494024c \ - --hash=sha256:e3ce9b2ad4fb9c341f450a6d32dc3edb409a2d582a81bc46ba55f6e3b6196b22 \ - --hash=sha256:efcd496a3202ffe0d0489df1f83d08b91399782fb2dd545d5a1e7bf6fd81af39 \ - --hash=sha256:f0d1b7b5f73c8d30a7e71cd2a2189a7f0126a3a3cd8b3d6843e7e1d4db50f759 +nanobind==2.11.0 \ + --hash=sha256:6d98d063c61dbbd05a2d903e59be398bfcff9d59c54fbbc9d4488960485d40d0 \ + --hash=sha256:8097442c3e55d011a67f016ce1d9567ed9e3cdb3ad6749f13a76dbbc2721f0ee # via -r tools/requirements.in packaging==25.0 \ --hash=sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 \ diff --git a/tools/update_versions.py b/tools/update_versions.py index d7d2a82..bf3ab6c 100644 --- a/tools/update_versions.py +++ b/tools/update_versions.py @@ -106,7 +106,7 @@ def update_rust(versions: tuple, dryrun: bool = False) -> bool: def update_python(versions: tuple, dryrun: bool = False) -> bool: - """Update the Python pyproject.toml and Cargo.toml versions based on the provided versions. + """Update the Python pyproject.toml version based on the provided versions. Args: versions (tuple): A tuple containing major, minor, and patch versions. dryrun (bool): If True, only check for consistency without making changes. @@ -133,15 +133,7 @@ def update_python(versions: tuple, dryrun: bool = False) -> bool: current_pyproject_version = pyproject_toml["project"]["version"] - # Check Cargo.toml - cargo_path = workspace_root / "python" / "Cargo.toml" - with open(cargo_path, "r") as f: - cargo_toml = toml.load(f) - - current_cargo_version = cargo_toml["package"]["version"] - versions_match_pyproject = current_pyproject_version == version_str - versions_match_cargo = current_cargo_version == version_str version_not_used = version_str not in pypi_versions has_passed = True @@ -155,17 +147,15 @@ def update_python(versions: tuple, dryrun: bool = False) -> bool: print("\t❌ Python package version is already published on PyPI.") has_passed &= False - if versions_match_pyproject and versions_match_cargo: + if versions_match_pyproject: # Versions already match - print("\t✅ Python pyproject.toml and Cargo.toml versions are consistent.") + print("\t✅ Python pyproject.toml version is consistent.") has_passed &= True else: if dryrun: - print("\t❌ Python package versions are inconsistent.") + print("\t❌ Python package version is inconsistent.") if not versions_match_pyproject: print(f"\t\tpyproject.toml: {current_pyproject_version}") - if not versions_match_cargo: - print(f"\t\tCargo.toml: {current_cargo_version}") print(f"\t\tVersion.toml: {version_str}") has_passed &= False elif not version_not_used: @@ -183,15 +173,6 @@ def update_python(versions: tuple, dryrun: bool = False) -> bool: f"\t⚠️ Updated Python pyproject.toml version from {current_pyproject_version} to {version_str}." ) - # Update the version in Cargo.toml - if not versions_match_cargo: - cargo_toml["package"]["version"] = version_str - with open(cargo_path, "w") as f: - toml.dump(cargo_toml, f) - print( - f"\t⚠️ Updated Python Cargo.toml version from {current_cargo_version} to {version_str}." - ) - has_passed &= True return has_passed From f514d3e025e8145a6f26539db661b1039ea9367d Mon Sep 17 00:00:00 2001 From: Alex Tacescu Date: Sat, 28 Feb 2026 08:30:32 -0800 Subject: [PATCH 2/9] complete migration, not sure if I want to continue this though --- .gitignore | 11 +- CMakeLists.txt | 81 ++- examples/c/CMakeLists.txt | 3 +- examples/cpp/CMakeLists.txt | 3 +- ffi/diplomat/BUILD.bazel | 5 +- ffi/diplomat/Cargo.toml | 1 + generated/diplomat/c/BUILD.bazel | 21 +- generated/diplomat/c/BaseUnits.d.h | 29 - generated/diplomat/c/BaseUnits.h | 22 - generated/diplomat/c/DimensionalVariable.d.h | 19 - generated/diplomat/c/DimensionalVariable.h | 124 ---- generated/diplomat/c/diplomat_runtime.h | 82 --- generated/diplomat/cpp/BUILD.bazel | 23 +- generated/diplomat/cpp/BaseUnits.d.hpp | 51 -- generated/diplomat/cpp/BaseUnits.hpp | 51 -- .../diplomat/cpp/DimensionalVariable.d.hpp | 121 ---- .../diplomat/cpp/DimensionalVariable.hpp | 371 ------------ generated/diplomat/cpp/diplomat_runtime.hpp | 567 ------------------ generated/diplomat/nanobind/BUILD.bazel | 32 +- generated/diplomat/nanobind/dv_py_ext.cpp | 68 --- generated/diplomat/nanobind/dv_pyo3_ext.cpp | 68 --- .../diplomat/nanobind/include/BaseUnits.d.hpp | 52 -- .../diplomat/nanobind/include/BaseUnits.hpp | 51 -- .../include/DimensionalVariable.d.hpp | 124 ---- .../nanobind/include/DimensionalVariable.hpp | 371 ------------ .../include/diplomat_nanobind_common.hpp | 306 ---------- .../nanobind/include/diplomat_runtime.hpp | 567 ------------------ generated/diplomat/nanobind/nb_combined.cpp | 1 - .../sub_modules/dv_py/BaseUnits_binding.cpp | 21 - .../dv_py/DimensionalVariable_binding.cpp | 54 -- .../sub_modules/dv_pyo3/BaseUnits_binding.cpp | 21 - .../dv_pyo3/DimensionalVariable_binding.cpp | 54 -- 32 files changed, 168 insertions(+), 3207 deletions(-) delete mode 100644 generated/diplomat/c/BaseUnits.d.h delete mode 100644 generated/diplomat/c/BaseUnits.h delete mode 100644 generated/diplomat/c/DimensionalVariable.d.h delete mode 100644 generated/diplomat/c/DimensionalVariable.h delete mode 100644 generated/diplomat/c/diplomat_runtime.h delete mode 100644 generated/diplomat/cpp/BaseUnits.d.hpp delete mode 100644 generated/diplomat/cpp/BaseUnits.hpp delete mode 100644 generated/diplomat/cpp/DimensionalVariable.d.hpp delete mode 100644 generated/diplomat/cpp/DimensionalVariable.hpp delete mode 100644 generated/diplomat/cpp/diplomat_runtime.hpp delete mode 100644 generated/diplomat/nanobind/dv_py_ext.cpp delete mode 100644 generated/diplomat/nanobind/dv_pyo3_ext.cpp delete mode 100644 generated/diplomat/nanobind/include/BaseUnits.d.hpp delete mode 100644 generated/diplomat/nanobind/include/BaseUnits.hpp delete mode 100644 generated/diplomat/nanobind/include/DimensionalVariable.d.hpp delete mode 100644 generated/diplomat/nanobind/include/DimensionalVariable.hpp delete mode 100644 generated/diplomat/nanobind/include/diplomat_nanobind_common.hpp delete mode 100644 generated/diplomat/nanobind/include/diplomat_runtime.hpp delete mode 100644 generated/diplomat/nanobind/nb_combined.cpp delete mode 100644 generated/diplomat/nanobind/sub_modules/dv_py/BaseUnits_binding.cpp delete mode 100644 generated/diplomat/nanobind/sub_modules/dv_py/DimensionalVariable_binding.cpp delete mode 100644 generated/diplomat/nanobind/sub_modules/dv_pyo3/BaseUnits_binding.cpp delete mode 100644 generated/diplomat/nanobind/sub_modules/dv_pyo3/DimensionalVariable_binding.cpp diff --git a/.gitignore b/.gitignore index 7575804..d2850f2 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,14 @@ __pycache__/ **/dist/ # CMake Build Directories -build/ +build-*/ + + +# Diplomat generated bindings are produced by Bazel/CMake at build time +generated/diplomat/** +!generated/diplomat/ +!generated/diplomat/**/ +!generated/diplomat/**/BUILD.bazel # VSCode Settings -.vscode/ \ No newline at end of file +.vscode/ diff --git a/CMakeLists.txt b/CMakeLists.txt index debabce..52ebf98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,82 @@ cmake_minimum_required(VERSION 3.20) project(dv LANGUAGES C CXX) -message(FATAL_ERROR - "CMake support is temporarily disabled during the Diplomat migration. " - "Use Bazel targets (e.g. //examples/c:c_example and //examples/cpp:cpp_example)." +include(ExternalProject) + +find_program(BAZEL_EXECUTABLE bazel REQUIRED) +find_program(CARGO_EXECUTABLE cargo REQUIRED) + +set(DV_BRIDGE_DIR ${CMAKE_CURRENT_LIST_DIR}/ffi/diplomat) +set(DV_BRIDGE_ENTRY ${DV_BRIDGE_DIR}/src/lib.rs) +set(DV_CODEGEN_ROOT ${CMAKE_BINARY_DIR}/generated/diplomat) +set(DV_CODEGEN_C_DIR ${DV_CODEGEN_ROOT}/c) +set(DV_CODEGEN_CPP_DIR ${DV_CODEGEN_ROOT}/cpp) + +set(DV_GEN_C_HEADERS + ${DV_CODEGEN_C_DIR}/BaseUnits.d.h + ${DV_CODEGEN_C_DIR}/BaseUnits.h + ${DV_CODEGEN_C_DIR}/DimensionalVariable.d.h + ${DV_CODEGEN_C_DIR}/DimensionalVariable.h + ${DV_CODEGEN_C_DIR}/diplomat_runtime.h +) +set(DV_GEN_CPP_HEADERS + ${DV_CODEGEN_CPP_DIR}/BaseUnits.d.hpp + ${DV_CODEGEN_CPP_DIR}/BaseUnits.hpp + ${DV_CODEGEN_CPP_DIR}/DimensionalVariable.d.hpp + ${DV_CODEGEN_CPP_DIR}/DimensionalVariable.hpp + ${DV_CODEGEN_CPP_DIR}/diplomat_runtime.hpp +) + +add_custom_command( + OUTPUT ${DV_GEN_C_HEADERS} + COMMAND ${CMAKE_COMMAND} -E make_directory ${DV_CODEGEN_C_DIR} + COMMAND ${BAZEL_EXECUTABLE} run //tools/diplomat_codegen:diplomat_codegen -- c ${DV_CODEGEN_C_DIR} --entry ${DV_BRIDGE_ENTRY} + DEPENDS ${DV_BRIDGE_ENTRY} + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + VERBATIM +) + +add_custom_command( + OUTPUT ${DV_GEN_CPP_HEADERS} + COMMAND ${CMAKE_COMMAND} -E make_directory ${DV_CODEGEN_CPP_DIR} + COMMAND ${BAZEL_EXECUTABLE} run //tools/diplomat_codegen:diplomat_codegen -- cpp ${DV_CODEGEN_CPP_DIR} --entry ${DV_BRIDGE_ENTRY} + DEPENDS ${DV_BRIDGE_ENTRY} + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + VERBATIM +) + +add_custom_target(dv_diplomat_codegen DEPENDS ${DV_GEN_C_HEADERS} ${DV_GEN_CPP_HEADERS}) + +set(DV_CARGO_TARGET_DIR ${DV_BRIDGE_DIR}/target) +set(DV_CARGO_BUILD_CMD + ${CARGO_EXECUTABLE} build + --manifest-path ${DV_BRIDGE_DIR}/Cargo.toml + --release ) + +ExternalProject_Add(dv_diplomat_bridge_ext + SOURCE_DIR ${DV_BRIDGE_DIR} + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND "" + BUILD_COMMAND ${DV_CARGO_BUILD_CMD} + INSTALL_COMMAND "" + BUILD_BYPRODUCTS + ${DV_BRIDGE_DIR}/target/release/libdv_diplomat_bridge.a +) + +set(DV_DIPLOMAT_STATIC ${DV_BRIDGE_DIR}/target/release/libdv_diplomat_bridge.a) + +add_library(dv_c STATIC IMPORTED GLOBAL) +set_target_properties(dv_c PROPERTIES + IMPORTED_LOCATION ${DV_DIPLOMAT_STATIC} + INTERFACE_INCLUDE_DIRECTORIES ${DV_CODEGEN_C_DIR} +) +add_dependencies(dv_c dv_diplomat_bridge_ext dv_diplomat_codegen) + +add_library(dv_cpp INTERFACE) +target_include_directories(dv_cpp INTERFACE ${DV_CODEGEN_CPP_DIR}) +target_link_libraries(dv_cpp INTERFACE dv_c) +add_dependencies(dv_cpp dv_diplomat_codegen) + +add_subdirectory(examples/c) +add_subdirectory(examples/cpp) diff --git a/examples/c/CMakeLists.txt b/examples/c/CMakeLists.txt index ad347a9..7d24a1d 100644 --- a/examples/c/CMakeLists.txt +++ b/examples/c/CMakeLists.txt @@ -1,4 +1,5 @@ cmake_minimum_required(VERSION 3.20) project(dv_c_example C) -message(FATAL_ERROR "Use Bazel: cmake example support is disabled during the Diplomat migration.") +add_executable(dv_example_c main.c) +target_link_libraries(dv_example_c PRIVATE dv_c) diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt index abec6e5..ab51310 100644 --- a/examples/cpp/CMakeLists.txt +++ b/examples/cpp/CMakeLists.txt @@ -1,4 +1,5 @@ cmake_minimum_required(VERSION 3.20) project(dv_cpp_example CXX) -message(FATAL_ERROR "Use Bazel: cmake example support is disabled during the Diplomat migration.") +add_executable(dv_example_cpp main.cpp) +target_link_libraries(dv_example_cpp PRIVATE dv_cpp) diff --git a/ffi/diplomat/BUILD.bazel b/ffi/diplomat/BUILD.bazel index 16ea2e8..61836b0 100644 --- a/ffi/diplomat/BUILD.bazel +++ b/ffi/diplomat/BUILD.bazel @@ -2,7 +2,10 @@ load("@rules_rust//rust:defs.bzl", "rust_library", "rust_static_library") package(default_visibility = ["//visibility:public"]) -exports_files(["Cargo.toml"]) +exports_files([ + "Cargo.toml", + "src/lib.rs", +]) rust_library( name = "dv_diplomat_bridge", diff --git a/ffi/diplomat/Cargo.toml b/ffi/diplomat/Cargo.toml index f738a6e..1caa49e 100644 --- a/ffi/diplomat/Cargo.toml +++ b/ffi/diplomat/Cargo.toml @@ -10,6 +10,7 @@ publish = false [lib] name = "dv_diplomat_bridge" path = "src/lib.rs" +crate-type = ["rlib", "staticlib", "cdylib"] [dependencies.dv_rs] package = "dv" diff --git a/generated/diplomat/c/BUILD.bazel b/generated/diplomat/c/BUILD.bazel index a865ad6..8ebed6a 100644 --- a/generated/diplomat/c/BUILD.bazel +++ b/generated/diplomat/c/BUILD.bazel @@ -2,9 +2,28 @@ load("@rules_cc//cc:defs.bzl", "cc_library") package(default_visibility = ["//visibility:public"]) +genrule( + name = "codegen_c", + srcs = ["//ffi/diplomat:src/lib.rs"], + outs = [ + "BaseUnits.d.h", + "BaseUnits.h", + "DimensionalVariable.d.h", + "DimensionalVariable.h", + "diplomat_runtime.h", + ], + tools = ["//tools/diplomat_codegen:diplomat_codegen"], + cmd = "$(location //tools/diplomat_codegen:diplomat_codegen) c $(RULEDIR) --entry $(location //ffi/diplomat:src/lib.rs)", +) + +filegroup( + name = "generated_headers", + srcs = [":codegen_c"], +) + cc_library( name = "dv_diplomat_c", - hdrs = glob(["*.h"]), + hdrs = [":generated_headers"], includes = ["."], deps = [ "//ffi/diplomat:dv_diplomat_capi_static", diff --git a/generated/diplomat/c/BaseUnits.d.h b/generated/diplomat/c/BaseUnits.d.h deleted file mode 100644 index bc02f41..0000000 --- a/generated/diplomat/c/BaseUnits.d.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef BaseUnits_D_H -#define BaseUnits_D_H - -#include -#include -#include -#include -#include "diplomat_runtime.h" - - - - - -typedef struct BaseUnits { - double m; - double kg; - double s; - double k; - double a; - double mol; - double cd; - double rad; -} BaseUnits; - -typedef struct BaseUnits_option {union { BaseUnits ok; }; bool is_ok; } BaseUnits_option; - - - -#endif // BaseUnits_D_H diff --git a/generated/diplomat/c/BaseUnits.h b/generated/diplomat/c/BaseUnits.h deleted file mode 100644 index 8fc6324..0000000 --- a/generated/diplomat/c/BaseUnits.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef BaseUnits_H -#define BaseUnits_H - -#include -#include -#include -#include -#include "diplomat_runtime.h" - - -#include "BaseUnits.d.h" - - - - -// No Content - - - - - -#endif // BaseUnits_H diff --git a/generated/diplomat/c/DimensionalVariable.d.h b/generated/diplomat/c/DimensionalVariable.d.h deleted file mode 100644 index 29ebdcc..0000000 --- a/generated/diplomat/c/DimensionalVariable.d.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef DimensionalVariable_D_H -#define DimensionalVariable_D_H - -#include -#include -#include -#include -#include "diplomat_runtime.h" - - - - - -typedef struct DimensionalVariable DimensionalVariable; - - - - -#endif // DimensionalVariable_D_H diff --git a/generated/diplomat/c/DimensionalVariable.h b/generated/diplomat/c/DimensionalVariable.h deleted file mode 100644 index 39cb490..0000000 --- a/generated/diplomat/c/DimensionalVariable.h +++ /dev/null @@ -1,124 +0,0 @@ -#ifndef DimensionalVariable_H -#define DimensionalVariable_H - -#include -#include -#include -#include -#include "diplomat_runtime.h" - -#include "BaseUnits.d.h" - -#include "DimensionalVariable.d.h" - - - - - - -typedef struct DimensionalVariable_new_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_new_result; -DimensionalVariable_new_result DimensionalVariable_new(double value, DiplomatStringView unit); - -typedef struct DimensionalVariable_asin_scalar_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_asin_scalar_result; -DimensionalVariable_asin_scalar_result DimensionalVariable_asin_scalar(double x); - -typedef struct DimensionalVariable_acos_scalar_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_acos_scalar_result; -DimensionalVariable_acos_scalar_result DimensionalVariable_acos_scalar(double x); - -typedef struct DimensionalVariable_atan_scalar_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_atan_scalar_result; -DimensionalVariable_atan_scalar_result DimensionalVariable_atan_scalar(double x); - -size_t DimensionalVariable_base_units_size(void); - -double DimensionalVariable_value(const DimensionalVariable* self); - -typedef struct DimensionalVariable_value_in_result {union {double ok; }; bool is_ok;} DimensionalVariable_value_in_result; -DimensionalVariable_value_in_result DimensionalVariable_value_in(const DimensionalVariable* self, DiplomatStringView unit); - -bool DimensionalVariable_is_unitless(const DimensionalVariable* self); - -BaseUnits DimensionalVariable_base_units(const DimensionalVariable* self); - -typedef struct DimensionalVariable_add_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_add_result; -DimensionalVariable_add_result DimensionalVariable_add(const DimensionalVariable* self, const DimensionalVariable* other); - -typedef struct DimensionalVariable_sub_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sub_result; -DimensionalVariable_sub_result DimensionalVariable_sub(const DimensionalVariable* self, const DimensionalVariable* other); - -DimensionalVariable* DimensionalVariable_mul(const DimensionalVariable* self, const DimensionalVariable* other); - -DimensionalVariable* DimensionalVariable_div(const DimensionalVariable* self, const DimensionalVariable* other); - -DimensionalVariable* DimensionalVariable_mul_scalar(const DimensionalVariable* self, double scalar); - -DimensionalVariable* DimensionalVariable_div_scalar(const DimensionalVariable* self, double scalar); - -DimensionalVariable* DimensionalVariable_rdiv_scalar(const DimensionalVariable* self, double scalar); - -DimensionalVariable* DimensionalVariable_powi(const DimensionalVariable* self, int32_t exp); - -typedef struct DimensionalVariable_powf_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_powf_result; -DimensionalVariable_powf_result DimensionalVariable_powf(const DimensionalVariable* self, double exp); - -typedef struct DimensionalVariable_sqrt_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sqrt_result; -DimensionalVariable_sqrt_result DimensionalVariable_sqrt(const DimensionalVariable* self); - -typedef struct DimensionalVariable_ln_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_ln_result; -DimensionalVariable_ln_result DimensionalVariable_ln(const DimensionalVariable* self); - -typedef struct DimensionalVariable_log2_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_log2_result; -DimensionalVariable_log2_result DimensionalVariable_log2(const DimensionalVariable* self); - -typedef struct DimensionalVariable_log10_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_log10_result; -DimensionalVariable_log10_result DimensionalVariable_log10(const DimensionalVariable* self); - -typedef struct DimensionalVariable_sin_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sin_result; -DimensionalVariable_sin_result DimensionalVariable_sin(const DimensionalVariable* self); - -typedef struct DimensionalVariable_cos_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_cos_result; -DimensionalVariable_cos_result DimensionalVariable_cos(const DimensionalVariable* self); - -typedef struct DimensionalVariable_tan_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_tan_result; -DimensionalVariable_tan_result DimensionalVariable_tan(const DimensionalVariable* self); - -typedef struct DimensionalVariable_asin_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_asin_result; -DimensionalVariable_asin_result DimensionalVariable_asin(const DimensionalVariable* self); - -typedef struct DimensionalVariable_acos_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_acos_result; -DimensionalVariable_acos_result DimensionalVariable_acos(const DimensionalVariable* self); - -typedef struct DimensionalVariable_atan_result {union {DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_atan_result; -DimensionalVariable_atan_result DimensionalVariable_atan(const DimensionalVariable* self); - -DimensionalVariable* DimensionalVariable_neg(const DimensionalVariable* self); - -DimensionalVariable* DimensionalVariable_abs(const DimensionalVariable* self); - -bool DimensionalVariable_equals(const DimensionalVariable* self, const DimensionalVariable* other); - -bool DimensionalVariable_not_equals(const DimensionalVariable* self, const DimensionalVariable* other); - -typedef struct DimensionalVariable_less_than_result {union {bool ok; }; bool is_ok;} DimensionalVariable_less_than_result; -DimensionalVariable_less_than_result DimensionalVariable_less_than(const DimensionalVariable* self, const DimensionalVariable* other); - -typedef struct DimensionalVariable_less_equal_result {union {bool ok; }; bool is_ok;} DimensionalVariable_less_equal_result; -DimensionalVariable_less_equal_result DimensionalVariable_less_equal(const DimensionalVariable* self, const DimensionalVariable* other); - -typedef struct DimensionalVariable_greater_than_result {union {bool ok; }; bool is_ok;} DimensionalVariable_greater_than_result; -DimensionalVariable_greater_than_result DimensionalVariable_greater_than(const DimensionalVariable* self, const DimensionalVariable* other); - -typedef struct DimensionalVariable_greater_equal_result {union {bool ok; }; bool is_ok;} DimensionalVariable_greater_equal_result; -DimensionalVariable_greater_equal_result DimensionalVariable_greater_equal(const DimensionalVariable* self, const DimensionalVariable* other); - -DimensionalVariable* DimensionalVariable_clone_var(const DimensionalVariable* self); - -typedef struct DimensionalVariable_to_string_result { bool is_ok;} DimensionalVariable_to_string_result; -DimensionalVariable_to_string_result DimensionalVariable_to_string(const DimensionalVariable* self, DiplomatWrite* write); - -void DimensionalVariable_destroy(DimensionalVariable* self); - - - - - -#endif // DimensionalVariable_H diff --git a/generated/diplomat/c/diplomat_runtime.h b/generated/diplomat/c/diplomat_runtime.h deleted file mode 100644 index e5d6b29..0000000 --- a/generated/diplomat/c/diplomat_runtime.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef DIPLOMAT_RUNTIME_C_H -#define DIPLOMAT_RUNTIME_C_H - -#include -#include -#include -#include - -// These come from `uchar.h`, which is not available on all platforms. -// Redefining them in C is no problem, however in >C++11 they are fundamental -// types, which don't like being redefined. -#if !(__cplusplus >= 201100) -// https://en.cppreference.com/w/c/string/multibyte/char16_t -typedef uint_least16_t char16_t; -// https://en.cppreference.com/w/c/string/multibyte/char32_t -typedef uint_least32_t char32_t; -#endif - -static_assert(sizeof(char) == sizeof(uint8_t), "your architecture's `char` is not 8 bits"); -static_assert(sizeof(char16_t) == sizeof(uint16_t), "your architecture's `char16_t` is not 16 bits"); -static_assert(sizeof(char32_t) == sizeof(uint32_t), "your architecture's `char32_t` is not 32 bits"); - -typedef struct DiplomatWrite { - void* context; - char* buf; - size_t len; - size_t cap; - bool grow_failed; - void (*flush)(struct DiplomatWrite*); - bool (*grow)(struct DiplomatWrite*, size_t); -} DiplomatWrite; - -bool diplomat_is_str(const char* buf, size_t len); - -#define MAKE_SLICES(name, c_ty) \ - typedef struct Diplomat##name##View { \ - const c_ty* data; \ - size_t len; \ - } Diplomat##name##View; \ - typedef struct Diplomat##name##ViewMut { \ - c_ty* data; \ - size_t len; \ - } Diplomat##name##ViewMut; \ - typedef struct Diplomat##name##Array { \ - const c_ty* data; \ - size_t len; \ - } Diplomat##name##Array; - -#define MAKE_SLICES_AND_OPTIONS(name, c_ty) \ - MAKE_SLICES(name, c_ty) \ - typedef struct Option##name {union { c_ty ok; }; bool is_ok; } Option##name; \ - typedef struct Option##name##View {union { Diplomat##name##View ok; }; bool is_ok; } Option##name##View; \ - typedef struct Option##name##ViewMut {union { Diplomat##name##ViewMut ok; }; bool is_ok; } Option##name##ViewMut; \ - typedef struct Option##name##Array {union { Diplomat##name##Array ok; }; bool is_ok; } Option##name##Array; \ - -MAKE_SLICES_AND_OPTIONS(I8, int8_t) -MAKE_SLICES_AND_OPTIONS(U8, uint8_t) -MAKE_SLICES_AND_OPTIONS(I16, int16_t) -MAKE_SLICES_AND_OPTIONS(U16, uint16_t) -MAKE_SLICES_AND_OPTIONS(I32, int32_t) -MAKE_SLICES_AND_OPTIONS(U32, uint32_t) -MAKE_SLICES_AND_OPTIONS(I64, int64_t) -MAKE_SLICES_AND_OPTIONS(U64, uint64_t) -MAKE_SLICES_AND_OPTIONS(Isize, intptr_t) -MAKE_SLICES_AND_OPTIONS(Usize, size_t) -MAKE_SLICES_AND_OPTIONS(F32, float) -MAKE_SLICES_AND_OPTIONS(F64, double) -MAKE_SLICES_AND_OPTIONS(Bool, bool) -MAKE_SLICES_AND_OPTIONS(Char, char32_t) -MAKE_SLICES_AND_OPTIONS(String, char) -MAKE_SLICES_AND_OPTIONS(String16, char16_t) -MAKE_SLICES_AND_OPTIONS(Strings, DiplomatStringView) -MAKE_SLICES_AND_OPTIONS(Strings16, DiplomatString16View) - -DiplomatWrite diplomat_simple_write(char* buf, size_t buf_size); - -DiplomatWrite* diplomat_buffer_write_create(size_t cap); -char* diplomat_buffer_write_get_bytes(DiplomatWrite* t); -size_t diplomat_buffer_write_len(DiplomatWrite* t); -void diplomat_buffer_write_destroy(DiplomatWrite* t); - -#endif diff --git a/generated/diplomat/cpp/BUILD.bazel b/generated/diplomat/cpp/BUILD.bazel index 8cf732e..8b67178 100644 --- a/generated/diplomat/cpp/BUILD.bazel +++ b/generated/diplomat/cpp/BUILD.bazel @@ -2,15 +2,34 @@ load("@rules_cc//cc:defs.bzl", "cc_library") package(default_visibility = ["//visibility:public"]) +genrule( + name = "codegen_cpp", + srcs = ["//ffi/diplomat:src/lib.rs"], + outs = [ + "BaseUnits.d.hpp", + "BaseUnits.hpp", + "DimensionalVariable.d.hpp", + "DimensionalVariable.hpp", + "diplomat_runtime.hpp", + ], + tools = ["//tools/diplomat_codegen:diplomat_codegen"], + cmd = "$(location //tools/diplomat_codegen:diplomat_codegen) cpp $(RULEDIR) --entry $(location //ffi/diplomat:src/lib.rs)", +) + +filegroup( + name = "generated_headers", + srcs = [":codegen_cpp"], +) + cc_library( name = "headers", - hdrs = glob(["*.hpp"]), + hdrs = [":generated_headers"], includes = ["."], ) cc_library( name = "dv_diplomat_cpp", - hdrs = glob(["*.hpp"]), + hdrs = [":generated_headers"], includes = ["."], deps = [ ":headers", diff --git a/generated/diplomat/cpp/BaseUnits.d.hpp b/generated/diplomat/cpp/BaseUnits.d.hpp deleted file mode 100644 index a83bf07..0000000 --- a/generated/diplomat/cpp/BaseUnits.d.hpp +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef BaseUnits_D_HPP -#define BaseUnits_D_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include "diplomat_runtime.hpp" - - -namespace diplomat { -namespace capi { - struct BaseUnits { - double m; - double kg; - double s; - double k; - double a; - double mol; - double cd; - double rad; - }; - - typedef struct BaseUnits_option {union { BaseUnits ok; }; bool is_ok; } BaseUnits_option; -} // namespace capi -} // namespace - - -/** - * See the [Rust documentation for `BASE_UNITS_SIZE`](https://docs.rs/dv_rs/latest/dv_rs/units/BASE_UNITS_SIZE/index.html) for more information. - */ -struct BaseUnits { - double m; - double kg; - double s; - double k; - double a; - double mol; - double cd; - double rad; - - inline diplomat::capi::BaseUnits AsFFI() const; - inline static BaseUnits FromFFI(diplomat::capi::BaseUnits c_struct); -}; - - -#endif // BaseUnits_D_HPP diff --git a/generated/diplomat/cpp/BaseUnits.hpp b/generated/diplomat/cpp/BaseUnits.hpp deleted file mode 100644 index 17ef0d4..0000000 --- a/generated/diplomat/cpp/BaseUnits.hpp +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef BaseUnits_HPP -#define BaseUnits_HPP - -#include "BaseUnits.d.hpp" - -#include -#include -#include -#include -#include -#include -#include -#include -#include "diplomat_runtime.hpp" - - -namespace diplomat { -namespace capi { - -} // namespace capi -} // namespace - - -inline diplomat::capi::BaseUnits BaseUnits::AsFFI() const { - return diplomat::capi::BaseUnits { - /* .m = */ m, - /* .kg = */ kg, - /* .s = */ s, - /* .k = */ k, - /* .a = */ a, - /* .mol = */ mol, - /* .cd = */ cd, - /* .rad = */ rad, - }; -} - -inline BaseUnits BaseUnits::FromFFI(diplomat::capi::BaseUnits c_struct) { - return BaseUnits { - /* .m = */ c_struct.m, - /* .kg = */ c_struct.kg, - /* .s = */ c_struct.s, - /* .k = */ c_struct.k, - /* .a = */ c_struct.a, - /* .mol = */ c_struct.mol, - /* .cd = */ c_struct.cd, - /* .rad = */ c_struct.rad, - }; -} - - -#endif // BaseUnits_HPP diff --git a/generated/diplomat/cpp/DimensionalVariable.d.hpp b/generated/diplomat/cpp/DimensionalVariable.d.hpp deleted file mode 100644 index 2155dab..0000000 --- a/generated/diplomat/cpp/DimensionalVariable.d.hpp +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef DimensionalVariable_D_HPP -#define DimensionalVariable_D_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include "diplomat_runtime.hpp" - -struct BaseUnits; - - - - -namespace diplomat { -namespace capi { - struct DimensionalVariable; -} // namespace capi -} // namespace - -class DimensionalVariable { -public: - - inline static diplomat::result, std::monostate>, diplomat::Utf8Error> new_(double value, std::string_view unit); - - inline static diplomat::result, std::monostate> asin_scalar(double x); - - inline static diplomat::result, std::monostate> acos_scalar(double x); - - inline static diplomat::result, std::monostate> atan_scalar(double x); - - inline static size_t base_units_size(); - - inline double value() const; - - inline diplomat::result, diplomat::Utf8Error> value_in(std::string_view unit) const; - - inline bool is_unitless() const; - - inline BaseUnits base_units() const; - - inline diplomat::result, std::monostate> add(const DimensionalVariable& other) const; - - inline diplomat::result, std::monostate> sub(const DimensionalVariable& other) const; - - inline std::unique_ptr mul(const DimensionalVariable& other) const; - - inline std::unique_ptr div(const DimensionalVariable& other) const; - - inline std::unique_ptr mul_scalar(double scalar) const; - - inline std::unique_ptr div_scalar(double scalar) const; - - inline std::unique_ptr rdiv_scalar(double scalar) const; - - inline std::unique_ptr powi(int32_t exp) const; - - inline diplomat::result, std::monostate> powf(double exp) const; - - inline diplomat::result, std::monostate> sqrt() const; - - inline diplomat::result, std::monostate> ln() const; - - inline diplomat::result, std::monostate> log2() const; - - inline diplomat::result, std::monostate> log10() const; - - inline diplomat::result, std::monostate> sin() const; - - inline diplomat::result, std::monostate> cos() const; - - inline diplomat::result, std::monostate> tan() const; - - inline diplomat::result, std::monostate> asin() const; - - inline diplomat::result, std::monostate> acos() const; - - inline diplomat::result, std::monostate> atan() const; - - inline std::unique_ptr neg() const; - - inline std::unique_ptr abs() const; - - inline bool equals(const DimensionalVariable& other) const; - - inline bool not_equals(const DimensionalVariable& other) const; - - inline diplomat::result less_than(const DimensionalVariable& other) const; - - inline diplomat::result less_equal(const DimensionalVariable& other) const; - - inline diplomat::result greater_than(const DimensionalVariable& other) const; - - inline diplomat::result greater_equal(const DimensionalVariable& other) const; - - inline std::unique_ptr clone_var() const; - - inline diplomat::result to_string() const; - template - inline diplomat::result to_string_write(W& writeable_output) const; - - inline const diplomat::capi::DimensionalVariable* AsFFI() const; - inline diplomat::capi::DimensionalVariable* AsFFI(); - inline static const DimensionalVariable* FromFFI(const diplomat::capi::DimensionalVariable* ptr); - inline static DimensionalVariable* FromFFI(diplomat::capi::DimensionalVariable* ptr); - inline static void operator delete(void* ptr); -private: - DimensionalVariable() = delete; - DimensionalVariable(const DimensionalVariable&) = delete; - DimensionalVariable(DimensionalVariable&&) noexcept = delete; - DimensionalVariable operator=(const DimensionalVariable&) = delete; - DimensionalVariable operator=(DimensionalVariable&&) noexcept = delete; - static void operator delete[](void*, size_t) = delete; -}; - - -#endif // DimensionalVariable_D_HPP diff --git a/generated/diplomat/cpp/DimensionalVariable.hpp b/generated/diplomat/cpp/DimensionalVariable.hpp deleted file mode 100644 index 72d50d4..0000000 --- a/generated/diplomat/cpp/DimensionalVariable.hpp +++ /dev/null @@ -1,371 +0,0 @@ -#ifndef DimensionalVariable_HPP -#define DimensionalVariable_HPP - -#include "DimensionalVariable.d.hpp" - -#include -#include -#include -#include -#include -#include -#include -#include -#include "BaseUnits.hpp" -#include "diplomat_runtime.hpp" - - -namespace diplomat { -namespace capi { - extern "C" { - - typedef struct DimensionalVariable_new_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_new_result; - DimensionalVariable_new_result DimensionalVariable_new(double value, diplomat::capi::DiplomatStringView unit); - - typedef struct DimensionalVariable_asin_scalar_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_asin_scalar_result; - DimensionalVariable_asin_scalar_result DimensionalVariable_asin_scalar(double x); - - typedef struct DimensionalVariable_acos_scalar_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_acos_scalar_result; - DimensionalVariable_acos_scalar_result DimensionalVariable_acos_scalar(double x); - - typedef struct DimensionalVariable_atan_scalar_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_atan_scalar_result; - DimensionalVariable_atan_scalar_result DimensionalVariable_atan_scalar(double x); - - size_t DimensionalVariable_base_units_size(void); - - double DimensionalVariable_value(const diplomat::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_value_in_result {union {double ok; }; bool is_ok;} DimensionalVariable_value_in_result; - DimensionalVariable_value_in_result DimensionalVariable_value_in(const diplomat::capi::DimensionalVariable* self, diplomat::capi::DiplomatStringView unit); - - bool DimensionalVariable_is_unitless(const diplomat::capi::DimensionalVariable* self); - - diplomat::capi::BaseUnits DimensionalVariable_base_units(const diplomat::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_add_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_add_result; - DimensionalVariable_add_result DimensionalVariable_add(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); - - typedef struct DimensionalVariable_sub_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sub_result; - DimensionalVariable_sub_result DimensionalVariable_sub(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); - - diplomat::capi::DimensionalVariable* DimensionalVariable_mul(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); - - diplomat::capi::DimensionalVariable* DimensionalVariable_div(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); - - diplomat::capi::DimensionalVariable* DimensionalVariable_mul_scalar(const diplomat::capi::DimensionalVariable* self, double scalar); - - diplomat::capi::DimensionalVariable* DimensionalVariable_div_scalar(const diplomat::capi::DimensionalVariable* self, double scalar); - - diplomat::capi::DimensionalVariable* DimensionalVariable_rdiv_scalar(const diplomat::capi::DimensionalVariable* self, double scalar); - - diplomat::capi::DimensionalVariable* DimensionalVariable_powi(const diplomat::capi::DimensionalVariable* self, int32_t exp); - - typedef struct DimensionalVariable_powf_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_powf_result; - DimensionalVariable_powf_result DimensionalVariable_powf(const diplomat::capi::DimensionalVariable* self, double exp); - - typedef struct DimensionalVariable_sqrt_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sqrt_result; - DimensionalVariable_sqrt_result DimensionalVariable_sqrt(const diplomat::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_ln_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_ln_result; - DimensionalVariable_ln_result DimensionalVariable_ln(const diplomat::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_log2_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_log2_result; - DimensionalVariable_log2_result DimensionalVariable_log2(const diplomat::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_log10_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_log10_result; - DimensionalVariable_log10_result DimensionalVariable_log10(const diplomat::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_sin_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sin_result; - DimensionalVariable_sin_result DimensionalVariable_sin(const diplomat::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_cos_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_cos_result; - DimensionalVariable_cos_result DimensionalVariable_cos(const diplomat::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_tan_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_tan_result; - DimensionalVariable_tan_result DimensionalVariable_tan(const diplomat::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_asin_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_asin_result; - DimensionalVariable_asin_result DimensionalVariable_asin(const diplomat::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_acos_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_acos_result; - DimensionalVariable_acos_result DimensionalVariable_acos(const diplomat::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_atan_result {union {diplomat::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_atan_result; - DimensionalVariable_atan_result DimensionalVariable_atan(const diplomat::capi::DimensionalVariable* self); - - diplomat::capi::DimensionalVariable* DimensionalVariable_neg(const diplomat::capi::DimensionalVariable* self); - - diplomat::capi::DimensionalVariable* DimensionalVariable_abs(const diplomat::capi::DimensionalVariable* self); - - bool DimensionalVariable_equals(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); - - bool DimensionalVariable_not_equals(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); - - typedef struct DimensionalVariable_less_than_result {union {bool ok; }; bool is_ok;} DimensionalVariable_less_than_result; - DimensionalVariable_less_than_result DimensionalVariable_less_than(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); - - typedef struct DimensionalVariable_less_equal_result {union {bool ok; }; bool is_ok;} DimensionalVariable_less_equal_result; - DimensionalVariable_less_equal_result DimensionalVariable_less_equal(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); - - typedef struct DimensionalVariable_greater_than_result {union {bool ok; }; bool is_ok;} DimensionalVariable_greater_than_result; - DimensionalVariable_greater_than_result DimensionalVariable_greater_than(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); - - typedef struct DimensionalVariable_greater_equal_result {union {bool ok; }; bool is_ok;} DimensionalVariable_greater_equal_result; - DimensionalVariable_greater_equal_result DimensionalVariable_greater_equal(const diplomat::capi::DimensionalVariable* self, const diplomat::capi::DimensionalVariable* other); - - diplomat::capi::DimensionalVariable* DimensionalVariable_clone_var(const diplomat::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_to_string_result { bool is_ok;} DimensionalVariable_to_string_result; - DimensionalVariable_to_string_result DimensionalVariable_to_string(const diplomat::capi::DimensionalVariable* self, diplomat::capi::DiplomatWrite* write); - - void DimensionalVariable_destroy(DimensionalVariable* self); - - } // extern "C" -} // namespace capi -} // namespace - -inline diplomat::result, std::monostate>, diplomat::Utf8Error> DimensionalVariable::new_(double value, std::string_view unit) { - if (!diplomat::capi::diplomat_is_str(unit.data(), unit.size())) { - return diplomat::Err(); - } - auto result = diplomat::capi::DimensionalVariable_new(value, - {unit.data(), unit.size()}); - return diplomat::Ok, std::monostate>>(result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err())); -} - -inline diplomat::result, std::monostate> DimensionalVariable::asin_scalar(double x) { - auto result = diplomat::capi::DimensionalVariable_asin_scalar(x); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::acos_scalar(double x) { - auto result = diplomat::capi::DimensionalVariable_acos_scalar(x); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::atan_scalar(double x) { - auto result = diplomat::capi::DimensionalVariable_atan_scalar(x); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline size_t DimensionalVariable::base_units_size() { - auto result = diplomat::capi::DimensionalVariable_base_units_size(); - return result; -} - -inline double DimensionalVariable::value() const { - auto result = diplomat::capi::DimensionalVariable_value(this->AsFFI()); - return result; -} - -inline diplomat::result, diplomat::Utf8Error> DimensionalVariable::value_in(std::string_view unit) const { - if (!diplomat::capi::diplomat_is_str(unit.data(), unit.size())) { - return diplomat::Err(); - } - auto result = diplomat::capi::DimensionalVariable_value_in(this->AsFFI(), - {unit.data(), unit.size()}); - return diplomat::Ok>(result.is_ok ? diplomat::result(diplomat::Ok(result.ok)) : diplomat::result(diplomat::Err())); -} - -inline bool DimensionalVariable::is_unitless() const { - auto result = diplomat::capi::DimensionalVariable_is_unitless(this->AsFFI()); - return result; -} - -inline BaseUnits DimensionalVariable::base_units() const { - auto result = diplomat::capi::DimensionalVariable_base_units(this->AsFFI()); - return BaseUnits::FromFFI(result); -} - -inline diplomat::result, std::monostate> DimensionalVariable::add(const DimensionalVariable& other) const { - auto result = diplomat::capi::DimensionalVariable_add(this->AsFFI(), - other.AsFFI()); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::sub(const DimensionalVariable& other) const { - auto result = diplomat::capi::DimensionalVariable_sub(this->AsFFI(), - other.AsFFI()); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline std::unique_ptr DimensionalVariable::mul(const DimensionalVariable& other) const { - auto result = diplomat::capi::DimensionalVariable_mul(this->AsFFI(), - other.AsFFI()); - return std::unique_ptr(DimensionalVariable::FromFFI(result)); -} - -inline std::unique_ptr DimensionalVariable::div(const DimensionalVariable& other) const { - auto result = diplomat::capi::DimensionalVariable_div(this->AsFFI(), - other.AsFFI()); - return std::unique_ptr(DimensionalVariable::FromFFI(result)); -} - -inline std::unique_ptr DimensionalVariable::mul_scalar(double scalar) const { - auto result = diplomat::capi::DimensionalVariable_mul_scalar(this->AsFFI(), - scalar); - return std::unique_ptr(DimensionalVariable::FromFFI(result)); -} - -inline std::unique_ptr DimensionalVariable::div_scalar(double scalar) const { - auto result = diplomat::capi::DimensionalVariable_div_scalar(this->AsFFI(), - scalar); - return std::unique_ptr(DimensionalVariable::FromFFI(result)); -} - -inline std::unique_ptr DimensionalVariable::rdiv_scalar(double scalar) const { - auto result = diplomat::capi::DimensionalVariable_rdiv_scalar(this->AsFFI(), - scalar); - return std::unique_ptr(DimensionalVariable::FromFFI(result)); -} - -inline std::unique_ptr DimensionalVariable::powi(int32_t exp) const { - auto result = diplomat::capi::DimensionalVariable_powi(this->AsFFI(), - exp); - return std::unique_ptr(DimensionalVariable::FromFFI(result)); -} - -inline diplomat::result, std::monostate> DimensionalVariable::powf(double exp) const { - auto result = diplomat::capi::DimensionalVariable_powf(this->AsFFI(), - exp); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::sqrt() const { - auto result = diplomat::capi::DimensionalVariable_sqrt(this->AsFFI()); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::ln() const { - auto result = diplomat::capi::DimensionalVariable_ln(this->AsFFI()); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::log2() const { - auto result = diplomat::capi::DimensionalVariable_log2(this->AsFFI()); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::log10() const { - auto result = diplomat::capi::DimensionalVariable_log10(this->AsFFI()); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::sin() const { - auto result = diplomat::capi::DimensionalVariable_sin(this->AsFFI()); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::cos() const { - auto result = diplomat::capi::DimensionalVariable_cos(this->AsFFI()); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::tan() const { - auto result = diplomat::capi::DimensionalVariable_tan(this->AsFFI()); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::asin() const { - auto result = diplomat::capi::DimensionalVariable_asin(this->AsFFI()); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::acos() const { - auto result = diplomat::capi::DimensionalVariable_acos(this->AsFFI()); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline diplomat::result, std::monostate> DimensionalVariable::atan() const { - auto result = diplomat::capi::DimensionalVariable_atan(this->AsFFI()); - return result.is_ok ? diplomat::result, std::monostate>(diplomat::Ok>(std::unique_ptr(DimensionalVariable::FromFFI(result.ok)))) : diplomat::result, std::monostate>(diplomat::Err()); -} - -inline std::unique_ptr DimensionalVariable::neg() const { - auto result = diplomat::capi::DimensionalVariable_neg(this->AsFFI()); - return std::unique_ptr(DimensionalVariable::FromFFI(result)); -} - -inline std::unique_ptr DimensionalVariable::abs() const { - auto result = diplomat::capi::DimensionalVariable_abs(this->AsFFI()); - return std::unique_ptr(DimensionalVariable::FromFFI(result)); -} - -inline bool DimensionalVariable::equals(const DimensionalVariable& other) const { - auto result = diplomat::capi::DimensionalVariable_equals(this->AsFFI(), - other.AsFFI()); - return result; -} - -inline bool DimensionalVariable::not_equals(const DimensionalVariable& other) const { - auto result = diplomat::capi::DimensionalVariable_not_equals(this->AsFFI(), - other.AsFFI()); - return result; -} - -inline diplomat::result DimensionalVariable::less_than(const DimensionalVariable& other) const { - auto result = diplomat::capi::DimensionalVariable_less_than(this->AsFFI(), - other.AsFFI()); - return result.is_ok ? diplomat::result(diplomat::Ok(result.ok)) : diplomat::result(diplomat::Err()); -} - -inline diplomat::result DimensionalVariable::less_equal(const DimensionalVariable& other) const { - auto result = diplomat::capi::DimensionalVariable_less_equal(this->AsFFI(), - other.AsFFI()); - return result.is_ok ? diplomat::result(diplomat::Ok(result.ok)) : diplomat::result(diplomat::Err()); -} - -inline diplomat::result DimensionalVariable::greater_than(const DimensionalVariable& other) const { - auto result = diplomat::capi::DimensionalVariable_greater_than(this->AsFFI(), - other.AsFFI()); - return result.is_ok ? diplomat::result(diplomat::Ok(result.ok)) : diplomat::result(diplomat::Err()); -} - -inline diplomat::result DimensionalVariable::greater_equal(const DimensionalVariable& other) const { - auto result = diplomat::capi::DimensionalVariable_greater_equal(this->AsFFI(), - other.AsFFI()); - return result.is_ok ? diplomat::result(diplomat::Ok(result.ok)) : diplomat::result(diplomat::Err()); -} - -inline std::unique_ptr DimensionalVariable::clone_var() const { - auto result = diplomat::capi::DimensionalVariable_clone_var(this->AsFFI()); - return std::unique_ptr(DimensionalVariable::FromFFI(result)); -} - -inline diplomat::result DimensionalVariable::to_string() const { - std::string output; - diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output); - auto result = diplomat::capi::DimensionalVariable_to_string(this->AsFFI(), - &write); - return result.is_ok ? diplomat::result(diplomat::Ok(std::move(output))) : diplomat::result(diplomat::Err()); -} -template -inline diplomat::result DimensionalVariable::to_string_write(W& writeable) const { - diplomat::capi::DiplomatWrite write = diplomat::WriteTrait::Construct(writeable); - auto result = diplomat::capi::DimensionalVariable_to_string(this->AsFFI(), - &write); - return result.is_ok ? diplomat::result(diplomat::Ok()) : diplomat::result(diplomat::Err()); -} - -inline const diplomat::capi::DimensionalVariable* DimensionalVariable::AsFFI() const { - return reinterpret_cast(this); -} - -inline diplomat::capi::DimensionalVariable* DimensionalVariable::AsFFI() { - return reinterpret_cast(this); -} - -inline const DimensionalVariable* DimensionalVariable::FromFFI(const diplomat::capi::DimensionalVariable* ptr) { - return reinterpret_cast(ptr); -} - -inline DimensionalVariable* DimensionalVariable::FromFFI(diplomat::capi::DimensionalVariable* ptr) { - return reinterpret_cast(ptr); -} - -inline void DimensionalVariable::operator delete(void* ptr) { - diplomat::capi::DimensionalVariable_destroy(reinterpret_cast(ptr)); -} - - -#endif // DimensionalVariable_HPP diff --git a/generated/diplomat/cpp/diplomat_runtime.hpp b/generated/diplomat/cpp/diplomat_runtime.hpp deleted file mode 100644 index 60ba46b..0000000 --- a/generated/diplomat/cpp/diplomat_runtime.hpp +++ /dev/null @@ -1,567 +0,0 @@ -#ifndef DIPLOMAT_RUNTIME_CPP_H -#define DIPLOMAT_RUNTIME_CPP_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#if __cplusplus >= 202002L -#include -#else -#include -#endif - - -namespace diplomat { - -namespace capi { -extern "C" { - -static_assert(sizeof(char) == sizeof(uint8_t), "your architecture's `char` is not 8 bits"); -static_assert(sizeof(char16_t) == sizeof(uint16_t), "your architecture's `char16_t` is not 16 bits"); -static_assert(sizeof(char32_t) == sizeof(uint32_t), "your architecture's `char32_t` is not 32 bits"); - -typedef struct DiplomatWrite { - void* context; - char* buf; - size_t len; - size_t cap; - bool grow_failed; - void (*flush)(struct DiplomatWrite*); - bool (*grow)(struct DiplomatWrite*, size_t); -} DiplomatWrite; - -bool diplomat_is_str(const char* buf, size_t len); - -#define MAKE_SLICES(name, c_ty) \ - typedef struct Diplomat##name##View { \ - const c_ty* data; \ - size_t len; \ - } Diplomat##name##View; \ - typedef struct Diplomat##name##ViewMut { \ - c_ty* data; \ - size_t len; \ - } Diplomat##name##ViewMut; \ - typedef struct Diplomat##name##Array { \ - const c_ty* data; \ - size_t len; \ - } Diplomat##name##Array; - -#define MAKE_SLICES_AND_OPTIONS(name, c_ty) \ - MAKE_SLICES(name, c_ty) \ - typedef struct Option##name {union { c_ty ok; }; bool is_ok; } Option##name; \ - typedef struct Option##name##View {union { Diplomat##name##View ok; }; bool is_ok; } Option##name##View; \ - typedef struct Option##name##ViewMut {union { Diplomat##name##ViewMut ok; }; bool is_ok; } Option##name##ViewMut; \ - typedef struct Option##name##Array {union { Diplomat##name##Array ok; }; bool is_ok; } Option##name##Array; \ - -MAKE_SLICES_AND_OPTIONS(I8, int8_t) -MAKE_SLICES_AND_OPTIONS(U8, uint8_t) -MAKE_SLICES_AND_OPTIONS(I16, int16_t) -MAKE_SLICES_AND_OPTIONS(U16, uint16_t) -MAKE_SLICES_AND_OPTIONS(I32, int32_t) -MAKE_SLICES_AND_OPTIONS(U32, uint32_t) -MAKE_SLICES_AND_OPTIONS(I64, int64_t) -MAKE_SLICES_AND_OPTIONS(U64, uint64_t) -MAKE_SLICES_AND_OPTIONS(Isize, intptr_t) -MAKE_SLICES_AND_OPTIONS(Usize, size_t) -MAKE_SLICES_AND_OPTIONS(F32, float) -MAKE_SLICES_AND_OPTIONS(F64, double) -MAKE_SLICES_AND_OPTIONS(Bool, bool) -MAKE_SLICES_AND_OPTIONS(Char, char32_t) -MAKE_SLICES_AND_OPTIONS(String, char) -MAKE_SLICES_AND_OPTIONS(String16, char16_t) -MAKE_SLICES_AND_OPTIONS(Strings, DiplomatStringView) -MAKE_SLICES_AND_OPTIONS(Strings16, DiplomatString16View) - -} // extern "C" -} // namespace capi - -extern "C" inline void _flush(capi::DiplomatWrite* w) { - std::string* string = reinterpret_cast(w->context); - string->resize(w->len); -} - -extern "C" inline bool _grow(capi::DiplomatWrite* w, uintptr_t requested) { - std::string* string = reinterpret_cast(w->context); - string->resize(requested); - w->cap = string->length(); - w->buf = &(*string)[0]; - return true; -} - -inline capi::DiplomatWrite WriteFromString(std::string& string) { - capi::DiplomatWrite w; - w.context = &string; - w.buf = &string[0]; - w.len = string.length(); - w.cap = string.length(); - // Will never become true, as _grow is infallible. - w.grow_failed = false; - w.flush = _flush; - w.grow = _grow; - return w; -} - -// This "trait" allows one to use _write() methods to efficiently -// write to a custom string type. To do this you need to write a specialized -// `WriteTrait` (see WriteTrait below) -// that is capable of constructing a DiplomatWrite, which can wrap -// your string type with appropriate resize/flush functionality. -template struct WriteTrait { - // Fill in this method on a specialization to implement this trait - // static inline capi::DiplomatWrite Construct(T& t); -}; - -template<> struct WriteTrait { - static inline capi::DiplomatWrite Construct(std::string& t) { - return diplomat::WriteFromString(t); - } -}; - -template struct Ok { - T inner; - - // Move constructor always allowed - Ok(T&& i): inner(std::forward(i)) {} - - // copy constructor allowed only for trivially copyable types - template::value>::type> - Ok(const T& i) : inner(i) {} - - Ok() = default; - Ok(Ok&&) noexcept = default; - Ok(const Ok &) = default; - Ok& operator=(const Ok&) = default; - Ok& operator=(Ok&&) noexcept = default; -}; - - -template struct Err { - T inner; - - // Move constructor always allowed - Err(T&& i): inner(std::forward(i)) {} - - // copy constructor allowed only for trivially copyable types - template::value>::type> - Err(const T& i) : inner(i) {} - - Err() = default; - Err(Err&&) noexcept = default; - Err(const Err &) = default; - Err& operator=(const Err&) = default; - Err& operator=(Err&&) noexcept = default; -}; - -template struct fn_traits; - -template -class result { -protected: - std::variant, Err> val; -public: - template - friend struct fn_traits; - - result(Ok&& v): val(std::move(v)) {} - result(Err&& v): val(std::move(v)) {} - result() = default; - result(const result &) = default; - result& operator=(const result&) = default; - result& operator=(result&&) noexcept = default; - result(result &&) noexcept = default; - ~result() = default; - bool is_ok() const { - return std::holds_alternative>(this->val); - } - bool is_err() const { - return std::holds_alternative>(this->val); - } - - template, std::nullptr_t> = nullptr> - std::optional ok() && { - if (!this->is_ok()) { - return std::nullopt; - } - return std::make_optional(std::move(std::get>(std::move(this->val)).inner)); - } - - template, std::nullptr_t> = nullptr> - std::optional err() && { - if (!this->is_err()) { - return std::nullopt; - } - return std::make_optional(std::move(std::get>(std::move(this->val)).inner)); - } - - // std::optional does not work with reference types directly, so wrap them if present - template, std::nullptr_t> = nullptr> - std::optional>> ok() && { - if (!this->is_ok()) { - return std::nullopt; - } - return std::make_optional(std::reference_wrapper(std::forward(std::get>(std::move(this->val)).inner))); - } - - template, std::nullptr_t> = nullptr> - std::optional>> err() && { - if (!this->is_err()) { - return std::nullopt; - } - return std::make_optional(std::reference_wrapper(std::forward(std::get>(std::move(this->val)).inner))); - } - - void set_ok(T&& t) { - this->val = Ok(std::move(t)); - } - - void set_err(E&& e) { - this->val = Err(std::move(e)); - } - - template - result replace_ok(T2&& t) { - if (this->is_err()) { - return result(Err(std::get>(std::move(this->val)))); - } else { - return result(Ok(std::move(t))); - } - } -}; - -class Utf8Error {}; - -// Use custom std::span on C++17, otherwise use std::span -#if __cplusplus >= 202002L - -constexpr std::size_t dynamic_extent = std::dynamic_extent; -template using span = std::span; - -#else // __cplusplus < 202002L - -// C++-17-compatible-ish std::span -constexpr size_t dynamic_extent = std::numeric_limits::max(); -template -class span { -public: - constexpr span(T *data = nullptr, size_t size = Extent) - : data_(data), size_(size) {} - - constexpr span(const span &o) - : data_(o.data_), size_(o.size_) {} - template - constexpr span(std::array, N> &arr) - : data_(const_cast(arr.data())), size_(N) {} - - constexpr T* data() const noexcept { - return this->data_; - } - constexpr size_t size() const noexcept { - return this->size_; - } - - constexpr T *begin() const noexcept { return data(); } - constexpr T *end() const noexcept { return data() + size(); } - - void operator=(span o) { - data_ = o.data_; - size_ = o.size_; - } - -private: - T* data_; - size_t size_; -}; - -#endif // __cplusplus >= 202002L - -// An ABI stable std::basic_string_view equivalent for the case of string -// views in slices -template > -class basic_string_view_for_slice { -public: - using std_string_view = std::basic_string_view; - using traits_type = typename std_string_view::traits_type; - using value_type = typename std_string_view::value_type; - using pointer = typename std_string_view::pointer; - using const_pointer = typename std_string_view::const_pointer; - using size_type = typename std_string_view::size_type; - using difference_type = typename std_string_view::difference_type; - - constexpr basic_string_view_for_slice() noexcept - : basic_string_view_for_slice{std_string_view{}} {} - - constexpr basic_string_view_for_slice(const basic_string_view_for_slice& other) noexcept = default; - - constexpr basic_string_view_for_slice(const const_pointer s, const size_type count) - : basic_string_view_for_slice{std_string_view{s, count}} {} - - constexpr basic_string_view_for_slice(const const_pointer s) - : basic_string_view_for_slice{std_string_view{s}} {} - - constexpr basic_string_view_for_slice& operator=(const basic_string_view_for_slice& view) noexcept = default; - - constexpr basic_string_view_for_slice(const std_string_view& s) noexcept - : data_{s.data(), s.size()} {} - - constexpr basic_string_view_for_slice& operator=(const std_string_view& s) noexcept { - data_ = {s.data(), s.size()}; - return *this; - } - - constexpr operator std_string_view() const noexcept { return {data(), size()}; } - constexpr std_string_view as_sv() const noexcept { return *this; } - - constexpr const_pointer data() const noexcept { return data_.data; } - constexpr size_type size() const noexcept { return data_.len; } - -private: - using capi_type = - std::conditional_t, - capi::DiplomatStringView, - std::conditional_t, - capi::DiplomatString16View, - void>>; - - static_assert(!std::is_void_v, - "ABI compatible string_views are only supported for char and char16_t"); - - capi_type data_; -}; - -// We only implement these specialisations as diplomat doesn't provide c abi -// types for others -using string_view_for_slice = basic_string_view_for_slice; -using u16string_view_for_slice = basic_string_view_for_slice; - -using string_view_span = span; -using u16string_view_span = span; - -// Interop between std::function & our C Callback wrapper type - -template -struct as_ffi { - using type = T; -}; - -template -struct as_ffi>().AsFFI())>> { - using type = decltype(std::declval>().AsFFI()); -}; - -template -using as_ffi_t = typename as_ffi::type; - -template -using replace_string_view_t = std::conditional_t, capi::DiplomatStringView, T>; - -template -struct diplomat_c_span_convert { - using type = T; -}; - -#define MAKE_SLICE_CONVERTERS(name, c_ty) \ - template \ - struct diplomat_c_span_convert>>> { \ - using type = diplomat::capi::Diplomat##name##View; \ - }; \ - template \ - struct diplomat_c_span_convert>>> { \ - using type = diplomat::capi::Diplomat##name##ViewMut; \ - }; \ - -MAKE_SLICE_CONVERTERS(I8, int8_t) -MAKE_SLICE_CONVERTERS(U8, uint8_t) -MAKE_SLICE_CONVERTERS(I16, int16_t) -MAKE_SLICE_CONVERTERS(U16, uint16_t) -MAKE_SLICE_CONVERTERS(I32, int32_t) -MAKE_SLICE_CONVERTERS(U32, uint32_t) -MAKE_SLICE_CONVERTERS(I64, int64_t) -MAKE_SLICE_CONVERTERS(U64, uint64_t) -MAKE_SLICE_CONVERTERS(F32, float) -MAKE_SLICE_CONVERTERS(F64, double) -MAKE_SLICE_CONVERTERS(Bool, bool) -MAKE_SLICE_CONVERTERS(Char, char32_t) -MAKE_SLICE_CONVERTERS(String, char) -MAKE_SLICE_CONVERTERS(String16, char16_t) - -template -using diplomat_c_span_convert_t = typename diplomat_c_span_convert::type; - -/// Replace the argument types from the std::function with the argument types for th function pointer -template -using replace_fn_t = diplomat_c_span_convert_t>>; - -template struct fn_traits> { - using fn_ptr_t = Ret(Args...); - using function_t = std::function; - using ret = Ret; - - // For a given T, creates a function that take in the C ABI version & return the C++ type. - template - static T replace(replace_fn_t val) { - if constexpr(std::is_same_v) { - return std::string_view{val.data, val.len}; - } else if constexpr (!std::is_same_v>) { - return T{ val.data, val.len }; - } else if constexpr (!std::is_same_v>) { - if constexpr (std::is_lvalue_reference_v) { - return *std::remove_reference_t::FromFFI(val); - } - else { - return T::FromFFI(val); - } - } - else { - return val; - } - } - - template - static replace_fn_t replace_ret(T val) { - if constexpr(std::is_same_v) { - return {val.data(), val.size()}; - } else if constexpr (!std::is_same_v>) { - // Can we convert straight away to our slice type, or (in the case of ABI compatible structs), do we have to do a reinterpret cast? - if constexpr(std::is_same_v().data()), decltype(replace_fn_t::data)>) { - return replace_fn_t { val.data(), val.size() }; - } else { - return replace_fn_t { reinterpret_cast::data)>(val.data()), val.size() }; - } - } else if constexpr(!std::is_same_v>) { - return val.AsFFI(); - } else { - return val; - } - } - - static Ret c_run_callback(const void *cb, replace_fn_t... args) { - return (*reinterpret_cast(cb))(replace(args)...); - } - - template - static TOut c_run_callback_result(const void *cb, replace_fn_t... args) { - result res = c_run_callback(cb, args...); - - auto is_ok = res.is_ok(); - - constexpr bool has_ok = !std::is_same_v; - constexpr bool has_err = !std::is_same_v; - - TOut out; - out.is_ok = is_ok; - - if constexpr (has_ok) { - if (is_ok) { - out.ok = replace_ret(std::get>(res.val).inner); - } - } - - if constexpr(has_err) { - if (!is_ok) { - out.err = replace_ret(std::get>(res.val).inner); - } - } - - return out; - } - - // For DiplomatOption<> - template - static TOut c_run_callback_diplomat_option(const void *cb, replace_fn_t... args) { - constexpr bool has_ok = !std::is_same_v; - - std::optional ret = c_run_callback(cb, args...); - - bool is_ok = ret.has_value(); - - TOut out; - out.is_ok = is_ok; - - if constexpr(has_ok) { - if (is_ok) { - out.ok = replace_ret(ret.value()); - } - } - return out; - } - - // All we need to do is just convert one pointer to another, while keeping the arguments the same: - template - static T c_run_callback_diplomat_opaque(const void* cb, replace_fn_t... args) { - Ret out = c_run_callback(cb, args...); - - return out->AsFFI(); - } - - static void c_delete(const void *cb) { - delete reinterpret_cast(cb); - } - - fn_traits(function_t) {} // Allows less clunky construction (avoids decltype) -}; - -// additional deduction guide required -template -fn_traits(T) -> fn_traits; - -// Trait for extracting inner types from either T*, std::optional, or std::unique_ptr. -// These are the three potential types returned by next() functions -template struct inner { /* only T*, std::optional, and std::unique_ptr are supported */ }; -template struct inner { using type = T; }; -template struct inner> { using type = T; }; -template struct inner>{ using type = T; }; - -template::type> -inline const U get_inner_if_present(T v) { - if constexpr(std::is_same_v) { - return std::move(v); - } else { - return *std::move(v); - } -} - -// Adapter for iterator types -template struct has_next : std::false_type {}; -template struct has_next < T, std::void_t().next())>> : std::true_type {}; -template constexpr bool has_next_v = has_next::value; - -/// Helper template enabling native iteration over unique ptrs to objects which implement next() -template -struct next_to_iter_helper { - static_assert(has_next_v, "next_to_iter_helper may only be used with types implementing next()"); - using next_type = decltype(std::declval().next()); - - // STL Iterator trait definitions - using value_type = typename inner::type; - using difference_type = void; - using reference = std::add_lvalue_reference_t; - using iterator_category = std::input_iterator_tag; - - next_to_iter_helper(std::unique_ptr&& ptr) : _ptr(std::move(ptr)), _curr(_ptr->next()) {} - - // https://en.cppreference.com/w/cpp/named_req/InputIterator requires that the type be copyable - next_to_iter_helper(const next_to_iter_helper& o) : _ptr(o._ptr), _curr(o._curr) {} - - void operator++() { _curr = _ptr->next(); } - void operator++(int) { ++(*this); } - const value_type& operator*() const { return *_curr; } - - bool operator!=(std::nullopt_t) { - return (bool)_curr; - } - - std::shared_ptr _ptr; // shared to satisfy the copyable requirement - next_type _curr; -}; - -} // namespace diplomat - -#endif \ No newline at end of file diff --git a/generated/diplomat/nanobind/BUILD.bazel b/generated/diplomat/nanobind/BUILD.bazel index e7efc5e..ae5077c 100644 --- a/generated/diplomat/nanobind/BUILD.bazel +++ b/generated/diplomat/nanobind/BUILD.bazel @@ -4,9 +4,39 @@ package(default_visibility = ["//visibility:public"]) NANOBIND_REPO = "external/rules_python++pip+pypi_312_nanobind/site-packages/nanobind" +genrule( + name = "codegen_nanobind", + srcs = ["//ffi/diplomat:src/lib.rs"], + outs = [ + "dv_pyo3_ext.cpp", + "include/BaseUnits.d.hpp", + "include/BaseUnits.hpp", + "include/DimensionalVariable.d.hpp", + "include/DimensionalVariable.hpp", + "include/diplomat_nanobind_common.hpp", + "include/diplomat_runtime.hpp", + "sub_modules/dv_pyo3/BaseUnits_binding.cpp", + "sub_modules/dv_pyo3/DimensionalVariable_binding.cpp", + ], + tools = ["//tools/diplomat_codegen:diplomat_codegen"], + cmd = "$(location //tools/diplomat_codegen:diplomat_codegen) nanobind $(RULEDIR) --entry $(location //ffi/diplomat:src/lib.rs) --config nanobind.lib_name=dv_pyo3", +) + +filegroup( + name = "generated_headers", + srcs = [ + "include/BaseUnits.d.hpp", + "include/BaseUnits.hpp", + "include/DimensionalVariable.d.hpp", + "include/DimensionalVariable.hpp", + "include/diplomat_nanobind_common.hpp", + "include/diplomat_runtime.hpp", + ], +) + cc_library( name = "headers", - hdrs = glob(["include/*.hpp"]), + hdrs = [":generated_headers"], includes = ["include"], ) diff --git a/generated/diplomat/nanobind/dv_py_ext.cpp b/generated/diplomat/nanobind/dv_py_ext.cpp deleted file mode 100644 index 4a9b99f..0000000 --- a/generated/diplomat/nanobind/dv_py_ext.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include "diplomat_nanobind_common.hpp" -#include <../src/nb_internals.h> // Required for shimming - -// Forward declarations for binding add functions -namespace dv_py{ - -void add_BaseUnits_binding(nb::module_); -void add_DimensionalVariable_binding(nb::module_); -} - -// Nanobind does not usually support custom deleters, so we're shimming some of the machinery to add that ability. -// On module init, the dummy type will have the normal nanobind inst_dealloc function in the tp_dealloc slot, so we -// pull it out, store it here, and then call it in the tp_dealloc function we are shimming in to all our types. -// Our custom tp_dealloc function will call the tp_free function instead of `delete`, allowing us effectively to override -// the delete operator. -// See https://nanobind.readthedocs.io/en/latest/lowlevel.html#customizing-type-creation and -// https://github.com/wjakob/nanobind/discussions/932 -void (*nb_tp_dealloc)(void *) = nullptr; - -void diplomat_tp_dealloc(PyObject *self) -{ - using namespace nb::detail; - PyTypeObject *tp = Py_TYPE(self); - const type_data *t = nb_type_data(tp); - - nb_inst *inst = (nb_inst *)self; - void *p = inst_ptr(inst); - if (inst->destruct) - { - inst->destruct = false; - check(t->flags & (uint32_t)type_flags::is_destructible, - "nanobind::detail::inst_dealloc(\"%s\"): attempted to call " - "the destructor of a non-destructible type!", - t->name); - if (t->flags & (uint32_t)type_flags::has_destruct) - t->destruct(p); - } - if (inst->cpp_delete) - { - inst->cpp_delete = false; - auto tp_free = (freefunc)(PyType_GetSlot(tp, Py_tp_free)); - (*tp_free)(p); - } - (*nb_tp_dealloc)(self); -} - -struct _Dummy {}; - -NB_MODULE(dv_py, mod) -{ - using namespace dv_py; - - { - nb::class_<_Dummy> dummy(mod, "__dummy__"); - nb_tp_dealloc = (void (*)(void *))nb::type_get_slot(dummy, Py_tp_dealloc); - } - - nb::class_(mod, "monostate") - .def("__repr__", [](const std::monostate &) - { return ""; }) - .def("__str__", [](const std::monostate &) - { return ""; });// Module declarations - // Add bindings - add_BaseUnits_binding(mod); - add_DimensionalVariable_binding(mod); - - -} \ No newline at end of file diff --git a/generated/diplomat/nanobind/dv_pyo3_ext.cpp b/generated/diplomat/nanobind/dv_pyo3_ext.cpp deleted file mode 100644 index 400c0c2..0000000 --- a/generated/diplomat/nanobind/dv_pyo3_ext.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include "diplomat_nanobind_common.hpp" -#include <../src/nb_internals.h> // Required for shimming - -// Forward declarations for binding add functions -namespace dv_pyo3{ - -void add_BaseUnits_binding(nb::module_); -void add_DimensionalVariable_binding(nb::module_); -} - -// Nanobind does not usually support custom deleters, so we're shimming some of the machinery to add that ability. -// On module init, the dummy type will have the normal nanobind inst_dealloc function in the tp_dealloc slot, so we -// pull it out, store it here, and then call it in the tp_dealloc function we are shimming in to all our types. -// Our custom tp_dealloc function will call the tp_free function instead of `delete`, allowing us effectively to override -// the delete operator. -// See https://nanobind.readthedocs.io/en/latest/lowlevel.html#customizing-type-creation and -// https://github.com/wjakob/nanobind/discussions/932 -void (*nb_tp_dealloc)(void *) = nullptr; - -void diplomat_tp_dealloc(PyObject *self) -{ - using namespace nb::detail; - PyTypeObject *tp = Py_TYPE(self); - const type_data *t = nb_type_data(tp); - - nb_inst *inst = (nb_inst *)self; - void *p = inst_ptr(inst); - if (inst->destruct) - { - inst->destruct = false; - check(t->flags & (uint32_t)type_flags::is_destructible, - "nanobind::detail::inst_dealloc(\"%s\"): attempted to call " - "the destructor of a non-destructible type!", - t->name); - if (t->flags & (uint32_t)type_flags::has_destruct) - t->destruct(p); - } - if (inst->cpp_delete) - { - inst->cpp_delete = false; - auto tp_free = (freefunc)(PyType_GetSlot(tp, Py_tp_free)); - (*tp_free)(p); - } - (*nb_tp_dealloc)(self); -} - -struct _Dummy {}; - -NB_MODULE(dv_pyo3, mod) -{ - using namespace dv_pyo3; - - { - nb::class_<_Dummy> dummy(mod, "__dummy__"); - nb_tp_dealloc = (void (*)(void *))nb::type_get_slot(dummy, Py_tp_dealloc); - } - - nb::class_(mod, "monostate") - .def("__repr__", [](const std::monostate &) - { return ""; }) - .def("__str__", [](const std::monostate &) - { return ""; });// Module declarations - // Add bindings - add_BaseUnits_binding(mod); - add_DimensionalVariable_binding(mod); - - -} \ No newline at end of file diff --git a/generated/diplomat/nanobind/include/BaseUnits.d.hpp b/generated/diplomat/nanobind/include/BaseUnits.d.hpp deleted file mode 100644 index 50740a5..0000000 --- a/generated/diplomat/nanobind/include/BaseUnits.d.hpp +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef DV_PYO3_BaseUnits_D_HPP -#define DV_PYO3_BaseUnits_D_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include "diplomat_runtime.hpp" - - -namespace dv_pyo3 { -namespace capi { - struct BaseUnits { - double m; - double kg; - double s; - double k; - double a; - double mol; - double cd; - double rad; - }; - - typedef struct BaseUnits_option {union { BaseUnits ok; }; bool is_ok; } BaseUnits_option; -} // namespace capi -} // namespace - - -namespace dv_pyo3 { -/** - * See the [Rust documentation for `BASE_UNITS_SIZE`](https://docs.rs/dv_rs/latest/dv_rs/units/BASE_UNITS_SIZE/index.html) for more information. - */ -struct BaseUnits { - double m; - double kg; - double s; - double k; - double a; - double mol; - double cd; - double rad; - - inline dv_pyo3::capi::BaseUnits AsFFI() const; - inline static dv_pyo3::BaseUnits FromFFI(dv_pyo3::capi::BaseUnits c_struct); -}; - -} // namespace -#endif // DV_PYO3_BaseUnits_D_HPP diff --git a/generated/diplomat/nanobind/include/BaseUnits.hpp b/generated/diplomat/nanobind/include/BaseUnits.hpp deleted file mode 100644 index ff20551..0000000 --- a/generated/diplomat/nanobind/include/BaseUnits.hpp +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef DV_PYO3_BaseUnits_HPP -#define DV_PYO3_BaseUnits_HPP - -#include "BaseUnits.d.hpp" - -#include -#include -#include -#include -#include -#include -#include -#include -#include "diplomat_runtime.hpp" - - -namespace dv_pyo3 { -namespace capi { - -} // namespace capi -} // namespace - - -inline dv_pyo3::capi::BaseUnits dv_pyo3::BaseUnits::AsFFI() const { - return dv_pyo3::capi::BaseUnits { - /* .m = */ m, - /* .kg = */ kg, - /* .s = */ s, - /* .k = */ k, - /* .a = */ a, - /* .mol = */ mol, - /* .cd = */ cd, - /* .rad = */ rad, - }; -} - -inline dv_pyo3::BaseUnits dv_pyo3::BaseUnits::FromFFI(dv_pyo3::capi::BaseUnits c_struct) { - return dv_pyo3::BaseUnits { - /* .m = */ c_struct.m, - /* .kg = */ c_struct.kg, - /* .s = */ c_struct.s, - /* .k = */ c_struct.k, - /* .a = */ c_struct.a, - /* .mol = */ c_struct.mol, - /* .cd = */ c_struct.cd, - /* .rad = */ c_struct.rad, - }; -} - - -#endif // DV_PYO3_BaseUnits_HPP diff --git a/generated/diplomat/nanobind/include/DimensionalVariable.d.hpp b/generated/diplomat/nanobind/include/DimensionalVariable.d.hpp deleted file mode 100644 index eec25b9..0000000 --- a/generated/diplomat/nanobind/include/DimensionalVariable.d.hpp +++ /dev/null @@ -1,124 +0,0 @@ -#ifndef DV_PYO3_DimensionalVariable_D_HPP -#define DV_PYO3_DimensionalVariable_D_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include "diplomat_runtime.hpp" -namespace dv_pyo3 { -namespace capi { struct DimensionalVariable; } -class DimensionalVariable; -struct BaseUnits; -} // namespace dv_pyo3 - - - -namespace dv_pyo3 { -namespace capi { - struct DimensionalVariable; -} // namespace capi -} // namespace - -namespace dv_pyo3 { -class DimensionalVariable { -public: - - inline static dv_pyo3::diplomat::result, std::monostate>, dv_pyo3::diplomat::Utf8Error> new_(double value, std::string_view unit); - - inline static dv_pyo3::diplomat::result, std::monostate> asin_scalar(double x); - - inline static dv_pyo3::diplomat::result, std::monostate> acos_scalar(double x); - - inline static dv_pyo3::diplomat::result, std::monostate> atan_scalar(double x); - - inline static size_t base_units_size(); - - inline double value() const; - - inline dv_pyo3::diplomat::result, dv_pyo3::diplomat::Utf8Error> value_in(std::string_view unit) const; - - inline bool is_unitless() const; - - inline dv_pyo3::BaseUnits base_units() const; - - inline dv_pyo3::diplomat::result, std::monostate> add(const dv_pyo3::DimensionalVariable& other) const; - - inline dv_pyo3::diplomat::result, std::monostate> sub(const dv_pyo3::DimensionalVariable& other) const; - - inline std::unique_ptr mul(const dv_pyo3::DimensionalVariable& other) const; - - inline std::unique_ptr div(const dv_pyo3::DimensionalVariable& other) const; - - inline std::unique_ptr mul_scalar(double scalar) const; - - inline std::unique_ptr div_scalar(double scalar) const; - - inline std::unique_ptr rdiv_scalar(double scalar) const; - - inline std::unique_ptr powi(int32_t exp) const; - - inline dv_pyo3::diplomat::result, std::monostate> powf(double exp) const; - - inline dv_pyo3::diplomat::result, std::monostate> sqrt() const; - - inline dv_pyo3::diplomat::result, std::monostate> ln() const; - - inline dv_pyo3::diplomat::result, std::monostate> log2() const; - - inline dv_pyo3::diplomat::result, std::monostate> log10() const; - - inline dv_pyo3::diplomat::result, std::monostate> sin() const; - - inline dv_pyo3::diplomat::result, std::monostate> cos() const; - - inline dv_pyo3::diplomat::result, std::monostate> tan() const; - - inline dv_pyo3::diplomat::result, std::monostate> asin() const; - - inline dv_pyo3::diplomat::result, std::monostate> acos() const; - - inline dv_pyo3::diplomat::result, std::monostate> atan() const; - - inline std::unique_ptr neg() const; - - inline std::unique_ptr abs() const; - - inline bool equals(const dv_pyo3::DimensionalVariable& other) const; - - inline bool not_equals(const dv_pyo3::DimensionalVariable& other) const; - - inline dv_pyo3::diplomat::result less_than(const dv_pyo3::DimensionalVariable& other) const; - - inline dv_pyo3::diplomat::result less_equal(const dv_pyo3::DimensionalVariable& other) const; - - inline dv_pyo3::diplomat::result greater_than(const dv_pyo3::DimensionalVariable& other) const; - - inline dv_pyo3::diplomat::result greater_equal(const dv_pyo3::DimensionalVariable& other) const; - - inline std::unique_ptr clone_var() const; - - inline dv_pyo3::diplomat::result to_string() const; - template - inline dv_pyo3::diplomat::result to_string_write(W& writeable_output) const; - - inline const dv_pyo3::capi::DimensionalVariable* AsFFI() const; - inline dv_pyo3::capi::DimensionalVariable* AsFFI(); - inline static const dv_pyo3::DimensionalVariable* FromFFI(const dv_pyo3::capi::DimensionalVariable* ptr); - inline static dv_pyo3::DimensionalVariable* FromFFI(dv_pyo3::capi::DimensionalVariable* ptr); - inline static void operator delete(void* ptr); -private: - DimensionalVariable() = delete; - DimensionalVariable(const dv_pyo3::DimensionalVariable&) = delete; - DimensionalVariable(dv_pyo3::DimensionalVariable&&) noexcept = delete; - DimensionalVariable operator=(const dv_pyo3::DimensionalVariable&) = delete; - DimensionalVariable operator=(dv_pyo3::DimensionalVariable&&) noexcept = delete; - static void operator delete[](void*, size_t) = delete; -}; - -} // namespace -#endif // DV_PYO3_DimensionalVariable_D_HPP diff --git a/generated/diplomat/nanobind/include/DimensionalVariable.hpp b/generated/diplomat/nanobind/include/DimensionalVariable.hpp deleted file mode 100644 index a32922f..0000000 --- a/generated/diplomat/nanobind/include/DimensionalVariable.hpp +++ /dev/null @@ -1,371 +0,0 @@ -#ifndef DV_PYO3_DimensionalVariable_HPP -#define DV_PYO3_DimensionalVariable_HPP - -#include "DimensionalVariable.d.hpp" - -#include -#include -#include -#include -#include -#include -#include -#include -#include "BaseUnits.hpp" -#include "diplomat_runtime.hpp" - - -namespace dv_pyo3 { -namespace capi { - extern "C" { - - typedef struct DimensionalVariable_new_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_new_result; - DimensionalVariable_new_result DimensionalVariable_new(double value, dv_pyo3::diplomat::capi::DiplomatStringView unit); - - typedef struct DimensionalVariable_asin_scalar_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_asin_scalar_result; - DimensionalVariable_asin_scalar_result DimensionalVariable_asin_scalar(double x); - - typedef struct DimensionalVariable_acos_scalar_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_acos_scalar_result; - DimensionalVariable_acos_scalar_result DimensionalVariable_acos_scalar(double x); - - typedef struct DimensionalVariable_atan_scalar_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_atan_scalar_result; - DimensionalVariable_atan_scalar_result DimensionalVariable_atan_scalar(double x); - - size_t DimensionalVariable_base_units_size(void); - - double DimensionalVariable_value(const dv_pyo3::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_value_in_result {union {double ok; }; bool is_ok;} DimensionalVariable_value_in_result; - DimensionalVariable_value_in_result DimensionalVariable_value_in(const dv_pyo3::capi::DimensionalVariable* self, dv_pyo3::diplomat::capi::DiplomatStringView unit); - - bool DimensionalVariable_is_unitless(const dv_pyo3::capi::DimensionalVariable* self); - - dv_pyo3::capi::BaseUnits DimensionalVariable_base_units(const dv_pyo3::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_add_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_add_result; - DimensionalVariable_add_result DimensionalVariable_add(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); - - typedef struct DimensionalVariable_sub_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sub_result; - DimensionalVariable_sub_result DimensionalVariable_sub(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); - - dv_pyo3::capi::DimensionalVariable* DimensionalVariable_mul(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); - - dv_pyo3::capi::DimensionalVariable* DimensionalVariable_div(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); - - dv_pyo3::capi::DimensionalVariable* DimensionalVariable_mul_scalar(const dv_pyo3::capi::DimensionalVariable* self, double scalar); - - dv_pyo3::capi::DimensionalVariable* DimensionalVariable_div_scalar(const dv_pyo3::capi::DimensionalVariable* self, double scalar); - - dv_pyo3::capi::DimensionalVariable* DimensionalVariable_rdiv_scalar(const dv_pyo3::capi::DimensionalVariable* self, double scalar); - - dv_pyo3::capi::DimensionalVariable* DimensionalVariable_powi(const dv_pyo3::capi::DimensionalVariable* self, int32_t exp); - - typedef struct DimensionalVariable_powf_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_powf_result; - DimensionalVariable_powf_result DimensionalVariable_powf(const dv_pyo3::capi::DimensionalVariable* self, double exp); - - typedef struct DimensionalVariable_sqrt_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sqrt_result; - DimensionalVariable_sqrt_result DimensionalVariable_sqrt(const dv_pyo3::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_ln_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_ln_result; - DimensionalVariable_ln_result DimensionalVariable_ln(const dv_pyo3::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_log2_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_log2_result; - DimensionalVariable_log2_result DimensionalVariable_log2(const dv_pyo3::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_log10_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_log10_result; - DimensionalVariable_log10_result DimensionalVariable_log10(const dv_pyo3::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_sin_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_sin_result; - DimensionalVariable_sin_result DimensionalVariable_sin(const dv_pyo3::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_cos_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_cos_result; - DimensionalVariable_cos_result DimensionalVariable_cos(const dv_pyo3::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_tan_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_tan_result; - DimensionalVariable_tan_result DimensionalVariable_tan(const dv_pyo3::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_asin_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_asin_result; - DimensionalVariable_asin_result DimensionalVariable_asin(const dv_pyo3::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_acos_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_acos_result; - DimensionalVariable_acos_result DimensionalVariable_acos(const dv_pyo3::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_atan_result {union {dv_pyo3::capi::DimensionalVariable* ok; }; bool is_ok;} DimensionalVariable_atan_result; - DimensionalVariable_atan_result DimensionalVariable_atan(const dv_pyo3::capi::DimensionalVariable* self); - - dv_pyo3::capi::DimensionalVariable* DimensionalVariable_neg(const dv_pyo3::capi::DimensionalVariable* self); - - dv_pyo3::capi::DimensionalVariable* DimensionalVariable_abs(const dv_pyo3::capi::DimensionalVariable* self); - - bool DimensionalVariable_equals(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); - - bool DimensionalVariable_not_equals(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); - - typedef struct DimensionalVariable_less_than_result {union {bool ok; }; bool is_ok;} DimensionalVariable_less_than_result; - DimensionalVariable_less_than_result DimensionalVariable_less_than(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); - - typedef struct DimensionalVariable_less_equal_result {union {bool ok; }; bool is_ok;} DimensionalVariable_less_equal_result; - DimensionalVariable_less_equal_result DimensionalVariable_less_equal(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); - - typedef struct DimensionalVariable_greater_than_result {union {bool ok; }; bool is_ok;} DimensionalVariable_greater_than_result; - DimensionalVariable_greater_than_result DimensionalVariable_greater_than(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); - - typedef struct DimensionalVariable_greater_equal_result {union {bool ok; }; bool is_ok;} DimensionalVariable_greater_equal_result; - DimensionalVariable_greater_equal_result DimensionalVariable_greater_equal(const dv_pyo3::capi::DimensionalVariable* self, const dv_pyo3::capi::DimensionalVariable* other); - - dv_pyo3::capi::DimensionalVariable* DimensionalVariable_clone_var(const dv_pyo3::capi::DimensionalVariable* self); - - typedef struct DimensionalVariable_to_string_result { bool is_ok;} DimensionalVariable_to_string_result; - DimensionalVariable_to_string_result DimensionalVariable_to_string(const dv_pyo3::capi::DimensionalVariable* self, dv_pyo3::diplomat::capi::DiplomatWrite* write); - - void DimensionalVariable_destroy(DimensionalVariable* self); - - } // extern "C" -} // namespace capi -} // namespace - -inline dv_pyo3::diplomat::result, std::monostate>, dv_pyo3::diplomat::Utf8Error> dv_pyo3::DimensionalVariable::new_(double value, std::string_view unit) { - if (!dv_pyo3::diplomat::capi::diplomat_is_str(unit.data(), unit.size())) { - return dv_pyo3::diplomat::Err(); - } - auto result = dv_pyo3::capi::DimensionalVariable_new(value, - {unit.data(), unit.size()}); - return dv_pyo3::diplomat::Ok, std::monostate>>(result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err())); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::asin_scalar(double x) { - auto result = dv_pyo3::capi::DimensionalVariable_asin_scalar(x); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::acos_scalar(double x) { - auto result = dv_pyo3::capi::DimensionalVariable_acos_scalar(x); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::atan_scalar(double x) { - auto result = dv_pyo3::capi::DimensionalVariable_atan_scalar(x); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline size_t dv_pyo3::DimensionalVariable::base_units_size() { - auto result = dv_pyo3::capi::DimensionalVariable_base_units_size(); - return result; -} - -inline double dv_pyo3::DimensionalVariable::value() const { - auto result = dv_pyo3::capi::DimensionalVariable_value(this->AsFFI()); - return result; -} - -inline dv_pyo3::diplomat::result, dv_pyo3::diplomat::Utf8Error> dv_pyo3::DimensionalVariable::value_in(std::string_view unit) const { - if (!dv_pyo3::diplomat::capi::diplomat_is_str(unit.data(), unit.size())) { - return dv_pyo3::diplomat::Err(); - } - auto result = dv_pyo3::capi::DimensionalVariable_value_in(this->AsFFI(), - {unit.data(), unit.size()}); - return dv_pyo3::diplomat::Ok>(result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok(result.ok)) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err())); -} - -inline bool dv_pyo3::DimensionalVariable::is_unitless() const { - auto result = dv_pyo3::capi::DimensionalVariable_is_unitless(this->AsFFI()); - return result; -} - -inline dv_pyo3::BaseUnits dv_pyo3::DimensionalVariable::base_units() const { - auto result = dv_pyo3::capi::DimensionalVariable_base_units(this->AsFFI()); - return dv_pyo3::BaseUnits::FromFFI(result); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::add(const dv_pyo3::DimensionalVariable& other) const { - auto result = dv_pyo3::capi::DimensionalVariable_add(this->AsFFI(), - other.AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::sub(const dv_pyo3::DimensionalVariable& other) const { - auto result = dv_pyo3::capi::DimensionalVariable_sub(this->AsFFI(), - other.AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline std::unique_ptr dv_pyo3::DimensionalVariable::mul(const dv_pyo3::DimensionalVariable& other) const { - auto result = dv_pyo3::capi::DimensionalVariable_mul(this->AsFFI(), - other.AsFFI()); - return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); -} - -inline std::unique_ptr dv_pyo3::DimensionalVariable::div(const dv_pyo3::DimensionalVariable& other) const { - auto result = dv_pyo3::capi::DimensionalVariable_div(this->AsFFI(), - other.AsFFI()); - return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); -} - -inline std::unique_ptr dv_pyo3::DimensionalVariable::mul_scalar(double scalar) const { - auto result = dv_pyo3::capi::DimensionalVariable_mul_scalar(this->AsFFI(), - scalar); - return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); -} - -inline std::unique_ptr dv_pyo3::DimensionalVariable::div_scalar(double scalar) const { - auto result = dv_pyo3::capi::DimensionalVariable_div_scalar(this->AsFFI(), - scalar); - return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); -} - -inline std::unique_ptr dv_pyo3::DimensionalVariable::rdiv_scalar(double scalar) const { - auto result = dv_pyo3::capi::DimensionalVariable_rdiv_scalar(this->AsFFI(), - scalar); - return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); -} - -inline std::unique_ptr dv_pyo3::DimensionalVariable::powi(int32_t exp) const { - auto result = dv_pyo3::capi::DimensionalVariable_powi(this->AsFFI(), - exp); - return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::powf(double exp) const { - auto result = dv_pyo3::capi::DimensionalVariable_powf(this->AsFFI(), - exp); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::sqrt() const { - auto result = dv_pyo3::capi::DimensionalVariable_sqrt(this->AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::ln() const { - auto result = dv_pyo3::capi::DimensionalVariable_ln(this->AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::log2() const { - auto result = dv_pyo3::capi::DimensionalVariable_log2(this->AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::log10() const { - auto result = dv_pyo3::capi::DimensionalVariable_log10(this->AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::sin() const { - auto result = dv_pyo3::capi::DimensionalVariable_sin(this->AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::cos() const { - auto result = dv_pyo3::capi::DimensionalVariable_cos(this->AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::tan() const { - auto result = dv_pyo3::capi::DimensionalVariable_tan(this->AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::asin() const { - auto result = dv_pyo3::capi::DimensionalVariable_asin(this->AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::acos() const { - auto result = dv_pyo3::capi::DimensionalVariable_acos(this->AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result, std::monostate> dv_pyo3::DimensionalVariable::atan() const { - auto result = dv_pyo3::capi::DimensionalVariable_atan(this->AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Ok>(std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result.ok)))) : dv_pyo3::diplomat::result, std::monostate>(dv_pyo3::diplomat::Err()); -} - -inline std::unique_ptr dv_pyo3::DimensionalVariable::neg() const { - auto result = dv_pyo3::capi::DimensionalVariable_neg(this->AsFFI()); - return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); -} - -inline std::unique_ptr dv_pyo3::DimensionalVariable::abs() const { - auto result = dv_pyo3::capi::DimensionalVariable_abs(this->AsFFI()); - return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); -} - -inline bool dv_pyo3::DimensionalVariable::equals(const dv_pyo3::DimensionalVariable& other) const { - auto result = dv_pyo3::capi::DimensionalVariable_equals(this->AsFFI(), - other.AsFFI()); - return result; -} - -inline bool dv_pyo3::DimensionalVariable::not_equals(const dv_pyo3::DimensionalVariable& other) const { - auto result = dv_pyo3::capi::DimensionalVariable_not_equals(this->AsFFI(), - other.AsFFI()); - return result; -} - -inline dv_pyo3::diplomat::result dv_pyo3::DimensionalVariable::less_than(const dv_pyo3::DimensionalVariable& other) const { - auto result = dv_pyo3::capi::DimensionalVariable_less_than(this->AsFFI(), - other.AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok(result.ok)) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result dv_pyo3::DimensionalVariable::less_equal(const dv_pyo3::DimensionalVariable& other) const { - auto result = dv_pyo3::capi::DimensionalVariable_less_equal(this->AsFFI(), - other.AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok(result.ok)) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result dv_pyo3::DimensionalVariable::greater_than(const dv_pyo3::DimensionalVariable& other) const { - auto result = dv_pyo3::capi::DimensionalVariable_greater_than(this->AsFFI(), - other.AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok(result.ok)) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err()); -} - -inline dv_pyo3::diplomat::result dv_pyo3::DimensionalVariable::greater_equal(const dv_pyo3::DimensionalVariable& other) const { - auto result = dv_pyo3::capi::DimensionalVariable_greater_equal(this->AsFFI(), - other.AsFFI()); - return result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok(result.ok)) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err()); -} - -inline std::unique_ptr dv_pyo3::DimensionalVariable::clone_var() const { - auto result = dv_pyo3::capi::DimensionalVariable_clone_var(this->AsFFI()); - return std::unique_ptr(dv_pyo3::DimensionalVariable::FromFFI(result)); -} - -inline dv_pyo3::diplomat::result dv_pyo3::DimensionalVariable::to_string() const { - std::string output; - dv_pyo3::diplomat::capi::DiplomatWrite write = dv_pyo3::diplomat::WriteFromString(output); - auto result = dv_pyo3::capi::DimensionalVariable_to_string(this->AsFFI(), - &write); - return result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok(std::move(output))) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err()); -} -template -inline dv_pyo3::diplomat::result dv_pyo3::DimensionalVariable::to_string_write(W& writeable) const { - dv_pyo3::diplomat::capi::DiplomatWrite write = dv_pyo3::diplomat::WriteTrait::Construct(writeable); - auto result = dv_pyo3::capi::DimensionalVariable_to_string(this->AsFFI(), - &write); - return result.is_ok ? dv_pyo3::diplomat::result(dv_pyo3::diplomat::Ok()) : dv_pyo3::diplomat::result(dv_pyo3::diplomat::Err()); -} - -inline const dv_pyo3::capi::DimensionalVariable* dv_pyo3::DimensionalVariable::AsFFI() const { - return reinterpret_cast(this); -} - -inline dv_pyo3::capi::DimensionalVariable* dv_pyo3::DimensionalVariable::AsFFI() { - return reinterpret_cast(this); -} - -inline const dv_pyo3::DimensionalVariable* dv_pyo3::DimensionalVariable::FromFFI(const dv_pyo3::capi::DimensionalVariable* ptr) { - return reinterpret_cast(ptr); -} - -inline dv_pyo3::DimensionalVariable* dv_pyo3::DimensionalVariable::FromFFI(dv_pyo3::capi::DimensionalVariable* ptr) { - return reinterpret_cast(ptr); -} - -inline void dv_pyo3::DimensionalVariable::operator delete(void* ptr) { - dv_pyo3::capi::DimensionalVariable_destroy(reinterpret_cast(ptr)); -} - - -#endif // DV_PYO3_DimensionalVariable_HPP diff --git a/generated/diplomat/nanobind/include/diplomat_nanobind_common.hpp b/generated/diplomat/nanobind/include/diplomat_nanobind_common.hpp deleted file mode 100644 index 67bd752..0000000 --- a/generated/diplomat/nanobind/include/diplomat_nanobind_common.hpp +++ /dev/null @@ -1,306 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include <../src/nb_internals.h> // Required for shimming -#include "diplomat_runtime.hpp" - -namespace nb = nanobind; -using namespace nb::literals; - -namespace nanobind::detail -{ - // Nanobind does not ship with support for casting char32_t, which seems to be an oversight. - // Remove this block when upstream support is added - template <> - struct type_caster - { - using Value = char32_t; - Value value; - Py_ssize_t size; - static constexpr auto Name = const_name("str"); - template - using Cast = char32_t; - - bool from_python(handle src, uint8_t, cleanup_list *) noexcept - { - value = PyUnicode_ReadChar(src.ptr(), 0); - if (!value) - { - PyErr_Clear(); - return false; - } - size = PyUnicode_GetLength(src.ptr()); - return true; - } - - static handle from_cpp(const char32_t *value, rv_policy, - cleanup_list *) noexcept - { - if (value == nullptr) - { - PyObject *result = Py_None; - Py_INCREF(result); - return result; - } - size_t len = 0; - const char32_t *str = value; - while (*str != U'\0') - { - len++; - str++; - } - return PyUnicode_DecodeUTF32(reinterpret_cast(value), len * 4, nullptr, nullptr); - } - - static handle from_cpp(char32_t value, rv_policy, cleanup_list *) noexcept - { - return PyUnicode_DecodeUTF32(reinterpret_cast(&value), 4, nullptr, nullptr); - } - - template - NB_INLINE bool can_cast() const noexcept - { - return (value && size == 1); - } - - explicit operator char32_t() - { - if (can_cast()) - return value; - else - throw next_overload(); - } - }; - - template - struct type_caster> - { - using Value = std::reference_wrapper; - Value value; - Py_ssize_t size; - using Caster = make_caster; - static constexpr auto Name = Caster::Name; - - static handle from_cpp(std::reference_wrapper value, rv_policy p, cleanup_list *cl) noexcept - { - return Caster::from_cpp(value.get(), p, cl); - } - - NB_INLINE bool can_cast() const noexcept { return Caster::template can_cast(); } - }; - - template - struct type_caster> - { - using U = std::conditional_t, std::reference_wrapper>, T>; - using V = std::conditional_t, std::reference_wrapper>, E>; - using Value = dv_pyo3::diplomat::result; - // Can't store result directly since T& will create compiler errors. - std::optional ok_val; - std::optional err_val; - bool is_ok; - Py_ssize_t size; - using Caster = make_caster; - static constexpr auto Name = Caster::Name; - - static handle from_cpp(dv_pyo3::diplomat::result value, rv_policy p, cleanup_list *cl) noexcept - { - if (value.is_ok()) { - return Caster::from_cpp(forward_like_(std::move(value).ok().value()), p, cl); - } - - auto errorPyV = nb::cast(std::move(std::move(value).err().value())); - if (errorPyV.is_valid()) - { - PyErr_SetString(PyExc_Exception, nb::str(errorPyV).c_str()); - } - else - { - char error_msg[512]; - snprintf(error_msg, sizeof(error_msg), "Cannot convert unknown type %s to string for python error.", typeid(E).name()); - PyErr_SetString(PyExc_Exception, error_msg); - } - - return nullptr; - } - - template - using Cast = Value; - operator Value() { - if (is_ok) { - return dv_pyo3::diplomat::Ok(forward_like_(ok_val.value())); - } else { - return dv_pyo3::diplomat::Err(forward_like_(err_val.value())); - } - } - - bool from_python(handle src, uint8_t flags, cleanup_list* cleanup) noexcept { - uint8_t local_flags = flags_for_local_caster(flags); - - // We raise an exception above, but I think it's okay just to check if our conversion succeeds: - auto caster = make_caster(); - if (caster.from_python(src, local_flags, cleanup)) { - is_ok = true; - if constexpr(std::is_reference_v) { - ok_val = std::optional(std::reference_wrapper(caster.operator cast_t())); - } else { - ok_val = std::optional(caster.operator cast_t()); - } - return true; - } else { - auto err_caster = make_caster(); - uint8_t err_local_flags = flags_for_local_caster(flags); - if (err_caster.from_python(src, err_local_flags, cleanup)) { - is_ok = false; - if constexpr(std::is_reference_v) { - err_val = std::optional(std::reference_wrapper(err_caster.operator cast_t())); - } else { - err_val = std::optional(err_caster.operator cast_t()); - } - return true; - } - } - - return false; - } - - NB_INLINE bool can_cast() const noexcept { return Caster::template can_cast(); } - }; - - template - class type_caster> { - // The type referenced by the span, with const removed. - using value_type = std::remove_cv_t; - // Avoid pitfalls with std::vector - using vector_value_type = std::conditional_t, uint8_t, value_type>; - using ListCaster = list_caster, value_type>; - static_assert(sizeof(bool) == sizeof(uint8_t), "bool representation size is unexpected!"); - - - public: - using Value = dv_pyo3::diplomat::span; - Value value = dv_pyo3::diplomat::span(); - - static constexpr auto Name = ListCaster::Name; - - template - using Cast = Value; - operator Value() { return value; } - - template static constexpr bool can_cast() { return true; } - - // Cast Python -> C++ (nb::cast call) - bool from_python(handle src, uint8_t flags, cleanup_list* cleanup) noexcept { - uint8_t local_flags = flags_for_local_caster(flags); - - // First try to convert from ndarray for efficiency - // Try to get a 1D contiguous array directly using type tags - if constexpr (is_ndarray_scalar_v) { - auto caster = make_caster>>(); - if (caster.from_python(src, local_flags, cleanup)) { - // Create a span from the array data - value = dv_pyo3::diplomat::span(caster.value.data(), caster.value.shape(0)); - return true; - } - } - - // C++ std::vector is not allowed, so we convert it to std::vector for the compiler's sake. - using U = std::conditional_t, bool>, std::vector>, std::vector>; - - - // Are we a bound vector type? If so, we can pass over data directly. - if (nb::inst_check(src) && nb::isinstance(src)) { - U* bound_vec = nb::inst_ptr(src); - value = dv_pyo3::diplomat::span(reinterpret_cast(bound_vec->data()), bound_vec->size()); - return true; - } - - // Attempt to convert a native sequence. We must convert all elements & store - // them in a temporary object which will be cleaned up - if (std::is_const_v && - (!std::is_pointer_v || is_base_caster_v>)) { - ListCaster caster; - if (caster.from_python(src, local_flags, cleanup)) { - value = dv_pyo3::diplomat::span(reinterpret_cast(caster.value.data()), caster.value.size()); - // Move the owning std::vector into a capsule that will live for the duration of the function call. - // The address of the vector will change, the address of the region it references won't. - nb::capsule deleter(new std::vector(std::move(caster.value)), [](void* data) noexcept { - delete (std::vector*)data; - }); - cleanup->append(deleter.release().ptr()); - - return true; - } - } - - return false; // Python type cannot be loaded into a span. - } - - // Cast C++ -> Python (when returning a span from a C++ function) - static handle from_cpp(dv_pyo3::diplomat::span src, rv_policy policy, cleanup_list* cleanup) { - using Array = nb::ndarray, nb::numpy, nb::ndim<1>, nb::f_contig>; - if constexpr(is_ndarray_scalar_v) { - nb::object owner; - if (cleanup->self()) { - owner = nb::borrow(cleanup->self()); - policy = rv_policy::reference; - } - - object o = steal(type_caster::from_cpp( - Array((void* )src.data(), {src.size()}, owner), - policy, cleanup)); - - return o.release(); - } else { - return ListCaster::from_cpp(src, policy, cleanup); - } - } - }; - - template <> - struct type_caster { - NB_TYPE_CASTER(dv_pyo3::diplomat::string_view_for_slice, const_name("str")) - - bool from_python(handle src, uint8_t, cleanup_list *) noexcept { - Py_ssize_t size; - const char *str = PyUnicode_AsUTF8AndSize(src.ptr(), &size); - if (!str) { - PyErr_Clear(); - return false; - } - value = dv_pyo3::diplomat::string_view_for_slice(str, (size_t) size); - return true; - } - - static handle from_cpp(dv_pyo3::diplomat::string_view_for_slice value, rv_policy, cleanup_list *) noexcept { - return PyUnicode_FromStringAndSize(value.data(), value.size()); - } - }; -} - -// Return the inner type from next() -// Next returns either a std::unique_ptr or std::optional. -// When T is optional, return inner&&. When T is unique_ptr, just return it. -template -struct next_inner_extractor { - static T&& get(T&& v) { return std::move(v); } -}; - -template -struct next_inner_extractor> { - static T&& get(std::optional&& v) { return std::move(v).value(); } -}; - -// These are defined in the root module.cpp file. -extern void (*nb_tp_dealloc)(void *); -void diplomat_tp_dealloc(PyObject *self); \ No newline at end of file diff --git a/generated/diplomat/nanobind/include/diplomat_runtime.hpp b/generated/diplomat/nanobind/include/diplomat_runtime.hpp deleted file mode 100644 index 8dc934c..0000000 --- a/generated/diplomat/nanobind/include/diplomat_runtime.hpp +++ /dev/null @@ -1,567 +0,0 @@ -#ifndef DV_PYO3_DIPLOMAT_RUNTIME_CPP_H -#define DV_PYO3_DIPLOMAT_RUNTIME_CPP_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#if __cplusplus >= 202002L -#include -#else -#include -#endif - -namespace dv_pyo3 { -namespace diplomat { - -namespace capi { -extern "C" { - -static_assert(sizeof(char) == sizeof(uint8_t), "your architecture's `char` is not 8 bits"); -static_assert(sizeof(char16_t) == sizeof(uint16_t), "your architecture's `char16_t` is not 16 bits"); -static_assert(sizeof(char32_t) == sizeof(uint32_t), "your architecture's `char32_t` is not 32 bits"); - -typedef struct DiplomatWrite { - void* context; - char* buf; - size_t len; - size_t cap; - bool grow_failed; - void (*flush)(struct DiplomatWrite*); - bool (*grow)(struct DiplomatWrite*, size_t); -} DiplomatWrite; - -bool diplomat_is_str(const char* buf, size_t len); - -#define MAKE_SLICES(name, c_ty) \ - typedef struct Diplomat##name##View { \ - const c_ty* data; \ - size_t len; \ - } Diplomat##name##View; \ - typedef struct Diplomat##name##ViewMut { \ - c_ty* data; \ - size_t len; \ - } Diplomat##name##ViewMut; \ - typedef struct Diplomat##name##Array { \ - const c_ty* data; \ - size_t len; \ - } Diplomat##name##Array; - -#define MAKE_SLICES_AND_OPTIONS(name, c_ty) \ - MAKE_SLICES(name, c_ty) \ - typedef struct Option##name {union { c_ty ok; }; bool is_ok; } Option##name; \ - typedef struct Option##name##View {union { Diplomat##name##View ok; }; bool is_ok; } Option##name##View; \ - typedef struct Option##name##ViewMut {union { Diplomat##name##ViewMut ok; }; bool is_ok; } Option##name##ViewMut; \ - typedef struct Option##name##Array {union { Diplomat##name##Array ok; }; bool is_ok; } Option##name##Array; \ - -MAKE_SLICES_AND_OPTIONS(I8, int8_t) -MAKE_SLICES_AND_OPTIONS(U8, uint8_t) -MAKE_SLICES_AND_OPTIONS(I16, int16_t) -MAKE_SLICES_AND_OPTIONS(U16, uint16_t) -MAKE_SLICES_AND_OPTIONS(I32, int32_t) -MAKE_SLICES_AND_OPTIONS(U32, uint32_t) -MAKE_SLICES_AND_OPTIONS(I64, int64_t) -MAKE_SLICES_AND_OPTIONS(U64, uint64_t) -MAKE_SLICES_AND_OPTIONS(Isize, intptr_t) -MAKE_SLICES_AND_OPTIONS(Usize, size_t) -MAKE_SLICES_AND_OPTIONS(F32, float) -MAKE_SLICES_AND_OPTIONS(F64, double) -MAKE_SLICES_AND_OPTIONS(Bool, bool) -MAKE_SLICES_AND_OPTIONS(Char, char32_t) -MAKE_SLICES_AND_OPTIONS(String, char) -MAKE_SLICES_AND_OPTIONS(String16, char16_t) -MAKE_SLICES_AND_OPTIONS(Strings, DiplomatStringView) -MAKE_SLICES_AND_OPTIONS(Strings16, DiplomatString16View) - -} // extern "C" -} // namespace capi - -extern "C" inline void _flush(capi::DiplomatWrite* w) { - std::string* string = reinterpret_cast(w->context); - string->resize(w->len); -} - -extern "C" inline bool _grow(capi::DiplomatWrite* w, uintptr_t requested) { - std::string* string = reinterpret_cast(w->context); - string->resize(requested); - w->cap = string->length(); - w->buf = &(*string)[0]; - return true; -} - -inline capi::DiplomatWrite WriteFromString(std::string& string) { - capi::DiplomatWrite w; - w.context = &string; - w.buf = &string[0]; - w.len = string.length(); - w.cap = string.length(); - // Will never become true, as _grow is infallible. - w.grow_failed = false; - w.flush = _flush; - w.grow = _grow; - return w; -} - -// This "trait" allows one to use _write() methods to efficiently -// write to a custom string type. To do this you need to write a specialized -// `WriteTrait` (see WriteTrait below) -// that is capable of constructing a DiplomatWrite, which can wrap -// your string type with appropriate resize/flush functionality. -template struct WriteTrait { - // Fill in this method on a specialization to implement this trait - // static inline capi::DiplomatWrite Construct(T& t); -}; - -template<> struct WriteTrait { - static inline capi::DiplomatWrite Construct(std::string& t) { - return diplomat::WriteFromString(t); - } -}; - -template struct Ok { - T inner; - - // Move constructor always allowed - Ok(T&& i): inner(std::forward(i)) {} - - // copy constructor allowed only for trivially copyable types - template::value>::type> - Ok(const T& i) : inner(i) {} - - Ok() = default; - Ok(Ok&&) noexcept = default; - Ok(const Ok &) = default; - Ok& operator=(const Ok&) = default; - Ok& operator=(Ok&&) noexcept = default; -}; - - -template struct Err { - T inner; - - // Move constructor always allowed - Err(T&& i): inner(std::forward(i)) {} - - // copy constructor allowed only for trivially copyable types - template::value>::type> - Err(const T& i) : inner(i) {} - - Err() = default; - Err(Err&&) noexcept = default; - Err(const Err &) = default; - Err& operator=(const Err&) = default; - Err& operator=(Err&&) noexcept = default; -}; - -template struct fn_traits; - -template -class result { -protected: - std::variant, Err> val; -public: - template - friend struct fn_traits; - - result(Ok&& v): val(std::move(v)) {} - result(Err&& v): val(std::move(v)) {} - result() = default; - result(const result &) = default; - result& operator=(const result&) = default; - result& operator=(result&&) noexcept = default; - result(result &&) noexcept = default; - ~result() = default; - bool is_ok() const { - return std::holds_alternative>(this->val); - } - bool is_err() const { - return std::holds_alternative>(this->val); - } - - template, std::nullptr_t> = nullptr> - std::optional ok() && { - if (!this->is_ok()) { - return std::nullopt; - } - return std::make_optional(std::move(std::get>(std::move(this->val)).inner)); - } - - template, std::nullptr_t> = nullptr> - std::optional err() && { - if (!this->is_err()) { - return std::nullopt; - } - return std::make_optional(std::move(std::get>(std::move(this->val)).inner)); - } - - // std::optional does not work with reference types directly, so wrap them if present - template, std::nullptr_t> = nullptr> - std::optional>> ok() && { - if (!this->is_ok()) { - return std::nullopt; - } - return std::make_optional(std::reference_wrapper(std::forward(std::get>(std::move(this->val)).inner))); - } - - template, std::nullptr_t> = nullptr> - std::optional>> err() && { - if (!this->is_err()) { - return std::nullopt; - } - return std::make_optional(std::reference_wrapper(std::forward(std::get>(std::move(this->val)).inner))); - } - - void set_ok(T&& t) { - this->val = Ok(std::move(t)); - } - - void set_err(E&& e) { - this->val = Err(std::move(e)); - } - - template - result replace_ok(T2&& t) { - if (this->is_err()) { - return result(Err(std::get>(std::move(this->val)))); - } else { - return result(Ok(std::move(t))); - } - } -}; - -class Utf8Error {}; - -// Use custom std::span on C++17, otherwise use std::span -#if __cplusplus >= 202002L - -constexpr std::size_t dynamic_extent = std::dynamic_extent; -template using span = std::span; - -#else // __cplusplus < 202002L - -// C++-17-compatible-ish std::span -constexpr size_t dynamic_extent = std::numeric_limits::max(); -template -class span { -public: - constexpr span(T *data = nullptr, size_t size = Extent) - : data_(data), size_(size) {} - - constexpr span(const span &o) - : data_(o.data_), size_(o.size_) {} - template - constexpr span(std::array, N> &arr) - : data_(const_cast(arr.data())), size_(N) {} - - constexpr T* data() const noexcept { - return this->data_; - } - constexpr size_t size() const noexcept { - return this->size_; - } - - constexpr T *begin() const noexcept { return data(); } - constexpr T *end() const noexcept { return data() + size(); } - - void operator=(span o) { - data_ = o.data_; - size_ = o.size_; - } - -private: - T* data_; - size_t size_; -}; - -#endif // __cplusplus >= 202002L - -// An ABI stable std::basic_string_view equivalent for the case of string -// views in slices -template > -class basic_string_view_for_slice { -public: - using std_string_view = std::basic_string_view; - using traits_type = typename std_string_view::traits_type; - using value_type = typename std_string_view::value_type; - using pointer = typename std_string_view::pointer; - using const_pointer = typename std_string_view::const_pointer; - using size_type = typename std_string_view::size_type; - using difference_type = typename std_string_view::difference_type; - - constexpr basic_string_view_for_slice() noexcept - : basic_string_view_for_slice{std_string_view{}} {} - - constexpr basic_string_view_for_slice(const basic_string_view_for_slice& other) noexcept = default; - - constexpr basic_string_view_for_slice(const const_pointer s, const size_type count) - : basic_string_view_for_slice{std_string_view{s, count}} {} - - constexpr basic_string_view_for_slice(const const_pointer s) - : basic_string_view_for_slice{std_string_view{s}} {} - - constexpr basic_string_view_for_slice& operator=(const basic_string_view_for_slice& view) noexcept = default; - - constexpr basic_string_view_for_slice(const std_string_view& s) noexcept - : data_{s.data(), s.size()} {} - - constexpr basic_string_view_for_slice& operator=(const std_string_view& s) noexcept { - data_ = {s.data(), s.size()}; - return *this; - } - - constexpr operator std_string_view() const noexcept { return {data(), size()}; } - constexpr std_string_view as_sv() const noexcept { return *this; } - - constexpr const_pointer data() const noexcept { return data_.data; } - constexpr size_type size() const noexcept { return data_.len; } - -private: - using capi_type = - std::conditional_t, - capi::DiplomatStringView, - std::conditional_t, - capi::DiplomatString16View, - void>>; - - static_assert(!std::is_void_v, - "ABI compatible string_views are only supported for char and char16_t"); - - capi_type data_; -}; - -// We only implement these specialisations as diplomat doesn't provide c abi -// types for others -using string_view_for_slice = basic_string_view_for_slice; -using u16string_view_for_slice = basic_string_view_for_slice; - -using string_view_span = span; -using u16string_view_span = span; - -// Interop between std::function & our C Callback wrapper type - -template -struct as_ffi { - using type = T; -}; - -template -struct as_ffi>().AsFFI())>> { - using type = decltype(std::declval>().AsFFI()); -}; - -template -using as_ffi_t = typename as_ffi::type; - -template -using replace_string_view_t = std::conditional_t, capi::DiplomatStringView, T>; - -template -struct diplomat_c_span_convert { - using type = T; -}; - -#define MAKE_SLICE_CONVERTERS(name, c_ty) \ - template \ - struct diplomat_c_span_convert>>> { \ - using type = diplomat::capi::Diplomat##name##View; \ - }; \ - template \ - struct diplomat_c_span_convert>>> { \ - using type = diplomat::capi::Diplomat##name##ViewMut; \ - }; \ - -MAKE_SLICE_CONVERTERS(I8, int8_t) -MAKE_SLICE_CONVERTERS(U8, uint8_t) -MAKE_SLICE_CONVERTERS(I16, int16_t) -MAKE_SLICE_CONVERTERS(U16, uint16_t) -MAKE_SLICE_CONVERTERS(I32, int32_t) -MAKE_SLICE_CONVERTERS(U32, uint32_t) -MAKE_SLICE_CONVERTERS(I64, int64_t) -MAKE_SLICE_CONVERTERS(U64, uint64_t) -MAKE_SLICE_CONVERTERS(F32, float) -MAKE_SLICE_CONVERTERS(F64, double) -MAKE_SLICE_CONVERTERS(Bool, bool) -MAKE_SLICE_CONVERTERS(Char, char32_t) -MAKE_SLICE_CONVERTERS(String, char) -MAKE_SLICE_CONVERTERS(String16, char16_t) - -template -using diplomat_c_span_convert_t = typename diplomat_c_span_convert::type; - -/// Replace the argument types from the std::function with the argument types for th function pointer -template -using replace_fn_t = diplomat_c_span_convert_t>>; - -template struct fn_traits> { - using fn_ptr_t = Ret(Args...); - using function_t = std::function; - using ret = Ret; - - // For a given T, creates a function that take in the C ABI version & return the C++ type. - template - static T replace(replace_fn_t val) { - if constexpr(std::is_same_v) { - return std::string_view{val.data, val.len}; - } else if constexpr (!std::is_same_v>) { - return T{ val.data, val.len }; - } else if constexpr (!std::is_same_v>) { - if constexpr (std::is_lvalue_reference_v) { - return *std::remove_reference_t::FromFFI(val); - } - else { - return T::FromFFI(val); - } - } - else { - return val; - } - } - - template - static replace_fn_t replace_ret(T val) { - if constexpr(std::is_same_v) { - return {val.data(), val.size()}; - } else if constexpr (!std::is_same_v>) { - // Can we convert straight away to our slice type, or (in the case of ABI compatible structs), do we have to do a reinterpret cast? - if constexpr(std::is_same_v().data()), decltype(replace_fn_t::data)>) { - return replace_fn_t { val.data(), val.size() }; - } else { - return replace_fn_t { reinterpret_cast::data)>(val.data()), val.size() }; - } - } else if constexpr(!std::is_same_v>) { - return val.AsFFI(); - } else { - return val; - } - } - - static Ret c_run_callback(const void *cb, replace_fn_t... args) { - return (*reinterpret_cast(cb))(replace(args)...); - } - - template - static TOut c_run_callback_result(const void *cb, replace_fn_t... args) { - result res = c_run_callback(cb, args...); - - auto is_ok = res.is_ok(); - - constexpr bool has_ok = !std::is_same_v; - constexpr bool has_err = !std::is_same_v; - - TOut out; - out.is_ok = is_ok; - - if constexpr (has_ok) { - if (is_ok) { - out.ok = replace_ret(std::get>(res.val).inner); - } - } - - if constexpr(has_err) { - if (!is_ok) { - out.err = replace_ret(std::get>(res.val).inner); - } - } - - return out; - } - - // For DiplomatOption<> - template - static TOut c_run_callback_diplomat_option(const void *cb, replace_fn_t... args) { - constexpr bool has_ok = !std::is_same_v; - - std::optional ret = c_run_callback(cb, args...); - - bool is_ok = ret.has_value(); - - TOut out; - out.is_ok = is_ok; - - if constexpr(has_ok) { - if (is_ok) { - out.ok = replace_ret(ret.value()); - } - } - return out; - } - - // All we need to do is just convert one pointer to another, while keeping the arguments the same: - template - static T c_run_callback_diplomat_opaque(const void* cb, replace_fn_t... args) { - Ret out = c_run_callback(cb, args...); - - return out->AsFFI(); - } - - static void c_delete(const void *cb) { - delete reinterpret_cast(cb); - } - - fn_traits(function_t) {} // Allows less clunky construction (avoids decltype) -}; - -// additional deduction guide required -template -fn_traits(T) -> fn_traits; - -// Trait for extracting inner types from either T*, std::optional, or std::unique_ptr. -// These are the three potential types returned by next() functions -template struct inner { /* only T*, std::optional, and std::unique_ptr are supported */ }; -template struct inner { using type = T; }; -template struct inner> { using type = T; }; -template struct inner>{ using type = T; }; - -template::type> -inline const U get_inner_if_present(T v) { - if constexpr(std::is_same_v) { - return std::move(v); - } else { - return *std::move(v); - } -} - -// Adapter for iterator types -template struct has_next : std::false_type {}; -template struct has_next < T, std::void_t().next())>> : std::true_type {}; -template constexpr bool has_next_v = has_next::value; - -/// Helper template enabling native iteration over unique ptrs to objects which implement next() -template -struct next_to_iter_helper { - static_assert(has_next_v, "next_to_iter_helper may only be used with types implementing next()"); - using next_type = decltype(std::declval().next()); - - // STL Iterator trait definitions - using value_type = typename inner::type; - using difference_type = void; - using reference = std::add_lvalue_reference_t; - using iterator_category = std::input_iterator_tag; - - next_to_iter_helper(std::unique_ptr&& ptr) : _ptr(std::move(ptr)), _curr(_ptr->next()) {} - - // https://en.cppreference.com/w/cpp/named_req/InputIterator requires that the type be copyable - next_to_iter_helper(const next_to_iter_helper& o) : _ptr(o._ptr), _curr(o._curr) {} - - void operator++() { _curr = _ptr->next(); } - void operator++(int) { ++(*this); } - const value_type& operator*() const { return *_curr; } - - bool operator!=(std::nullopt_t) { - return (bool)_curr; - } - - std::shared_ptr _ptr; // shared to satisfy the copyable requirement - next_type _curr; -}; - -} // namespace diplomat -} // namespace dv_pyo3 -#endif \ No newline at end of file diff --git a/generated/diplomat/nanobind/nb_combined.cpp b/generated/diplomat/nanobind/nb_combined.cpp deleted file mode 100644 index 51b0d96..0000000 --- a/generated/diplomat/nanobind/nb_combined.cpp +++ /dev/null @@ -1 +0,0 @@ -#include <../src/nb_combined.cpp> diff --git a/generated/diplomat/nanobind/sub_modules/dv_py/BaseUnits_binding.cpp b/generated/diplomat/nanobind/sub_modules/dv_py/BaseUnits_binding.cpp deleted file mode 100644 index 497a269..0000000 --- a/generated/diplomat/nanobind/sub_modules/dv_py/BaseUnits_binding.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "diplomat_nanobind_common.hpp" - - -#include "BaseUnits.hpp" - -namespace dv_py { -void add_BaseUnits_binding(nb::module_ mod) { - nb::class_(mod, "BaseUnits") - .def(nb::init<>()) - .def(nb::init(), "m"_a.none(), "kg"_a.none(), "s"_a.none(), "k"_a.none(), "a"_a.none(), "mol"_a.none(), "cd"_a.none(), "rad"_a.none()) - .def_rw("m", &dv_py::BaseUnits::m) - .def_rw("kg", &dv_py::BaseUnits::kg) - .def_rw("s", &dv_py::BaseUnits::s) - .def_rw("k", &dv_py::BaseUnits::k) - .def_rw("a", &dv_py::BaseUnits::a) - .def_rw("mol", &dv_py::BaseUnits::mol) - .def_rw("cd", &dv_py::BaseUnits::cd) - .def_rw("rad", &dv_py::BaseUnits::rad); -} - -} \ No newline at end of file diff --git a/generated/diplomat/nanobind/sub_modules/dv_py/DimensionalVariable_binding.cpp b/generated/diplomat/nanobind/sub_modules/dv_py/DimensionalVariable_binding.cpp deleted file mode 100644 index 4401eb9..0000000 --- a/generated/diplomat/nanobind/sub_modules/dv_py/DimensionalVariable_binding.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#include "diplomat_nanobind_common.hpp" - - -#include "DimensionalVariable.hpp" - -namespace dv_py { -void add_DimensionalVariable_binding(nb::module_ mod) { - PyType_Slot dv_py_DimensionalVariable_slots[] = { - {Py_tp_free, (void *)dv_py::DimensionalVariable::operator delete }, - {Py_tp_dealloc, (void *)diplomat_tp_dealloc}, - {0, nullptr}}; - - nb::class_(mod, "DimensionalVariable", nb::type_slots(dv_py_DimensionalVariable_slots)) - .def("abs", &dv_py::DimensionalVariable::abs) - .def("acos", &dv_py::DimensionalVariable::acos) - .def_static("acos_scalar", &dv_py::DimensionalVariable::acos_scalar, "x"_a) - .def("add", &dv_py::DimensionalVariable::add, "other"_a) - .def("asin", &dv_py::DimensionalVariable::asin) - .def_static("asin_scalar", &dv_py::DimensionalVariable::asin_scalar, "x"_a) - .def("atan", &dv_py::DimensionalVariable::atan) - .def_static("atan_scalar", &dv_py::DimensionalVariable::atan_scalar, "x"_a) - .def("base_units", &dv_py::DimensionalVariable::base_units) - .def_static("base_units_size", &dv_py::DimensionalVariable::base_units_size) - .def("clone_var", &dv_py::DimensionalVariable::clone_var) - .def("cos", &dv_py::DimensionalVariable::cos) - .def("div", &dv_py::DimensionalVariable::div, "other"_a) - .def("div_scalar", &dv_py::DimensionalVariable::div_scalar, "scalar"_a) - .def("equals", &dv_py::DimensionalVariable::equals, "other"_a) - .def("greater_equal", &dv_py::DimensionalVariable::greater_equal, "other"_a) - .def("greater_than", &dv_py::DimensionalVariable::greater_than, "other"_a) - .def("is_unitless", &dv_py::DimensionalVariable::is_unitless) - .def("less_equal", &dv_py::DimensionalVariable::less_equal, "other"_a) - .def("less_than", &dv_py::DimensionalVariable::less_than, "other"_a) - .def("ln", &dv_py::DimensionalVariable::ln) - .def("log10", &dv_py::DimensionalVariable::log10) - .def("log2", &dv_py::DimensionalVariable::log2) - .def("mul", &dv_py::DimensionalVariable::mul, "other"_a) - .def("mul_scalar", &dv_py::DimensionalVariable::mul_scalar, "scalar"_a) - .def("neg", &dv_py::DimensionalVariable::neg) - .def_static("new", &dv_py::DimensionalVariable::new_, "value"_a, "unit"_a) - .def("not_equals", &dv_py::DimensionalVariable::not_equals, "other"_a) - .def("powf", &dv_py::DimensionalVariable::powf, "exp"_a) - .def("powi", &dv_py::DimensionalVariable::powi, "exp"_a) - .def("rdiv_scalar", &dv_py::DimensionalVariable::rdiv_scalar, "scalar"_a) - .def("sin", &dv_py::DimensionalVariable::sin) - .def("sqrt", &dv_py::DimensionalVariable::sqrt) - .def("sub", &dv_py::DimensionalVariable::sub, "other"_a) - .def("tan", &dv_py::DimensionalVariable::tan) - .def("to_string", &dv_py::DimensionalVariable::to_string) - .def("value", &dv_py::DimensionalVariable::value) - .def("value_in", &dv_py::DimensionalVariable::value_in, "unit"_a); -} - -} \ No newline at end of file diff --git a/generated/diplomat/nanobind/sub_modules/dv_pyo3/BaseUnits_binding.cpp b/generated/diplomat/nanobind/sub_modules/dv_pyo3/BaseUnits_binding.cpp deleted file mode 100644 index 83b63a0..0000000 --- a/generated/diplomat/nanobind/sub_modules/dv_pyo3/BaseUnits_binding.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "diplomat_nanobind_common.hpp" - - -#include "BaseUnits.hpp" - -namespace dv_pyo3 { -void add_BaseUnits_binding(nb::module_ mod) { - nb::class_(mod, "BaseUnits") - .def(nb::init<>()) - .def(nb::init(), "m"_a.none(), "kg"_a.none(), "s"_a.none(), "k"_a.none(), "a"_a.none(), "mol"_a.none(), "cd"_a.none(), "rad"_a.none()) - .def_rw("m", &dv_pyo3::BaseUnits::m) - .def_rw("kg", &dv_pyo3::BaseUnits::kg) - .def_rw("s", &dv_pyo3::BaseUnits::s) - .def_rw("k", &dv_pyo3::BaseUnits::k) - .def_rw("a", &dv_pyo3::BaseUnits::a) - .def_rw("mol", &dv_pyo3::BaseUnits::mol) - .def_rw("cd", &dv_pyo3::BaseUnits::cd) - .def_rw("rad", &dv_pyo3::BaseUnits::rad); -} - -} \ No newline at end of file diff --git a/generated/diplomat/nanobind/sub_modules/dv_pyo3/DimensionalVariable_binding.cpp b/generated/diplomat/nanobind/sub_modules/dv_pyo3/DimensionalVariable_binding.cpp deleted file mode 100644 index 99ea34d..0000000 --- a/generated/diplomat/nanobind/sub_modules/dv_pyo3/DimensionalVariable_binding.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#include "diplomat_nanobind_common.hpp" - - -#include "DimensionalVariable.hpp" - -namespace dv_pyo3 { -void add_DimensionalVariable_binding(nb::module_ mod) { - PyType_Slot dv_pyo3_DimensionalVariable_slots[] = { - {Py_tp_free, (void *)dv_pyo3::DimensionalVariable::operator delete }, - {Py_tp_dealloc, (void *)diplomat_tp_dealloc}, - {0, nullptr}}; - - nb::class_(mod, "DimensionalVariable", nb::type_slots(dv_pyo3_DimensionalVariable_slots)) - .def("abs", &dv_pyo3::DimensionalVariable::abs) - .def("acos", &dv_pyo3::DimensionalVariable::acos) - .def_static("acos_scalar", &dv_pyo3::DimensionalVariable::acos_scalar, "x"_a) - .def("add", &dv_pyo3::DimensionalVariable::add, "other"_a) - .def("asin", &dv_pyo3::DimensionalVariable::asin) - .def_static("asin_scalar", &dv_pyo3::DimensionalVariable::asin_scalar, "x"_a) - .def("atan", &dv_pyo3::DimensionalVariable::atan) - .def_static("atan_scalar", &dv_pyo3::DimensionalVariable::atan_scalar, "x"_a) - .def("base_units", &dv_pyo3::DimensionalVariable::base_units) - .def_static("base_units_size", &dv_pyo3::DimensionalVariable::base_units_size) - .def("clone_var", &dv_pyo3::DimensionalVariable::clone_var) - .def("cos", &dv_pyo3::DimensionalVariable::cos) - .def("div", &dv_pyo3::DimensionalVariable::div, "other"_a) - .def("div_scalar", &dv_pyo3::DimensionalVariable::div_scalar, "scalar"_a) - .def("equals", &dv_pyo3::DimensionalVariable::equals, "other"_a) - .def("greater_equal", &dv_pyo3::DimensionalVariable::greater_equal, "other"_a) - .def("greater_than", &dv_pyo3::DimensionalVariable::greater_than, "other"_a) - .def("is_unitless", &dv_pyo3::DimensionalVariable::is_unitless) - .def("less_equal", &dv_pyo3::DimensionalVariable::less_equal, "other"_a) - .def("less_than", &dv_pyo3::DimensionalVariable::less_than, "other"_a) - .def("ln", &dv_pyo3::DimensionalVariable::ln) - .def("log10", &dv_pyo3::DimensionalVariable::log10) - .def("log2", &dv_pyo3::DimensionalVariable::log2) - .def("mul", &dv_pyo3::DimensionalVariable::mul, "other"_a) - .def("mul_scalar", &dv_pyo3::DimensionalVariable::mul_scalar, "scalar"_a) - .def("neg", &dv_pyo3::DimensionalVariable::neg) - .def_static("new", &dv_pyo3::DimensionalVariable::new_, "value"_a, "unit"_a) - .def("not_equals", &dv_pyo3::DimensionalVariable::not_equals, "other"_a) - .def("powf", &dv_pyo3::DimensionalVariable::powf, "exp"_a) - .def("powi", &dv_pyo3::DimensionalVariable::powi, "exp"_a) - .def("rdiv_scalar", &dv_pyo3::DimensionalVariable::rdiv_scalar, "scalar"_a) - .def("sin", &dv_pyo3::DimensionalVariable::sin) - .def("sqrt", &dv_pyo3::DimensionalVariable::sqrt) - .def("sub", &dv_pyo3::DimensionalVariable::sub, "other"_a) - .def("tan", &dv_pyo3::DimensionalVariable::tan) - .def("to_string", &dv_pyo3::DimensionalVariable::to_string) - .def("value", &dv_pyo3::DimensionalVariable::value) - .def("value_in", &dv_pyo3::DimensionalVariable::value_in, "unit"_a); -} - -} \ No newline at end of file From 27856d5ab2533a85391bf3ad50adc2cec231d540 Mon Sep 17 00:00:00 2001 From: Alex Tacescu Date: Sun, 22 Mar 2026 22:23:19 -0700 Subject: [PATCH 3/9] Rework where everything is located --- .github/workflows/_python.yaml | 75 +++++----- .gitignore | 7 - AGENTS.md | 3 +- CMakeLists.txt | 2 +- README.md | 10 +- {generated/diplomat/c => c}/BUILD.bazel | 8 +- c/README.md | 5 + {ffi => core/ffi}/diplomat/BUILD.bazel | 0 {ffi => core/ffi}/diplomat/Cargo.toml | 2 +- {ffi => core/ffi}/diplomat/src/lib.rs | 0 cpp/BUILD.bazel | 39 +++++- cpp/README.md | 6 +- docs/docs/c_cpp.md | 10 +- docs/docs/dev/code.md | 11 +- docs/docs/intro.md | 12 ++ docs/docs/python.md | 24 +++- examples/README.md | 2 +- examples/c/BUILD.bazel | 2 +- examples/cpp/BUILD.bazel | 2 +- generated/diplomat/cpp/BUILD.bazel | 38 ----- generated/diplomat/nanobind/BUILD.bazel | 72 ---------- python/BUILD.bazel | 177 +++++++++++++++++++++++- python/dv_py/__init__.py | 4 +- python/package_metadata.bzl | 35 +++++ tools/update_versions.py | 33 ++++- 25 files changed, 390 insertions(+), 189 deletions(-) rename {generated/diplomat/c => c}/BUILD.bazel (75%) create mode 100644 c/README.md rename {ffi => core/ffi}/diplomat/BUILD.bazel (100%) rename {ffi => core/ffi}/diplomat/Cargo.toml (95%) rename {ffi => core/ffi}/diplomat/src/lib.rs (100%) delete mode 100644 generated/diplomat/cpp/BUILD.bazel delete mode 100644 generated/diplomat/nanobind/BUILD.bazel create mode 100644 python/package_metadata.bzl diff --git a/.github/workflows/_python.yaml b/.github/workflows/_python.yaml index 3910ca2..6b8a18c 100644 --- a/.github/workflows/_python.yaml +++ b/.github/workflows/_python.yaml @@ -12,59 +12,45 @@ jobs: # ---------------------------------------------------------------------------- python-build-wheels: - name: Build wheels on ${{ matrix.platform.os }} (${{ matrix.platform.target }}) + name: Build wheels on ${{ matrix.platform.runner }} runs-on: ${{ matrix.platform.runner }} strategy: fail-fast: false matrix: platform: - # Linux - - { - os: linux, - runner: ubuntu-latest, - target: x86_64-unknown-linux-gnu, - } # x86 64-bit - - { - os: linux, - runner: ubuntu-latest, - target: aarch64-unknown-linux-gnu, - } # Arm 64-bit - - { - os: linux, - runner: ubuntu-latest, - target: armv7-unknown-linux-gnueabihf, - } # Arm 32-bit - # macOS - - { os: macos, runner: macos-latest, target: universal2-apple-darwin } # MacOS Universal - # Windows - - { - os: windows, - runner: windows-latest, - target: x86_64-pc-windows-msvc, - } # x86 64-bit + - { runner: ubuntu-latest, artifact: linux-x86_64 } + - { runner: macos-13, artifact: macos-x86_64 } + - { runner: macos-14, artifact: macos-arm64 } + - { runner: windows-latest, artifact: windows-x86_64 } + env: + CI: true + BAZELISK_ALLOW_ENVS: Y steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Setup Python - uses: actions/setup-python@v4 + - name: Cache Bazel + uses: actions/cache@v4 with: - python-version: "3.12" + path: ~/.cache/bazel + key: bazel-${{ runner.os }} + restore-keys: bazel-${{ runner.os }} - name: Build wheels - uses: PyO3/maturin-action@v1 - with: - working-directory: python - target: ${{ matrix.platform.target }} - args: --release --strip --out dist --compatibility pypi - manylinux: ${{ matrix.platform.os == 'linux' && 'auto' || null }} + shell: bash + run: | + bazel build //python:wheel.dist + BAZEL_BIN="$(bazel info bazel-bin)" + mkdir -p dist + cp "${BAZEL_BIN}/python/dist/"*.whl dist/ + - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-${{ matrix.platform.os }}-${{ matrix.platform.target }} - path: python/dist/*.whl + name: wheels-${{ matrix.platform.artifact }} + path: dist/*.whl # ---------------------------------------------------------------------------- # Test Python Bindings @@ -90,6 +76,23 @@ jobs: key: bazel-${{ runner.os }} restore-keys: bazel-${{ runner.os }} + - name: Setup Python 3.12 + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Download Linux wheel + uses: actions/download-artifact@v4 + with: + name: wheels-linux-x86_64 + path: dist/ + + - name: Smoke test built wheel + run: | + python -m pip install --upgrade pip + python -m pip install dist/*.whl + python -c "import dv_py; value = dv_py.DimensionalVariable(10, 'm').value(); print(value)" + - name: Test Python Bindings run: bazel test //python/... --test_output=errors --keep_going diff --git a/.gitignore b/.gitignore index d2850f2..d971247 100644 --- a/.gitignore +++ b/.gitignore @@ -19,12 +19,5 @@ __pycache__/ # CMake Build Directories build-*/ - -# Diplomat generated bindings are produced by Bazel/CMake at build time -generated/diplomat/** -!generated/diplomat/ -!generated/diplomat/**/ -!generated/diplomat/**/BUILD.bazel - # VSCode Settings .vscode/ diff --git a/AGENTS.md b/AGENTS.md index 74a1d91..e05357e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -93,7 +93,8 @@ This project is a library in multiple languages for handling units and checking - Raise and assert `DVError` for invalid operations. ### C/C++ (bindings) -- Bazel-facing bindings are generated under `generated/diplomat/{c,cpp}`. +- The Rust Diplomat bridge lives under `core/ffi/diplomat`. +- Bazel-facing generated bindings live in the language directories: `c/`, `cpp/`, and `python/`. - `cpp/include/dv.hpp` is a thin compatibility wrapper over the generated Diplomat C++ bindings. - CMake support is minimal; prefer Bazel for consistency. diff --git a/CMakeLists.txt b/CMakeLists.txt index 52ebf98..bf87256 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ include(ExternalProject) find_program(BAZEL_EXECUTABLE bazel REQUIRED) find_program(CARGO_EXECUTABLE cargo REQUIRED) -set(DV_BRIDGE_DIR ${CMAKE_CURRENT_LIST_DIR}/ffi/diplomat) +set(DV_BRIDGE_DIR ${CMAKE_CURRENT_LIST_DIR}/core/ffi/diplomat) set(DV_BRIDGE_ENTRY ${DV_BRIDGE_DIR}/src/lib.rs) set(DV_CODEGEN_ROOT ${CMAKE_BINARY_DIR}/generated/diplomat) set(DV_CODEGEN_C_DIR ${DV_CODEGEN_ROOT}/c) diff --git a/README.md b/README.md index 9765276..ef11653 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,14 @@ DV is a package that keeps track of units, and allows you to perform math while - Java (Planned on [GH-6](https://github.com/alextac98/dv/issues/6)) - Matlab (Planned on [GH-7](https://github.com/alextac98/dv/issues/7)) +## Repository structure + +- `core/`: Rust core logic and the published Rust crate +- `core/ffi/diplomat/`: Rust-owned Diplomat bridge crate +- `python/`: Python package, wrapper, tests, and Bazel Python binding targets +- `c/`: C binding targets +- `cpp/`: C++ binding targets and the `dv.hpp` compatibility wrapper + ## Contributing to the project This project is always a work in progress. We welcome contributions, small or large! Please visit this page to learn more! https://dv.alextac.com/docs/category/developers-guides @@ -27,4 +35,4 @@ This project is licensed under the Apache License, Version 2.0 (the "License"). Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -Copyright © 2025 Alex Tacescu \ No newline at end of file +Copyright © 2026 Alex Tacescu diff --git a/generated/diplomat/c/BUILD.bazel b/c/BUILD.bazel similarity index 75% rename from generated/diplomat/c/BUILD.bazel rename to c/BUILD.bazel index 8ebed6a..9bb230e 100644 --- a/generated/diplomat/c/BUILD.bazel +++ b/c/BUILD.bazel @@ -4,7 +4,7 @@ package(default_visibility = ["//visibility:public"]) genrule( name = "codegen_c", - srcs = ["//ffi/diplomat:src/lib.rs"], + srcs = ["//core/ffi/diplomat:src/lib.rs"], outs = [ "BaseUnits.d.h", "BaseUnits.h", @@ -13,7 +13,7 @@ genrule( "diplomat_runtime.h", ], tools = ["//tools/diplomat_codegen:diplomat_codegen"], - cmd = "$(location //tools/diplomat_codegen:diplomat_codegen) c $(RULEDIR) --entry $(location //ffi/diplomat:src/lib.rs)", + cmd = "$(location //tools/diplomat_codegen:diplomat_codegen) c $(RULEDIR) --entry $(location //core/ffi/diplomat:src/lib.rs)", ) filegroup( @@ -22,10 +22,10 @@ filegroup( ) cc_library( - name = "dv_diplomat_c", + name = "dv_c", hdrs = [":generated_headers"], includes = ["."], deps = [ - "//ffi/diplomat:dv_diplomat_capi_static", + "//core/ffi/diplomat:dv_diplomat_capi_static", ], ) diff --git a/c/README.md b/c/README.md new file mode 100644 index 0000000..ab668a2 --- /dev/null +++ b/c/README.md @@ -0,0 +1,5 @@ +# dv C Bindings + +The Rust Diplomat bridge lives in `core/ffi/diplomat/`, while the Bazel-facing C binding target lives in this directory. + +- C target: `//c:dv_c` diff --git a/ffi/diplomat/BUILD.bazel b/core/ffi/diplomat/BUILD.bazel similarity index 100% rename from ffi/diplomat/BUILD.bazel rename to core/ffi/diplomat/BUILD.bazel diff --git a/ffi/diplomat/Cargo.toml b/core/ffi/diplomat/Cargo.toml similarity index 95% rename from ffi/diplomat/Cargo.toml rename to core/ffi/diplomat/Cargo.toml index 1caa49e..1751a3f 100644 --- a/ffi/diplomat/Cargo.toml +++ b/core/ffi/diplomat/Cargo.toml @@ -14,7 +14,7 @@ crate-type = ["rlib", "staticlib", "cdylib"] [dependencies.dv_rs] package = "dv" -path = "../../core" +path = "../.." [dependencies] diplomat = "0.14.0" diff --git a/ffi/diplomat/src/lib.rs b/core/ffi/diplomat/src/lib.rs similarity index 100% rename from ffi/diplomat/src/lib.rs rename to core/ffi/diplomat/src/lib.rs diff --git a/cpp/BUILD.bazel b/cpp/BUILD.bazel index 9441094..7b1b083 100644 --- a/cpp/BUILD.bazel +++ b/cpp/BUILD.bazel @@ -2,6 +2,31 @@ load("@rules_cc//cc:defs.bzl", "cc_library") package(default_visibility = ["//visibility:public"]) +genrule( + name = "codegen_cpp", + srcs = ["//core/ffi/diplomat:src/lib.rs"], + outs = [ + "BaseUnits.d.hpp", + "BaseUnits.hpp", + "DimensionalVariable.d.hpp", + "DimensionalVariable.hpp", + "diplomat_runtime.hpp", + ], + tools = ["//tools/diplomat_codegen:diplomat_codegen"], + cmd = "$(location //tools/diplomat_codegen:diplomat_codegen) cpp $(RULEDIR) --entry $(location //core/ffi/diplomat:src/lib.rs)", +) + +filegroup( + name = "generated_headers", + srcs = [":codegen_cpp"], +) + +cc_library( + name = "generated_cpp_headers", + hdrs = [":generated_headers"], + includes = ["."], +) + alias( name = "dv_headers", actual = ":dv_cpp", @@ -9,12 +34,22 @@ alias( alias( name = "dv_c", - actual = "//generated/diplomat/c:dv_diplomat_c", + actual = "//c:dv_c", +) + +cc_library( + name = "dv_generated", + hdrs = [":generated_headers"], + includes = ["."], + deps = [ + ":generated_cpp_headers", + "//core/ffi/diplomat:dv_diplomat_capi_static", + ], ) cc_library( name = "dv_cpp", hdrs = ["include/dv.hpp"], includes = ["include"], - deps = ["//generated/diplomat/cpp:dv_diplomat_cpp"], + deps = [":dv_generated"], ) diff --git a/cpp/README.md b/cpp/README.md index fbe77d4..36aaac8 100644 --- a/cpp/README.md +++ b/cpp/README.md @@ -1,10 +1,10 @@ # dv C/C++ Bindings -The Bazel-facing C/C++ bindings now come from Diplomat-generated sources under `generated/diplomat/`. +The Rust Diplomat bridge lives in `core/ffi/diplomat/`, while the Bazel-facing C/C++ binding targets live directly in the language directories. - C target alias: `//cpp:dv_c` - C++ target alias: `//cpp:dv_cpp` See: -- `/Users/alex/code/alextac98/dv/generated/diplomat/c` -- `/Users/alex/code/alextac98/dv/generated/diplomat/cpp` +- `/Users/alex/code/alextac98/dv/c` +- `/Users/alex/code/alextac98/dv/cpp` diff --git a/docs/docs/c_cpp.md b/docs/docs/c_cpp.md index a1da79a..e08839f 100644 --- a/docs/docs/c_cpp.md +++ b/docs/docs/c_cpp.md @@ -15,7 +15,7 @@ For Bazel, make sure you properly have both Rust and C/C++ toolchains (ideally h ## C++ -DV exposes generated C and C++ bindings via Diplomat. +DV exposes generated C and C++ bindings via Diplomat. The Rust bridge crate lives in `core/ffi/diplomat`, while the Bazel targets for each language live in `c/` and `cpp/`. ```cpp #include "DimensionalVariable.hpp" @@ -44,10 +44,12 @@ load("@rules_cc//cc:defs.bzl", "cc_binary") cc_binary( name = "example", srcs = ["main.cpp"], - deps = ["@dv//cpp:dv_cpp"], # alias to generated Diplomat C++ bindings + deps = ["@dv//cpp:dv_cpp"], # compatibility wrapper target ) ``` +If you want the raw generated C++ API directly, depend on `@dv//cpp:dv_generated`. + ### Static vs dynamic linking - Default in this repo uses static linking to avoid runtime `rpath` issues. @@ -83,10 +85,10 @@ load("@rules_cc//cc:defs.bzl", "cc_binary") cc_binary( name = "example_c", srcs = ["main.c"], - deps = ["@dv//cpp:dv_c"], + deps = ["@dv//c:dv_c"], ) ``` ### CMake -CMake support is being updated for the Diplomat-based binding generation. Use Bazel for now. +CMake support shells out to the Rust Diplomat bridge in `core/ffi/diplomat` to regenerate C and C++ headers in the build tree. Bazel remains the primary development path. diff --git a/docs/docs/dev/code.md b/docs/docs/dev/code.md index 075a148..5611297 100644 --- a/docs/docs/dev/code.md +++ b/docs/docs/dev/code.md @@ -33,7 +33,10 @@ bazel run //core:serve_docs ```shell # Build the extension module (.so) -bazel build //generated/diplomat/nanobind:dv_pyo3.so +bazel build //python:dv_ext.so + +# Build a distributable wheel +bazel build //python:wheel.dist # Run tests bazel test //python:test_dv @@ -62,9 +65,11 @@ The core of the library is written in rust, and lives in the `core` directory. L | Path | Description | |---|---| | `core/` | Rust crate + core functionality | +| `core/ffi/diplomat/` | Rust-owned Diplomat bridge crate | +| `c/` | C binding targets | | `docs/` | Docs site for users and developers | -| `cpp/` | C/C++ bindings | -| `python/` | Python bindings | +| `cpp/` | C++ bindings and compatibility wrapper | +| `python/` | Python bindings, wheel packaging, and tests | | `MODULE.bazel` | Bazel module dependencies | ### Contributing Units diff --git a/docs/docs/intro.md b/docs/docs/intro.md index f2297b8..6fc7524 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -107,3 +107,15 @@ Status | Language | Notes 🛠 Planned | Matlab | MEX wrapper Cross‑language parity tests will ensure identical exponent math and error strings (where sensible). + +## Repository Layout + +The repository is organized around one Rust source of truth plus language-specific package directories: + +| Path | Purpose | +| --- | --- | +| `core/` | Core Rust logic and the published Rust crate | +| `core/ffi/diplomat/` | Rust-owned Diplomat bridge crate used for cross-language code generation | +| `python/` | Python package wrapper, wheel packaging, tests, and generated extension build targets | +| `c/` | C binding targets | +| `cpp/` | C++ binding targets and the `dv.hpp` compatibility wrapper | diff --git a/docs/docs/python.md b/docs/docs/python.md index 31ca60a..401c423 100644 --- a/docs/docs/python.md +++ b/docs/docs/python.md @@ -21,13 +21,13 @@ DV supports Python via Diplomat-generated nanobind bindings, with a thin Python The project currently builds for these architectures: * Linux * x86 64-bit - * Arm 64-bit (aarch64-gnu) - * Arm 32-bit (armv7-gnueabihf) * MacOS * Arm 64-bit * x86 64-bit * Windows * x86 64-bit + +The current Bazel-managed PyPI wheel build is pinned to Python 3.12 (`cp312`). ## Quickstart @@ -40,7 +40,7 @@ pip install dv-py Then import and use it in your Python code: ```python -from dv import DV +from dv_py import DimensionalVariable as DV # Create dimensioned variables velocity = DV(10.0, "m/s") @@ -51,6 +51,21 @@ distance = velocity * time print(f"Distance: {distance.value_in('m')} m") ``` +## Build Targets + +For development in this repo: + +```bash +# Build the extension module +bazel build //python:dv_ext.so + +# Build the wheel +bazel build //python:wheel.dist + +# Run the Python test suite +bazel test //python:test_dv +``` + ## Examples @@ -64,7 +79,8 @@ This example demonstrates: - Error handling for incompatible operations """ -from dv import DV, DVError +from dv_py import DVError +from dv_py import DimensionalVariable as DV def main(): diff --git a/examples/README.md b/examples/README.md index 3cdb709..e30affc 100644 --- a/examples/README.md +++ b/examples/README.md @@ -22,5 +22,5 @@ CMake examples are temporarily unavailable during the Diplomat migration. Use th Notes -- The C and C++ examples now use Diplomat-generated C/C++ bindings (via `//generated/diplomat/...`) and the `ffi/diplomat` Rust bridge. +- The C and C++ examples now use Diplomat-generated bindings from `//c` and `//cpp`, backed by the Rust bridge in `core/ffi/diplomat`. - The Rust example depends on the core crate directly via a path dependency and uses Bazel via `//core:dv_rs` when built with Bazel. diff --git a/examples/c/BUILD.bazel b/examples/c/BUILD.bazel index 1805ca4..c66abaa 100644 --- a/examples/c/BUILD.bazel +++ b/examples/c/BUILD.bazel @@ -5,5 +5,5 @@ package(default_visibility = ["//visibility:public"]) cc_binary( name = "c_example", srcs = ["main.c"], - deps = ["//generated/diplomat/c:dv_diplomat_c"], + deps = ["//c:dv_c"], ) diff --git a/examples/cpp/BUILD.bazel b/examples/cpp/BUILD.bazel index 3b43cbf..f969da4 100644 --- a/examples/cpp/BUILD.bazel +++ b/examples/cpp/BUILD.bazel @@ -5,5 +5,5 @@ package(default_visibility = ["//visibility:public"]) cc_binary( name = "cpp_example", srcs = ["main.cpp"], - deps = ["//generated/diplomat/cpp:dv_diplomat_cpp"], + deps = ["//cpp:dv_generated"], ) diff --git a/generated/diplomat/cpp/BUILD.bazel b/generated/diplomat/cpp/BUILD.bazel deleted file mode 100644 index 8b67178..0000000 --- a/generated/diplomat/cpp/BUILD.bazel +++ /dev/null @@ -1,38 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -package(default_visibility = ["//visibility:public"]) - -genrule( - name = "codegen_cpp", - srcs = ["//ffi/diplomat:src/lib.rs"], - outs = [ - "BaseUnits.d.hpp", - "BaseUnits.hpp", - "DimensionalVariable.d.hpp", - "DimensionalVariable.hpp", - "diplomat_runtime.hpp", - ], - tools = ["//tools/diplomat_codegen:diplomat_codegen"], - cmd = "$(location //tools/diplomat_codegen:diplomat_codegen) cpp $(RULEDIR) --entry $(location //ffi/diplomat:src/lib.rs)", -) - -filegroup( - name = "generated_headers", - srcs = [":codegen_cpp"], -) - -cc_library( - name = "headers", - hdrs = [":generated_headers"], - includes = ["."], -) - -cc_library( - name = "dv_diplomat_cpp", - hdrs = [":generated_headers"], - includes = ["."], - deps = [ - ":headers", - "//ffi/diplomat:dv_diplomat_capi_static", - ], -) diff --git a/generated/diplomat/nanobind/BUILD.bazel b/generated/diplomat/nanobind/BUILD.bazel deleted file mode 100644 index ae5077c..0000000 --- a/generated/diplomat/nanobind/BUILD.bazel +++ /dev/null @@ -1,72 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") - -package(default_visibility = ["//visibility:public"]) - -NANOBIND_REPO = "external/rules_python++pip+pypi_312_nanobind/site-packages/nanobind" - -genrule( - name = "codegen_nanobind", - srcs = ["//ffi/diplomat:src/lib.rs"], - outs = [ - "dv_pyo3_ext.cpp", - "include/BaseUnits.d.hpp", - "include/BaseUnits.hpp", - "include/DimensionalVariable.d.hpp", - "include/DimensionalVariable.hpp", - "include/diplomat_nanobind_common.hpp", - "include/diplomat_runtime.hpp", - "sub_modules/dv_pyo3/BaseUnits_binding.cpp", - "sub_modules/dv_pyo3/DimensionalVariable_binding.cpp", - ], - tools = ["//tools/diplomat_codegen:diplomat_codegen"], - cmd = "$(location //tools/diplomat_codegen:diplomat_codegen) nanobind $(RULEDIR) --entry $(location //ffi/diplomat:src/lib.rs) --config nanobind.lib_name=dv_pyo3", -) - -filegroup( - name = "generated_headers", - srcs = [ - "include/BaseUnits.d.hpp", - "include/BaseUnits.hpp", - "include/DimensionalVariable.d.hpp", - "include/DimensionalVariable.hpp", - "include/diplomat_nanobind_common.hpp", - "include/diplomat_runtime.hpp", - ], -) - -cc_library( - name = "headers", - hdrs = [":generated_headers"], - includes = ["include"], -) - -cc_library( - name = "nanobind_wheel_files", - hdrs = ["@pypi//nanobind:extracted_whl_files"], -) - -cc_binary( - name = "dv_pyo3.so", - srcs = [ - "dv_pyo3_ext.cpp", - "sub_modules/dv_pyo3/BaseUnits_binding.cpp", - "sub_modules/dv_pyo3/DimensionalVariable_binding.cpp", - "@@rules_python++pip+pypi_312_nanobind//:site-packages/nanobind/src/nb_combined.cpp", - ], - copts = [ - "-std=c++17", - "-faligned-allocation", - "-fvisibility=hidden", - "-I" + NANOBIND_REPO + "/include", - "-I" + NANOBIND_REPO + "/src", - "-I" + NANOBIND_REPO + "/ext/robin_map/include", - ], - deps = [ - ":headers", - ":nanobind_wheel_files", - "//ffi/diplomat:dv_diplomat_capi_static", - "@python_3_12//:libpython", - "@python_3_12//:python_headers", - ], - linkshared = True, -) diff --git a/python/BUILD.bazel b/python/BUILD.bazel index c9a5d0a..729473e 100644 --- a/python/BUILD.bazel +++ b/python/BUILD.bazel @@ -1,17 +1,155 @@ load("@rules_python//python:defs.bzl", "py_library", "py_test") +load("@rules_python//python:packaging.bzl", "py_wheel") +load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") +load(":package_metadata.bzl", "PYTHON_PACKAGE_AUTHOR", "PYTHON_PACKAGE_AUTHOR_EMAIL", "PYTHON_PACKAGE_CLASSIFIERS", "PYTHON_PACKAGE_LICENSE", "PYTHON_PACKAGE_NAME", "PYTHON_PACKAGE_PROJECT_URLS", "PYTHON_PACKAGE_REQUIRES", "PYTHON_PACKAGE_SUMMARY", "PYTHON_PACKAGE_VERSION") package(default_visibility = ["//visibility:public"]) +NANOBIND_REPO = "external/rules_python++pip+pypi_312_nanobind/site-packages/nanobind" + # Export files for version management and packaging metadata exports_files([ + "package_metadata.bzl", "pyproject.toml", ]) +config_setting( + name = "linux_x86_64", + constraint_values = [ + "@platforms//cpu:x86_64", + "@platforms//os:linux", + ], +) + +config_setting( + name = "linux_aarch64", + constraint_values = [ + "@platforms//cpu:aarch64", + "@platforms//os:linux", + ], +) + +config_setting( + name = "macos_x86_64", + constraint_values = [ + "@platforms//cpu:x86_64", + "@platforms//os:macos", + ], +) + +config_setting( + name = "macos_arm64", + constraint_values = [ + "@platforms//cpu:arm64", + "@platforms//os:macos", + ], +) + +config_setting( + name = "windows_x86_64", + constraint_values = [ + "@platforms//cpu:x86_64", + "@platforms//os:windows", + ], +) + +genrule( + name = "codegen_python_nanobind", + srcs = ["//core/ffi/diplomat:src/lib.rs"], + outs = [ + "dv_ext_ext.cpp", + "include/BaseUnits.d.hpp", + "include/BaseUnits.hpp", + "include/DimensionalVariable.d.hpp", + "include/DimensionalVariable.hpp", + "include/diplomat_nanobind_common.hpp", + "include/diplomat_runtime.hpp", + "sub_modules/dv_ext/BaseUnits_binding.cpp", + "sub_modules/dv_ext/DimensionalVariable_binding.cpp", + ], + tools = ["//tools/diplomat_codegen:diplomat_codegen"], + cmd = "$(location //tools/diplomat_codegen:diplomat_codegen) nanobind $(RULEDIR) --entry $(location //core/ffi/diplomat:src/lib.rs) --config nanobind.lib_name=dv_ext", +) + +filegroup( + name = "generated_nanobind_headers", + srcs = [ + "include/BaseUnits.d.hpp", + "include/BaseUnits.hpp", + "include/DimensionalVariable.d.hpp", + "include/DimensionalVariable.hpp", + "include/diplomat_nanobind_common.hpp", + "include/diplomat_runtime.hpp", + ], +) + +cc_library( + name = "generated_nanobind_header_lib", + hdrs = [":generated_nanobind_headers"], + includes = ["include"], +) + +cc_library( + name = "nanobind_wheel_files", + hdrs = ["@pypi//nanobind:extracted_whl_files"], +) + +cc_binary( + name = "dv_ext_native", + srcs = [ + "dv_ext_ext.cpp", + "sub_modules/dv_ext/BaseUnits_binding.cpp", + "sub_modules/dv_ext/DimensionalVariable_binding.cpp", + "@@rules_python++pip+pypi_312_nanobind//:site-packages/nanobind/src/nb_combined.cpp", + ], + copts = select({ + ":windows_x86_64": [ + "/std:c++17", + "/I" + NANOBIND_REPO + "/include", + "/I" + NANOBIND_REPO + "/src", + "/I" + NANOBIND_REPO + "/ext/robin_map/include", + ], + "//conditions:default": [ + "-std=c++17", + "-faligned-allocation", + "-fvisibility=hidden", + "-I" + NANOBIND_REPO + "/include", + "-I" + NANOBIND_REPO + "/src", + "-I" + NANOBIND_REPO + "/ext/robin_map/include", + ], + }), + deps = [ + ":generated_nanobind_header_lib", + ":nanobind_wheel_files", + "//core/ffi/diplomat:dv_diplomat_capi_static", + "@python_3_12//:libpython", + "@python_3_12//:python_headers", + ], + linkshared = True, +) + +alias( + name = "dv_ext.so", + actual = ":dv_ext_native", +) + genrule( - name = "dv_pyo3_ext_pkg", - srcs = ["//generated/diplomat/nanobind:dv_pyo3.so"], - outs = ["dv_py/dv_pyo3.so"], - cmd = "cp $< $@", + name = "dv_ext_pkg", + srcs = [":dv_ext_native"], + outs = [ + "dv_py/dv_ext.so", + "dv_py/dv_ext.pyd", + ], + cmd_bash = "cp $< $(RULEDIR)/dv_py/dv_ext.so && cp $< $(RULEDIR)/dv_py/dv_ext.pyd", + cmd_bat = "copy /Y \"$(location :dv_ext_native)\" \"$(RULEDIR)\\dv_py\\dv_ext.so\" >NUL && copy /Y \"$(location :dv_ext_native)\" \"$(RULEDIR)\\dv_py\\dv_ext.pyd\" >NUL", +) + +filegroup( + name = "wheel_contents", + srcs = [ + ":dv_ext_pkg", + "dv_py/__init__.py", + ], ) # Python library that exposes the generated nanobind extension module @@ -20,11 +158,40 @@ py_library( srcs = [ "dv_py/__init__.py", ], - data = [":dv_pyo3_ext_pkg"], + data = [":dv_ext_pkg"], imports = ["."], visibility = ["//visibility:public"], ) +py_wheel( + name = "wheel", + abi = "cp312", + author = PYTHON_PACKAGE_AUTHOR, + author_email = PYTHON_PACKAGE_AUTHOR_EMAIL, + classifiers = PYTHON_PACKAGE_CLASSIFIERS, + description_file = "pip-readme.md", + distribution = PYTHON_PACKAGE_NAME, + dist_folder = "dist", + license = PYTHON_PACKAGE_LICENSE, + platform = select( + { + ":linux_aarch64": "linux_aarch64", + ":linux_x86_64": "linux_x86_64", + ":macos_arm64": "macosx_11_0_arm64", + ":macos_x86_64": "macosx_10_15_x86_64", + ":windows_x86_64": "win_amd64", + }, + no_match_error = "Wheel platform tags are only configured for Linux/macOS x86_64 and arm64, plus Windows x86_64.", + ), + project_urls = PYTHON_PACKAGE_PROJECT_URLS, + python_requires = PYTHON_PACKAGE_REQUIRES, + python_tag = "cp312", + strip_path_prefixes = ["python"], + summary = PYTHON_PACKAGE_SUMMARY, + version = PYTHON_PACKAGE_VERSION, + deps = [":wheel_contents"], +) + # ============================================================================= # Tests # ============================================================================= diff --git a/python/dv_py/__init__.py b/python/dv_py/__init__.py index e730440..c2073f5 100644 --- a/python/dv_py/__init__.py +++ b/python/dv_py/__init__.py @@ -5,9 +5,9 @@ from typing import Any try: - from . import dv_pyo3 as _nb + from . import dv_ext as _nb except ImportError: - import dv_pyo3 as _nb + import dv_ext as _nb class DVError(Exception): diff --git a/python/package_metadata.bzl b/python/package_metadata.bzl new file mode 100644 index 0000000..01e2bf8 --- /dev/null +++ b/python/package_metadata.bzl @@ -0,0 +1,35 @@ +PYTHON_PACKAGE_NAME = "dv_py" +PYTHON_PACKAGE_VERSION = "0.3.3" + +PYTHON_PACKAGE_SUMMARY = "Python bindings for dv (DimensionalVariable) - keeping track of units and dimensions for physical quantities" +PYTHON_PACKAGE_REQUIRES = ">=3.8" + +PYTHON_PACKAGE_AUTHOR = "Alex Tacescu" +PYTHON_PACKAGE_AUTHOR_EMAIL = "alextac98@gmail.com" +PYTHON_PACKAGE_LICENSE = "Apache-2.0" + +PYTHON_PACKAGE_CLASSIFIERS = [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", + "Topic :: Scientific/Engineering", + "Topic :: Scientific/Engineering :: Physics", + "Topic :: Software Development :: Libraries", +] + +PYTHON_PACKAGE_PROJECT_URLS = { + "Homepage": "https://dv.alextac.com", + "Documentation": "https://dv.alextac.com/docs/python", + "Repository": "https://github.com/alextac98/dv", + "Issues": "https://github.com/alextac98/dv/issues", +} diff --git a/tools/update_versions.py b/tools/update_versions.py index bf3ab6c..3f56ead 100644 --- a/tools/update_versions.py +++ b/tools/update_versions.py @@ -2,6 +2,7 @@ import toml import requests import os +import re from pathlib import Path @@ -131,9 +132,23 @@ def update_python(versions: tuple, dryrun: bool = False) -> bool: with open(pyproject_path, "r") as f: pyproject_toml = toml.load(f) + package_metadata_path = workspace_root / "python" / "package_metadata.bzl" + package_metadata_text = package_metadata_path.read_text() + version_match = re.search( + r'^PYTHON_PACKAGE_VERSION = "([^"]+)"$', + package_metadata_text, + re.MULTILINE, + ) + if not version_match: + raise ValueError( + f"Unable to find PYTHON_PACKAGE_VERSION in {package_metadata_path}" + ) + current_pyproject_version = pyproject_toml["project"]["version"] + current_build_version = version_match.group(1) versions_match_pyproject = current_pyproject_version == version_str + versions_match_build = current_build_version == version_str version_not_used = version_str not in pypi_versions has_passed = True @@ -147,15 +162,17 @@ def update_python(versions: tuple, dryrun: bool = False) -> bool: print("\t❌ Python package version is already published on PyPI.") has_passed &= False - if versions_match_pyproject: + if versions_match_pyproject and versions_match_build: # Versions already match - print("\t✅ Python pyproject.toml version is consistent.") + print("\t✅ Python package version metadata is consistent.") has_passed &= True else: if dryrun: print("\t❌ Python package version is inconsistent.") if not versions_match_pyproject: print(f"\t\tpyproject.toml: {current_pyproject_version}") + if not versions_match_build: + print(f"\t\tpackage_metadata.bzl: {current_build_version}") print(f"\t\tVersion.toml: {version_str}") has_passed &= False elif not version_not_used: @@ -173,6 +190,18 @@ def update_python(versions: tuple, dryrun: bool = False) -> bool: f"\t⚠️ Updated Python pyproject.toml version from {current_pyproject_version} to {version_str}." ) + if not versions_match_build: + updated_package_metadata_text = re.sub( + r'^PYTHON_PACKAGE_VERSION = "([^"]+)"$', + f'PYTHON_PACKAGE_VERSION = "{version_str}"', + package_metadata_text, + flags = re.MULTILINE, + ) + package_metadata_path.write_text(updated_package_metadata_text) + print( + f"\t⚠️ Updated Python package_metadata.bzl version from {current_build_version} to {version_str}." + ) + has_passed &= True return has_passed From a55fe244b6c41dd858992dbe08c4b5af0e2b0d98 Mon Sep 17 00:00:00 2001 From: Alex Tacescu Date: Sun, 22 Mar 2026 22:49:39 -0700 Subject: [PATCH 4/9] Support many different Python versions --- .github/workflows/_python.yaml | 24 +++-- MODULE.bazel | 35 ++++++- docs/docs/dev/code.md | 7 +- docs/docs/python.md | 9 +- python/BUILD.bazel | 169 ++++++++++++++++++--------------- python/package_metadata.bzl | 5 +- python/pyproject.toml | 4 +- python/wheels.bzl | 149 +++++++++++++++++++++++++++++ tests/BUILD.bazel | 2 +- tools/BUILD.bazel | 4 +- 10 files changed, 310 insertions(+), 98 deletions(-) create mode 100644 python/wheels.bzl diff --git a/.github/workflows/_python.yaml b/.github/workflows/_python.yaml index 6b8a18c..14271bc 100644 --- a/.github/workflows/_python.yaml +++ b/.github/workflows/_python.yaml @@ -22,6 +22,10 @@ jobs: - { runner: macos-13, artifact: macos-x86_64 } - { runner: macos-14, artifact: macos-arm64 } - { runner: windows-latest, artifact: windows-x86_64 } + python: + - { version: '3.10', target: wheel_cp310, tag: cp310, dist: dist_cp310 } + - { version: '3.11', target: wheel_cp311, tag: cp311, dist: dist_cp311 } + - { version: '3.12+', target: wheel_abi3, tag: abi3, dist: dist_abi3 } env: CI: true BAZELISK_ALLOW_ENVS: Y @@ -41,15 +45,15 @@ jobs: - name: Build wheels shell: bash run: | - bazel build //python:wheel.dist + bazel build //python:${{ matrix.python.target }}.dist BAZEL_BIN="$(bazel info bazel-bin)" mkdir -p dist - cp "${BAZEL_BIN}/python/dist/"*.whl dist/ + cp "${BAZEL_BIN}/python/${{ matrix.python.dist }}/"*.whl dist/ - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-${{ matrix.platform.artifact }} + name: wheels-${{ matrix.platform.artifact }}-${{ matrix.python.tag }} path: dist/*.whl # ---------------------------------------------------------------------------- @@ -60,6 +64,14 @@ jobs: name: Test Python Bindings runs-on: ubuntu-latest needs: python-build-wheels + strategy: + fail-fast: false + matrix: + python: + - { version: '3.10', tag: cp310 } + - { version: '3.11', tag: cp311 } + - { version: '3.12', tag: abi3 } + - { version: '3.13', tag: abi3 } env: CI: true BAZELISK_ALLOW_ENVS: Y @@ -76,15 +88,15 @@ jobs: key: bazel-${{ runner.os }} restore-keys: bazel-${{ runner.os }} - - name: Setup Python 3.12 + - name: Setup Python ${{ matrix.python.version }} uses: actions/setup-python@v5 with: - python-version: "3.12" + python-version: ${{ matrix.python.version }} - name: Download Linux wheel uses: actions/download-artifact@v4 with: - name: wheels-linux-x86_64 + name: wheels-linux-x86_64-${{ matrix.python.tag }} path: dist/ - name: Smoke test built wheel diff --git a/MODULE.bazel b/MODULE.bazel index 0b257c5..35912b6 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -69,12 +69,26 @@ register_toolchains( # Python Setup # ============================================================================== -# Register Python 3.12 toolchain +# Register Python toolchains for supported wheel builds python = use_extension("@rules_python//python/extensions:python.bzl", "python") +python.defaults( + python_version = "3.12", +) +python.toolchain( + python_version = "3.10", +) +python.toolchain( + python_version = "3.11", +) python.toolchain( python_version = "3.12", ) -use_repo(python, "python_3_12") +use_repo( + python, + "python_3_10", + "python_3_11", + "python_3_12", +) # Set up pip dependencies pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") @@ -83,7 +97,22 @@ pip.parse( python_version = "3.12", requirements_lock = "//:tools/requirements.txt", ) -use_repo(pip, "pypi") +pip.parse( + hub_name = "pypi_310", + python_version = "3.10", + requirements_lock = "//:tools/requirements.txt", +) +pip.parse( + hub_name = "pypi_311", + python_version = "3.11", + requirements_lock = "//:tools/requirements.txt", +) +pip.parse( + hub_name = "pypi_312", + python_version = "3.12", + requirements_lock = "//:tools/requirements.txt", +) +use_repo(pip, "pypi", "pypi_310", "pypi_311", "pypi_312") # ============================================================================== # JavaScript / Node.js Setup diff --git a/docs/docs/dev/code.md b/docs/docs/dev/code.md index 5611297..1d67d0a 100644 --- a/docs/docs/dev/code.md +++ b/docs/docs/dev/code.md @@ -35,8 +35,11 @@ bazel run //core:serve_docs # Build the extension module (.so) bazel build //python:dv_ext.so -# Build a distributable wheel -bazel build //python:wheel.dist +# Build the default development wheel (CPython 3.12+ abi3) +bazel build //python:wheel_abi3.dist + +# Build distributable wheels for all supported Python versions +bazel build //python:wheel_cp310.dist //python:wheel_cp311.dist //python:wheel_abi3.dist # Run tests bazel test //python:test_dv diff --git a/docs/docs/python.md b/docs/docs/python.md index 401c423..4b21b06 100644 --- a/docs/docs/python.md +++ b/docs/docs/python.md @@ -27,7 +27,7 @@ The project currently builds for these architectures: * Windows * x86 64-bit -The current Bazel-managed PyPI wheel build is pinned to Python 3.12 (`cp312`). +The current Bazel-managed PyPI wheel build publishes platform wheels for CPython 3.10, CPython 3.11, and a CPython 3.12+ `abi3` wheel. ## Quickstart @@ -59,8 +59,11 @@ For development in this repo: # Build the extension module bazel build //python:dv_ext.so -# Build the wheel -bazel build //python:wheel.dist +# Build the default development wheel (CPython 3.12) +bazel build //python:wheel_abi3.dist + +# Build wheels for all supported Python versions +bazel build //python:wheel_cp310.dist //python:wheel_cp311.dist //python:wheel_abi3.dist # Run the Python test suite bazel test //python:test_dv diff --git a/python/BUILD.bazel b/python/BUILD.bazel index 729473e..138248d 100644 --- a/python/BUILD.bazel +++ b/python/BUILD.bazel @@ -1,11 +1,13 @@ load("@rules_python//python:defs.bzl", "py_library", "py_test") -load("@rules_python//python:packaging.bzl", "py_wheel") -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") +load("@rules_cc//cc:defs.bzl", "cc_library") load(":package_metadata.bzl", "PYTHON_PACKAGE_AUTHOR", "PYTHON_PACKAGE_AUTHOR_EMAIL", "PYTHON_PACKAGE_CLASSIFIERS", "PYTHON_PACKAGE_LICENSE", "PYTHON_PACKAGE_NAME", "PYTHON_PACKAGE_PROJECT_URLS", "PYTHON_PACKAGE_REQUIRES", "PYTHON_PACKAGE_SUMMARY", "PYTHON_PACKAGE_VERSION") +load(":wheels.bzl", "dv_extension", "dv_runtime_package", "dv_wheel") package(default_visibility = ["//visibility:public"]) -NANOBIND_REPO = "external/rules_python++pip+pypi_312_nanobind/site-packages/nanobind" +NANOBIND_REPO_CP310 = "external/rules_python++pip+pypi_310_310_nanobind/site-packages/nanobind" +NANOBIND_REPO_CP311 = "external/rules_python++pip+pypi_311_311_nanobind/site-packages/nanobind" +NANOBIND_REPO_CP312 = "external/rules_python++pip+pypi_312_312_nanobind/site-packages/nanobind" # Export files for version management and packaging metadata exports_files([ @@ -89,67 +91,59 @@ cc_library( includes = ["include"], ) -cc_library( - name = "nanobind_wheel_files", - hdrs = ["@pypi//nanobind:extracted_whl_files"], -) - -cc_binary( - name = "dv_ext_native", - srcs = [ - "dv_ext_ext.cpp", - "sub_modules/dv_ext/BaseUnits_binding.cpp", - "sub_modules/dv_ext/DimensionalVariable_binding.cpp", - "@@rules_python++pip+pypi_312_nanobind//:site-packages/nanobind/src/nb_combined.cpp", - ], - copts = select({ - ":windows_x86_64": [ - "/std:c++17", - "/I" + NANOBIND_REPO + "/include", - "/I" + NANOBIND_REPO + "/src", - "/I" + NANOBIND_REPO + "/ext/robin_map/include", - ], - "//conditions:default": [ - "-std=c++17", - "-faligned-allocation", - "-fvisibility=hidden", - "-I" + NANOBIND_REPO + "/include", - "-I" + NANOBIND_REPO + "/src", - "-I" + NANOBIND_REPO + "/ext/robin_map/include", - ], +dv_extension( + name = "cp310", + nanobind_repo_path = NANOBIND_REPO_CP310, + nanobind_whl_files = "@@rules_python++pip+pypi_310_310_nanobind//:extracted_whl_files", + nanobind_combined_src = "@@rules_python++pip+pypi_310_310_nanobind//:site-packages/nanobind/src/nb_combined.cpp", + python_headers = "@python_3_10//:python_headers", + python_libs = "@python_3_10//:libpython", +) + +dv_extension( + name = "cp311", + nanobind_repo_path = NANOBIND_REPO_CP311, + nanobind_whl_files = "@@rules_python++pip+pypi_311_311_nanobind//:extracted_whl_files", + nanobind_combined_src = "@@rules_python++pip+pypi_311_311_nanobind//:site-packages/nanobind/src/nb_combined.cpp", + python_headers = "@python_3_11//:python_headers", + python_libs = "@python_3_11//:libpython", +) + +dv_extension( + name = "cp312", + nanobind_repo_path = NANOBIND_REPO_CP312, + nanobind_whl_files = "@@rules_python++pip+pypi_312_312_nanobind//:extracted_whl_files", + nanobind_combined_src = "@@rules_python++pip+pypi_312_312_nanobind//:site-packages/nanobind/src/nb_combined.cpp", + python_headers = "@python_3_12//:python_headers", + python_libs = "@python_3_12//:libpython", +) + +dv_extension( + name = "abi3", + nanobind_repo_path = NANOBIND_REPO_CP312, + nanobind_whl_files = "@@rules_python++pip+pypi_312_312_nanobind//:extracted_whl_files", + nanobind_combined_src = "@@rules_python++pip+pypi_312_312_nanobind//:site-packages/nanobind/src/nb_combined.cpp", + python_headers = "@python_3_12//:python_headers", + limited_api = True, + extra_deps = select({ + ":windows_x86_64": ["@@rules_python++python+python_3_12_x86_64-pc-windows-msvc//:abi3_interface"], + "//conditions:default": [], + }), + linkopts = select({ + ":macos_arm64": ["-undefined", "dynamic_lookup"], + ":macos_x86_64": ["-undefined", "dynamic_lookup"], + "//conditions:default": [], }), - deps = [ - ":generated_nanobind_header_lib", - ":nanobind_wheel_files", - "//core/ffi/diplomat:dv_diplomat_capi_static", - "@python_3_12//:libpython", - "@python_3_12//:python_headers", - ], - linkshared = True, ) alias( name = "dv_ext.so", - actual = ":dv_ext_native", + actual = ":dv_ext_native_cp312", ) -genrule( - name = "dv_ext_pkg", - srcs = [":dv_ext_native"], - outs = [ - "dv_py/dv_ext.so", - "dv_py/dv_ext.pyd", - ], - cmd_bash = "cp $< $(RULEDIR)/dv_py/dv_ext.so && cp $< $(RULEDIR)/dv_py/dv_ext.pyd", - cmd_bat = "copy /Y \"$(location :dv_ext_native)\" \"$(RULEDIR)\\dv_py\\dv_ext.so\" >NUL && copy /Y \"$(location :dv_ext_native)\" \"$(RULEDIR)\\dv_py\\dv_ext.pyd\" >NUL", -) - -filegroup( - name = "wheel_contents", - srcs = [ - ":dv_ext_pkg", - "dv_py/__init__.py", - ], +dv_runtime_package( + name = "dv_ext_pkg_cp312", + native_target = ":dv_ext_native_cp312", ) # Python library that exposes the generated nanobind extension module @@ -158,38 +152,63 @@ py_library( srcs = [ "dv_py/__init__.py", ], - data = [":dv_ext_pkg"], + data = [":dv_ext_pkg_cp312"], imports = ["."], visibility = ["//visibility:public"], ) -py_wheel( - name = "wheel", - abi = "cp312", +dv_wheel( + name = "wheel_cp310", + native_target = ":dv_ext_native_cp310", + abi = "cp310", + python_tag = "cp310", + dist_folder = "dist_cp310", + author = PYTHON_PACKAGE_AUTHOR, + author_email = PYTHON_PACKAGE_AUTHOR_EMAIL, + classifiers = PYTHON_PACKAGE_CLASSIFIERS, + description_file = "pip-readme.md", + distribution = PYTHON_PACKAGE_NAME, + license = PYTHON_PACKAGE_LICENSE, + project_urls = PYTHON_PACKAGE_PROJECT_URLS, + python_requires = PYTHON_PACKAGE_REQUIRES, + summary = PYTHON_PACKAGE_SUMMARY, + version = PYTHON_PACKAGE_VERSION, +) + +dv_wheel( + name = "wheel_cp311", + native_target = ":dv_ext_native_cp311", + abi = "cp311", + python_tag = "cp311", + dist_folder = "dist_cp311", author = PYTHON_PACKAGE_AUTHOR, author_email = PYTHON_PACKAGE_AUTHOR_EMAIL, classifiers = PYTHON_PACKAGE_CLASSIFIERS, description_file = "pip-readme.md", distribution = PYTHON_PACKAGE_NAME, - dist_folder = "dist", license = PYTHON_PACKAGE_LICENSE, - platform = select( - { - ":linux_aarch64": "linux_aarch64", - ":linux_x86_64": "linux_x86_64", - ":macos_arm64": "macosx_11_0_arm64", - ":macos_x86_64": "macosx_10_15_x86_64", - ":windows_x86_64": "win_amd64", - }, - no_match_error = "Wheel platform tags are only configured for Linux/macOS x86_64 and arm64, plus Windows x86_64.", - ), project_urls = PYTHON_PACKAGE_PROJECT_URLS, python_requires = PYTHON_PACKAGE_REQUIRES, + summary = PYTHON_PACKAGE_SUMMARY, + version = PYTHON_PACKAGE_VERSION, +) + +dv_wheel( + name = "wheel_abi3", + native_target = ":dv_ext_native_abi3", + abi = "abi3", python_tag = "cp312", - strip_path_prefixes = ["python"], + dist_folder = "dist_abi3", + author = PYTHON_PACKAGE_AUTHOR, + author_email = PYTHON_PACKAGE_AUTHOR_EMAIL, + classifiers = PYTHON_PACKAGE_CLASSIFIERS, + description_file = "pip-readme.md", + distribution = PYTHON_PACKAGE_NAME, + license = PYTHON_PACKAGE_LICENSE, + project_urls = PYTHON_PACKAGE_PROJECT_URLS, + python_requires = PYTHON_PACKAGE_REQUIRES, summary = PYTHON_PACKAGE_SUMMARY, version = PYTHON_PACKAGE_VERSION, - deps = [":wheel_contents"], ) # ============================================================================= @@ -201,6 +220,6 @@ py_test( srcs = ["tests/test_dv.py"], deps = [ ":dv_py", - "@pypi//pytest:pkg", + "@@rules_python++pip+pypi_312_312_pytest//:pkg", ], ) diff --git a/python/package_metadata.bzl b/python/package_metadata.bzl index 01e2bf8..b2ceb22 100644 --- a/python/package_metadata.bzl +++ b/python/package_metadata.bzl @@ -2,7 +2,7 @@ PYTHON_PACKAGE_NAME = "dv_py" PYTHON_PACKAGE_VERSION = "0.3.3" PYTHON_PACKAGE_SUMMARY = "Python bindings for dv (DimensionalVariable) - keeping track of units and dimensions for physical quantities" -PYTHON_PACKAGE_REQUIRES = ">=3.8" +PYTHON_PACKAGE_REQUIRES = ">=3.10" PYTHON_PACKAGE_AUTHOR = "Alex Tacescu" PYTHON_PACKAGE_AUTHOR_EMAIL = "alextac98@gmail.com" @@ -14,14 +14,11 @@ PYTHON_PACKAGE_CLASSIFIERS = [ "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", - "Programming Language :: Python :: 3.15", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Physics", "Topic :: Software Development :: Libraries", diff --git a/python/pyproject.toml b/python/pyproject.toml index bcb1dc2..45c6e3e 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -3,8 +3,8 @@ name = "dv_py" version = "0.3.3" description = "Python bindings for dv (DimensionalVariable) - keeping track of units and dimensions for physical quantities" readme = "pip-readme.md" -requires-python = ">=3.8" -classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: 3.15", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Physics", "Topic :: Software Development :: Libraries",] +requires-python = ">=3.10" +classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Physics", "Topic :: Software Development :: Libraries",] keywords = [ "units", "dimensions", "physical-quantities", "unit-conversion", "unit-checking",] [[project.authors]] name = "Alex Tacescu" diff --git a/python/wheels.bzl b/python/wheels.bzl new file mode 100644 index 0000000..a6d7147 --- /dev/null +++ b/python/wheels.bzl @@ -0,0 +1,149 @@ +load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") +load("@rules_python//python:packaging.bzl", "py_wheel") + +WHEEL_PLATFORMS = select( + { + "//python:linux_aarch64": "linux_aarch64", + "//python:linux_x86_64": "linux_x86_64", + "//python:macos_arm64": "macosx_11_0_arm64", + "//python:macos_x86_64": "macosx_10_15_x86_64", + "//python:windows_x86_64": "win_amd64", + }, + no_match_error = "Wheel platform tags are only configured for Linux/macOS x86_64 and arm64, plus Windows x86_64.", +) + +def _nanobind_copts(repo_path, limited_api = False): + windows = [ + "/std:c++17", + "/I" + repo_path + "/include", + "/I" + repo_path + "/src", + "/I" + repo_path + "/ext/robin_map/include", + ] + posix = [ + "-std=c++17", + "-faligned-allocation", + "-fvisibility=hidden", + "-I" + repo_path + "/include", + "-I" + repo_path + "/src", + "-I" + repo_path + "/ext/robin_map/include", + ] + if limited_api: + windows = windows + ["/DPy_LIMITED_API=0x030C0000"] + posix = posix + ["-DPy_LIMITED_API=0x030C0000"] + return select({ + "//python:windows_x86_64": windows, + "//conditions:default": posix, + }) + +def dv_extension( + name, + nanobind_repo_path, + nanobind_whl_files, + nanobind_combined_src, + python_headers, + python_libs = None, + limited_api = False, + extra_deps = [], + linkopts = []): + wheel_files_target = "nanobind_wheel_files_{}".format(name) + native_target = "dv_ext_native_{}".format(name) + + cc_library( + name = wheel_files_target, + hdrs = [nanobind_whl_files], + ) + + deps = [ + ":generated_nanobind_header_lib", + ":" + wheel_files_target, + "//core/ffi/diplomat:dv_diplomat_capi_static", + python_headers, + ] + if python_libs: + deps.append(python_libs) + + cc_binary( + name = native_target, + srcs = [ + "dv_ext_ext.cpp", + "sub_modules/dv_ext/BaseUnits_binding.cpp", + "sub_modules/dv_ext/DimensionalVariable_binding.cpp", + nanobind_combined_src, + ], + copts = _nanobind_copts(nanobind_repo_path, limited_api = limited_api), + deps = deps + extra_deps, + linkopts = linkopts, + linkshared = True, + ) + +def dv_runtime_package(name, native_target): + native.genrule( + name = name, + srcs = [native_target], + outs = [ + "dv_py/dv_ext.so", + "dv_py/dv_ext.pyd", + ], + cmd_bash = "cp $< $(RULEDIR)/dv_py/dv_ext.so && cp $< $(RULEDIR)/dv_py/dv_ext.pyd", + cmd_bat = "copy /Y \"$(location {})\" \"$(RULEDIR)\\dv_py\\dv_ext.so\" >NUL && copy /Y \"$(location {})\" \"$(RULEDIR)\\dv_py\\dv_ext.pyd\" >NUL".format(native_target, native_target), + ) + +def dv_wheel( + name, + native_target, + abi, + python_tag, + dist_folder, + author, + author_email, + classifiers, + description_file, + distribution, + license, + project_urls, + python_requires, + summary, + version): + pkg_target = "{}_pkg".format(name) + contents_target = "{}_contents".format(name) + wheel_dir = name + + native.genrule( + name = pkg_target, + srcs = [ + native_target, + "dv_py/__init__.py", + ], + outs = [ + "{}/dv_py/__init__.py".format(wheel_dir), + "{}/dv_py/dv_ext.so".format(wheel_dir), + "{}/dv_py/dv_ext.pyd".format(wheel_dir), + ], + cmd_bash = "cp $(location dv_py/__init__.py) $(RULEDIR)/{0}/dv_py/__init__.py && cp $(location {1}) $(RULEDIR)/{0}/dv_py/dv_ext.so && cp $(location {1}) $(RULEDIR)/{0}/dv_py/dv_ext.pyd".format(wheel_dir, native_target), + cmd_bat = "copy /Y \"$(location dv_py/__init__.py)\" \"$(RULEDIR)\\{0}\\dv_py\\__init__.py\" >NUL && copy /Y \"$(location {1})\" \"$(RULEDIR)\\{0}\\dv_py\\dv_ext.so\" >NUL && copy /Y \"$(location {1})\" \"$(RULEDIR)\\{0}\\dv_py\\dv_ext.pyd\" >NUL".format(wheel_dir, native_target), + ) + + native.filegroup( + name = contents_target, + srcs = [":" + pkg_target], + ) + + py_wheel( + name = name, + abi = abi, + author = author, + author_email = author_email, + classifiers = classifiers, + description_file = description_file, + distribution = distribution, + dist_folder = dist_folder, + license = license, + platform = WHEEL_PLATFORMS, + project_urls = project_urls, + python_requires = python_requires, + python_tag = python_tag, + strip_path_prefixes = ["python/{}".format(wheel_dir)], + summary = summary, + version = version, + deps = [":" + contents_target], + ) diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel index 7477001..8178ffe 100644 --- a/tests/BUILD.bazel +++ b/tests/BUILD.bazel @@ -34,7 +34,7 @@ py_test( data = [":regression_vectors"], deps = [ "//python:dv_py", - "@pypi//pytest:pkg", + "@@rules_python++pip+pypi_312_312_pytest//:pkg", ], ) diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel index 52e5510..8bab956 100644 --- a/tools/BUILD.bazel +++ b/tools/BUILD.bazel @@ -20,7 +20,7 @@ py_binary( "//python:pyproject.toml", ], deps = [ - "@pypi//toml", - "@pypi//requests", + "@@rules_python++pip+pypi_312_312_toml//:pkg", + "@@rules_python++pip+pypi_312_312_requests//:pkg", ], ) From 123ea2f86b1041638701be3a617805a20deee303 Mon Sep 17 00:00:00 2001 From: Alex Tacescu Date: Sun, 22 Mar 2026 23:13:45 -0700 Subject: [PATCH 5/9] Changes from PR comments --- VERSION.toml | 2 +- c/BUILD.bazel | 2 + core/Cargo.toml | 2 +- core/ffi/diplomat/src/lib.rs | 116 ++++++++++++++++++++------------- cpp/BUILD.bazel | 2 + cpp/README.md | 5 +- cpp/include/dv.hpp | 58 +++++++++++++---- python/BUILD.bazel | 5 ++ python/package_metadata.bzl | 2 +- python/pyproject.toml | 2 +- python/wheels.bzl | 73 +++++++++++++++------ tests/regression_cpp_tests.cpp | 42 ++++++++++++ 12 files changed, 223 insertions(+), 88 deletions(-) diff --git a/VERSION.toml b/VERSION.toml index 0751cca..c908644 100644 --- a/VERSION.toml +++ b/VERSION.toml @@ -6,4 +6,4 @@ major = 0 minor = 3 -patch = 3 +patch = 4 diff --git a/c/BUILD.bazel b/c/BUILD.bazel index 9bb230e..5aee4ff 100644 --- a/c/BUILD.bazel +++ b/c/BUILD.bazel @@ -8,6 +8,8 @@ genrule( outs = [ "BaseUnits.d.h", "BaseUnits.h", + "DvError.d.h", + "DvError.h", "DimensionalVariable.d.h", "DimensionalVariable.h", "diplomat_runtime.h", diff --git a/core/Cargo.toml b/core/Cargo.toml index 17620b7..4c2294f 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dv" -version = "0.3.3" +version = "0.3.4" edition = "2021" authors = [ "Alex Tacescu ",] description = "Core Rust library for DimensionalVariable, a multi-language library for handling physical quantities with units." diff --git a/core/ffi/diplomat/src/lib.rs b/core/ffi/diplomat/src/lib.rs index 1ef46a9..3247936 100644 --- a/core/ffi/diplomat/src/lib.rs +++ b/core/ffi/diplomat/src/lib.rs @@ -11,6 +11,10 @@ pub mod ffi { Box::new(DimensionalVariable(dv)) } + fn into_boxed_error(error: String) -> Box { + Box::new(DvError(error)) + } + fn clone_core(dv: &CoreDV) -> CoreDV { CoreDV { value: dv.value, @@ -33,24 +37,30 @@ pub mod ffi { #[diplomat::opaque] pub struct DimensionalVariable(CoreDV); + #[diplomat::opaque] + pub struct DvError(String); + + impl DvError { + pub fn to_string(&self, to: &mut DiplomatWrite) -> Result<(), ()> { + write!(to, "{}", self.0).map_err(|_| ()) + } + } + impl DimensionalVariable { - pub fn new(value: f64, unit: &str) -> Result, ()> { - match CoreDV::new(value, unit) { - Ok(dv) => Ok(Box::new(DimensionalVariable(dv))), - Err(_) => Err(()), - } + pub fn new(value: f64, unit: &str) -> Result, Box> { + CoreDV::new(value, unit).map(into_boxed_dv).map_err(into_boxed_error) } - pub fn asin_scalar(x: f64) -> Result, ()> { - dv_rs::asin(x).map(into_boxed_dv).map_err(|_| ()) + pub fn asin_scalar(x: f64) -> Result, Box> { + dv_rs::asin(x).map(into_boxed_dv).map_err(into_boxed_error) } - pub fn acos_scalar(x: f64) -> Result, ()> { - dv_rs::acos(x).map(into_boxed_dv).map_err(|_| ()) + pub fn acos_scalar(x: f64) -> Result, Box> { + dv_rs::acos(x).map(into_boxed_dv).map_err(into_boxed_error) } - pub fn atan_scalar(x: f64) -> Result, ()> { - dv_rs::atan(x).map(into_boxed_dv).map_err(|_| ()) + pub fn atan_scalar(x: f64) -> Result, Box> { + dv_rs::atan(x).map(into_boxed_dv).map_err(into_boxed_error) } pub fn base_units_size() -> usize { @@ -61,8 +71,8 @@ pub mod ffi { self.0.value() } - pub fn value_in(&self, unit: &str) -> Result { - self.0.value_in(unit).map_err(|_| ()) + pub fn value_in(&self, unit: &str) -> Result> { + self.0.value_in(unit).map_err(into_boxed_error) } pub fn is_unitless(&self) -> bool { @@ -83,12 +93,12 @@ pub mod ffi { } } - pub fn add(&self, other: &DimensionalVariable) -> Result, ()> { - self.0.try_add(&other.0).map(into_boxed_dv).map_err(|_| ()) + pub fn add(&self, other: &DimensionalVariable) -> Result, Box> { + self.0.try_add(&other.0).map(into_boxed_dv).map_err(into_boxed_error) } - pub fn sub(&self, other: &DimensionalVariable) -> Result, ()> { - self.0.try_sub(&other.0).map(into_boxed_dv).map_err(|_| ()) + pub fn sub(&self, other: &DimensionalVariable) -> Result, Box> { + self.0.try_sub(&other.0).map(into_boxed_dv).map_err(into_boxed_error) } pub fn mul(&self, other: &DimensionalVariable) -> Box { @@ -115,72 +125,72 @@ pub mod ffi { into_boxed_dv(self.0.powi(exp)) } - pub fn powf(&self, exp: f64) -> Result, ()> { - self.0.powf(exp).map(into_boxed_dv).map_err(|_| ()) + pub fn powf(&self, exp: f64) -> Result, Box> { + self.0.powf(exp).map(into_boxed_dv).map_err(into_boxed_error) } - pub fn sqrt(&self) -> Result, ()> { - self.0.sqrt().map(into_boxed_dv).map_err(|_| ()) + pub fn sqrt(&self) -> Result, Box> { + self.0.sqrt().map(into_boxed_dv).map_err(into_boxed_error) } - pub fn ln(&self) -> Result, ()> { + pub fn ln(&self) -> Result, Box> { self.0 .ln() .map(|v| CoreDV { value: v, unit: [0.0; units::BASE_UNITS_SIZE] }) .map(into_boxed_dv) - .map_err(|_| ()) + .map_err(into_boxed_error) } - pub fn log2(&self) -> Result, ()> { + pub fn log2(&self) -> Result, Box> { self.0 .log2() .map(|v| CoreDV { value: v, unit: [0.0; units::BASE_UNITS_SIZE] }) .map(into_boxed_dv) - .map_err(|_| ()) + .map_err(into_boxed_error) } - pub fn log10(&self) -> Result, ()> { + pub fn log10(&self) -> Result, Box> { self.0 .log10() .map(|v| CoreDV { value: v, unit: [0.0; units::BASE_UNITS_SIZE] }) .map(into_boxed_dv) - .map_err(|_| ()) + .map_err(into_boxed_error) } - pub fn sin(&self) -> Result, ()> { + pub fn sin(&self) -> Result, Box> { self.0 .sin() .map(|v| CoreDV { value: v, unit: [0.0; units::BASE_UNITS_SIZE] }) .map(into_boxed_dv) - .map_err(|_| ()) + .map_err(into_boxed_error) } - pub fn cos(&self) -> Result, ()> { + pub fn cos(&self) -> Result, Box> { self.0 .cos() .map(|v| CoreDV { value: v, unit: [0.0; units::BASE_UNITS_SIZE] }) .map(into_boxed_dv) - .map_err(|_| ()) + .map_err(into_boxed_error) } - pub fn tan(&self) -> Result, ()> { + pub fn tan(&self) -> Result, Box> { self.0 .tan() .map(|v| CoreDV { value: v, unit: [0.0; units::BASE_UNITS_SIZE] }) .map(into_boxed_dv) - .map_err(|_| ()) + .map_err(into_boxed_error) } - pub fn asin(&self) -> Result, ()> { - self.0.asin().map(into_boxed_dv).map_err(|_| ()) + pub fn asin(&self) -> Result, Box> { + self.0.asin().map(into_boxed_dv).map_err(into_boxed_error) } - pub fn acos(&self) -> Result, ()> { - self.0.acos().map(into_boxed_dv).map_err(|_| ()) + pub fn acos(&self) -> Result, Box> { + self.0.acos().map(into_boxed_dv).map_err(into_boxed_error) } - pub fn atan(&self) -> Result, ()> { - self.0.atan().map(into_boxed_dv).map_err(|_| ()) + pub fn atan(&self) -> Result, Box> { + self.0.atan().map(into_boxed_dv).map_err(into_boxed_error) } pub fn neg(&self) -> Box { @@ -199,20 +209,32 @@ pub mod ffi { self.0 != other.0 } - pub fn less_than(&self, other: &DimensionalVariable) -> Result { - self.0.partial_cmp(&other.0).map(|o| o.is_lt()).ok_or(()) + pub fn less_than(&self, other: &DimensionalVariable) -> Result> { + self.0 + .partial_cmp(&other.0) + .map(|o| o.is_lt()) + .ok_or_else(|| into_boxed_error("Incompatible units for comparison".to_string())) } - pub fn less_equal(&self, other: &DimensionalVariable) -> Result { - self.0.partial_cmp(&other.0).map(|o| o.is_lt() || o.is_eq()).ok_or(()) + pub fn less_equal(&self, other: &DimensionalVariable) -> Result> { + self.0 + .partial_cmp(&other.0) + .map(|o| o.is_lt() || o.is_eq()) + .ok_or_else(|| into_boxed_error("Incompatible units for comparison".to_string())) } - pub fn greater_than(&self, other: &DimensionalVariable) -> Result { - self.0.partial_cmp(&other.0).map(|o| o.is_gt()).ok_or(()) + pub fn greater_than(&self, other: &DimensionalVariable) -> Result> { + self.0 + .partial_cmp(&other.0) + .map(|o| o.is_gt()) + .ok_or_else(|| into_boxed_error("Incompatible units for comparison".to_string())) } - pub fn greater_equal(&self, other: &DimensionalVariable) -> Result { - self.0.partial_cmp(&other.0).map(|o| o.is_gt() || o.is_eq()).ok_or(()) + pub fn greater_equal(&self, other: &DimensionalVariable) -> Result> { + self.0 + .partial_cmp(&other.0) + .map(|o| o.is_gt() || o.is_eq()) + .ok_or_else(|| into_boxed_error("Incompatible units for comparison".to_string())) } pub fn clone_var(&self) -> Box { diff --git a/cpp/BUILD.bazel b/cpp/BUILD.bazel index 7b1b083..7366f06 100644 --- a/cpp/BUILD.bazel +++ b/cpp/BUILD.bazel @@ -8,6 +8,8 @@ genrule( outs = [ "BaseUnits.d.hpp", "BaseUnits.hpp", + "DvError.d.hpp", + "DvError.hpp", "DimensionalVariable.d.hpp", "DimensionalVariable.hpp", "diplomat_runtime.hpp", diff --git a/cpp/README.md b/cpp/README.md index 36aaac8..50cb645 100644 --- a/cpp/README.md +++ b/cpp/README.md @@ -6,5 +6,6 @@ The Rust Diplomat bridge lives in `core/ffi/diplomat/`, while the Bazel-facing C - C++ target alias: `//cpp:dv_cpp` See: -- `/Users/alex/code/alextac98/dv/c` -- `/Users/alex/code/alextac98/dv/cpp` +- `c/` for the generated C bindings and the `//c:dv_c` Bazel target +- `cpp/` for the C++ compatibility wrapper and the `//cpp:dv_cpp` Bazel target +- `docs/c.md` and `docs/cpp.md` for usage and build examples diff --git a/cpp/include/dv.hpp b/cpp/include/dv.hpp index 6a507cc..4519c5c 100644 --- a/cpp/include/dv.hpp +++ b/cpp/include/dv.hpp @@ -1,11 +1,13 @@ #pragma once +#include "DvError.hpp" #include "DimensionalVariable.hpp" #include #include #include #include +#include namespace dv { @@ -13,29 +15,57 @@ inline std::string last_error() { return "dv operation failed"; } +inline std::string last_error(std::monostate) { + return last_error(); +} + +inline std::string last_error(diplomat::Utf8Error) { + return "invalid UTF-8"; +} + +inline std::string last_error(const std::unique_ptr& error) { + if (!error) { + return last_error(); + } + + auto message = error->to_string(); + auto text = std::move(message).ok(); + return text.has_value() && !text->empty() ? std::move(*text) : last_error(); +} + +inline std::string last_error(std::unique_ptr&& error) { + return last_error(static_cast&>(error)); +} + template -inline T unwrap_or_throw(diplomat::result&& result, const char* msg = "dv operation failed") { - auto v = std::move(result).ok(); - if (!v.has_value()) { - throw std::runtime_error(msg); +inline T unwrap_or_throw(diplomat::result&& result) { + if (result.is_ok()) { + auto v = std::move(result).ok(); + return std::move(*v); } - return std::move(*v); + + auto error = std::move(result).err(); + throw std::runtime_error(error.has_value() ? last_error(std::move(*error)) : last_error()); } template inline T unwrap_utf8_and_throw( - diplomat::result, diplomat::Utf8Error>&& result, - const char* msg = "dv operation failed" + diplomat::result>, diplomat::Utf8Error>&& result ) { - auto outer = std::move(result).ok(); - if (!outer.has_value()) { - throw std::runtime_error("invalid UTF-8"); + if (result.is_err()) { + auto error = std::move(result).err(); + throw std::runtime_error(error.has_value() ? last_error(std::move(*error)) : last_error()); } - auto inner = std::move(*outer).ok(); - if (!inner.has_value()) { - throw std::runtime_error(msg); + + auto outer = std::move(result).ok(); + auto inner_result = std::move(*outer); + if (inner_result.is_ok()) { + auto inner = std::move(inner_result).ok(); + return std::move(*inner); } - return std::move(*inner); + + auto nested = std::move(inner_result).err(); + throw std::runtime_error(nested.has_value() ? last_error(std::move(*nested)) : last_error()); } class DV { diff --git a/python/BUILD.bazel b/python/BUILD.bazel index 138248d..2d70879 100644 --- a/python/BUILD.bazel +++ b/python/BUILD.bazel @@ -62,11 +62,14 @@ genrule( "dv_ext_ext.cpp", "include/BaseUnits.d.hpp", "include/BaseUnits.hpp", + "include/DvError.d.hpp", + "include/DvError.hpp", "include/DimensionalVariable.d.hpp", "include/DimensionalVariable.hpp", "include/diplomat_nanobind_common.hpp", "include/diplomat_runtime.hpp", "sub_modules/dv_ext/BaseUnits_binding.cpp", + "sub_modules/dv_ext/DvError_binding.cpp", "sub_modules/dv_ext/DimensionalVariable_binding.cpp", ], tools = ["//tools/diplomat_codegen:diplomat_codegen"], @@ -78,6 +81,8 @@ filegroup( srcs = [ "include/BaseUnits.d.hpp", "include/BaseUnits.hpp", + "include/DvError.d.hpp", + "include/DvError.hpp", "include/DimensionalVariable.d.hpp", "include/DimensionalVariable.hpp", "include/diplomat_nanobind_common.hpp", diff --git a/python/package_metadata.bzl b/python/package_metadata.bzl index b2ceb22..2fd1904 100644 --- a/python/package_metadata.bzl +++ b/python/package_metadata.bzl @@ -1,5 +1,5 @@ PYTHON_PACKAGE_NAME = "dv_py" -PYTHON_PACKAGE_VERSION = "0.3.3" +PYTHON_PACKAGE_VERSION = "0.3.4" PYTHON_PACKAGE_SUMMARY = "Python bindings for dv (DimensionalVariable) - keeping track of units and dimensions for physical quantities" PYTHON_PACKAGE_REQUIRES = ">=3.10" diff --git a/python/pyproject.toml b/python/pyproject.toml index 45c6e3e..3f0961b 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "dv_py" -version = "0.3.3" +version = "0.3.4" description = "Python bindings for dv (DimensionalVariable) - keeping track of units and dimensions for physical quantities" readme = "pip-readme.md" requires-python = ">=3.10" diff --git a/python/wheels.bzl b/python/wheels.bzl index a6d7147..dda15ea 100644 --- a/python/wheels.bzl +++ b/python/wheels.bzl @@ -67,6 +67,7 @@ def dv_extension( srcs = [ "dv_ext_ext.cpp", "sub_modules/dv_ext/BaseUnits_binding.cpp", + "sub_modules/dv_ext/DvError_binding.cpp", "sub_modules/dv_ext/DimensionalVariable_binding.cpp", nanobind_combined_src, ], @@ -77,15 +78,31 @@ def dv_extension( ) def dv_runtime_package(name, native_target): + so_target = "{}_so".format(name) + pyd_target = "{}_pyd".format(name) + native.genrule( - name = name, + name = so_target, srcs = [native_target], - outs = [ - "dv_py/dv_ext.so", - "dv_py/dv_ext.pyd", - ], - cmd_bash = "cp $< $(RULEDIR)/dv_py/dv_ext.so && cp $< $(RULEDIR)/dv_py/dv_ext.pyd", - cmd_bat = "copy /Y \"$(location {})\" \"$(RULEDIR)\\dv_py\\dv_ext.so\" >NUL && copy /Y \"$(location {})\" \"$(RULEDIR)\\dv_py\\dv_ext.pyd\" >NUL".format(native_target, native_target), + outs = ["dv_py/dv_ext.so"], + cmd_bash = "cp $< $(RULEDIR)/dv_py/dv_ext.so", + cmd_bat = "copy /Y \"$(location {})\" \"$(RULEDIR)\\dv_py\\dv_ext.so\" >NUL".format(native_target), + ) + + native.genrule( + name = pyd_target, + srcs = [native_target], + outs = ["dv_py/dv_ext.pyd"], + cmd_bash = "cp $< $(RULEDIR)/dv_py/dv_ext.pyd", + cmd_bat = "copy /Y \"$(location {})\" \"$(RULEDIR)\\dv_py\\dv_ext.pyd\" >NUL".format(native_target), + ) + + native.filegroup( + name = name, + srcs = select({ + "//python:windows_x86_64": [":" + pyd_target], + "//conditions:default": [":" + so_target], + }), ) def dv_wheel( @@ -104,28 +121,42 @@ def dv_wheel( python_requires, summary, version): - pkg_target = "{}_pkg".format(name) + init_pkg_target = "{}_pkg_init".format(name) + so_pkg_target = "{}_pkg_so".format(name) + pyd_pkg_target = "{}_pkg_pyd".format(name) contents_target = "{}_contents".format(name) wheel_dir = name native.genrule( - name = pkg_target, - srcs = [ - native_target, - "dv_py/__init__.py", - ], - outs = [ - "{}/dv_py/__init__.py".format(wheel_dir), - "{}/dv_py/dv_ext.so".format(wheel_dir), - "{}/dv_py/dv_ext.pyd".format(wheel_dir), - ], - cmd_bash = "cp $(location dv_py/__init__.py) $(RULEDIR)/{0}/dv_py/__init__.py && cp $(location {1}) $(RULEDIR)/{0}/dv_py/dv_ext.so && cp $(location {1}) $(RULEDIR)/{0}/dv_py/dv_ext.pyd".format(wheel_dir, native_target), - cmd_bat = "copy /Y \"$(location dv_py/__init__.py)\" \"$(RULEDIR)\\{0}\\dv_py\\__init__.py\" >NUL && copy /Y \"$(location {1})\" \"$(RULEDIR)\\{0}\\dv_py\\dv_ext.so\" >NUL && copy /Y \"$(location {1})\" \"$(RULEDIR)\\{0}\\dv_py\\dv_ext.pyd\" >NUL".format(wheel_dir, native_target), + name = init_pkg_target, + srcs = ["dv_py/__init__.py"], + outs = ["{}/dv_py/__init__.py".format(wheel_dir)], + cmd_bash = "cp $(location dv_py/__init__.py) $(RULEDIR)/{}/dv_py/__init__.py".format(wheel_dir), + cmd_bat = "copy /Y \"$(location dv_py/__init__.py)\" \"$(RULEDIR)\\{}\\dv_py\\__init__.py\" >NUL".format(wheel_dir), + ) + + native.genrule( + name = so_pkg_target, + srcs = [native_target], + outs = ["{}/dv_py/dv_ext.so".format(wheel_dir)], + cmd_bash = "cp $(location {1}) $(RULEDIR)/{0}/dv_py/dv_ext.so".format(wheel_dir, native_target), + cmd_bat = "copy /Y \"$(location {1})\" \"$(RULEDIR)\\{0}\\dv_py\\dv_ext.so\" >NUL".format(wheel_dir, native_target), + ) + + native.genrule( + name = pyd_pkg_target, + srcs = [native_target], + outs = ["{}/dv_py/dv_ext.pyd".format(wheel_dir)], + cmd_bash = "cp $(location {1}) $(RULEDIR)/{0}/dv_py/dv_ext.pyd".format(wheel_dir, native_target), + cmd_bat = "copy /Y \"$(location {1})\" \"$(RULEDIR)\\{0}\\dv_py\\dv_ext.pyd\" >NUL".format(wheel_dir, native_target), ) native.filegroup( name = contents_target, - srcs = [":" + pkg_target], + srcs = select({ + "//python:windows_x86_64": [":" + init_pkg_target, ":" + pyd_pkg_target], + "//conditions:default": [":" + init_pkg_target, ":" + so_pkg_target], + }), ) py_wheel( diff --git a/tests/regression_cpp_tests.cpp b/tests/regression_cpp_tests.cpp index 9d7de01..3122be9 100644 --- a/tests/regression_cpp_tests.cpp +++ b/tests/regression_cpp_tests.cpp @@ -19,6 +19,19 @@ bool nearly_equal(double actual, double expected, double abs_tol, double rel_tol return diff <= std::max(abs_tol, rel_tol * std::fabs(expected)); } +void expect_error_contains(const char* context, const std::string& needle, const std::function& fn) { + try { + fn(); + } catch (const std::exception& e) { + if (std::string(e.what()).find(needle) == std::string::npos) { + throw std::runtime_error(std::string(context) + ": expected error containing '" + needle + "', got '" + e.what() + "'"); + } + return; + } + + throw std::runtime_error(std::string(context) + ": expected exception"); +} + fs::path resolve_vector_path(const std::string& file_name) { std::vector candidates; @@ -304,10 +317,39 @@ void run_vector_file(const std::string& file_name) { } } +void run_error_message_checks() { + expect_error_contains("construct invalid unit", "Failed to parse unit 'nope'", []() { + dv::DV bad(1.0, "nope"); + }); + + expect_error_contains("convert incompatible unit", "Incompatible unit conversion to: s", []() { + dv::DV distance(1.0, "m"); + (void)distance.value_in("s"); + }); + + expect_error_contains("add incompatible units", "Incompatible units for addition", []() { + dv::DV distance(1.0, "m"); + dv::DV time(1.0, "s"); + (void)(distance + time); + }); + + expect_error_contains("ln dimensional quantity", "ln requires a unitless quantity", []() { + dv::DV distance(1.0, "m"); + (void)distance.ln(); + }); + + expect_error_contains("comparison incompatible units", "Incompatible units for comparison", []() { + dv::DV distance(1.0, "m"); + dv::DV time(1.0, "s"); + (void)(distance < time); + }); +} + int main() { try { run_vector_file("units_tests.json"); run_vector_file("math_tests.json"); + run_error_message_checks(); std::cout << "Regression vectors passed for C++\n"; return 0; } catch (const std::exception& e) { From 2e278b493d78aa265f26008c43523022ea5cb58e Mon Sep 17 00:00:00 2001 From: Alex Tacescu Date: Sun, 22 Mar 2026 23:28:14 -0700 Subject: [PATCH 6/9] fix build issue from adding error capability --- examples/cpp/main.cpp | 48 +++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/examples/cpp/main.cpp b/examples/cpp/main.cpp index cfcc69b..97c59a6 100644 --- a/examples/cpp/main.cpp +++ b/examples/cpp/main.cpp @@ -1,4 +1,5 @@ #include "DimensionalVariable.hpp" +#include "DvError.hpp" #include #include @@ -6,27 +7,52 @@ #include #include #include +#include template T expect_ok(diplomat::result&& result, const char* what) { - auto v = std::move(result).ok(); - if (!v.has_value()) { - throw std::runtime_error(what); + if (result.is_ok()) { + auto v = std::move(result).ok(); + return std::move(*v); } - return std::move(*v); + + auto err = std::move(result).err(); + if (err.has_value()) { + if constexpr (std::is_same_v>) { + auto msg = (*err)->to_string(); + auto text = std::move(msg).ok(); + if (text.has_value() && !text->empty()) { + throw std::runtime_error(*text); + } + } + } + + throw std::runtime_error(what); } template -T expect_utf8_and_ok(diplomat::result, diplomat::Utf8Error>&& result, const char* what) { - auto outer = std::move(result).ok(); - if (!outer.has_value()) { +T expect_utf8_and_ok(diplomat::result>, diplomat::Utf8Error>&& result, const char* what) { + if (result.is_err()) { throw std::runtime_error("utf8 error"); } - auto inner = std::move(*outer).ok(); - if (!inner.has_value()) { - throw std::runtime_error(what); + + auto outer = std::move(result).ok(); + auto inner = std::move(*outer); + if (inner.is_ok()) { + auto value = std::move(inner).ok(); + return std::move(*value); + } + + auto err = std::move(inner).err(); + if (err.has_value()) { + auto msg = (*err)->to_string(); + auto text = std::move(msg).ok(); + if (text.has_value() && !text->empty()) { + throw std::runtime_error(*text); + } } - return std::move(*inner); + + throw std::runtime_error(what); } int main() { From f24b2173ec1756289b206baf266dc8c58b5ce11c Mon Sep 17 00:00:00 2001 From: Alex Tacescu Date: Sun, 22 Mar 2026 23:41:50 -0700 Subject: [PATCH 7/9] fix builds for cmake and python, remove intel mac support --- .github/workflows/_python.yaml | 27 +- CMakeLists.txt | 6 + build/CMakeCache.txt | 383 ++++ build/CMakeFiles/4.2.3/CMakeCCompiler.cmake | 84 + build/CMakeFiles/4.2.3/CMakeCXXCompiler.cmake | 104 + .../4.2.3/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 33560 bytes .../4.2.3/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 33560 bytes build/CMakeFiles/4.2.3/CMakeSystem.cmake | 15 + .../4.2.3/CompilerIdC/CMakeCCompilerId.c | 934 +++++++++ build/CMakeFiles/4.2.3/CompilerIdC/a.out | Bin 0 -> 33736 bytes .../CMakeFiles/4.2.3/CompilerIdC/apple-sdk.c | 1 + .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 949 ++++++++++ build/CMakeFiles/4.2.3/CompilerIdCXX/a.out | Bin 0 -> 33736 bytes .../4.2.3/CompilerIdCXX/apple-sdk.cpp | 1 + build/CMakeFiles/CMakeConfigureLog.yaml | 1686 +++++++++++++++++ build/CMakeFiles/cmake.check_cache | 1 + docs/docs/dev/code.md | 2 + docs/docs/python.md | 2 + 18 files changed, 4187 insertions(+), 8 deletions(-) create mode 100644 build/CMakeCache.txt create mode 100644 build/CMakeFiles/4.2.3/CMakeCCompiler.cmake create mode 100644 build/CMakeFiles/4.2.3/CMakeCXXCompiler.cmake create mode 100755 build/CMakeFiles/4.2.3/CMakeDetermineCompilerABI_C.bin create mode 100755 build/CMakeFiles/4.2.3/CMakeDetermineCompilerABI_CXX.bin create mode 100644 build/CMakeFiles/4.2.3/CMakeSystem.cmake create mode 100644 build/CMakeFiles/4.2.3/CompilerIdC/CMakeCCompilerId.c create mode 100755 build/CMakeFiles/4.2.3/CompilerIdC/a.out create mode 100644 build/CMakeFiles/4.2.3/CompilerIdC/apple-sdk.c create mode 100644 build/CMakeFiles/4.2.3/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100755 build/CMakeFiles/4.2.3/CompilerIdCXX/a.out create mode 100644 build/CMakeFiles/4.2.3/CompilerIdCXX/apple-sdk.cpp create mode 100644 build/CMakeFiles/CMakeConfigureLog.yaml create mode 100644 build/CMakeFiles/cmake.check_cache diff --git a/.github/workflows/_python.yaml b/.github/workflows/_python.yaml index 14271bc..d8cec79 100644 --- a/.github/workflows/_python.yaml +++ b/.github/workflows/_python.yaml @@ -19,13 +19,22 @@ jobs: matrix: platform: - { runner: ubuntu-latest, artifact: linux-x86_64 } - - { runner: macos-13, artifact: macos-x86_64 } - { runner: macos-14, artifact: macos-arm64 } - { runner: windows-latest, artifact: windows-x86_64 } python: - - { version: '3.10', target: wheel_cp310, tag: cp310, dist: dist_cp310 } - - { version: '3.11', target: wheel_cp311, tag: cp311, dist: dist_cp311 } - - { version: '3.12+', target: wheel_abi3, tag: abi3, dist: dist_abi3 } + - { + version: "3.10", + target: wheel_cp310, + tag: cp310, + dist: dist_cp310, + } + - { + version: "3.11", + target: wheel_cp311, + tag: cp311, + dist: dist_cp311, + } + - { version: "3.12+", target: wheel_abi3, tag: abi3, dist: dist_abi3 } env: CI: true BAZELISK_ALLOW_ENVS: Y @@ -44,6 +53,8 @@ jobs: - name: Build wheels shell: bash + env: + MSYS2_ARG_CONV_EXCL: "*" run: | bazel build //python:${{ matrix.python.target }}.dist BAZEL_BIN="$(bazel info bazel-bin)" @@ -68,10 +79,10 @@ jobs: fail-fast: false matrix: python: - - { version: '3.10', tag: cp310 } - - { version: '3.11', tag: cp311 } - - { version: '3.12', tag: abi3 } - - { version: '3.13', tag: abi3 } + - { version: "3.10", tag: cp310 } + - { version: "3.11", tag: cp311 } + - { version: "3.12", tag: abi3 } + - { version: "3.13", tag: abi3 } env: CI: true BAZELISK_ALLOW_ENVS: Y diff --git a/CMakeLists.txt b/CMakeLists.txt index bf87256..aa6c9d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,9 +12,13 @@ set(DV_CODEGEN_ROOT ${CMAKE_BINARY_DIR}/generated/diplomat) set(DV_CODEGEN_C_DIR ${DV_CODEGEN_ROOT}/c) set(DV_CODEGEN_CPP_DIR ${DV_CODEGEN_ROOT}/cpp) +file(MAKE_DIRECTORY ${DV_CODEGEN_C_DIR} ${DV_CODEGEN_CPP_DIR}) + set(DV_GEN_C_HEADERS ${DV_CODEGEN_C_DIR}/BaseUnits.d.h ${DV_CODEGEN_C_DIR}/BaseUnits.h + ${DV_CODEGEN_C_DIR}/DvError.d.h + ${DV_CODEGEN_C_DIR}/DvError.h ${DV_CODEGEN_C_DIR}/DimensionalVariable.d.h ${DV_CODEGEN_C_DIR}/DimensionalVariable.h ${DV_CODEGEN_C_DIR}/diplomat_runtime.h @@ -22,6 +26,8 @@ set(DV_GEN_C_HEADERS set(DV_GEN_CPP_HEADERS ${DV_CODEGEN_CPP_DIR}/BaseUnits.d.hpp ${DV_CODEGEN_CPP_DIR}/BaseUnits.hpp + ${DV_CODEGEN_CPP_DIR}/DvError.d.hpp + ${DV_CODEGEN_CPP_DIR}/DvError.hpp ${DV_CODEGEN_CPP_DIR}/DimensionalVariable.d.hpp ${DV_CODEGEN_CPP_DIR}/DimensionalVariable.hpp ${DV_CODEGEN_CPP_DIR}/diplomat_runtime.hpp diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt new file mode 100644 index 0000000..3823e3e --- /dev/null +++ b/build/CMakeCache.txt @@ -0,0 +1,383 @@ +# This is the CMakeCache file. +# For build in directory: /Users/alex/code/alextac98/dv/build +# It was generated by CMake: /opt/homebrew/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +BAZEL_EXECUTABLE:FILEPATH=/opt/homebrew/bin/bazel + +//Path to a program. +CARGO_EXECUTABLE:FILEPATH=CARGO_EXECUTABLE-NOTFOUND + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=CMAKE_ADDR2LINE-NOTFOUND + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/Users/alex/code/alextac98/dv/build/CMakeFiles/pkgRedirects + +//Path to a program. +CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Build architectures for OSX +CMAKE_OSX_ARCHITECTURES:STRING= + +//Minimum OS X version to target for deployment (at runtime); newer +// APIs weak linked. Set to empty string for default value. +CMAKE_OSX_DEPLOYMENT_TARGET:STRING= + +//The product will be built against the headers and libraries located +// inside the indicated SDK. +CMAKE_OSX_SYSROOT:STRING= + +//Value Computed by CMake +CMAKE_PROJECT_COMPAT_VERSION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=dv + +//Value Computed by CMake +CMAKE_PROJECT_SPDX_LICENSE:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=CMAKE_READELF-NOTFOUND + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the archiver during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the archiver during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the archiver during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the archiver during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the archiver during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//Path to a program. +CMAKE_TAPI:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/tapi + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +dv_BINARY_DIR:STATIC=/Users/alex/code/alextac98/dv/build + +//Value Computed by CMake +dv_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +dv_SOURCE_DIR:STATIC=/Users/alex/code/alextac98/dv + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/Users/alex/code/alextac98/dv/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=4 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=2 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=3 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/opt/homebrew/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/opt/homebrew/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/opt/homebrew/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/opt/homebrew/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=MACHO +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/Users/alex/code/alextac98/dv +//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL +CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//Name of CMakeLists files to read +CMAKE_LIST_FILE_NAME:INTERNAL=CMakeLists.txt +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/opt/homebrew/share/cmake +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_TAPI +CMAKE_TAPI-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/build/CMakeFiles/4.2.3/CMakeCCompiler.cmake b/build/CMakeFiles/4.2.3/CMakeCCompiler.cmake new file mode 100644 index 0000000..bd16e8b --- /dev/null +++ b/build/CMakeFiles/4.2.3/CMakeCCompiler.cmake @@ -0,0 +1,84 @@ +set(CMAKE_C_COMPILER "/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "AppleClang") +set(CMAKE_C_COMPILER_VERSION "17.0.0.17000604") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_STANDARD_LATEST "23") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Darwin") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_COMPILER_APPLE_SYSROOT "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk") +set(CMAKE_C_SIMULATE_VERSION "") +set(CMAKE_C_COMPILER_ARCHITECTURE_ID "arm64") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_C_COMPILER_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") +set(CMAKE_C_COMPILER_LINKER_ID "AppleClang") +set(CMAKE_C_COMPILER_LINKER_VERSION 1230.1) +set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "/Library/Developer/CommandLineTools/usr/bin/tapi") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) +set(CMAKE_C_LINKER_DEPFILE_SUPPORTED ) +set(CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED ) +set(CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/usr/lib/clang/17/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks") diff --git a/build/CMakeFiles/4.2.3/CMakeCXXCompiler.cmake b/build/CMakeFiles/4.2.3/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..9a03387 --- /dev/null +++ b/build/CMakeFiles/4.2.3/CMakeCXXCompiler.cmake @@ -0,0 +1,104 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "AppleClang") +set(CMAKE_CXX_COMPILER_VERSION "17.0.0.17000604") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_STANDARD_LATEST "23") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") +set(CMAKE_CXX26_COMPILE_FEATURES "") + +set(CMAKE_CXX_PLATFORM_ID "Darwin") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_COMPILER_APPLE_SYSROOT "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk") +set(CMAKE_CXX_SIMULATE_VERSION "") +set(CMAKE_CXX_COMPILER_ARCHITECTURE_ID "arm64") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_CXX_COMPILER_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") +set(CMAKE_CXX_COMPILER_LINKER_ID "AppleClang") +set(CMAKE_CXX_COMPILER_LINKER_VERSION 1230.1) +set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT GNU) +set(CMAKE_MT "") +set(CMAKE_TAPI "/Library/Developer/CommandLineTools/usr/bin/tapi") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang IN ITEMS C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) +set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED ) +set(CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED ) +set(CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1;/Library/Developer/CommandLineTools/usr/lib/clang/17/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks") +set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "") + +set(CMAKE_CXX_COMPILER_IMPORT_STD "") +### Imported target for C++23 standard library +set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Unsupported generator: Unix Makefiles") + + + diff --git a/build/CMakeFiles/4.2.3/CMakeDetermineCompilerABI_C.bin b/build/CMakeFiles/4.2.3/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..fbe0267ad6489c8e01eea3ba9ca03dd2d28279b4 GIT binary patch literal 33560 zcmeI5Uuau(6vu!0GfipjAMwv@=N7TZ{6jmsGGiY`GLx;@LQ*sjp+$bA$<2DPNoI1( zno==i4wN!UpRD>av@jnW=oB>%)hMiw+WKdr4`YJL>J$`wa2u?i^Sd|8pB4r8;Dg@- z=l*`@oclZX{66>QM_U3E`%h5ciM{lS(<_I}jKRJP~1U zqo~D=t_>FFd4X<}G8%|Q8^db7x6vmodkeW)sU#&*8rrmB88kHK^SaE_&bbD__h?!gh0x`uzMJ7E~U;FY2p{c&(3sMkP(7gPg3@cP(WyZp77{ z>LTUl`3RpWUUPlbY#wXhStuAj6z~VDz>7_Fkp=sG6EG>xsKBcv?Vz4FNS{2OVfMQ&31ZHfM=e6D{|AMZ~VCX-~d z^pJ8L506GZ?fqh4;Z*zUJ6`*t`0N1r+@$87x~br9HCNlUedc_KVrqXhvh1Y&aUTB8 z>xG}|A?29)J%s3IWUJLe^*mX~8(O+=Umw+_kDIF>pn>zBDiRwSAGB=d#d0qx$BV>m z!7P&95D)-?{~>|(<6?DvhbUj{5#{e&#g+9AQC{mQmg(#$xqSD}x9Dr0OC8>_%hu9* zsXq1!#R~fLrm?Qx4KX_BN-mrC3g>Rld6Du{9rG23JRc12j|}DY87-TV$sm+L!d*-q+r&$iAsbvWmG*yhJ}*v!Rj-^DgLxgRgvJ5`)+w`{kNn^Yz@R3=qr zroYxQSdQz5rItzR@r>9Io74?sQfmxzH({zkh^rUcDpb+SH082b?jRpkYCA6MMBlEq zk|2LfMTMXpA1k`;s?wcz+v<_8 z_l6uZbMph?N0-0c<-Bm_xwp>7vde3!iu0S*)u-)|*p~I#_hx5Ke77_={Nf|0Z#Mqb z%17tk=}sM8{QZ-jrB@FvUGMZC+_pCR{P~rWgOxY@*KRidKdoQz2aUtd(~CVQI_$NYbBQg~=4#CFodq*8``hx|kShX#1H zRMh6urJF3yGe?0^M*Pu8sax&$maYlY-ayN&RFV=YbJ}FiG-xQ#H)$Sb-V9-z&$TKp zQCOYRM9M@aJ-(K(JfHhc1CCX)W!rPu=ag?em(|lp&BgM3kDK|nn0~hHQc^29q?|}U zsi%`tPmg4jUCQscnJ;Q4VY@tsJwLyPGb&G?FXFR#yyizhqmr_*f)-h=cP(WymW!!K z^^kJ?d~PemYwWko@^S4u3kE_D`1=AD@IqN#WV3AJVo10it0uNPgeYw0NkIr^(r(&O zviFnCY_^fklf99~pJ|+r_M(s%RO{H&coli zUD)LFvQK>vz29u&tgE$9J&C5K=GJB^N{_2LyX^5INWXTa@ek+6b6TqTpt*&jh1g5V z^~@E7;CJ0<+RT@wo|OHC6ZG8~hvH=j2!H?xfB*=9!2giI%B)yi*)58f>qPNNl~`V> z6~(2xLXqwe^X`U@)0O&C*VS5Y(e0?Lx@!03$(PqB*Y*8!vybja^KOTCnRA!tyiED2 zj?)Vj@?s#=KhQI-PidJEnLM7$4)5=JLWodcpg-P|%S$br(UQa2z(IK^< zEME0od+%Sl=x{-AiLOpQuyQcFxw$IMYJMlCZ%Wh$np z1@*e*02c0vSwnlc|0UN!{o9qj%d{h=eZaIQ*``kATnESVkE?ZX$8p2HTiHf$P4;_) zT&E1F%8+s>*xIS5M>5jZ36wSr1>20}wPv3(t{;_JI;qFfMnJdPXA2n9bGb3i9%F=X zLr|{Hkn5MK7pT(b$>Q=@?xHn1hGSMZiM~@EDM9N|eovzJ^G+;)5q`hUif0>j;Z%{4Sly~ GyZ8(JikeLT literal 0 HcmV?d00001 diff --git a/build/CMakeFiles/4.2.3/CMakeSystem.cmake b/build/CMakeFiles/4.2.3/CMakeSystem.cmake new file mode 100644 index 0000000..81b5543 --- /dev/null +++ b/build/CMakeFiles/4.2.3/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-25.3.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "25.3.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "arm64") + + + +set(CMAKE_SYSTEM "Darwin-25.3.0") +set(CMAKE_SYSTEM_NAME "Darwin") +set(CMAKE_SYSTEM_VERSION "25.3.0") +set(CMAKE_SYSTEM_PROCESSOR "arm64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/build/CMakeFiles/4.2.3/CompilerIdC/CMakeCCompilerId.c b/build/CMakeFiles/4.2.3/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..ab3c359 --- /dev/null +++ b/build/CMakeFiles/4.2.3/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,934 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__RENESAS__) +# define COMPILER_ID "Renesas" +/* __RENESAS_VERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__RENESAS_VERSION__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR HEX(__RENESAS_VERSION__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__RENESAS_VERSION__ >> 8 & 0xFF) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__DCC__) && defined(_DIAB_TOOL) +# define COMPILER_ID "Diab" + # define COMPILER_VERSION_MAJOR DEC(__VERSION_MAJOR_NUMBER__) + # define COMPILER_VERSION_MINOR DEC(__VERSION_MINOR_NUMBER__) + # define COMPILER_VERSION_PATCH DEC(__VERSION_ARCH_FEATURE_NUMBER__) + # define COMPILER_VERSION_TWEAK DEC(__VERSION_BUG_FIX_NUMBER__) + + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "ARM" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) || defined(__CPARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__RENESAS__) +# if defined(__CCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__CCRL__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__CCRH__) +# define ARCHITECTURE_ID "RH850" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define C_STD_99 199901L +#define C_STD_11 201112L +#define C_STD_17 201710L +#define C_STD_23 202311L + +#ifdef __STDC_VERSION__ +# define C_STD __STDC_VERSION__ +#endif + +#if !defined(__STDC__) && !defined(__clang__) && !defined(__RENESAS__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif C_STD > C_STD_17 +# define C_VERSION "23" +#elif C_STD > C_STD_11 +# define C_VERSION "17" +#elif C_STD > C_STD_99 +# define C_VERSION "11" +#elif C_STD >= C_STD_99 +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__) || defined(__RENESAS__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#if defined(COMPILER_VERSION_INTERNAL) || defined(COMPILER_VERSION_INTERNAL_STR) + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/build/CMakeFiles/4.2.3/CompilerIdC/a.out b/build/CMakeFiles/4.2.3/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..26167efc0964ece2b230612e6b8a856632e42b1b GIT binary patch literal 33736 zcmeI5e`s4(6vt1}RNJ++ohx%&b&KGSDx*!?u?|H|YwOn8wWI4FVRhcUHm_|oKWdWd zCbP>nruD~II}mCS^bc`txIdH$3#b$nsW6m+=oB4QbgZENh@u-}J?Fjq(lm`z-2VI? zIPacw&%NiJ_jxz@FFBuG{`s#`A{Vi^S(meVJw%7e%NEgU)-9|`ZExD#y0f*bQ)U;7 zwR!Q>5>N7s@JhXkwwj+wn$v`|Huuz$;-;0Evg+(#B0N$-rC^aaFBhGDpslE z-1*ZN-Z<3w`J3t2zEMx4&(!mrm(|5ew1x{_W7*c@x<2*X&9m0?S#cufo02@c`J88q z+;f&(TNpaAy%9} zCb_uYv7*q*@w_?9^6#^1S)M;O%XM-6<5LCdi?)u3I`8R=MTSCQGv3oQG!!-;3>(pb zU1UXu!bY+`7LW9_7;*l%>RBV+H`t@?MAC=`jd)N6&3v8r$&s7L2+^p4;f#uuEQsyqcT!Tge{fEXY~$^C;?kpNX9< za^6ZgONBm(C zX9YD|zeBH}fF6T-9I?i0ep@620T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!X z009sH0T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!X009sH z0T2KI5C8!X$RXfmUwWU5ie$I-&TcC%y~G`{Z2xt36KOq}y^maqj>v>Goc7RI%Ei}| zb$#8sPVkl7OM73_>fBD*w9Z4Lyt;rUxl4PYG}Wdur!h9IkS^TA#(=5lcBczBZPV?t zX-5Iga$E2M6&Y0K9@In`}>VPT7A{d^V&vxARcXtK~=l7l7_w?bf-+yt-^XrdaZTuJa+S%H7Z!Frn z{)L*8k;?W{uU4=+y0k7{Qmm-$8PexQc`yO_h9);ADuY+ V?a-utm^+t7W_)c;`9`WxkU@H_wj literal 0 HcmV?d00001 diff --git a/build/CMakeFiles/4.2.3/CompilerIdC/apple-sdk.c b/build/CMakeFiles/4.2.3/CompilerIdC/apple-sdk.c new file mode 100644 index 0000000..db846b4 --- /dev/null +++ b/build/CMakeFiles/4.2.3/CompilerIdC/apple-sdk.c @@ -0,0 +1 @@ +#include diff --git a/build/CMakeFiles/4.2.3/CompilerIdCXX/CMakeCXXCompilerId.cpp b/build/CMakeFiles/4.2.3/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..b35f567 --- /dev/null +++ b/build/CMakeFiles/4.2.3/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,949 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) && defined(__cray__) +# define COMPILER_ID "CrayClang" +# define COMPILER_VERSION_MAJOR DEC(__cray_major__) +# define COMPILER_VERSION_MINOR DEC(__cray_minor__) +# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__ORANGEC__) +# define COMPILER_ID "OrangeC" +# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) + +#elif defined(__RENESAS__) +# define COMPILER_ID "Renesas" +/* __RENESAS_VERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__RENESAS_VERSION__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR HEX(__RENESAS_VERSION__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__RENESAS_VERSION__ >> 8 & 0xFF) + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) && defined(__ti__) +# define COMPILER_ID "TIClang" + # define COMPILER_VERSION_MAJOR DEC(__ti_major__) + # define COMPILER_VERSION_MINOR DEC(__ti_minor__) + # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) +# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__DCC__) && defined(_DIAB_TOOL) +# define COMPILER_ID "Diab" + # define COMPILER_VERSION_MAJOR DEC(__VERSION_MAJOR_NUMBER__) + # define COMPILER_VERSION_MINOR DEC(__VERSION_MINOR_NUMBER__) + # define COMPILER_VERSION_PATCH DEC(__VERSION_ARCH_FEATURE_NUMBER__) + # define COMPILER_VERSION_TWEAK DEC(__VERSION_BUG_FIX_NUMBER__) + + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__clang__) && defined(__ti__) +# if defined(__ARM_ARCH) +# define ARCHITECTURE_ID "ARM" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) || defined(__CPARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__RENESAS__) +# if defined(__CCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__CCRL__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__CCRH__) +# define ARCHITECTURE_ID "RH850" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#define CXX_STD_98 199711L +#define CXX_STD_11 201103L +#define CXX_STD_14 201402L +#define CXX_STD_17 201703L +#define CXX_STD_20 202002L +#define CXX_STD_23 202302L + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) +# if _MSVC_LANG > CXX_STD_17 +# define CXX_STD _MSVC_LANG +# elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17 +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 +# define CXX_STD CXX_STD_17 +# elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# elif defined(__INTEL_CXX11_MODE__) +# define CXX_STD CXX_STD_11 +# else +# define CXX_STD CXX_STD_98 +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# if _MSVC_LANG > __cplusplus +# define CXX_STD _MSVC_LANG +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__NVCOMPILER) +# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__INTEL_COMPILER) || defined(__PGI) +# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes) +# define CXX_STD CXX_STD_17 +# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__) +# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define CXX_STD CXX_STD_11 +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > CXX_STD_23 + "26" +#elif CXX_STD > CXX_STD_20 + "23" +#elif CXX_STD > CXX_STD_17 + "20" +#elif CXX_STD > CXX_STD_14 + "17" +#elif CXX_STD > CXX_STD_11 + "14" +#elif CXX_STD >= CXX_STD_11 + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__) || defined(__RENESAS__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#if defined(COMPILER_VERSION_INTERNAL) || defined(COMPILER_VERSION_INTERNAL_STR) + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/build/CMakeFiles/4.2.3/CompilerIdCXX/a.out b/build/CMakeFiles/4.2.3/CompilerIdCXX/a.out new file mode 100755 index 0000000000000000000000000000000000000000..f9e8ce47c7fdc7039333726ab29308873aa6af76 GIT binary patch literal 33736 zcmeI5Uu@G=6vt0Xr<;sX{{&%3s1FbYvvoimQH-5z%HrIXv1qfZ*WcFPwuY`k1^|55zuUfT=ZC8o|0yMM5sRDk4%TK5(SGvrjA#YxHddvYYo4fUt7~Zz?|jjl z=erhIl4qC~D%DySY@Hw0`vdcRWb7h#i*iX?luFt=lg8j7Ki?=XlzbCriP&zRZGvvp-|zk8}5|p}z6Sy4w289ZBca#kRVb*Y}=v?A7PfaU$lMmOOIL zb48x(XO)<~4_kla#0HC)NJj%X!}54((b8v%xvM+ zL~B`fJwpzw`;9GpMOLv&+`pG=bPgr%8_MiHnw(utW78{X?EGT7GP{(<_^czvuE3R< zmFcmP$js&oO9NxYu9C$UGO?oT#7YXsBp1Kqk>dKh4;IY1r0_mn%k70@(_9zVe{g(} zI$huRc+*22@t)pD)J}wIdV8bx)~FThdX99YH)De{ND$&Atcy zoR&pi(LLtvx*4&6&5W_;I-pX>43`w;;F5C8!X009sH z0T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI z5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!X009vAe+c+EO|wzSnA@g1x2?GJ63>X9 z2e{dMAmf?8k6eoONJtt-duSx>;?K1HJgh%Q`IFoWdsx$o{EpYO+C#&#+9Q3jX-THH zHQgzVv{P1>t!PcAkv2WGh(=4e*SzZKR`yQ2BbBsOw{3;(1eHW$opD9md#p%|2A#TP zt;j2^W!$`aivQn%oL|ab>e8LfwY^Mij(G!4{9a?r`DMM|*gj*o7<;*~6UHt!_K?`T zQF?02ejlj<6)Rn_KDIN>p4~CC019x-Td{zu6VGx}nu=0w4OJWTQ%&b^t}R!t{!%*5 z6(3@slr3@>`xuvNH@W#RZjJ7F_6K#8hzalY``o(4ym4K3m@rY7RS{1m>Dh1pKDO!L znxD%1+kJ2U`KdMh#g;eEreC_W`wX3II~Q7Ze9y5@g7H%`o#UP}lao8#O~InsU7zh5 z+<)%t*SEd;z|otHPkni`p?vyOF#Phd)5i}Sd1ud+Uq5)}_e0*nvfJv8tQy#Iv-xkd rfBLnP{om|3`+n;3rK+}zAHDbJTjvk_^~Tz%=+gs#d{yE;;n4aQ1R(#S literal 0 HcmV?d00001 diff --git a/build/CMakeFiles/4.2.3/CompilerIdCXX/apple-sdk.cpp b/build/CMakeFiles/4.2.3/CompilerIdCXX/apple-sdk.cpp new file mode 100644 index 0000000..db846b4 --- /dev/null +++ b/build/CMakeFiles/4.2.3/CompilerIdCXX/apple-sdk.cpp @@ -0,0 +1 @@ +#include diff --git a/build/CMakeFiles/CMakeConfigureLog.yaml b/build/CMakeFiles/CMakeConfigureLog.yaml new file mode 100644 index 0000000..c8c96ee --- /dev/null +++ b/build/CMakeFiles/CMakeConfigureLog.yaml @@ -0,0 +1,1686 @@ + +--- +events: + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineSystem.cmake:12 (find_program)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_UNAME" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "uname" + candidate_directories: + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + searched_directories: + - "/opt/homebrew/bin/uname" + - "/opt/homebrew/sbin/uname" + - "/usr/local/bin/uname" + - "/System/Cryptexes/App/usr/bin/uname" + found: "/usr/bin/uname" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineSystem.cmake:212 (message)" + - "CMakeLists.txt:2 (project)" + message: | + The system is: Darwin - 25.3.0 - arm64 + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeUnixFindMake.cmake:5 (find_program)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_MAKE_PROGRAM" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "gmake" + - "make" + - "smake" + candidate_directories: + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + searched_directories: + - "/opt/homebrew/bin/gmake" + - "/opt/homebrew/sbin/gmake" + - "/usr/local/bin/gmake" + - "/System/Cryptexes/App/usr/bin/gmake" + - "/usr/bin/gmake" + - "/bin/gmake" + - "/usr/sbin/gmake" + - "/sbin/gmake" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/gmake" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/gmake" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/gmake" + - "/opt/pmk/env/global/bin/gmake" + - "/opt/homebrew/bin/make" + - "/opt/homebrew/sbin/make" + - "/usr/local/bin/make" + - "/System/Cryptexes/App/usr/bin/make" + found: "/usr/bin/make" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompiler.cmake:73 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:64 (_cmake_find_compiler)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_C_COMPILER" + description: "C compiler" + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "cc" + - "gcc" + - "cl" + - "bcc" + - "xlc" + - "icx" + - "clang" + candidate_directories: + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + searched_directories: + - "/opt/homebrew/bin/cc" + - "/opt/homebrew/sbin/cc" + - "/usr/local/bin/cc" + - "/System/Cryptexes/App/usr/bin/cc" + found: "/usr/bin/cc" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:462 (find_file)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:500 (CMAKE_DETERMINE_COMPILER_ID_WRITE)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:8 (CMAKE_DETERMINE_COMPILER_ID_BUILD)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + mode: "file" + variable: "src_in" + description: "Path to a file." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "CMakeCCompilerId.c.in" + candidate_directories: + - "/opt/homebrew/share/cmake/Modules/" + found: "/opt/homebrew/share/cmake/Modules/CMakeCCompilerId.c.in" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. + Compiler: /usr/bin/cc + Build flags: + Id flags: + + The output was: + 0 + + + Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + + The C compiler identification is AppleClang, found in: + /Users/alex/code/alextac98/dv/build/CMakeFiles/4.2.3/CompilerIdC/a.out + + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:290 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Detecting C compiler apple sysroot: "/usr/bin/cc" "-E" "apple-sdk.c" + # 1 "apple-sdk.c" + # 1 "" 1 + # 1 "" 3 + # 466 "" 3 + # 1 "" 1 + # 1 "" 2 + # 1 "apple-sdk.c" 2 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 1 3 4 + # 89 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 + # 90 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/TargetConditionals.h" 1 3 4 + # 91 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 + # 207 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 1 3 4 + # 196 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 + # 197 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 1 3 4 + # 33 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 + # 34 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 2 3 4 + # 198 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 1 3 4 + # 34 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 1 3 4 + # 35 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 2 3 4 + # 199 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 + # 208 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 + # 2 "apple-sdk.c" 2 + + + Found apple sysroot: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_AR" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ar" + candidate_directories: + - "/usr/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + found: "/usr/bin/ar" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_RANLIB" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ranlib" + candidate_directories: + - "/usr/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + found: "/usr/bin/ranlib" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_STRIP" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "strip" + candidate_directories: + - "/usr/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + found: "/usr/bin/strip" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_LINKER" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ld" + candidate_directories: + - "/usr/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + found: "/usr/bin/ld" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_NM" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "nm" + candidate_directories: + - "/usr/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + found: "/usr/bin/nm" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_OBJDUMP" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "objdump" + candidate_directories: + - "/usr/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + found: "/usr/bin/objdump" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_OBJCOPY" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "objcopy" + candidate_directories: + - "/usr/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + searched_directories: + - "/usr/bin/objcopy" + - "/opt/homebrew/bin/objcopy" + - "/opt/homebrew/sbin/objcopy" + - "/usr/local/bin/objcopy" + - "/System/Cryptexes/App/usr/bin/objcopy" + - "/bin/objcopy" + - "/usr/sbin/objcopy" + - "/sbin/objcopy" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/objcopy" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/objcopy" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/objcopy" + - "/opt/pmk/env/global/bin/objcopy" + found: false + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_READELF" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "readelf" + candidate_directories: + - "/usr/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + searched_directories: + - "/usr/bin/readelf" + - "/opt/homebrew/bin/readelf" + - "/opt/homebrew/sbin/readelf" + - "/usr/local/bin/readelf" + - "/System/Cryptexes/App/usr/bin/readelf" + - "/bin/readelf" + - "/usr/sbin/readelf" + - "/sbin/readelf" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/readelf" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/readelf" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/readelf" + - "/opt/pmk/env/global/bin/readelf" + found: false + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_DLLTOOL" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "dlltool" + candidate_directories: + - "/usr/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + searched_directories: + - "/usr/bin/dlltool" + - "/opt/homebrew/bin/dlltool" + - "/opt/homebrew/sbin/dlltool" + - "/usr/local/bin/dlltool" + - "/System/Cryptexes/App/usr/bin/dlltool" + - "/bin/dlltool" + - "/usr/sbin/dlltool" + - "/sbin/dlltool" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/dlltool" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/dlltool" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/dlltool" + - "/opt/pmk/env/global/bin/dlltool" + found: false + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_ADDR2LINE" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "addr2line" + candidate_directories: + - "/usr/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + searched_directories: + - "/usr/bin/addr2line" + - "/opt/homebrew/bin/addr2line" + - "/opt/homebrew/sbin/addr2line" + - "/usr/local/bin/addr2line" + - "/System/Cryptexes/App/usr/bin/addr2line" + - "/bin/addr2line" + - "/usr/sbin/addr2line" + - "/sbin/addr2line" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/addr2line" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/addr2line" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/addr2line" + - "/opt/pmk/env/global/bin/addr2line" + found: false + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_TAPI" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "tapi" + candidate_directories: + - "/usr/bin/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + searched_directories: + - "/usr/bin/tapi" + - "/opt/homebrew/bin/tapi" + - "/opt/homebrew/sbin/tapi" + - "/usr/local/bin/tapi" + - "/System/Cryptexes/App/usr/bin/tapi" + - "/bin/tapi" + - "/usr/sbin/tapi" + - "/sbin/tapi" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/tapi" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/tapi" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/tapi" + - "/opt/pmk/env/global/bin/tapi" + found: false + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompiler.cmake:54 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:69 (_cmake_find_compiler)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_CXX_COMPILER" + description: "CXX compiler" + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "c++" + - "g++" + - "cl" + - "bcc" + - "icpx" + - "icx" + - "clang++" + candidate_directories: + - "/usr/bin/" + found: "/usr/bin/c++" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:462 (find_file)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:500 (CMAKE_DETERMINE_COMPILER_ID_WRITE)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:8 (CMAKE_DETERMINE_COMPILER_ID_BUILD)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:125 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + mode: "file" + variable: "src_in" + description: "Path to a file." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "CMakeCXXCompilerId.cpp.in" + candidate_directories: + - "/opt/homebrew/share/cmake/Modules/" + found: "/opt/homebrew/share/cmake/Modules/CMakeCXXCompilerId.cpp.in" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:125 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. + Compiler: /usr/bin/c++ + Build flags: + Id flags: + + The output was: + 0 + + + Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + + The CXX compiler identification is AppleClang, found in: + /Users/alex/code/alextac98/dv/build/CMakeFiles/4.2.3/CompilerIdCXX/a.out + + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:290 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:125 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Detecting CXX compiler apple sysroot: "/usr/bin/c++" "-E" "apple-sdk.cpp" + # 1 "apple-sdk.cpp" + # 1 "" 1 + # 1 "" 3 + # 514 "" 3 + # 1 "" 1 + # 1 "" 2 + # 1 "apple-sdk.cpp" 2 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 1 3 4 + # 89 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 + # 90 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/TargetConditionals.h" 1 3 4 + # 91 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 + # 207 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 1 3 4 + # 196 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 + # 197 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 1 3 4 + # 33 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 + # 34 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 2 3 4 + # 198 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 1 3 4 + # 34 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 3 4 + # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 1 3 4 + # 35 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 2 3 4 + # 199 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 + # 208 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 + # 2 "apple-sdk.cpp" 2 + + + Found apple sysroot: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk + - + kind: "find-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/Platform/Darwin.cmake:76 (find_program)" + - "/opt/homebrew/share/cmake/Modules/CMakeSystemSpecificInformation.cmake:32 (include)" + - "CMakeLists.txt:2 (project)" + mode: "program" + variable: "CMAKE_INSTALL_NAME_TOOL" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "install_name_tool" + candidate_directories: + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + searched_directories: + - "/opt/homebrew/bin/install_name_tool" + - "/opt/homebrew/sbin/install_name_tool" + - "/usr/local/bin/install_name_tool" + - "/System/Cryptexes/App/usr/bin/install_name_tool" + found: "/usr/bin/install_name_tool" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + CMAKE_INSTALL_PREFIX: "/usr/local" + - + kind: "try_compile-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:83 (try_compile)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting C compiler ABI info" + directories: + source: "/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr" + binary: "/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr" + cmakeVariables: + CMAKE_C_FLAGS: "" + CMAKE_C_FLAGS_DEBUG: "-g" + CMAKE_EXE_LINKER_FLAGS: "" + CMAKE_OSX_ARCHITECTURES: "" + CMAKE_OSX_DEPLOYMENT_TARGET: "" + CMAKE_OSX_SYSROOT: "" + buildResult: + variable: "CMAKE_C_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr' + + Run Build Command(s): /opt/homebrew/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_ea9c3/fast + /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_ea9c3.dir/build.make CMakeFiles/cmTC_ea9c3.dir/build + Building C object CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o + /usr/bin/cc -arch arm64 -v -Wl,-v -MD -MT CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -c /opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c + Apple clang version 17.0.0 (clang-1700.6.4.2) + Target: arm64-apple-darwin25.3.0 + Thread model: posix + InstalledDir: /Library/Developer/CommandLineTools/usr/bin + clang: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] + "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx26.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=26.2 -fvisibility-inlines-hidden-static-local-var -fdefine-target-os-macros -fno-assume-unique-vtables -fno-modulemap-allow-subdirectory-search -target-cpu apple-m1 -target-feature +zcm -target-feature +zcz -target-feature +v8.5a -target-feature +aes -target-feature +altnzcv -target-feature +ccdp -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fptoint -target-feature +fullfp16 -target-feature +jsconv -target-feature +lse -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +predres -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sb -target-feature +sha2 -target-feature +sha3 -target-feature +specrestrict -target-feature +ssbs -target-abi darwinpcs -debugger-tuning=lldb -fdebug-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr -target-linker-version 1230.1 -v -fcoverage-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/17 -dependency-file CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/17/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -clang-vendor-feature=+disableAtImportPrivateFrameworkInImplementationError -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -x c /opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c + clang -cc1 version 17.0.0 (clang-1700.6.4.2) default target arm64-apple-darwin25.3.0 + ignoring nonexistent directory "/usr/local/include" + ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include" + ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks" + #include "..." search starts here: + #include <...> search starts here: + /Library/Developer/CommandLineTools/usr/lib/clang/17/include + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include + /Library/Developer/CommandLineTools/usr/include + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory) + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks (framework directory) + End of search list. + Linking C executable cmTC_ea9c3 + /opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ea9c3.dir/link.txt --verbose=1 + Apple clang version 17.0.0 (clang-1700.6.4.2) + Target: arm64-apple-darwin25.3.0 + Thread model: posix + InstalledDir: /Library/Developer/CommandLineTools/usr/bin + "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 26.0.0 26.2 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mllvm -enable-linkonceodr-outlining -o cmTC_ea9c3 -L/usr/local/lib -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a + @(#)PROGRAM:ld PROJECT:ld-1230.1 + BUILD 10:14:01 Jan 9 2026 + configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em armv8m.main armv8.1m.main + will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em + LTO support using: LLVM version 17.0.0 (static support for 29, runtime is 29) + TAPI support using: Apple TAPI version 17.0.0 (tapi-1700.3.8) + Library search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift + Framework search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks + /usr/bin/cc -arch arm64 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -o cmTC_ea9c3 + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:122 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Effective list of requested architectures (possibly empty) : "" + Effective list of architectures found in the ABI info binary: "arm64" + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:217 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] + add: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] + add: [/Library/Developer/CommandLineTools/usr/include] + end of search list found + collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] + collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] + collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] + implicit include dirs: [/Library/Developer/CommandLineTools/usr/lib/clang/17/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:253 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|"|[0-9]+>[ -]*Build:[ 0-9]+ ms[ ]*)?[ ]*(([^"]*[/\\])?(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)))("|,| |$)] + ignore line: [Change Dir: '/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr'] + ignore line: [] + ignore line: [Run Build Command(s): /opt/homebrew/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_ea9c3/fast] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_ea9c3.dir/build.make CMakeFiles/cmTC_ea9c3.dir/build] + ignore line: [Building C object CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -arch arm64 -v -Wl -v -MD -MT CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -c /opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Apple clang version 17.0.0 (clang-1700.6.4.2)] + ignore line: [Target: arm64-apple-darwin25.3.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + ignore line: [clang: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx26.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=26.2 -fvisibility-inlines-hidden-static-local-var -fdefine-target-os-macros -fno-assume-unique-vtables -fno-modulemap-allow-subdirectory-search -target-cpu apple-m1 -target-feature +zcm -target-feature +zcz -target-feature +v8.5a -target-feature +aes -target-feature +altnzcv -target-feature +ccdp -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fptoint -target-feature +fullfp16 -target-feature +jsconv -target-feature +lse -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +predres -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sb -target-feature +sha2 -target-feature +sha3 -target-feature +specrestrict -target-feature +ssbs -target-abi darwinpcs -debugger-tuning=lldb -fdebug-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr -target-linker-version 1230.1 -v -fcoverage-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/17 -dependency-file CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/17/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -clang-vendor-feature=+disableAtImportPrivateFrameworkInImplementationError -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -x c /opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 17.0.0 (clang-1700.6.4.2) default target arm64-apple-darwin25.3.0] + ignore line: [ignoring nonexistent directory "/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/17/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks (framework directory)] + ignore line: [End of search list.] + ignore line: [Linking C executable cmTC_ea9c3] + ignore line: [/opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ea9c3.dir/link.txt --verbose=1] + ignore line: [Apple clang version 17.0.0 (clang-1700.6.4.2)] + ignore line: [Target: arm64-apple-darwin25.3.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 26.0.0 26.2 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mllvm -enable-linkonceodr-outlining -o cmTC_ea9c3 -L/usr/local/lib -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] + arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore + arg [-demangle] ==> ignore + arg [-lto_library] ==> ignore, skip following value + arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library + arg [-dynamic] ==> ignore + arg [-arch] ==> ignore + arg [arm64] ==> ignore + arg [-platform_version] ==> ignore + arg [macos] ==> ignore + arg [26.0.0] ==> ignore + arg [26.2] ==> ignore + arg [-syslibroot] ==> ignore + arg [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk] ==> ignore + arg [-mllvm] ==> ignore + arg [-enable-linkonceodr-outlining] ==> ignore + arg [-o] ==> ignore + arg [cmTC_ea9c3] ==> ignore + arg [-L/usr/local/lib] ==> dir [/usr/local/lib] + arg [-search_paths_first] ==> ignore + arg [-headerpad_max_install_names] ==> ignore + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lSystem] ==> lib [System] + arg [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] + linker tool for 'C': /Library/Developer/CommandLineTools/usr/bin/ld + Library search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] + Framework search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] + remove lib [System] + remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] + collapse library dir [/usr/local/lib] ==> [/usr/local/lib] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] + collapse framework dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] + implicit libs: [] + implicit objs: [] + implicit dirs: [/usr/local/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] + implicit fwks: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] + + + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake:38 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:299 (cmake_determine_linker_id)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Running the C compiler's linker: "/Library/Developer/CommandLineTools/usr/bin/ld" "-v" + @(#)PROGRAM:ld PROJECT:ld-1230.1 + BUILD 10:14:01 Jan 9 2026 + configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em armv8m.main armv8.1m.main + will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em + LTO support using: LLVM version 17.0.0 (static support for 29, runtime is 29) + TAPI support using: Apple TAPI version 17.0.0 (tapi-1700.3.8) + - + kind: "try_compile-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:83 (try_compile)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting CXX compiler ABI info" + directories: + source: "/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C" + binary: "/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C" + cmakeVariables: + CMAKE_CXX_FLAGS: "" + CMAKE_CXX_FLAGS_DEBUG: "-g" + CMAKE_CXX_SCAN_FOR_MODULES: "OFF" + CMAKE_EXE_LINKER_FLAGS: "" + CMAKE_OSX_ARCHITECTURES: "" + CMAKE_OSX_DEPLOYMENT_TARGET: "" + CMAKE_OSX_SYSROOT: "" + buildResult: + variable: "CMAKE_CXX_ABI_COMPILED" + cached: true + stdout: | + Change Dir: '/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C' + + Run Build Command(s): /opt/homebrew/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_591c3/fast + /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_591c3.dir/build.make CMakeFiles/cmTC_591c3.dir/build + Building CXX object CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o + /usr/bin/c++ -arch arm64 -v -Wl,-v -MD -MT CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -c /opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp + Apple clang version 17.0.0 (clang-1700.6.4.2) + Target: arm64-apple-darwin25.3.0 + Thread model: posix + InstalledDir: /Library/Developer/CommandLineTools/usr/bin + clang++: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] + ignoring nonexistent directory "/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1" + "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx26.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=26.2 -fvisibility-inlines-hidden-static-local-var -fdefine-target-os-macros -fno-assume-unique-vtables -fno-modulemap-allow-subdirectory-search -target-cpu apple-m1 -target-feature +zcm -target-feature +zcz -target-feature +v8.5a -target-feature +aes -target-feature +altnzcv -target-feature +ccdp -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fptoint -target-feature +fullfp16 -target-feature +jsconv -target-feature +lse -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +predres -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sb -target-feature +sha2 -target-feature +sha3 -target-feature +specrestrict -target-feature +ssbs -target-abi darwinpcs -debugger-tuning=lldb -fdebug-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C -target-linker-version 1230.1 -v -fcoverage-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/17 -dependency-file CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/17/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -fdeprecated-macro -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fno-cxx-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -clang-vendor-feature=+disableAtImportPrivateFrameworkInImplementationError -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -x c++ /opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp + clang -cc1 version 17.0.0 (clang-1700.6.4.2) default target arm64-apple-darwin25.3.0 + ignoring nonexistent directory "/usr/local/include" + ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include" + ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks" + #include "..." search starts here: + #include <...> search starts here: + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 + /Library/Developer/CommandLineTools/usr/lib/clang/17/include + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include + /Library/Developer/CommandLineTools/usr/include + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory) + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks (framework directory) + End of search list. + Linking CXX executable cmTC_591c3 + /opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/cmTC_591c3.dir/link.txt --verbose=1 + Apple clang version 17.0.0 (clang-1700.6.4.2) + Target: arm64-apple-darwin25.3.0 + Thread model: posix + InstalledDir: /Library/Developer/CommandLineTools/usr/bin + "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 26.0.0 26.2 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mllvm -enable-linkonceodr-outlining -o cmTC_591c3 -L/usr/local/lib -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a + @(#)PROGRAM:ld PROJECT:ld-1230.1 + BUILD 10:14:01 Jan 9 2026 + configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em armv8m.main armv8.1m.main + will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em + LTO support using: LLVM version 17.0.0 (static support for 29, runtime is 29) + TAPI support using: Apple TAPI version 17.0.0 (tapi-1700.3.8) + Library search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift + Framework search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks + /usr/bin/c++ -arch arm64 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_591c3 + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:122 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Effective list of requested architectures (possibly empty) : "" + Effective list of architectures found in the ABI info binary: "arm64" + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:217 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CXX implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1] + add: [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] + add: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] + add: [/Library/Developer/CommandLineTools/usr/include] + end of search list found + collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1] + collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] + collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] + collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] + implicit include dirs: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1;/Library/Developer/CommandLineTools/usr/lib/clang/17/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:253 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed CXX implicit link information: + link line regex: [^( *|.*[/\\])(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + linker tool regex: [^[ ]*(->|"|[0-9]+>[ -]*Build:[ 0-9]+ ms[ ]*)?[ ]*(([^"]*[/\\])?(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)))("|,| |$)] + ignore line: [Change Dir: '/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C'] + ignore line: [] + ignore line: [Run Build Command(s): /opt/homebrew/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_591c3/fast] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_591c3.dir/build.make CMakeFiles/cmTC_591c3.dir/build] + ignore line: [Building CXX object CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -arch arm64 -v -Wl -v -MD -MT CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -c /opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Apple clang version 17.0.0 (clang-1700.6.4.2)] + ignore line: [Target: arm64-apple-darwin25.3.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + ignore line: [clang++: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1"] + ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx26.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=26.2 -fvisibility-inlines-hidden-static-local-var -fdefine-target-os-macros -fno-assume-unique-vtables -fno-modulemap-allow-subdirectory-search -target-cpu apple-m1 -target-feature +zcm -target-feature +zcz -target-feature +v8.5a -target-feature +aes -target-feature +altnzcv -target-feature +ccdp -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fptoint -target-feature +fullfp16 -target-feature +jsconv -target-feature +lse -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +predres -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sb -target-feature +sha2 -target-feature +sha3 -target-feature +specrestrict -target-feature +ssbs -target-abi darwinpcs -debugger-tuning=lldb -fdebug-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C -target-linker-version 1230.1 -v -fcoverage-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/17 -dependency-file CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/17/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -fdeprecated-macro -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fno-cxx-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -clang-vendor-feature=+disableAtImportPrivateFrameworkInImplementationError -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -x c++ /opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 17.0.0 (clang-1700.6.4.2) default target arm64-apple-darwin25.3.0] + ignore line: [ignoring nonexistent directory "/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1] + ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/17/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks (framework directory)] + ignore line: [End of search list.] + ignore line: [Linking CXX executable cmTC_591c3] + ignore line: [/opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/cmTC_591c3.dir/link.txt --verbose=1] + ignore line: [Apple clang version 17.0.0 (clang-1700.6.4.2)] + ignore line: [Target: arm64-apple-darwin25.3.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 26.0.0 26.2 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mllvm -enable-linkonceodr-outlining -o cmTC_591c3 -L/usr/local/lib -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] + arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore + arg [-demangle] ==> ignore + arg [-lto_library] ==> ignore, skip following value + arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library + arg [-dynamic] ==> ignore + arg [-arch] ==> ignore + arg [arm64] ==> ignore + arg [-platform_version] ==> ignore + arg [macos] ==> ignore + arg [26.0.0] ==> ignore + arg [26.2] ==> ignore + arg [-syslibroot] ==> ignore + arg [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk] ==> ignore + arg [-mllvm] ==> ignore + arg [-enable-linkonceodr-outlining] ==> ignore + arg [-o] ==> ignore + arg [cmTC_591c3] ==> ignore + arg [-L/usr/local/lib] ==> dir [/usr/local/lib] + arg [-search_paths_first] ==> ignore + arg [-headerpad_max_install_names] ==> ignore + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lSystem] ==> lib [System] + arg [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] + linker tool for 'CXX': /Library/Developer/CommandLineTools/usr/bin/ld + Library search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] + Framework search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] + remove lib [System] + remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] + collapse library dir [/usr/local/lib] ==> [/usr/local/lib] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] + collapse framework dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] + implicit libs: [c++] + implicit objs: [] + implicit dirs: [/usr/local/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] + implicit fwks: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] + + + - + kind: "message-v1" + backtrace: + - "/opt/homebrew/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake:38 (message)" + - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:299 (cmake_determine_linker_id)" + - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Running the CXX compiler's linker: "/Library/Developer/CommandLineTools/usr/bin/ld" "-v" + @(#)PROGRAM:ld PROJECT:ld-1230.1 + BUILD 10:14:01 Jan 9 2026 + configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em armv8m.main armv8.1m.main + will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em + LTO support using: LLVM version 17.0.0 (static support for 29, runtime is 29) + TAPI support using: Apple TAPI version 17.0.0 (tapi-1700.3.8) + - + kind: "find-v1" + backtrace: + - "CMakeLists.txt:6 (find_program)" + mode: "program" + variable: "BAZEL_EXECUTABLE" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "bazel" + candidate_directories: + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/bin/" + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/sbin/" + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/opt/homebrew/" + - "/usr/local/bin/" + - "/usr/local/sbin/" + - "/usr/local/" + - "/usr/bin/" + - "/usr/sbin/" + - "/usr/" + - "/bin/" + - "/sbin/" + - "/usr/X11R6/bin/" + - "/usr/X11R6/sbin/" + - "/usr/X11R6/" + - "/usr/pkg/bin/" + - "/usr/pkg/sbin/" + - "/usr/pkg/" + - "/opt/bin/" + - "/opt/sbin/" + - "/opt/" + - "/sw/bin/" + - "/sw/sbin/" + - "/sw/" + - "/opt/local/bin/" + - "/opt/local/sbin/" + - "/opt/local/" + - "/Users/alex/Applications/" + - "/Applications/" + found: "/opt/homebrew/bin/bazel" + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + CMAKE_INSTALL_PREFIX: "/usr/local" + CMAKE_SYSTEM_PREFIX_PATH: + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr" + - "/opt/homebrew" + - "/usr/local" + - "/usr" + - "/" + - "/opt/homebrew" + - "/usr/local" + - "/usr/X11R6" + - "/usr/pkg" + - "/opt" + - "/sw" + - "/opt/local" + CMAKE_SYSTEM_APPBUNDLE_PATH: + - "/Users/alex/Applications" + - "/Applications" + - + kind: "find-v1" + backtrace: + - "CMakeLists.txt:7 (find_program)" + mode: "program" + variable: "CARGO_EXECUTABLE" + description: "Path to a program." + settings: + SearchFramework: "FIRST" + SearchAppBundle: "FIRST" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "cargo" + candidate_directories: + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/usr/local/bin/" + - "/System/Cryptexes/App/usr/bin/" + - "/usr/bin/" + - "/bin/" + - "/usr/sbin/" + - "/sbin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" + - "/opt/pmk/env/global/bin/" + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/bin/" + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/sbin/" + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/" + - "/opt/homebrew/bin/" + - "/opt/homebrew/sbin/" + - "/opt/homebrew/" + - "/usr/local/bin/" + - "/usr/local/sbin/" + - "/usr/local/" + - "/usr/bin/" + - "/usr/sbin/" + - "/usr/" + - "/bin/" + - "/sbin/" + - "/usr/X11R6/bin/" + - "/usr/X11R6/sbin/" + - "/usr/X11R6/" + - "/usr/pkg/bin/" + - "/usr/pkg/sbin/" + - "/usr/pkg/" + - "/opt/bin/" + - "/opt/sbin/" + - "/opt/" + - "/sw/bin/" + - "/sw/sbin/" + - "/sw/" + - "/opt/local/bin/" + - "/opt/local/sbin/" + - "/opt/local/" + - "/Users/alex/Applications/" + - "/Applications/" + searched_directories: + - "/opt/homebrew/bin/cargo" + - "/opt/homebrew/sbin/cargo" + - "/usr/local/bin/cargo" + - "/System/Cryptexes/App/usr/bin/cargo" + - "/usr/bin/cargo" + - "/bin/cargo" + - "/usr/sbin/cargo" + - "/sbin/cargo" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/cargo" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/cargo" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/cargo" + - "/opt/pmk/env/global/bin/cargo" + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/bin/cargo" + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/sbin/cargo" + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/cargo" + - "/opt/homebrew/bin/cargo" + - "/opt/homebrew/sbin/cargo" + - "/opt/homebrew/cargo" + - "/usr/local/bin/cargo" + - "/usr/local/sbin/cargo" + - "/usr/local/cargo" + - "/usr/bin/cargo" + - "/usr/sbin/cargo" + - "/usr/cargo" + - "/bin/cargo" + - "/sbin/cargo" + - "/usr/X11R6/bin/cargo" + - "/usr/X11R6/sbin/cargo" + - "/usr/X11R6/cargo" + - "/usr/pkg/bin/cargo" + - "/usr/pkg/sbin/cargo" + - "/usr/pkg/cargo" + - "/opt/bin/cargo" + - "/opt/sbin/cargo" + - "/opt/cargo" + - "/sw/bin/cargo" + - "/sw/sbin/cargo" + - "/sw/cargo" + - "/opt/local/bin/cargo" + - "/opt/local/sbin/cargo" + - "/opt/local/cargo" + - "/Users/alex/Applications/cargo" + - "/Applications/cargo" + found: false + search_context: + ENV{PATH}: + - "/opt/homebrew/bin" + - "/opt/homebrew/sbin" + - "/usr/local/bin" + - "/System/Cryptexes/App/usr/bin" + - "/usr/bin" + - "/bin" + - "/usr/sbin" + - "/sbin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" + - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" + - "/opt/pmk/env/global/bin" + CMAKE_INSTALL_PREFIX: "/usr/local" + CMAKE_SYSTEM_PREFIX_PATH: + - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr" + - "/opt/homebrew" + - "/usr/local" + - "/usr" + - "/" + - "/opt/homebrew" + - "/usr/local" + - "/usr/X11R6" + - "/usr/pkg" + - "/opt" + - "/sw" + - "/opt/local" + CMAKE_SYSTEM_APPBUNDLE_PATH: + - "/Users/alex/Applications" + - "/Applications" +... diff --git a/build/CMakeFiles/cmake.check_cache b/build/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/docs/docs/dev/code.md b/docs/docs/dev/code.md index 1d67d0a..d96bb38 100644 --- a/docs/docs/dev/code.md +++ b/docs/docs/dev/code.md @@ -31,6 +31,8 @@ bazel run //core:serve_docs #### Python +On Windows, prefer PowerShell/cmd for Bazel commands, or set `MSYS2_ARG_CONV_EXCL='*'` when using Git Bash so `//...` labels are passed through unchanged. + ```shell # Build the extension module (.so) bazel build //python:dv_ext.so diff --git a/docs/docs/python.md b/docs/docs/python.md index 4b21b06..4fe4592 100644 --- a/docs/docs/python.md +++ b/docs/docs/python.md @@ -55,6 +55,8 @@ print(f"Distance: {distance.value_in('m')} m") For development in this repo: +On Windows, run Bazel from PowerShell/cmd, or set `MSYS2_ARG_CONV_EXCL='*'` first if you are using Git Bash so labels like `//python:wheel_abi3.dist` are not rewritten into invalid `/python:...` paths. + ```bash # Build the extension module bazel build //python:dv_ext.so From d83ec3d73a3539f7a7920aa4228453f4576a8623 Mon Sep 17 00:00:00 2001 From: Alex Tacescu Date: Sun, 22 Mar 2026 23:57:03 -0700 Subject: [PATCH 8/9] Another fix for python builds on windows --- .github/workflows/_python.yaml | 17 +- .gitignore | 1 + build/CMakeCache.txt | 383 ---- build/CMakeFiles/4.2.3/CMakeCCompiler.cmake | 84 - build/CMakeFiles/4.2.3/CMakeCXXCompiler.cmake | 104 - .../4.2.3/CMakeDetermineCompilerABI_C.bin | Bin 33560 -> 0 bytes .../4.2.3/CMakeDetermineCompilerABI_CXX.bin | Bin 33560 -> 0 bytes build/CMakeFiles/4.2.3/CMakeSystem.cmake | 15 - .../4.2.3/CompilerIdC/CMakeCCompilerId.c | 934 --------- build/CMakeFiles/4.2.3/CompilerIdC/a.out | Bin 33736 -> 0 bytes .../CMakeFiles/4.2.3/CompilerIdC/apple-sdk.c | 1 - .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 949 ---------- build/CMakeFiles/4.2.3/CompilerIdCXX/a.out | Bin 33736 -> 0 bytes .../4.2.3/CompilerIdCXX/apple-sdk.cpp | 1 - build/CMakeFiles/CMakeConfigureLog.yaml | 1686 ----------------- build/CMakeFiles/cmake.check_cache | 1 - 16 files changed, 16 insertions(+), 4160 deletions(-) delete mode 100644 build/CMakeCache.txt delete mode 100644 build/CMakeFiles/4.2.3/CMakeCCompiler.cmake delete mode 100644 build/CMakeFiles/4.2.3/CMakeCXXCompiler.cmake delete mode 100755 build/CMakeFiles/4.2.3/CMakeDetermineCompilerABI_C.bin delete mode 100755 build/CMakeFiles/4.2.3/CMakeDetermineCompilerABI_CXX.bin delete mode 100644 build/CMakeFiles/4.2.3/CMakeSystem.cmake delete mode 100644 build/CMakeFiles/4.2.3/CompilerIdC/CMakeCCompilerId.c delete mode 100755 build/CMakeFiles/4.2.3/CompilerIdC/a.out delete mode 100644 build/CMakeFiles/4.2.3/CompilerIdC/apple-sdk.c delete mode 100644 build/CMakeFiles/4.2.3/CompilerIdCXX/CMakeCXXCompilerId.cpp delete mode 100755 build/CMakeFiles/4.2.3/CompilerIdCXX/a.out delete mode 100644 build/CMakeFiles/4.2.3/CompilerIdCXX/apple-sdk.cpp delete mode 100644 build/CMakeFiles/CMakeConfigureLog.yaml delete mode 100644 build/CMakeFiles/cmake.check_cache diff --git a/.github/workflows/_python.yaml b/.github/workflows/_python.yaml index d8cec79..c1255fe 100644 --- a/.github/workflows/_python.yaml +++ b/.github/workflows/_python.yaml @@ -47,11 +47,14 @@ jobs: - name: Cache Bazel uses: actions/cache@v4 with: - path: ~/.cache/bazel + path: | + ~/.cache/bazel + C:\bzl key: bazel-${{ runner.os }} restore-keys: bazel-${{ runner.os }} - - name: Build wheels + - name: Build wheels (Unix) + if: runner.os != 'Windows' shell: bash env: MSYS2_ARG_CONV_EXCL: "*" @@ -61,6 +64,16 @@ jobs: mkdir -p dist cp "${BAZEL_BIN}/python/${{ matrix.python.dist }}/"*.whl dist/ + - name: Build wheels (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + $bazelArgs = @("--output_user_root=C:/bzl") + bazel @bazelArgs build //python:${{ matrix.python.target }}.dist + $bazelBin = bazel @bazelArgs info bazel-bin + New-Item -ItemType Directory -Force -Path dist | Out-Null + Copy-Item "$bazelBin/python/${{ matrix.python.dist }}/*.whl" dist/ + - name: Upload wheels uses: actions/upload-artifact@v4 with: diff --git a/.gitignore b/.gitignore index d971247..1039c7d 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ __pycache__/ **/dist/ # CMake Build Directories +build/ build-*/ # VSCode Settings diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt deleted file mode 100644 index 3823e3e..0000000 --- a/build/CMakeCache.txt +++ /dev/null @@ -1,383 +0,0 @@ -# This is the CMakeCache file. -# For build in directory: /Users/alex/code/alextac98/dv/build -# It was generated by CMake: /opt/homebrew/bin/cmake -# You can edit this file to change values found and used by cmake. -# If you do not want to change any of the values, simply exit the editor. -# If you do want to change a value, simply edit, save, and exit the editor. -# The syntax for the file is as follows: -# KEY:TYPE=VALUE -# KEY is the name of a variable in the cache. -# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. -# VALUE is the current value for the KEY. - -######################## -# EXTERNAL cache entries -######################## - -//Path to a program. -BAZEL_EXECUTABLE:FILEPATH=/opt/homebrew/bin/bazel - -//Path to a program. -CARGO_EXECUTABLE:FILEPATH=CARGO_EXECUTABLE-NOTFOUND - -//Path to a program. -CMAKE_ADDR2LINE:FILEPATH=CMAKE_ADDR2LINE-NOTFOUND - -//Path to a program. -CMAKE_AR:FILEPATH=/usr/bin/ar - -//Choose the type of build, options are: None Debug Release RelWithDebInfo -// MinSizeRel ... -CMAKE_BUILD_TYPE:STRING= - -//Enable/Disable color output during build. -CMAKE_COLOR_MAKEFILE:BOOL=ON - -//CXX compiler -CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ - -//Flags used by the CXX compiler during all build types. -CMAKE_CXX_FLAGS:STRING= - -//Flags used by the CXX compiler during DEBUG builds. -CMAKE_CXX_FLAGS_DEBUG:STRING=-g - -//Flags used by the CXX compiler during MINSIZEREL builds. -CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG - -//Flags used by the CXX compiler during RELEASE builds. -CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG - -//Flags used by the CXX compiler during RELWITHDEBINFO builds. -CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG - -//C compiler -CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc - -//Flags used by the C compiler during all build types. -CMAKE_C_FLAGS:STRING= - -//Flags used by the C compiler during DEBUG builds. -CMAKE_C_FLAGS_DEBUG:STRING=-g - -//Flags used by the C compiler during MINSIZEREL builds. -CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG - -//Flags used by the C compiler during RELEASE builds. -CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG - -//Flags used by the C compiler during RELWITHDEBINFO builds. -CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG - -//Path to a program. -CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND - -//Flags used by the linker during all build types. -CMAKE_EXE_LINKER_FLAGS:STRING= - -//Flags used by the linker during DEBUG builds. -CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during MINSIZEREL builds. -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during RELEASE builds. -CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during RELWITHDEBINFO builds. -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Enable/Disable output of compile commands during generation. -CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= - -//Value Computed by CMake. -CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/Users/alex/code/alextac98/dv/build/CMakeFiles/pkgRedirects - -//Path to a program. -CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool - -//Install path prefix, prepended onto install directories. -CMAKE_INSTALL_PREFIX:PATH=/usr/local - -//Path to a program. -CMAKE_LINKER:FILEPATH=/usr/bin/ld - -//Path to a program. -CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make - -//Flags used by the linker during the creation of modules during -// all build types. -CMAKE_MODULE_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of modules during -// DEBUG builds. -CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of modules during -// MINSIZEREL builds. -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of modules during -// RELEASE builds. -CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of modules during -// RELWITHDEBINFO builds. -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_NM:FILEPATH=/usr/bin/nm - -//Path to a program. -CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND - -//Path to a program. -CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump - -//Build architectures for OSX -CMAKE_OSX_ARCHITECTURES:STRING= - -//Minimum OS X version to target for deployment (at runtime); newer -// APIs weak linked. Set to empty string for default value. -CMAKE_OSX_DEPLOYMENT_TARGET:STRING= - -//The product will be built against the headers and libraries located -// inside the indicated SDK. -CMAKE_OSX_SYSROOT:STRING= - -//Value Computed by CMake -CMAKE_PROJECT_COMPAT_VERSION:STATIC= - -//Value Computed by CMake -CMAKE_PROJECT_DESCRIPTION:STATIC= - -//Value Computed by CMake -CMAKE_PROJECT_HOMEPAGE_URL:STATIC= - -//Value Computed by CMake -CMAKE_PROJECT_NAME:STATIC=dv - -//Value Computed by CMake -CMAKE_PROJECT_SPDX_LICENSE:STATIC= - -//Path to a program. -CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib - -//Path to a program. -CMAKE_READELF:FILEPATH=CMAKE_READELF-NOTFOUND - -//Flags used by the linker during the creation of shared libraries -// during all build types. -CMAKE_SHARED_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of shared libraries -// during DEBUG builds. -CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of shared libraries -// during MINSIZEREL builds. -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of shared libraries -// during RELEASE builds. -CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of shared libraries -// during RELWITHDEBINFO builds. -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//If set, runtime paths are not added when installing shared libraries, -// but are added when building. -CMAKE_SKIP_INSTALL_RPATH:BOOL=NO - -//If set, runtime paths are not added when using shared libraries. -CMAKE_SKIP_RPATH:BOOL=NO - -//Flags used by the archiver during the creation of static libraries -// during all build types. -CMAKE_STATIC_LINKER_FLAGS:STRING= - -//Flags used by the archiver during the creation of static libraries -// during DEBUG builds. -CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the archiver during the creation of static libraries -// during MINSIZEREL builds. -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the archiver during the creation of static libraries -// during RELEASE builds. -CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the archiver during the creation of static libraries -// during RELWITHDEBINFO builds. -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_STRIP:FILEPATH=/usr/bin/strip - -//Path to a program. -CMAKE_TAPI:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/tapi - -//If this value is on, makefiles will be generated without the -// .SILENT directive, and all commands will be echoed to the console -// during the make. This is useful for debugging only. With Visual -// Studio IDE projects all commands are done without /nologo. -CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE - -//Value Computed by CMake -dv_BINARY_DIR:STATIC=/Users/alex/code/alextac98/dv/build - -//Value Computed by CMake -dv_IS_TOP_LEVEL:STATIC=ON - -//Value Computed by CMake -dv_SOURCE_DIR:STATIC=/Users/alex/code/alextac98/dv - - -######################## -# INTERNAL cache entries -######################## - -//ADVANCED property for variable: CMAKE_ADDR2LINE -CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_AR -CMAKE_AR-ADVANCED:INTERNAL=1 -//This is the directory where this CMakeCache.txt was created -CMAKE_CACHEFILE_DIR:INTERNAL=/Users/alex/code/alextac98/dv/build -//Major version of cmake used to create the current loaded cache -CMAKE_CACHE_MAJOR_VERSION:INTERNAL=4 -//Minor version of cmake used to create the current loaded cache -CMAKE_CACHE_MINOR_VERSION:INTERNAL=2 -//Patch version of cmake used to create the current loaded cache -CMAKE_CACHE_PATCH_VERSION:INTERNAL=3 -//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE -CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 -//Path to CMake executable. -CMAKE_COMMAND:INTERNAL=/opt/homebrew/bin/cmake -//Path to cpack program executable. -CMAKE_CPACK_COMMAND:INTERNAL=/opt/homebrew/bin/cpack -//Path to ctest program executable. -CMAKE_CTEST_COMMAND:INTERNAL=/opt/homebrew/bin/ctest -//ADVANCED property for variable: CMAKE_CXX_COMPILER -CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS -CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG -CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL -CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE -CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO -CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_COMPILER -CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS -CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG -CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL -CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE -CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO -CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_DLLTOOL -CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 -//Path to cache edit program executable. -CMAKE_EDIT_COMMAND:INTERNAL=/opt/homebrew/bin/ccmake -//Executable file format -CMAKE_EXECUTABLE_FORMAT:INTERNAL=MACHO -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS -CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG -CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE -CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS -CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 -//Name of external makefile project generator. -CMAKE_EXTRA_GENERATOR:INTERNAL= -//Name of generator. -CMAKE_GENERATOR:INTERNAL=Unix Makefiles -//Generator instance identifier. -CMAKE_GENERATOR_INSTANCE:INTERNAL= -//Name of generator platform. -CMAKE_GENERATOR_PLATFORM:INTERNAL= -//Name of generator toolset. -CMAKE_GENERATOR_TOOLSET:INTERNAL= -//Source directory with the top level CMakeLists.txt file for this -// project -CMAKE_HOME_DIRECTORY:INTERNAL=/Users/alex/code/alextac98/dv -//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL -CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_LINKER -CMAKE_LINKER-ADVANCED:INTERNAL=1 -//Name of CMakeLists files to read -CMAKE_LIST_FILE_NAME:INTERNAL=CMakeLists.txt -//ADVANCED property for variable: CMAKE_MAKE_PROGRAM -CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS -CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG -CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE -CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_NM -CMAKE_NM-ADVANCED:INTERNAL=1 -//number of local generators -CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 -//ADVANCED property for variable: CMAKE_OBJCOPY -CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_OBJDUMP -CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 -//Platform information initialized -CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RANLIB -CMAKE_RANLIB-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_READELF -CMAKE_READELF-ADVANCED:INTERNAL=1 -//Path to CMake installation. -CMAKE_ROOT:INTERNAL=/opt/homebrew/share/cmake -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS -CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG -CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE -CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH -CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_RPATH -CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS -CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG -CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE -CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STRIP -CMAKE_STRIP-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_TAPI -CMAKE_TAPI-ADVANCED:INTERNAL=1 -//uname command -CMAKE_UNAME:INTERNAL=/usr/bin/uname -//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE -CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 - diff --git a/build/CMakeFiles/4.2.3/CMakeCCompiler.cmake b/build/CMakeFiles/4.2.3/CMakeCCompiler.cmake deleted file mode 100644 index bd16e8b..0000000 --- a/build/CMakeFiles/4.2.3/CMakeCCompiler.cmake +++ /dev/null @@ -1,84 +0,0 @@ -set(CMAKE_C_COMPILER "/usr/bin/cc") -set(CMAKE_C_COMPILER_ARG1 "") -set(CMAKE_C_COMPILER_ID "AppleClang") -set(CMAKE_C_COMPILER_VERSION "17.0.0.17000604") -set(CMAKE_C_COMPILER_VERSION_INTERNAL "") -set(CMAKE_C_COMPILER_WRAPPER "") -set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") -set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") -set(CMAKE_C_STANDARD_LATEST "23") -set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") -set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") -set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") -set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") -set(CMAKE_C17_COMPILE_FEATURES "c_std_17") -set(CMAKE_C23_COMPILE_FEATURES "c_std_23") - -set(CMAKE_C_PLATFORM_ID "Darwin") -set(CMAKE_C_SIMULATE_ID "") -set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") -set(CMAKE_C_COMPILER_APPLE_SYSROOT "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk") -set(CMAKE_C_SIMULATE_VERSION "") -set(CMAKE_C_COMPILER_ARCHITECTURE_ID "arm64") - - - -set(CMAKE_AR "/usr/bin/ar") -set(CMAKE_C_COMPILER_AR "") -set(CMAKE_RANLIB "/usr/bin/ranlib") -set(CMAKE_C_COMPILER_RANLIB "") -set(CMAKE_LINKER "/usr/bin/ld") -set(CMAKE_LINKER_LINK "") -set(CMAKE_LINKER_LLD "") -set(CMAKE_C_COMPILER_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") -set(CMAKE_C_COMPILER_LINKER_ID "AppleClang") -set(CMAKE_C_COMPILER_LINKER_VERSION 1230.1) -set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT GNU) -set(CMAKE_MT "") -set(CMAKE_TAPI "/Library/Developer/CommandLineTools/usr/bin/tapi") -set(CMAKE_COMPILER_IS_GNUCC ) -set(CMAKE_C_COMPILER_LOADED 1) -set(CMAKE_C_COMPILER_WORKS TRUE) -set(CMAKE_C_ABI_COMPILED TRUE) - -set(CMAKE_C_COMPILER_ENV_VAR "CC") - -set(CMAKE_C_COMPILER_ID_RUN 1) -set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) -set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) -set(CMAKE_C_LINKER_PREFERENCE 10) -set(CMAKE_C_LINKER_DEPFILE_SUPPORTED ) -set(CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED ) -set(CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED ) - -# Save compiler ABI information. -set(CMAKE_C_SIZEOF_DATA_PTR "8") -set(CMAKE_C_COMPILER_ABI "") -set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") -set(CMAKE_C_LIBRARY_ARCHITECTURE "") - -if(CMAKE_C_SIZEOF_DATA_PTR) - set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") -endif() - -if(CMAKE_C_COMPILER_ABI) - set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") -endif() - -if(CMAKE_C_LIBRARY_ARCHITECTURE) - set(CMAKE_LIBRARY_ARCHITECTURE "") -endif() - -set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") -if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) - set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") -endif() - - - - - -set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/usr/lib/clang/17/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include") -set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") -set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift") -set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks") diff --git a/build/CMakeFiles/4.2.3/CMakeCXXCompiler.cmake b/build/CMakeFiles/4.2.3/CMakeCXXCompiler.cmake deleted file mode 100644 index 9a03387..0000000 --- a/build/CMakeFiles/4.2.3/CMakeCXXCompiler.cmake +++ /dev/null @@ -1,104 +0,0 @@ -set(CMAKE_CXX_COMPILER "/usr/bin/c++") -set(CMAKE_CXX_COMPILER_ARG1 "") -set(CMAKE_CXX_COMPILER_ID "AppleClang") -set(CMAKE_CXX_COMPILER_VERSION "17.0.0.17000604") -set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") -set(CMAKE_CXX_COMPILER_WRAPPER "") -set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") -set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") -set(CMAKE_CXX_STANDARD_LATEST "23") -set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") -set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") -set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") -set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") -set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") -set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") -set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") -set(CMAKE_CXX26_COMPILE_FEATURES "") - -set(CMAKE_CXX_PLATFORM_ID "Darwin") -set(CMAKE_CXX_SIMULATE_ID "") -set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") -set(CMAKE_CXX_COMPILER_APPLE_SYSROOT "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk") -set(CMAKE_CXX_SIMULATE_VERSION "") -set(CMAKE_CXX_COMPILER_ARCHITECTURE_ID "arm64") - - - -set(CMAKE_AR "/usr/bin/ar") -set(CMAKE_CXX_COMPILER_AR "") -set(CMAKE_RANLIB "/usr/bin/ranlib") -set(CMAKE_CXX_COMPILER_RANLIB "") -set(CMAKE_LINKER "/usr/bin/ld") -set(CMAKE_LINKER_LINK "") -set(CMAKE_LINKER_LLD "") -set(CMAKE_CXX_COMPILER_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") -set(CMAKE_CXX_COMPILER_LINKER_ID "AppleClang") -set(CMAKE_CXX_COMPILER_LINKER_VERSION 1230.1) -set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT GNU) -set(CMAKE_MT "") -set(CMAKE_TAPI "/Library/Developer/CommandLineTools/usr/bin/tapi") -set(CMAKE_COMPILER_IS_GNUCXX ) -set(CMAKE_CXX_COMPILER_LOADED 1) -set(CMAKE_CXX_COMPILER_WORKS TRUE) -set(CMAKE_CXX_ABI_COMPILED TRUE) - -set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") - -set(CMAKE_CXX_COMPILER_ID_RUN 1) -set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m) -set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) - -foreach (lang IN ITEMS C OBJC OBJCXX) - if (CMAKE_${lang}_COMPILER_ID_RUN) - foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) - list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) - endforeach() - endif() -endforeach() - -set(CMAKE_CXX_LINKER_PREFERENCE 30) -set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) -set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED ) -set(CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED ) -set(CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED ) - -# Save compiler ABI information. -set(CMAKE_CXX_SIZEOF_DATA_PTR "8") -set(CMAKE_CXX_COMPILER_ABI "") -set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") -set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") - -if(CMAKE_CXX_SIZEOF_DATA_PTR) - set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") -endif() - -if(CMAKE_CXX_COMPILER_ABI) - set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") -endif() - -if(CMAKE_CXX_LIBRARY_ARCHITECTURE) - set(CMAKE_LIBRARY_ARCHITECTURE "") -endif() - -set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") -if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) - set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") -endif() - - - - - -set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1;/Library/Developer/CommandLineTools/usr/lib/clang/17/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include") -set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++") -set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift") -set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks") -set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "") - -set(CMAKE_CXX_COMPILER_IMPORT_STD "") -### Imported target for C++23 standard library -set(CMAKE_CXX23_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE "Unsupported generator: Unix Makefiles") - - - diff --git a/build/CMakeFiles/4.2.3/CMakeDetermineCompilerABI_C.bin b/build/CMakeFiles/4.2.3/CMakeDetermineCompilerABI_C.bin deleted file mode 100755 index fbe0267ad6489c8e01eea3ba9ca03dd2d28279b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33560 zcmeI5Uuau(6vu!0GfipjAMwv@=N7TZ{6jmsGGiY`GLx;@LQ*sjp+$bA$<2DPNoI1( zno==i4wN!UpRD>av@jnW=oB>%)hMiw+WKdr4`YJL>J$`wa2u?i^Sd|8pB4r8;Dg@- z=l*`@oclZX{66>QM_U3E`%h5ciM{lS(<_I}jKRJP~1U zqo~D=t_>FFd4X<}G8%|Q8^db7x6vmodkeW)sU#&*8rrmB88kHK^SaE_&bbD__h?!gh0x`uzMJ7E~U;FY2p{c&(3sMkP(7gPg3@cP(WyZp77{ z>LTUl`3RpWUUPlbY#wXhStuAj6z~VDz>7_Fkp=sG6EG>xsKBcv?Vz4FNS{2OVfMQ&31ZHfM=e6D{|AMZ~VCX-~d z^pJ8L506GZ?fqh4;Z*zUJ6`*t`0N1r+@$87x~br9HCNlUedc_KVrqXhvh1Y&aUTB8 z>xG}|A?29)J%s3IWUJLe^*mX~8(O+=Umw+_kDIF>pn>zBDiRwSAGB=d#d0qx$BV>m z!7P&95D)-?{~>|(<6?DvhbUj{5#{e&#g+9AQC{mQmg(#$xqSD}x9Dr0OC8>_%hu9* zsXq1!#R~fLrm?Qx4KX_BN-mrC3g>Rld6Du{9rG23JRc12j|}DY87-TV$sm+L!d*-q+r&$iAsbvWmG*yhJ}*v!Rj-^DgLxgRgvJ5`)+w`{kNn^Yz@R3=qr zroYxQSdQz5rItzR@r>9Io74?sQfmxzH({zkh^rUcDpb+SH082b?jRpkYCA6MMBlEq zk|2LfMTMXpA1k`;s?wcz+v<_8 z_l6uZbMph?N0-0c<-Bm_xwp>7vde3!iu0S*)u-)|*p~I#_hx5Ke77_={Nf|0Z#Mqb z%17tk=}sM8{QZ-jrB@FvUGMZC+_pCR{P~rWgOxY@*KRidKdoQz2aUtd(~CVQI_$NYbBQg~=4#CFodq*8``hx|kShX#1H zRMh6urJF3yGe?0^M*Pu8sax&$maYlY-ayN&RFV=YbJ}FiG-xQ#H)$Sb-V9-z&$TKp zQCOYRM9M@aJ-(K(JfHhc1CCX)W!rPu=ag?em(|lp&BgM3kDK|nn0~hHQc^29q?|}U zsi%`tPmg4jUCQscnJ;Q4VY@tsJwLyPGb&G?FXFR#yyizhqmr_*f)-h=cP(WymW!!K z^^kJ?d~PemYwWko@^S4u3kE_D`1=AD@IqN#WV3AJVo10it0uNPgeYw0NkIr^(r(&O zviFnCY_^fklf99~pJ|+r_M(s%RO{H&coli zUD)LFvQK>vz29u&tgE$9J&C5K=GJB^N{_2LyX^5INWXTa@ek+6b6TqTpt*&jh1g5V z^~@E7;CJ0<+RT@wo|OHC6ZG8~hvH=j2!H?xfB*=9!2giI%B)yi*)58f>qPNNl~`V> z6~(2xLXqwe^X`U@)0O&C*VS5Y(e0?Lx@!03$(PqB*Y*8!vybja^KOTCnRA!tyiED2 zj?)Vj@?s#=KhQI-PidJEnLM7$4)5=JLWodcpg-P|%S$br(UQa2z(IK^< zEME0od+%Sl=x{-AiLOpQuyQcFxw$IMYJMlCZ%Wh$np z1@*e*02c0vSwnlc|0UN!{o9qj%d{h=eZaIQ*``kATnESVkE?ZX$8p2HTiHf$P4;_) zT&E1F%8+s>*xIS5M>5jZ36wSr1>20}wPv3(t{;_JI;qFfMnJdPXA2n9bGb3i9%F=X zLr|{Hkn5MK7pT(b$>Q=@?xHn1hGSMZiM~@EDM9N|eovzJ^G+;)5q`hUif0>j;Z%{4Sly~ GyZ8(JikeLT diff --git a/build/CMakeFiles/4.2.3/CMakeSystem.cmake b/build/CMakeFiles/4.2.3/CMakeSystem.cmake deleted file mode 100644 index 81b5543..0000000 --- a/build/CMakeFiles/4.2.3/CMakeSystem.cmake +++ /dev/null @@ -1,15 +0,0 @@ -set(CMAKE_HOST_SYSTEM "Darwin-25.3.0") -set(CMAKE_HOST_SYSTEM_NAME "Darwin") -set(CMAKE_HOST_SYSTEM_VERSION "25.3.0") -set(CMAKE_HOST_SYSTEM_PROCESSOR "arm64") - - - -set(CMAKE_SYSTEM "Darwin-25.3.0") -set(CMAKE_SYSTEM_NAME "Darwin") -set(CMAKE_SYSTEM_VERSION "25.3.0") -set(CMAKE_SYSTEM_PROCESSOR "arm64") - -set(CMAKE_CROSSCOMPILING "FALSE") - -set(CMAKE_SYSTEM_LOADED 1) diff --git a/build/CMakeFiles/4.2.3/CompilerIdC/CMakeCCompilerId.c b/build/CMakeFiles/4.2.3/CompilerIdC/CMakeCCompilerId.c deleted file mode 100644 index ab3c359..0000000 --- a/build/CMakeFiles/4.2.3/CompilerIdC/CMakeCCompilerId.c +++ /dev/null @@ -1,934 +0,0 @@ -#ifdef __cplusplus -# error "A C++ compiler has been selected for C." -#endif - -#if defined(__18CXX) -# define ID_VOID_MAIN -#endif -#if defined(__CLASSIC_C__) -/* cv-qualifiers did not exist in K&R C */ -# define const -# define volatile -#endif - -#if !defined(__has_include) -/* If the compiler does not have __has_include, pretend the answer is - always no. */ -# define __has_include(x) 0 -#endif - - -/* Version number components: V=Version, R=Revision, P=Patch - Version date components: YYYY=Year, MM=Month, DD=Day */ - -#if defined(__INTEL_COMPILER) || defined(__ICC) -# define COMPILER_ID "Intel" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# if defined(__GNUC__) -# define SIMULATE_ID "GNU" -# endif - /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, - except that a few beta releases use the old format with V=2021. */ -# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) -# if defined(__INTEL_COMPILER_UPDATE) -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) -# else -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) -# endif -# else -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) - /* The third version component from --version is an update index, - but no macro is provided for it. */ -# define COMPILER_VERSION_PATCH DEC(0) -# endif -# if defined(__INTEL_COMPILER_BUILD_DATE) - /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ -# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) -# endif -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) -# define COMPILER_ID "IntelLLVM" -#if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -#endif -#if defined(__GNUC__) -# define SIMULATE_ID "GNU" -#endif -/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and - * later. Look for 6 digit vs. 8 digit version number to decide encoding. - * VVVV is no smaller than the current year when a version is released. - */ -#if __INTEL_LLVM_COMPILER < 1000000L -# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) -#else -# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) -# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) -#endif -#if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -#endif -#if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -#elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -#endif -#if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -#endif -#if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -#endif - -#elif defined(__PATHCC__) -# define COMPILER_ID "PathScale" -# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) -# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) -# if defined(__PATHCC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) -# endif - -#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) -# define COMPILER_ID "Embarcadero" -# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) -# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) -# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) - -#elif defined(__BORLANDC__) -# define COMPILER_ID "Borland" - /* __BORLANDC__ = 0xVRR */ -# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) -# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) - -#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 -# define COMPILER_ID "Watcom" - /* __WATCOMC__ = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__WATCOMC__) -# define COMPILER_ID "OpenWatcom" - /* __WATCOMC__ = VVRP + 1100 */ -# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__SUNPRO_C) -# define COMPILER_ID "SunPro" -# if __SUNPRO_C >= 0x5100 - /* __SUNPRO_C = 0xVRRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) -# else - /* __SUNPRO_CC = 0xVRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) -# endif - -#elif defined(__HP_cc) -# define COMPILER_ID "HP" - /* __HP_cc = VVRRPP */ -# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) -# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) - -#elif defined(__DECC) -# define COMPILER_ID "Compaq" - /* __DECC_VER = VVRRTPPPP */ -# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) -# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) -# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) - -#elif defined(__IBMC__) && defined(__COMPILER_VER__) -# define COMPILER_ID "zOS" - /* __IBMC__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) - -#elif defined(__open_xl__) && defined(__clang__) -# define COMPILER_ID "IBMClang" -# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) -# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) -# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) -# define COMPILER_VERSION_INTERNAL_STR __clang_version__ - - -#elif defined(__ibmxl__) && defined(__clang__) -# define COMPILER_ID "XLClang" -# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) -# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) -# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) - - -#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 -# define COMPILER_ID "XL" - /* __IBMC__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) - -#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 -# define COMPILER_ID "VisualAge" - /* __IBMC__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) - -#elif defined(__NVCOMPILER) -# define COMPILER_ID "NVHPC" -# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) -# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) -# if defined(__NVCOMPILER_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) -# endif - -#elif defined(__PGI) -# define COMPILER_ID "PGI" -# define COMPILER_VERSION_MAJOR DEC(__PGIC__) -# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) -# if defined(__PGIC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) -# endif - -#elif defined(__clang__) && defined(__cray__) -# define COMPILER_ID "CrayClang" -# define COMPILER_VERSION_MAJOR DEC(__cray_major__) -# define COMPILER_VERSION_MINOR DEC(__cray_minor__) -# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) -# define COMPILER_VERSION_INTERNAL_STR __clang_version__ - - -#elif defined(_CRAYC) -# define COMPILER_ID "Cray" -# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) -# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) - -#elif defined(__TI_COMPILER_VERSION__) -# define COMPILER_ID "TI" - /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ -# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) -# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) -# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) - -#elif defined(__CLANG_FUJITSU) -# define COMPILER_ID "FujitsuClang" -# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) -# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) -# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) -# define COMPILER_VERSION_INTERNAL_STR __clang_version__ - - -#elif defined(__FUJITSU) -# define COMPILER_ID "Fujitsu" -# if defined(__FCC_version__) -# define COMPILER_VERSION __FCC_version__ -# elif defined(__FCC_major__) -# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) -# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) -# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) -# endif -# if defined(__fcc_version) -# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) -# elif defined(__FCC_VERSION) -# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) -# endif - - -#elif defined(__ghs__) -# define COMPILER_ID "GHS" -/* __GHS_VERSION_NUMBER = VVVVRP */ -# ifdef __GHS_VERSION_NUMBER -# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) -# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) -# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) -# endif - -#elif defined(__TASKING__) -# define COMPILER_ID "Tasking" - # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) - # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) -# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) - -#elif defined(__ORANGEC__) -# define COMPILER_ID "OrangeC" -# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) -# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) -# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) - -#elif defined(__RENESAS__) -# define COMPILER_ID "Renesas" -/* __RENESAS_VERSION__ = 0xVVRRPP00 */ -# define COMPILER_VERSION_MAJOR HEX(__RENESAS_VERSION__ >> 24 & 0xFF) -# define COMPILER_VERSION_MINOR HEX(__RENESAS_VERSION__ >> 16 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__RENESAS_VERSION__ >> 8 & 0xFF) - -#elif defined(__TINYC__) -# define COMPILER_ID "TinyCC" - -#elif defined(__BCC__) -# define COMPILER_ID "Bruce" - -#elif defined(__SCO_VERSION__) -# define COMPILER_ID "SCO" - -#elif defined(__ARMCC_VERSION) && !defined(__clang__) -# define COMPILER_ID "ARMCC" -#if __ARMCC_VERSION >= 1000000 - /* __ARMCC_VERSION = VRRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#else - /* __ARMCC_VERSION = VRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#endif - - -#elif defined(__clang__) && defined(__apple_build_version__) -# define COMPILER_ID "AppleClang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) - -#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) -# define COMPILER_ID "ARMClang" - # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) -# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) - -#elif defined(__clang__) && defined(__ti__) -# define COMPILER_ID "TIClang" - # define COMPILER_VERSION_MAJOR DEC(__ti_major__) - # define COMPILER_VERSION_MINOR DEC(__ti_minor__) - # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) -# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) - -#elif defined(__clang__) -# define COMPILER_ID "Clang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif - -#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) -# define COMPILER_ID "LCC" -# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) -# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) -# if defined(__LCC_MINOR__) -# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) -# endif -# if defined(__GNUC__) && defined(__GNUC_MINOR__) -# define SIMULATE_ID "GNU" -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif -# endif - -#elif defined(__GNUC__) -# define COMPILER_ID "GNU" -# define COMPILER_VERSION_MAJOR DEC(__GNUC__) -# if defined(__GNUC_MINOR__) -# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(_MSC_VER) -# define COMPILER_ID "MSVC" - /* _MSC_VER = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) -# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) -# if defined(_MSC_FULL_VER) -# if _MSC_VER >= 1400 - /* _MSC_FULL_VER = VVRRPPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) -# else - /* _MSC_FULL_VER = VVRRPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) -# endif -# endif -# if defined(_MSC_BUILD) -# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) -# endif - -#elif defined(_ADI_COMPILER) -# define COMPILER_ID "ADSP" -#if defined(__VERSIONNUM__) - /* __VERSIONNUM__ = 0xVVRRPPTT */ -# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) -# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) -# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) -# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) -#endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# define COMPILER_ID "IAR" -# if defined(__VER__) && defined(__ICCARM__) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) -# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) -# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) -# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) -# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# endif - -#elif defined(__DCC__) && defined(_DIAB_TOOL) -# define COMPILER_ID "Diab" - # define COMPILER_VERSION_MAJOR DEC(__VERSION_MAJOR_NUMBER__) - # define COMPILER_VERSION_MINOR DEC(__VERSION_MINOR_NUMBER__) - # define COMPILER_VERSION_PATCH DEC(__VERSION_ARCH_FEATURE_NUMBER__) - # define COMPILER_VERSION_TWEAK DEC(__VERSION_BUG_FIX_NUMBER__) - - -#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) -# define COMPILER_ID "SDCC" -# if defined(__SDCC_VERSION_MAJOR) -# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) -# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) -# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) -# else - /* SDCC = VRP */ -# define COMPILER_VERSION_MAJOR DEC(SDCC/100) -# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) -# define COMPILER_VERSION_PATCH DEC(SDCC % 10) -# endif - - -/* These compilers are either not known or too old to define an - identification macro. Try to identify the platform and guess that - it is the native compiler. */ -#elif defined(__hpux) || defined(__hpua) -# define COMPILER_ID "HP" - -#else /* unknown compiler */ -# define COMPILER_ID "" -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; -#ifdef SIMULATE_ID -char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; -#endif - -#ifdef __QNXNTO__ -char const* qnxnto = "INFO" ":" "qnxnto[]"; -#endif - -#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) -char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; -#endif - -#define STRINGIFY_HELPER(X) #X -#define STRINGIFY(X) STRINGIFY_HELPER(X) - -/* Identify known platforms by name. */ -#if defined(__linux) || defined(__linux__) || defined(linux) -# define PLATFORM_ID "Linux" - -#elif defined(__MSYS__) -# define PLATFORM_ID "MSYS" - -#elif defined(__CYGWIN__) -# define PLATFORM_ID "Cygwin" - -#elif defined(__MINGW32__) -# define PLATFORM_ID "MinGW" - -#elif defined(__APPLE__) -# define PLATFORM_ID "Darwin" - -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) -# define PLATFORM_ID "Windows" - -#elif defined(__FreeBSD__) || defined(__FreeBSD) -# define PLATFORM_ID "FreeBSD" - -#elif defined(__NetBSD__) || defined(__NetBSD) -# define PLATFORM_ID "NetBSD" - -#elif defined(__OpenBSD__) || defined(__OPENBSD) -# define PLATFORM_ID "OpenBSD" - -#elif defined(__sun) || defined(sun) -# define PLATFORM_ID "SunOS" - -#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) -# define PLATFORM_ID "AIX" - -#elif defined(__hpux) || defined(__hpux__) -# define PLATFORM_ID "HP-UX" - -#elif defined(__HAIKU__) -# define PLATFORM_ID "Haiku" - -#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) -# define PLATFORM_ID "BeOS" - -#elif defined(__QNX__) || defined(__QNXNTO__) -# define PLATFORM_ID "QNX" - -#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) -# define PLATFORM_ID "Tru64" - -#elif defined(__riscos) || defined(__riscos__) -# define PLATFORM_ID "RISCos" - -#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) -# define PLATFORM_ID "SINIX" - -#elif defined(__UNIX_SV__) -# define PLATFORM_ID "UNIX_SV" - -#elif defined(__bsdos__) -# define PLATFORM_ID "BSDOS" - -#elif defined(_MPRAS) || defined(MPRAS) -# define PLATFORM_ID "MP-RAS" - -#elif defined(__osf) || defined(__osf__) -# define PLATFORM_ID "OSF1" - -#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) -# define PLATFORM_ID "SCO_SV" - -#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) -# define PLATFORM_ID "ULTRIX" - -#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) -# define PLATFORM_ID "Xenix" - -#elif defined(__WATCOMC__) -# if defined(__LINUX__) -# define PLATFORM_ID "Linux" - -# elif defined(__DOS__) -# define PLATFORM_ID "DOS" - -# elif defined(__OS2__) -# define PLATFORM_ID "OS2" - -# elif defined(__WINDOWS__) -# define PLATFORM_ID "Windows3x" - -# elif defined(__VXWORKS__) -# define PLATFORM_ID "VxWorks" - -# else /* unknown platform */ -# define PLATFORM_ID -# endif - -#elif defined(__INTEGRITY) -# if defined(INT_178B) -# define PLATFORM_ID "Integrity178" - -# else /* regular Integrity */ -# define PLATFORM_ID "Integrity" -# endif - -# elif defined(_ADI_COMPILER) -# define PLATFORM_ID "ADSP" - -#else /* unknown platform */ -# define PLATFORM_ID - -#endif - -/* For windows compilers MSVC and Intel we can determine - the architecture of the compiler being used. This is because - the compilers do not have flags that can change the architecture, - but rather depend on which compiler is being used -*/ -#if defined(_WIN32) && defined(_MSC_VER) -# if defined(_M_IA64) -# define ARCHITECTURE_ID "IA64" - -# elif defined(_M_ARM64EC) -# define ARCHITECTURE_ID "ARM64EC" - -# elif defined(_M_X64) || defined(_M_AMD64) -# define ARCHITECTURE_ID "x64" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# elif defined(_M_ARM64) -# define ARCHITECTURE_ID "ARM64" - -# elif defined(_M_ARM) -# if _M_ARM == 4 -# define ARCHITECTURE_ID "ARMV4I" -# elif _M_ARM == 5 -# define ARCHITECTURE_ID "ARMV5I" -# else -# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) -# endif - -# elif defined(_M_MIPS) -# define ARCHITECTURE_ID "MIPS" - -# elif defined(_M_SH) -# define ARCHITECTURE_ID "SHx" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__WATCOMC__) -# if defined(_M_I86) -# define ARCHITECTURE_ID "I86" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# if defined(__ICCARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__ICCRX__) -# define ARCHITECTURE_ID "RX" - -# elif defined(__ICCRH850__) -# define ARCHITECTURE_ID "RH850" - -# elif defined(__ICCRL78__) -# define ARCHITECTURE_ID "RL78" - -# elif defined(__ICCRISCV__) -# define ARCHITECTURE_ID "RISCV" - -# elif defined(__ICCAVR__) -# define ARCHITECTURE_ID "AVR" - -# elif defined(__ICC430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__ICCV850__) -# define ARCHITECTURE_ID "V850" - -# elif defined(__ICC8051__) -# define ARCHITECTURE_ID "8051" - -# elif defined(__ICCSTM8__) -# define ARCHITECTURE_ID "STM8" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__ghs__) -# if defined(__PPC64__) -# define ARCHITECTURE_ID "PPC64" - -# elif defined(__ppc__) -# define ARCHITECTURE_ID "PPC" - -# elif defined(__ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__x86_64__) -# define ARCHITECTURE_ID "x64" - -# elif defined(__i386__) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__clang__) && defined(__ti__) -# if defined(__ARM_ARCH) -# define ARCHITECTURE_ID "ARM" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__TI_COMPILER_VERSION__) -# if defined(__TI_ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__MSP430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__TMS320C28XX__) -# define ARCHITECTURE_ID "TMS320C28x" - -# elif defined(__TMS320C6X__) || defined(_TMS320C6X) -# define ARCHITECTURE_ID "TMS320C6x" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -# elif defined(__ADSPSHARC__) -# define ARCHITECTURE_ID "SHARC" - -# elif defined(__ADSPBLACKFIN__) -# define ARCHITECTURE_ID "Blackfin" - -#elif defined(__TASKING__) - -# if defined(__CTC__) || defined(__CPTC__) -# define ARCHITECTURE_ID "TriCore" - -# elif defined(__CMCS__) -# define ARCHITECTURE_ID "MCS" - -# elif defined(__CARM__) || defined(__CPARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__CARC__) -# define ARCHITECTURE_ID "ARC" - -# elif defined(__C51__) -# define ARCHITECTURE_ID "8051" - -# elif defined(__CPCP__) -# define ARCHITECTURE_ID "PCP" - -# else -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__RENESAS__) -# if defined(__CCRX__) -# define ARCHITECTURE_ID "RX" - -# elif defined(__CCRL__) -# define ARCHITECTURE_ID "RL78" - -# elif defined(__CCRH__) -# define ARCHITECTURE_ID "RH850" - -# else -# define ARCHITECTURE_ID "" -# endif - -#else -# define ARCHITECTURE_ID -#endif - -/* Convert integer to decimal digit literals. */ -#define DEC(n) \ - ('0' + (((n) / 10000000)%10)), \ - ('0' + (((n) / 1000000)%10)), \ - ('0' + (((n) / 100000)%10)), \ - ('0' + (((n) / 10000)%10)), \ - ('0' + (((n) / 1000)%10)), \ - ('0' + (((n) / 100)%10)), \ - ('0' + (((n) / 10)%10)), \ - ('0' + ((n) % 10)) - -/* Convert integer to hex digit literals. */ -#define HEX(n) \ - ('0' + ((n)>>28 & 0xF)), \ - ('0' + ((n)>>24 & 0xF)), \ - ('0' + ((n)>>20 & 0xF)), \ - ('0' + ((n)>>16 & 0xF)), \ - ('0' + ((n)>>12 & 0xF)), \ - ('0' + ((n)>>8 & 0xF)), \ - ('0' + ((n)>>4 & 0xF)), \ - ('0' + ((n) & 0xF)) - -/* Construct a string literal encoding the version number. */ -#ifdef COMPILER_VERSION -char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; - -/* Construct a string literal encoding the version number components. */ -#elif defined(COMPILER_VERSION_MAJOR) -char const info_version[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', - COMPILER_VERSION_MAJOR, -# ifdef COMPILER_VERSION_MINOR - '.', COMPILER_VERSION_MINOR, -# ifdef COMPILER_VERSION_PATCH - '.', COMPILER_VERSION_PATCH, -# ifdef COMPILER_VERSION_TWEAK - '.', COMPILER_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct a string literal encoding the internal version number. */ -#ifdef COMPILER_VERSION_INTERNAL -char const info_version_internal[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', - 'i','n','t','e','r','n','a','l','[', - COMPILER_VERSION_INTERNAL,']','\0'}; -#elif defined(COMPILER_VERSION_INTERNAL_STR) -char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; -#endif - -/* Construct a string literal encoding the version number components. */ -#ifdef SIMULATE_VERSION_MAJOR -char const info_simulate_version[] = { - 'I', 'N', 'F', 'O', ':', - 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', - SIMULATE_VERSION_MAJOR, -# ifdef SIMULATE_VERSION_MINOR - '.', SIMULATE_VERSION_MINOR, -# ifdef SIMULATE_VERSION_PATCH - '.', SIMULATE_VERSION_PATCH, -# ifdef SIMULATE_VERSION_TWEAK - '.', SIMULATE_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; -char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; - - - -#define C_STD_99 199901L -#define C_STD_11 201112L -#define C_STD_17 201710L -#define C_STD_23 202311L - -#ifdef __STDC_VERSION__ -# define C_STD __STDC_VERSION__ -#endif - -#if !defined(__STDC__) && !defined(__clang__) && !defined(__RENESAS__) -# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) -# define C_VERSION "90" -# else -# define C_VERSION -# endif -#elif C_STD > C_STD_17 -# define C_VERSION "23" -#elif C_STD > C_STD_11 -# define C_VERSION "17" -#elif C_STD > C_STD_99 -# define C_VERSION "11" -#elif C_STD >= C_STD_99 -# define C_VERSION "99" -#else -# define C_VERSION "90" -#endif -const char* info_language_standard_default = - "INFO" ":" "standard_default[" C_VERSION "]"; - -const char* info_language_extensions_default = "INFO" ":" "extensions_default[" -#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ - defined(__TI_COMPILER_VERSION__) || defined(__RENESAS__)) && \ - !defined(__STRICT_ANSI__) - "ON" -#else - "OFF" -#endif -"]"; - -/*--------------------------------------------------------------------------*/ - -#ifdef ID_VOID_MAIN -void main() {} -#else -# if defined(__CLASSIC_C__) -int main(argc, argv) int argc; char *argv[]; -# else -int main(int argc, char* argv[]) -# endif -{ - int require = 0; - require += info_compiler[argc]; - require += info_platform[argc]; - require += info_arch[argc]; -#ifdef COMPILER_VERSION_MAJOR - require += info_version[argc]; -#endif -#if defined(COMPILER_VERSION_INTERNAL) || defined(COMPILER_VERSION_INTERNAL_STR) - require += info_version_internal[argc]; -#endif -#ifdef SIMULATE_ID - require += info_simulate[argc]; -#endif -#ifdef SIMULATE_VERSION_MAJOR - require += info_simulate_version[argc]; -#endif -#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) - require += info_cray[argc]; -#endif - require += info_language_standard_default[argc]; - require += info_language_extensions_default[argc]; - (void)argv; - return require; -} -#endif diff --git a/build/CMakeFiles/4.2.3/CompilerIdC/a.out b/build/CMakeFiles/4.2.3/CompilerIdC/a.out deleted file mode 100755 index 26167efc0964ece2b230612e6b8a856632e42b1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33736 zcmeI5e`s4(6vt1}RNJ++ohx%&b&KGSDx*!?u?|H|YwOn8wWI4FVRhcUHm_|oKWdWd zCbP>nruD~II}mCS^bc`txIdH$3#b$nsW6m+=oB4QbgZENh@u-}J?Fjq(lm`z-2VI? zIPacw&%NiJ_jxz@FFBuG{`s#`A{Vi^S(meVJw%7e%NEgU)-9|`ZExD#y0f*bQ)U;7 zwR!Q>5>N7s@JhXkwwj+wn$v`|Huuz$;-;0Evg+(#B0N$-rC^aaFBhGDpslE z-1*ZN-Z<3w`J3t2zEMx4&(!mrm(|5ew1x{_W7*c@x<2*X&9m0?S#cufo02@c`J88q z+;f&(TNpaAy%9} zCb_uYv7*q*@w_?9^6#^1S)M;O%XM-6<5LCdi?)u3I`8R=MTSCQGv3oQG!!-;3>(pb zU1UXu!bY+`7LW9_7;*l%>RBV+H`t@?MAC=`jd)N6&3v8r$&s7L2+^p4;f#uuEQsyqcT!Tge{fEXY~$^C;?kpNX9< za^6ZgONBm(C zX9YD|zeBH}fF6T-9I?i0ep@620T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!X z009sH0T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!X009sH z0T2KI5C8!X$RXfmUwWU5ie$I-&TcC%y~G`{Z2xt36KOq}y^maqj>v>Goc7RI%Ei}| zb$#8sPVkl7OM73_>fBD*w9Z4Lyt;rUxl4PYG}Wdur!h9IkS^TA#(=5lcBczBZPV?t zX-5Iga$E2M6&Y0K9@In`}>VPT7A{d^V&vxARcXtK~=l7l7_w?bf-+yt-^XrdaZTuJa+S%H7Z!Frn z{)L*8k;?W{uU4=+y0k7{Qmm-$8PexQc`yO_h9);ADuY+ V?a-utm^+t7W_)c;`9`WxkU@H_wj diff --git a/build/CMakeFiles/4.2.3/CompilerIdC/apple-sdk.c b/build/CMakeFiles/4.2.3/CompilerIdC/apple-sdk.c deleted file mode 100644 index db846b4..0000000 --- a/build/CMakeFiles/4.2.3/CompilerIdC/apple-sdk.c +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/build/CMakeFiles/4.2.3/CompilerIdCXX/CMakeCXXCompilerId.cpp b/build/CMakeFiles/4.2.3/CompilerIdCXX/CMakeCXXCompilerId.cpp deleted file mode 100644 index b35f567..0000000 --- a/build/CMakeFiles/4.2.3/CompilerIdCXX/CMakeCXXCompilerId.cpp +++ /dev/null @@ -1,949 +0,0 @@ -/* This source file must have a .cpp extension so that all C++ compilers - recognize the extension without flags. Borland does not know .cxx for - example. */ -#ifndef __cplusplus -# error "A C compiler has been selected for C++." -#endif - -#if !defined(__has_include) -/* If the compiler does not have __has_include, pretend the answer is - always no. */ -# define __has_include(x) 0 -#endif - - -/* Version number components: V=Version, R=Revision, P=Patch - Version date components: YYYY=Year, MM=Month, DD=Day */ - -#if defined(__INTEL_COMPILER) || defined(__ICC) -# define COMPILER_ID "Intel" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# if defined(__GNUC__) -# define SIMULATE_ID "GNU" -# endif - /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, - except that a few beta releases use the old format with V=2021. */ -# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) -# if defined(__INTEL_COMPILER_UPDATE) -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) -# else -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) -# endif -# else -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) - /* The third version component from --version is an update index, - but no macro is provided for it. */ -# define COMPILER_VERSION_PATCH DEC(0) -# endif -# if defined(__INTEL_COMPILER_BUILD_DATE) - /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ -# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) -# endif -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) -# define COMPILER_ID "IntelLLVM" -#if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -#endif -#if defined(__GNUC__) -# define SIMULATE_ID "GNU" -#endif -/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and - * later. Look for 6 digit vs. 8 digit version number to decide encoding. - * VVVV is no smaller than the current year when a version is released. - */ -#if __INTEL_LLVM_COMPILER < 1000000L -# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) -#else -# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) -# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) -#endif -#if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -#endif -#if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -#elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -#endif -#if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -#endif -#if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -#endif - -#elif defined(__PATHCC__) -# define COMPILER_ID "PathScale" -# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) -# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) -# if defined(__PATHCC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) -# endif - -#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) -# define COMPILER_ID "Embarcadero" -# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) -# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) -# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) - -#elif defined(__BORLANDC__) -# define COMPILER_ID "Borland" - /* __BORLANDC__ = 0xVRR */ -# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) -# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) - -#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 -# define COMPILER_ID "Watcom" - /* __WATCOMC__ = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__WATCOMC__) -# define COMPILER_ID "OpenWatcom" - /* __WATCOMC__ = VVRP + 1100 */ -# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__SUNPRO_CC) -# define COMPILER_ID "SunPro" -# if __SUNPRO_CC >= 0x5100 - /* __SUNPRO_CC = 0xVRRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) -# else - /* __SUNPRO_CC = 0xVRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) -# endif - -#elif defined(__HP_aCC) -# define COMPILER_ID "HP" - /* __HP_aCC = VVRRPP */ -# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) -# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) - -#elif defined(__DECCXX) -# define COMPILER_ID "Compaq" - /* __DECCXX_VER = VVRRTPPPP */ -# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) -# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) -# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) - -#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) -# define COMPILER_ID "zOS" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__open_xl__) && defined(__clang__) -# define COMPILER_ID "IBMClang" -# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) -# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) -# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) -# define COMPILER_VERSION_INTERNAL_STR __clang_version__ - - -#elif defined(__ibmxl__) && defined(__clang__) -# define COMPILER_ID "XLClang" -# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) -# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) -# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) - - -#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 -# define COMPILER_ID "XL" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 -# define COMPILER_ID "VisualAge" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__NVCOMPILER) -# define COMPILER_ID "NVHPC" -# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) -# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) -# if defined(__NVCOMPILER_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) -# endif - -#elif defined(__PGI) -# define COMPILER_ID "PGI" -# define COMPILER_VERSION_MAJOR DEC(__PGIC__) -# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) -# if defined(__PGIC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) -# endif - -#elif defined(__clang__) && defined(__cray__) -# define COMPILER_ID "CrayClang" -# define COMPILER_VERSION_MAJOR DEC(__cray_major__) -# define COMPILER_VERSION_MINOR DEC(__cray_minor__) -# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__) -# define COMPILER_VERSION_INTERNAL_STR __clang_version__ - - -#elif defined(_CRAYC) -# define COMPILER_ID "Cray" -# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) -# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) - -#elif defined(__TI_COMPILER_VERSION__) -# define COMPILER_ID "TI" - /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ -# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) -# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) -# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) - -#elif defined(__CLANG_FUJITSU) -# define COMPILER_ID "FujitsuClang" -# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) -# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) -# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) -# define COMPILER_VERSION_INTERNAL_STR __clang_version__ - - -#elif defined(__FUJITSU) -# define COMPILER_ID "Fujitsu" -# if defined(__FCC_version__) -# define COMPILER_VERSION __FCC_version__ -# elif defined(__FCC_major__) -# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) -# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) -# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) -# endif -# if defined(__fcc_version) -# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) -# elif defined(__FCC_VERSION) -# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) -# endif - - -#elif defined(__ghs__) -# define COMPILER_ID "GHS" -/* __GHS_VERSION_NUMBER = VVVVRP */ -# ifdef __GHS_VERSION_NUMBER -# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) -# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) -# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) -# endif - -#elif defined(__TASKING__) -# define COMPILER_ID "Tasking" - # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) - # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) -# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) - -#elif defined(__ORANGEC__) -# define COMPILER_ID "OrangeC" -# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__) -# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__) -# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__) - -#elif defined(__RENESAS__) -# define COMPILER_ID "Renesas" -/* __RENESAS_VERSION__ = 0xVVRRPP00 */ -# define COMPILER_VERSION_MAJOR HEX(__RENESAS_VERSION__ >> 24 & 0xFF) -# define COMPILER_VERSION_MINOR HEX(__RENESAS_VERSION__ >> 16 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__RENESAS_VERSION__ >> 8 & 0xFF) - -#elif defined(__SCO_VERSION__) -# define COMPILER_ID "SCO" - -#elif defined(__ARMCC_VERSION) && !defined(__clang__) -# define COMPILER_ID "ARMCC" -#if __ARMCC_VERSION >= 1000000 - /* __ARMCC_VERSION = VRRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#else - /* __ARMCC_VERSION = VRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#endif - - -#elif defined(__clang__) && defined(__apple_build_version__) -# define COMPILER_ID "AppleClang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) - -#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) -# define COMPILER_ID "ARMClang" - # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION/100 % 100) -# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) - -#elif defined(__clang__) && defined(__ti__) -# define COMPILER_ID "TIClang" - # define COMPILER_VERSION_MAJOR DEC(__ti_major__) - # define COMPILER_VERSION_MINOR DEC(__ti_minor__) - # define COMPILER_VERSION_PATCH DEC(__ti_patchlevel__) -# define COMPILER_VERSION_INTERNAL DEC(__ti_version__) - -#elif defined(__clang__) -# define COMPILER_ID "Clang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif - -#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) -# define COMPILER_ID "LCC" -# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) -# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) -# if defined(__LCC_MINOR__) -# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) -# endif -# if defined(__GNUC__) && defined(__GNUC_MINOR__) -# define SIMULATE_ID "GNU" -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif -# endif - -#elif defined(__GNUC__) || defined(__GNUG__) -# define COMPILER_ID "GNU" -# if defined(__GNUC__) -# define COMPILER_VERSION_MAJOR DEC(__GNUC__) -# else -# define COMPILER_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(_MSC_VER) -# define COMPILER_ID "MSVC" - /* _MSC_VER = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) -# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) -# if defined(_MSC_FULL_VER) -# if _MSC_VER >= 1400 - /* _MSC_FULL_VER = VVRRPPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) -# else - /* _MSC_FULL_VER = VVRRPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) -# endif -# endif -# if defined(_MSC_BUILD) -# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) -# endif - -#elif defined(_ADI_COMPILER) -# define COMPILER_ID "ADSP" -#if defined(__VERSIONNUM__) - /* __VERSIONNUM__ = 0xVVRRPPTT */ -# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) -# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) -# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) -# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) -#endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# define COMPILER_ID "IAR" -# if defined(__VER__) && defined(__ICCARM__) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) -# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) -# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) -# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) -# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# endif - -#elif defined(__DCC__) && defined(_DIAB_TOOL) -# define COMPILER_ID "Diab" - # define COMPILER_VERSION_MAJOR DEC(__VERSION_MAJOR_NUMBER__) - # define COMPILER_VERSION_MINOR DEC(__VERSION_MINOR_NUMBER__) - # define COMPILER_VERSION_PATCH DEC(__VERSION_ARCH_FEATURE_NUMBER__) - # define COMPILER_VERSION_TWEAK DEC(__VERSION_BUG_FIX_NUMBER__) - - - -/* These compilers are either not known or too old to define an - identification macro. Try to identify the platform and guess that - it is the native compiler. */ -#elif defined(__hpux) || defined(__hpua) -# define COMPILER_ID "HP" - -#else /* unknown compiler */ -# define COMPILER_ID "" -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; -#ifdef SIMULATE_ID -char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; -#endif - -#ifdef __QNXNTO__ -char const* qnxnto = "INFO" ":" "qnxnto[]"; -#endif - -#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) -char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; -#endif - -#define STRINGIFY_HELPER(X) #X -#define STRINGIFY(X) STRINGIFY_HELPER(X) - -/* Identify known platforms by name. */ -#if defined(__linux) || defined(__linux__) || defined(linux) -# define PLATFORM_ID "Linux" - -#elif defined(__MSYS__) -# define PLATFORM_ID "MSYS" - -#elif defined(__CYGWIN__) -# define PLATFORM_ID "Cygwin" - -#elif defined(__MINGW32__) -# define PLATFORM_ID "MinGW" - -#elif defined(__APPLE__) -# define PLATFORM_ID "Darwin" - -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) -# define PLATFORM_ID "Windows" - -#elif defined(__FreeBSD__) || defined(__FreeBSD) -# define PLATFORM_ID "FreeBSD" - -#elif defined(__NetBSD__) || defined(__NetBSD) -# define PLATFORM_ID "NetBSD" - -#elif defined(__OpenBSD__) || defined(__OPENBSD) -# define PLATFORM_ID "OpenBSD" - -#elif defined(__sun) || defined(sun) -# define PLATFORM_ID "SunOS" - -#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) -# define PLATFORM_ID "AIX" - -#elif defined(__hpux) || defined(__hpux__) -# define PLATFORM_ID "HP-UX" - -#elif defined(__HAIKU__) -# define PLATFORM_ID "Haiku" - -#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) -# define PLATFORM_ID "BeOS" - -#elif defined(__QNX__) || defined(__QNXNTO__) -# define PLATFORM_ID "QNX" - -#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) -# define PLATFORM_ID "Tru64" - -#elif defined(__riscos) || defined(__riscos__) -# define PLATFORM_ID "RISCos" - -#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) -# define PLATFORM_ID "SINIX" - -#elif defined(__UNIX_SV__) -# define PLATFORM_ID "UNIX_SV" - -#elif defined(__bsdos__) -# define PLATFORM_ID "BSDOS" - -#elif defined(_MPRAS) || defined(MPRAS) -# define PLATFORM_ID "MP-RAS" - -#elif defined(__osf) || defined(__osf__) -# define PLATFORM_ID "OSF1" - -#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) -# define PLATFORM_ID "SCO_SV" - -#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) -# define PLATFORM_ID "ULTRIX" - -#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) -# define PLATFORM_ID "Xenix" - -#elif defined(__WATCOMC__) -# if defined(__LINUX__) -# define PLATFORM_ID "Linux" - -# elif defined(__DOS__) -# define PLATFORM_ID "DOS" - -# elif defined(__OS2__) -# define PLATFORM_ID "OS2" - -# elif defined(__WINDOWS__) -# define PLATFORM_ID "Windows3x" - -# elif defined(__VXWORKS__) -# define PLATFORM_ID "VxWorks" - -# else /* unknown platform */ -# define PLATFORM_ID -# endif - -#elif defined(__INTEGRITY) -# if defined(INT_178B) -# define PLATFORM_ID "Integrity178" - -# else /* regular Integrity */ -# define PLATFORM_ID "Integrity" -# endif - -# elif defined(_ADI_COMPILER) -# define PLATFORM_ID "ADSP" - -#else /* unknown platform */ -# define PLATFORM_ID - -#endif - -/* For windows compilers MSVC and Intel we can determine - the architecture of the compiler being used. This is because - the compilers do not have flags that can change the architecture, - but rather depend on which compiler is being used -*/ -#if defined(_WIN32) && defined(_MSC_VER) -# if defined(_M_IA64) -# define ARCHITECTURE_ID "IA64" - -# elif defined(_M_ARM64EC) -# define ARCHITECTURE_ID "ARM64EC" - -# elif defined(_M_X64) || defined(_M_AMD64) -# define ARCHITECTURE_ID "x64" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# elif defined(_M_ARM64) -# define ARCHITECTURE_ID "ARM64" - -# elif defined(_M_ARM) -# if _M_ARM == 4 -# define ARCHITECTURE_ID "ARMV4I" -# elif _M_ARM == 5 -# define ARCHITECTURE_ID "ARMV5I" -# else -# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) -# endif - -# elif defined(_M_MIPS) -# define ARCHITECTURE_ID "MIPS" - -# elif defined(_M_SH) -# define ARCHITECTURE_ID "SHx" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__WATCOMC__) -# if defined(_M_I86) -# define ARCHITECTURE_ID "I86" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# if defined(__ICCARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__ICCRX__) -# define ARCHITECTURE_ID "RX" - -# elif defined(__ICCRH850__) -# define ARCHITECTURE_ID "RH850" - -# elif defined(__ICCRL78__) -# define ARCHITECTURE_ID "RL78" - -# elif defined(__ICCRISCV__) -# define ARCHITECTURE_ID "RISCV" - -# elif defined(__ICCAVR__) -# define ARCHITECTURE_ID "AVR" - -# elif defined(__ICC430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__ICCV850__) -# define ARCHITECTURE_ID "V850" - -# elif defined(__ICC8051__) -# define ARCHITECTURE_ID "8051" - -# elif defined(__ICCSTM8__) -# define ARCHITECTURE_ID "STM8" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__ghs__) -# if defined(__PPC64__) -# define ARCHITECTURE_ID "PPC64" - -# elif defined(__ppc__) -# define ARCHITECTURE_ID "PPC" - -# elif defined(__ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__x86_64__) -# define ARCHITECTURE_ID "x64" - -# elif defined(__i386__) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__clang__) && defined(__ti__) -# if defined(__ARM_ARCH) -# define ARCHITECTURE_ID "ARM" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__TI_COMPILER_VERSION__) -# if defined(__TI_ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__MSP430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__TMS320C28XX__) -# define ARCHITECTURE_ID "TMS320C28x" - -# elif defined(__TMS320C6X__) || defined(_TMS320C6X) -# define ARCHITECTURE_ID "TMS320C6x" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -# elif defined(__ADSPSHARC__) -# define ARCHITECTURE_ID "SHARC" - -# elif defined(__ADSPBLACKFIN__) -# define ARCHITECTURE_ID "Blackfin" - -#elif defined(__TASKING__) - -# if defined(__CTC__) || defined(__CPTC__) -# define ARCHITECTURE_ID "TriCore" - -# elif defined(__CMCS__) -# define ARCHITECTURE_ID "MCS" - -# elif defined(__CARM__) || defined(__CPARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__CARC__) -# define ARCHITECTURE_ID "ARC" - -# elif defined(__C51__) -# define ARCHITECTURE_ID "8051" - -# elif defined(__CPCP__) -# define ARCHITECTURE_ID "PCP" - -# else -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__RENESAS__) -# if defined(__CCRX__) -# define ARCHITECTURE_ID "RX" - -# elif defined(__CCRL__) -# define ARCHITECTURE_ID "RL78" - -# elif defined(__CCRH__) -# define ARCHITECTURE_ID "RH850" - -# else -# define ARCHITECTURE_ID "" -# endif - -#else -# define ARCHITECTURE_ID -#endif - -/* Convert integer to decimal digit literals. */ -#define DEC(n) \ - ('0' + (((n) / 10000000)%10)), \ - ('0' + (((n) / 1000000)%10)), \ - ('0' + (((n) / 100000)%10)), \ - ('0' + (((n) / 10000)%10)), \ - ('0' + (((n) / 1000)%10)), \ - ('0' + (((n) / 100)%10)), \ - ('0' + (((n) / 10)%10)), \ - ('0' + ((n) % 10)) - -/* Convert integer to hex digit literals. */ -#define HEX(n) \ - ('0' + ((n)>>28 & 0xF)), \ - ('0' + ((n)>>24 & 0xF)), \ - ('0' + ((n)>>20 & 0xF)), \ - ('0' + ((n)>>16 & 0xF)), \ - ('0' + ((n)>>12 & 0xF)), \ - ('0' + ((n)>>8 & 0xF)), \ - ('0' + ((n)>>4 & 0xF)), \ - ('0' + ((n) & 0xF)) - -/* Construct a string literal encoding the version number. */ -#ifdef COMPILER_VERSION -char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; - -/* Construct a string literal encoding the version number components. */ -#elif defined(COMPILER_VERSION_MAJOR) -char const info_version[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', - COMPILER_VERSION_MAJOR, -# ifdef COMPILER_VERSION_MINOR - '.', COMPILER_VERSION_MINOR, -# ifdef COMPILER_VERSION_PATCH - '.', COMPILER_VERSION_PATCH, -# ifdef COMPILER_VERSION_TWEAK - '.', COMPILER_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct a string literal encoding the internal version number. */ -#ifdef COMPILER_VERSION_INTERNAL -char const info_version_internal[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', - 'i','n','t','e','r','n','a','l','[', - COMPILER_VERSION_INTERNAL,']','\0'}; -#elif defined(COMPILER_VERSION_INTERNAL_STR) -char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; -#endif - -/* Construct a string literal encoding the version number components. */ -#ifdef SIMULATE_VERSION_MAJOR -char const info_simulate_version[] = { - 'I', 'N', 'F', 'O', ':', - 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', - SIMULATE_VERSION_MAJOR, -# ifdef SIMULATE_VERSION_MINOR - '.', SIMULATE_VERSION_MINOR, -# ifdef SIMULATE_VERSION_PATCH - '.', SIMULATE_VERSION_PATCH, -# ifdef SIMULATE_VERSION_TWEAK - '.', SIMULATE_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; -char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; - - - -#define CXX_STD_98 199711L -#define CXX_STD_11 201103L -#define CXX_STD_14 201402L -#define CXX_STD_17 201703L -#define CXX_STD_20 202002L -#define CXX_STD_23 202302L - -#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) -# if _MSVC_LANG > CXX_STD_17 -# define CXX_STD _MSVC_LANG -# elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init) -# define CXX_STD CXX_STD_20 -# elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17 -# define CXX_STD CXX_STD_20 -# elif _MSVC_LANG > CXX_STD_14 -# define CXX_STD CXX_STD_17 -# elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi) -# define CXX_STD CXX_STD_14 -# elif defined(__INTEL_CXX11_MODE__) -# define CXX_STD CXX_STD_11 -# else -# define CXX_STD CXX_STD_98 -# endif -#elif defined(_MSC_VER) && defined(_MSVC_LANG) -# if _MSVC_LANG > __cplusplus -# define CXX_STD _MSVC_LANG -# else -# define CXX_STD __cplusplus -# endif -#elif defined(__NVCOMPILER) -# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init) -# define CXX_STD CXX_STD_20 -# else -# define CXX_STD __cplusplus -# endif -#elif defined(__INTEL_COMPILER) || defined(__PGI) -# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes) -# define CXX_STD CXX_STD_17 -# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) -# define CXX_STD CXX_STD_14 -# else -# define CXX_STD __cplusplus -# endif -#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__) -# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) -# define CXX_STD CXX_STD_14 -# else -# define CXX_STD __cplusplus -# endif -#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) -# define CXX_STD CXX_STD_11 -#else -# define CXX_STD __cplusplus -#endif - -const char* info_language_standard_default = "INFO" ":" "standard_default[" -#if CXX_STD > CXX_STD_23 - "26" -#elif CXX_STD > CXX_STD_20 - "23" -#elif CXX_STD > CXX_STD_17 - "20" -#elif CXX_STD > CXX_STD_14 - "17" -#elif CXX_STD > CXX_STD_11 - "14" -#elif CXX_STD >= CXX_STD_11 - "11" -#else - "98" -#endif -"]"; - -const char* info_language_extensions_default = "INFO" ":" "extensions_default[" -#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ - defined(__TI_COMPILER_VERSION__) || defined(__RENESAS__)) && \ - !defined(__STRICT_ANSI__) - "ON" -#else - "OFF" -#endif -"]"; - -/*--------------------------------------------------------------------------*/ - -int main(int argc, char* argv[]) -{ - int require = 0; - require += info_compiler[argc]; - require += info_platform[argc]; - require += info_arch[argc]; -#ifdef COMPILER_VERSION_MAJOR - require += info_version[argc]; -#endif -#if defined(COMPILER_VERSION_INTERNAL) || defined(COMPILER_VERSION_INTERNAL_STR) - require += info_version_internal[argc]; -#endif -#ifdef SIMULATE_ID - require += info_simulate[argc]; -#endif -#ifdef SIMULATE_VERSION_MAJOR - require += info_simulate_version[argc]; -#endif -#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) - require += info_cray[argc]; -#endif - require += info_language_standard_default[argc]; - require += info_language_extensions_default[argc]; - (void)argv; - return require; -} diff --git a/build/CMakeFiles/4.2.3/CompilerIdCXX/a.out b/build/CMakeFiles/4.2.3/CompilerIdCXX/a.out deleted file mode 100755 index f9e8ce47c7fdc7039333726ab29308873aa6af76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33736 zcmeI5Uu@G=6vt0Xr<;sX{{&%3s1FbYvvoimQH-5z%HrIXv1qfZ*WcFPwuY`k1^|55zuUfT=ZC8o|0yMM5sRDk4%TK5(SGvrjA#YxHddvYYo4fUt7~Zz?|jjl z=erhIl4qC~D%DySY@Hw0`vdcRWb7h#i*iX?luFt=lg8j7Ki?=XlzbCriP&zRZGvvp-|zk8}5|p}z6Sy4w289ZBca#kRVb*Y}=v?A7PfaU$lMmOOIL zb48x(XO)<~4_kla#0HC)NJj%X!}54((b8v%xvM+ zL~B`fJwpzw`;9GpMOLv&+`pG=bPgr%8_MiHnw(utW78{X?EGT7GP{(<_^czvuE3R< zmFcmP$js&oO9NxYu9C$UGO?oT#7YXsBp1Kqk>dKh4;IY1r0_mn%k70@(_9zVe{g(} zI$huRc+*22@t)pD)J}wIdV8bx)~FThdX99YH)De{ND$&Atcy zoR&pi(LLtvx*4&6&5W_;I-pX>43`w;;F5C8!X009sH z0T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI z5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!X009vAe+c+EO|wzSnA@g1x2?GJ63>X9 z2e{dMAmf?8k6eoONJtt-duSx>;?K1HJgh%Q`IFoWdsx$o{EpYO+C#&#+9Q3jX-THH zHQgzVv{P1>t!PcAkv2WGh(=4e*SzZKR`yQ2BbBsOw{3;(1eHW$opD9md#p%|2A#TP zt;j2^W!$`aivQn%oL|ab>e8LfwY^Mij(G!4{9a?r`DMM|*gj*o7<;*~6UHt!_K?`T zQF?02ejlj<6)Rn_KDIN>p4~CC019x-Td{zu6VGx}nu=0w4OJWTQ%&b^t}R!t{!%*5 z6(3@slr3@>`xuvNH@W#RZjJ7F_6K#8hzalY``o(4ym4K3m@rY7RS{1m>Dh1pKDO!L znxD%1+kJ2U`KdMh#g;eEreC_W`wX3II~Q7Ze9y5@g7H%`o#UP}lao8#O~InsU7zh5 z+<)%t*SEd;z|otHPkni`p?vyOF#Phd)5i}Sd1ud+Uq5)}_e0*nvfJv8tQy#Iv-xkd rfBLnP{om|3`+n;3rK+}zAHDbJTjvk_^~Tz%=+gs#d{yE;;n4aQ1R(#S diff --git a/build/CMakeFiles/4.2.3/CompilerIdCXX/apple-sdk.cpp b/build/CMakeFiles/4.2.3/CompilerIdCXX/apple-sdk.cpp deleted file mode 100644 index db846b4..0000000 --- a/build/CMakeFiles/4.2.3/CompilerIdCXX/apple-sdk.cpp +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/build/CMakeFiles/CMakeConfigureLog.yaml b/build/CMakeFiles/CMakeConfigureLog.yaml deleted file mode 100644 index c8c96ee..0000000 --- a/build/CMakeFiles/CMakeConfigureLog.yaml +++ /dev/null @@ -1,1686 +0,0 @@ - ---- -events: - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineSystem.cmake:12 (find_program)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_UNAME" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: true - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "uname" - candidate_directories: - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - searched_directories: - - "/opt/homebrew/bin/uname" - - "/opt/homebrew/sbin/uname" - - "/usr/local/bin/uname" - - "/System/Cryptexes/App/usr/bin/uname" - found: "/usr/bin/uname" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineSystem.cmake:212 (message)" - - "CMakeLists.txt:2 (project)" - message: | - The system is: Darwin - 25.3.0 - arm64 - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeUnixFindMake.cmake:5 (find_program)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_MAKE_PROGRAM" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: true - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "gmake" - - "make" - - "smake" - candidate_directories: - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - searched_directories: - - "/opt/homebrew/bin/gmake" - - "/opt/homebrew/sbin/gmake" - - "/usr/local/bin/gmake" - - "/System/Cryptexes/App/usr/bin/gmake" - - "/usr/bin/gmake" - - "/bin/gmake" - - "/usr/sbin/gmake" - - "/sbin/gmake" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/gmake" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/gmake" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/gmake" - - "/opt/pmk/env/global/bin/gmake" - - "/opt/homebrew/bin/make" - - "/opt/homebrew/sbin/make" - - "/usr/local/bin/make" - - "/System/Cryptexes/App/usr/bin/make" - found: "/usr/bin/make" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompiler.cmake:73 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:64 (_cmake_find_compiler)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_C_COMPILER" - description: "C compiler" - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: true - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "cc" - - "gcc" - - "cl" - - "bcc" - - "xlc" - - "icx" - - "clang" - candidate_directories: - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - searched_directories: - - "/opt/homebrew/bin/cc" - - "/opt/homebrew/sbin/cc" - - "/usr/local/bin/cc" - - "/System/Cryptexes/App/usr/bin/cc" - found: "/usr/bin/cc" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:462 (find_file)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:500 (CMAKE_DETERMINE_COMPILER_ID_WRITE)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:8 (CMAKE_DETERMINE_COMPILER_ID_BUILD)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" - - "CMakeLists.txt:2 (project)" - mode: "file" - variable: "src_in" - description: "Path to a file." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: true - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "CMakeCCompilerId.c.in" - candidate_directories: - - "/opt/homebrew/share/cmake/Modules/" - found: "/opt/homebrew/share/cmake/Modules/CMakeCCompilerId.c.in" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:17 (message)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" - - "CMakeLists.txt:2 (project)" - message: | - Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. - Compiler: /usr/bin/cc - Build flags: - Id flags: - - The output was: - 0 - - - Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" - - The C compiler identification is AppleClang, found in: - /Users/alex/code/alextac98/dv/build/CMakeFiles/4.2.3/CompilerIdC/a.out - - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:290 (message)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:122 (CMAKE_DETERMINE_COMPILER_ID)" - - "CMakeLists.txt:2 (project)" - message: | - Detecting C compiler apple sysroot: "/usr/bin/cc" "-E" "apple-sdk.c" - # 1 "apple-sdk.c" - # 1 "" 1 - # 1 "" 3 - # 466 "" 3 - # 1 "" 1 - # 1 "" 2 - # 1 "apple-sdk.c" 2 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 1 3 4 - # 89 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 - # 90 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/TargetConditionals.h" 1 3 4 - # 91 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 - # 207 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 1 3 4 - # 196 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 - # 197 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 1 3 4 - # 33 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 - # 34 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 2 3 4 - # 198 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 1 3 4 - # 34 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 1 3 4 - # 35 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 2 3 4 - # 199 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 - # 208 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 - # 2 "apple-sdk.c" 2 - - - Found apple sysroot: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_AR" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: false - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "ar" - candidate_directories: - - "/usr/bin/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - found: "/usr/bin/ar" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_RANLIB" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: false - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "ranlib" - candidate_directories: - - "/usr/bin/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - found: "/usr/bin/ranlib" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_STRIP" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: false - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "strip" - candidate_directories: - - "/usr/bin/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - found: "/usr/bin/strip" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_LINKER" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: false - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "ld" - candidate_directories: - - "/usr/bin/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - found: "/usr/bin/ld" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_NM" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: false - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "nm" - candidate_directories: - - "/usr/bin/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - found: "/usr/bin/nm" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_OBJDUMP" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: false - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "objdump" - candidate_directories: - - "/usr/bin/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - found: "/usr/bin/objdump" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_OBJCOPY" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: false - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "objcopy" - candidate_directories: - - "/usr/bin/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - searched_directories: - - "/usr/bin/objcopy" - - "/opt/homebrew/bin/objcopy" - - "/opt/homebrew/sbin/objcopy" - - "/usr/local/bin/objcopy" - - "/System/Cryptexes/App/usr/bin/objcopy" - - "/bin/objcopy" - - "/usr/sbin/objcopy" - - "/sbin/objcopy" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/objcopy" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/objcopy" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/objcopy" - - "/opt/pmk/env/global/bin/objcopy" - found: false - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_READELF" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: false - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "readelf" - candidate_directories: - - "/usr/bin/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - searched_directories: - - "/usr/bin/readelf" - - "/opt/homebrew/bin/readelf" - - "/opt/homebrew/sbin/readelf" - - "/usr/local/bin/readelf" - - "/System/Cryptexes/App/usr/bin/readelf" - - "/bin/readelf" - - "/usr/sbin/readelf" - - "/sbin/readelf" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/readelf" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/readelf" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/readelf" - - "/opt/pmk/env/global/bin/readelf" - found: false - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_DLLTOOL" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: false - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "dlltool" - candidate_directories: - - "/usr/bin/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - searched_directories: - - "/usr/bin/dlltool" - - "/opt/homebrew/bin/dlltool" - - "/opt/homebrew/sbin/dlltool" - - "/usr/local/bin/dlltool" - - "/System/Cryptexes/App/usr/bin/dlltool" - - "/bin/dlltool" - - "/usr/sbin/dlltool" - - "/sbin/dlltool" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/dlltool" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/dlltool" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/dlltool" - - "/opt/pmk/env/global/bin/dlltool" - found: false - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_ADDR2LINE" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: false - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "addr2line" - candidate_directories: - - "/usr/bin/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - searched_directories: - - "/usr/bin/addr2line" - - "/opt/homebrew/bin/addr2line" - - "/opt/homebrew/sbin/addr2line" - - "/usr/local/bin/addr2line" - - "/System/Cryptexes/App/usr/bin/addr2line" - - "/bin/addr2line" - - "/usr/sbin/addr2line" - - "/sbin/addr2line" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/addr2line" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/addr2line" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/addr2line" - - "/opt/pmk/env/global/bin/addr2line" - found: false - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeFindBinUtils.cmake:243 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_TAPI" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: false - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "tapi" - candidate_directories: - - "/usr/bin/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - searched_directories: - - "/usr/bin/tapi" - - "/opt/homebrew/bin/tapi" - - "/opt/homebrew/sbin/tapi" - - "/usr/local/bin/tapi" - - "/System/Cryptexes/App/usr/bin/tapi" - - "/bin/tapi" - - "/usr/sbin/tapi" - - "/sbin/tapi" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/tapi" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/tapi" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/tapi" - - "/opt/pmk/env/global/bin/tapi" - found: false - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompiler.cmake:54 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:69 (_cmake_find_compiler)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_CXX_COMPILER" - description: "CXX compiler" - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: true - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "c++" - - "g++" - - "cl" - - "bcc" - - "icpx" - - "icx" - - "clang++" - candidate_directories: - - "/usr/bin/" - found: "/usr/bin/c++" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:462 (find_file)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:500 (CMAKE_DETERMINE_COMPILER_ID_WRITE)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:8 (CMAKE_DETERMINE_COMPILER_ID_BUILD)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:125 (CMAKE_DETERMINE_COMPILER_ID)" - - "CMakeLists.txt:2 (project)" - mode: "file" - variable: "src_in" - description: "Path to a file." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: true - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "CMakeCXXCompilerId.cpp.in" - candidate_directories: - - "/opt/homebrew/share/cmake/Modules/" - found: "/opt/homebrew/share/cmake/Modules/CMakeCXXCompilerId.cpp.in" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:17 (message)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:125 (CMAKE_DETERMINE_COMPILER_ID)" - - "CMakeLists.txt:2 (project)" - message: | - Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. - Compiler: /usr/bin/c++ - Build flags: - Id flags: - - The output was: - 0 - - - Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" - - The CXX compiler identification is AppleClang, found in: - /Users/alex/code/alextac98/dv/build/CMakeFiles/4.2.3/CompilerIdCXX/a.out - - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerId.cmake:290 (message)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:125 (CMAKE_DETERMINE_COMPILER_ID)" - - "CMakeLists.txt:2 (project)" - message: | - Detecting CXX compiler apple sysroot: "/usr/bin/c++" "-E" "apple-sdk.cpp" - # 1 "apple-sdk.cpp" - # 1 "" 1 - # 1 "" 3 - # 514 "" 3 - # 1 "" 1 - # 1 "" 2 - # 1 "apple-sdk.cpp" 2 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 1 3 4 - # 89 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 - # 90 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/TargetConditionals.h" 1 3 4 - # 91 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 - # 207 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 1 3 4 - # 196 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 - # 197 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 1 3 4 - # 33 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h" 1 3 4 - # 34 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 2 3 4 - # 198 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 1 3 4 - # 34 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 3 4 - # 1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h" 1 3 4 - # 35 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h" 2 3 4 - # 199 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h" 2 3 4 - # 208 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityMacros.h" 2 3 4 - # 2 "apple-sdk.cpp" 2 - - - Found apple sysroot: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk - - - kind: "find-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/Platform/Darwin.cmake:76 (find_program)" - - "/opt/homebrew/share/cmake/Modules/CMakeSystemSpecificInformation.cmake:32 (include)" - - "CMakeLists.txt:2 (project)" - mode: "program" - variable: "CMAKE_INSTALL_NAME_TOOL" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: true - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "install_name_tool" - candidate_directories: - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - searched_directories: - - "/opt/homebrew/bin/install_name_tool" - - "/opt/homebrew/sbin/install_name_tool" - - "/usr/local/bin/install_name_tool" - - "/System/Cryptexes/App/usr/bin/install_name_tool" - found: "/usr/bin/install_name_tool" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - CMAKE_INSTALL_PREFIX: "/usr/local" - - - kind: "try_compile-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:83 (try_compile)" - - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - checks: - - "Detecting C compiler ABI info" - directories: - source: "/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr" - binary: "/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr" - cmakeVariables: - CMAKE_C_FLAGS: "" - CMAKE_C_FLAGS_DEBUG: "-g" - CMAKE_EXE_LINKER_FLAGS: "" - CMAKE_OSX_ARCHITECTURES: "" - CMAKE_OSX_DEPLOYMENT_TARGET: "" - CMAKE_OSX_SYSROOT: "" - buildResult: - variable: "CMAKE_C_ABI_COMPILED" - cached: true - stdout: | - Change Dir: '/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr' - - Run Build Command(s): /opt/homebrew/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_ea9c3/fast - /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_ea9c3.dir/build.make CMakeFiles/cmTC_ea9c3.dir/build - Building C object CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o - /usr/bin/cc -arch arm64 -v -Wl,-v -MD -MT CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -c /opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c - Apple clang version 17.0.0 (clang-1700.6.4.2) - Target: arm64-apple-darwin25.3.0 - Thread model: posix - InstalledDir: /Library/Developer/CommandLineTools/usr/bin - clang: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] - "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx26.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=26.2 -fvisibility-inlines-hidden-static-local-var -fdefine-target-os-macros -fno-assume-unique-vtables -fno-modulemap-allow-subdirectory-search -target-cpu apple-m1 -target-feature +zcm -target-feature +zcz -target-feature +v8.5a -target-feature +aes -target-feature +altnzcv -target-feature +ccdp -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fptoint -target-feature +fullfp16 -target-feature +jsconv -target-feature +lse -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +predres -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sb -target-feature +sha2 -target-feature +sha3 -target-feature +specrestrict -target-feature +ssbs -target-abi darwinpcs -debugger-tuning=lldb -fdebug-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr -target-linker-version 1230.1 -v -fcoverage-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/17 -dependency-file CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/17/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -clang-vendor-feature=+disableAtImportPrivateFrameworkInImplementationError -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -x c /opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c - clang -cc1 version 17.0.0 (clang-1700.6.4.2) default target arm64-apple-darwin25.3.0 - ignoring nonexistent directory "/usr/local/include" - ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include" - ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks" - #include "..." search starts here: - #include <...> search starts here: - /Library/Developer/CommandLineTools/usr/lib/clang/17/include - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include - /Library/Developer/CommandLineTools/usr/include - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory) - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks (framework directory) - End of search list. - Linking C executable cmTC_ea9c3 - /opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ea9c3.dir/link.txt --verbose=1 - Apple clang version 17.0.0 (clang-1700.6.4.2) - Target: arm64-apple-darwin25.3.0 - Thread model: posix - InstalledDir: /Library/Developer/CommandLineTools/usr/bin - "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 26.0.0 26.2 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mllvm -enable-linkonceodr-outlining -o cmTC_ea9c3 -L/usr/local/lib -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a - @(#)PROGRAM:ld PROJECT:ld-1230.1 - BUILD 10:14:01 Jan 9 2026 - configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em armv8m.main armv8.1m.main - will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em - LTO support using: LLVM version 17.0.0 (static support for 29, runtime is 29) - TAPI support using: Apple TAPI version 17.0.0 (tapi-1700.3.8) - Library search paths: - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift - Framework search paths: - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks - /usr/bin/cc -arch arm64 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -o cmTC_ea9c3 - - exitCode: 0 - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:122 (message)" - - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - message: | - Effective list of requested architectures (possibly empty) : "" - Effective list of architectures found in the ABI info binary: "arm64" - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:217 (message)" - - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - message: | - Parsed C implicit include dir info: rv=done - found start of include info - found start of implicit include info - add: [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] - add: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] - add: [/Library/Developer/CommandLineTools/usr/include] - end of search list found - collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] - collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] - collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] - implicit include dirs: [/Library/Developer/CommandLineTools/usr/lib/clang/17/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] - - - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:253 (message)" - - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - message: | - Parsed C implicit link information: - link line regex: [^( *|.*[/\\])(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] - linker tool regex: [^[ ]*(->|"|[0-9]+>[ -]*Build:[ 0-9]+ ms[ ]*)?[ ]*(([^"]*[/\\])?(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)))("|,| |$)] - ignore line: [Change Dir: '/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr'] - ignore line: [] - ignore line: [Run Build Command(s): /opt/homebrew/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_ea9c3/fast] - ignore line: [/Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_ea9c3.dir/build.make CMakeFiles/cmTC_ea9c3.dir/build] - ignore line: [Building C object CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o] - ignore line: [/usr/bin/cc -arch arm64 -v -Wl -v -MD -MT CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -c /opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c] - ignore line: [Apple clang version 17.0.0 (clang-1700.6.4.2)] - ignore line: [Target: arm64-apple-darwin25.3.0] - ignore line: [Thread model: posix] - ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] - ignore line: [clang: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] - ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx26.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=26.2 -fvisibility-inlines-hidden-static-local-var -fdefine-target-os-macros -fno-assume-unique-vtables -fno-modulemap-allow-subdirectory-search -target-cpu apple-m1 -target-feature +zcm -target-feature +zcz -target-feature +v8.5a -target-feature +aes -target-feature +altnzcv -target-feature +ccdp -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fptoint -target-feature +fullfp16 -target-feature +jsconv -target-feature +lse -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +predres -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sb -target-feature +sha2 -target-feature +sha3 -target-feature +specrestrict -target-feature +ssbs -target-abi darwinpcs -debugger-tuning=lldb -fdebug-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr -target-linker-version 1230.1 -v -fcoverage-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-uCNAfr -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/17 -dependency-file CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/17/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -clang-vendor-feature=+disableAtImportPrivateFrameworkInImplementationError -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -x c /opt/homebrew/share/cmake/Modules/CMakeCCompilerABI.c] - ignore line: [clang -cc1 version 17.0.0 (clang-1700.6.4.2) default target arm64-apple-darwin25.3.0] - ignore line: [ignoring nonexistent directory "/usr/local/include"] - ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include"] - ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks"] - ignore line: [#include "..." search starts here:] - ignore line: [#include <...> search starts here:] - ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/17/include] - ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] - ignore line: [ /Library/Developer/CommandLineTools/usr/include] - ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)] - ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks (framework directory)] - ignore line: [End of search list.] - ignore line: [Linking C executable cmTC_ea9c3] - ignore line: [/opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ea9c3.dir/link.txt --verbose=1] - ignore line: [Apple clang version 17.0.0 (clang-1700.6.4.2)] - ignore line: [Target: arm64-apple-darwin25.3.0] - ignore line: [Thread model: posix] - ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] - link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 26.0.0 26.2 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mllvm -enable-linkonceodr-outlining -o cmTC_ea9c3 -L/usr/local/lib -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] - arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore - arg [-demangle] ==> ignore - arg [-lto_library] ==> ignore, skip following value - arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library - arg [-dynamic] ==> ignore - arg [-arch] ==> ignore - arg [arm64] ==> ignore - arg [-platform_version] ==> ignore - arg [macos] ==> ignore - arg [26.0.0] ==> ignore - arg [26.2] ==> ignore - arg [-syslibroot] ==> ignore - arg [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk] ==> ignore - arg [-mllvm] ==> ignore - arg [-enable-linkonceodr-outlining] ==> ignore - arg [-o] ==> ignore - arg [cmTC_ea9c3] ==> ignore - arg [-L/usr/local/lib] ==> dir [/usr/local/lib] - arg [-search_paths_first] ==> ignore - arg [-headerpad_max_install_names] ==> ignore - arg [-v] ==> ignore - arg [CMakeFiles/cmTC_ea9c3.dir/CMakeCCompilerABI.c.o] ==> ignore - arg [-lSystem] ==> lib [System] - arg [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] - linker tool for 'C': /Library/Developer/CommandLineTools/usr/bin/ld - Library search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] - Framework search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] - remove lib [System] - remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] - collapse library dir [/usr/local/lib] ==> [/usr/local/lib] - collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib] - collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] - collapse framework dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] - implicit libs: [] - implicit objs: [] - implicit dirs: [/usr/local/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] - implicit fwks: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] - - - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake:38 (message)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:299 (cmake_determine_linker_id)" - - "/opt/homebrew/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - message: | - Running the C compiler's linker: "/Library/Developer/CommandLineTools/usr/bin/ld" "-v" - @(#)PROGRAM:ld PROJECT:ld-1230.1 - BUILD 10:14:01 Jan 9 2026 - configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em armv8m.main armv8.1m.main - will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em - LTO support using: LLVM version 17.0.0 (static support for 29, runtime is 29) - TAPI support using: Apple TAPI version 17.0.0 (tapi-1700.3.8) - - - kind: "try_compile-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:83 (try_compile)" - - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - checks: - - "Detecting CXX compiler ABI info" - directories: - source: "/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C" - binary: "/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C" - cmakeVariables: - CMAKE_CXX_FLAGS: "" - CMAKE_CXX_FLAGS_DEBUG: "-g" - CMAKE_CXX_SCAN_FOR_MODULES: "OFF" - CMAKE_EXE_LINKER_FLAGS: "" - CMAKE_OSX_ARCHITECTURES: "" - CMAKE_OSX_DEPLOYMENT_TARGET: "" - CMAKE_OSX_SYSROOT: "" - buildResult: - variable: "CMAKE_CXX_ABI_COMPILED" - cached: true - stdout: | - Change Dir: '/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C' - - Run Build Command(s): /opt/homebrew/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_591c3/fast - /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_591c3.dir/build.make CMakeFiles/cmTC_591c3.dir/build - Building CXX object CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o - /usr/bin/c++ -arch arm64 -v -Wl,-v -MD -MT CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -c /opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp - Apple clang version 17.0.0 (clang-1700.6.4.2) - Target: arm64-apple-darwin25.3.0 - Thread model: posix - InstalledDir: /Library/Developer/CommandLineTools/usr/bin - clang++: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] - ignoring nonexistent directory "/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1" - "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx26.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=26.2 -fvisibility-inlines-hidden-static-local-var -fdefine-target-os-macros -fno-assume-unique-vtables -fno-modulemap-allow-subdirectory-search -target-cpu apple-m1 -target-feature +zcm -target-feature +zcz -target-feature +v8.5a -target-feature +aes -target-feature +altnzcv -target-feature +ccdp -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fptoint -target-feature +fullfp16 -target-feature +jsconv -target-feature +lse -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +predres -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sb -target-feature +sha2 -target-feature +sha3 -target-feature +specrestrict -target-feature +ssbs -target-abi darwinpcs -debugger-tuning=lldb -fdebug-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C -target-linker-version 1230.1 -v -fcoverage-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/17 -dependency-file CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/17/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -fdeprecated-macro -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fno-cxx-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -clang-vendor-feature=+disableAtImportPrivateFrameworkInImplementationError -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -x c++ /opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp - clang -cc1 version 17.0.0 (clang-1700.6.4.2) default target arm64-apple-darwin25.3.0 - ignoring nonexistent directory "/usr/local/include" - ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include" - ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks" - #include "..." search starts here: - #include <...> search starts here: - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 - /Library/Developer/CommandLineTools/usr/lib/clang/17/include - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include - /Library/Developer/CommandLineTools/usr/include - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory) - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks (framework directory) - End of search list. - Linking CXX executable cmTC_591c3 - /opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/cmTC_591c3.dir/link.txt --verbose=1 - Apple clang version 17.0.0 (clang-1700.6.4.2) - Target: arm64-apple-darwin25.3.0 - Thread model: posix - InstalledDir: /Library/Developer/CommandLineTools/usr/bin - "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 26.0.0 26.2 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mllvm -enable-linkonceodr-outlining -o cmTC_591c3 -L/usr/local/lib -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a - @(#)PROGRAM:ld PROJECT:ld-1230.1 - BUILD 10:14:01 Jan 9 2026 - configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em armv8m.main armv8.1m.main - will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em - LTO support using: LLVM version 17.0.0 (static support for 29, runtime is 29) - TAPI support using: Apple TAPI version 17.0.0 (tapi-1700.3.8) - Library search paths: - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift - Framework search paths: - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks - /usr/bin/c++ -arch arm64 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_591c3 - - exitCode: 0 - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:122 (message)" - - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - message: | - Effective list of requested architectures (possibly empty) : "" - Effective list of architectures found in the ABI info binary: "arm64" - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:217 (message)" - - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - message: | - Parsed CXX implicit include dir info: rv=done - found start of include info - found start of implicit include info - add: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1] - add: [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] - add: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] - add: [/Library/Developer/CommandLineTools/usr/include] - end of search list found - collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1] - collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/17/include] - collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] - collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] - implicit include dirs: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1;/Library/Developer/CommandLineTools/usr/lib/clang/17/include;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] - - - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:253 (message)" - - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - message: | - Parsed CXX implicit link information: - link line regex: [^( *|.*[/\\])(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] - linker tool regex: [^[ ]*(->|"|[0-9]+>[ -]*Build:[ 0-9]+ ms[ ]*)?[ ]*(([^"]*[/\\])?(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)))("|,| |$)] - ignore line: [Change Dir: '/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C'] - ignore line: [] - ignore line: [Run Build Command(s): /opt/homebrew/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_591c3/fast] - ignore line: [/Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_591c3.dir/build.make CMakeFiles/cmTC_591c3.dir/build] - ignore line: [Building CXX object CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [/usr/bin/c++ -arch arm64 -v -Wl -v -MD -MT CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -c /opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp] - ignore line: [Apple clang version 17.0.0 (clang-1700.6.4.2)] - ignore line: [Target: arm64-apple-darwin25.3.0] - ignore line: [Thread model: posix] - ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] - ignore line: [clang++: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] - ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1"] - ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx26.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=26.2 -fvisibility-inlines-hidden-static-local-var -fdefine-target-os-macros -fno-assume-unique-vtables -fno-modulemap-allow-subdirectory-search -target-cpu apple-m1 -target-feature +zcm -target-feature +zcz -target-feature +v8.5a -target-feature +aes -target-feature +altnzcv -target-feature +ccdp -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fptoint -target-feature +fullfp16 -target-feature +jsconv -target-feature +lse -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +predres -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sb -target-feature +sha2 -target-feature +sha3 -target-feature +specrestrict -target-feature +ssbs -target-abi darwinpcs -debugger-tuning=lldb -fdebug-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C -target-linker-version 1230.1 -v -fcoverage-compilation-dir=/Users/alex/code/alextac98/dv/build/CMakeFiles/CMakeScratch/TryCompile-i6uc5C -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/17 -dependency-file CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/17/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks -internal-iframework /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -fdeprecated-macro -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fno-cxx-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -clang-vendor-feature=+disableAtImportPrivateFrameworkInImplementationError -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -x c++ /opt/homebrew/share/cmake/Modules/CMakeCXXCompilerABI.cpp] - ignore line: [clang -cc1 version 17.0.0 (clang-1700.6.4.2) default target arm64-apple-darwin25.3.0] - ignore line: [ignoring nonexistent directory "/usr/local/include"] - ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/include"] - ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library/Frameworks"] - ignore line: [#include "..." search starts here:] - ignore line: [#include <...> search starts here:] - ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1] - ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/17/include] - ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include] - ignore line: [ /Library/Developer/CommandLineTools/usr/include] - ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)] - ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/SubFrameworks (framework directory)] - ignore line: [End of search list.] - ignore line: [Linking CXX executable cmTC_591c3] - ignore line: [/opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/cmTC_591c3.dir/link.txt --verbose=1] - ignore line: [Apple clang version 17.0.0 (clang-1700.6.4.2)] - ignore line: [Target: arm64-apple-darwin25.3.0] - ignore line: [Thread model: posix] - ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] - link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 26.0.0 26.2 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mllvm -enable-linkonceodr-outlining -o cmTC_591c3 -L/usr/local/lib -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] - arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore - arg [-demangle] ==> ignore - arg [-lto_library] ==> ignore, skip following value - arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library - arg [-dynamic] ==> ignore - arg [-arch] ==> ignore - arg [arm64] ==> ignore - arg [-platform_version] ==> ignore - arg [macos] ==> ignore - arg [26.0.0] ==> ignore - arg [26.2] ==> ignore - arg [-syslibroot] ==> ignore - arg [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk] ==> ignore - arg [-mllvm] ==> ignore - arg [-enable-linkonceodr-outlining] ==> ignore - arg [-o] ==> ignore - arg [cmTC_591c3] ==> ignore - arg [-L/usr/local/lib] ==> dir [/usr/local/lib] - arg [-search_paths_first] ==> ignore - arg [-headerpad_max_install_names] ==> ignore - arg [-v] ==> ignore - arg [CMakeFiles/cmTC_591c3.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore - arg [-lc++] ==> lib [c++] - arg [-lSystem] ==> lib [System] - arg [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] - linker tool for 'CXX': /Library/Developer/CommandLineTools/usr/bin/ld - Library search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] - Framework search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] - remove lib [System] - remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/17/lib/darwin/libclang_rt.osx.a] - collapse library dir [/usr/local/lib] ==> [/usr/local/lib] - collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib] - collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] - collapse framework dir [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] - implicit libs: [c++] - implicit objs: [] - implicit dirs: [/usr/local/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib;/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/swift] - implicit fwks: [/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks] - - - - - kind: "message-v1" - backtrace: - - "/opt/homebrew/share/cmake/Modules/Internal/CMakeDetermineLinkerId.cmake:38 (message)" - - "/opt/homebrew/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:299 (cmake_determine_linker_id)" - - "/opt/homebrew/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - message: | - Running the CXX compiler's linker: "/Library/Developer/CommandLineTools/usr/bin/ld" "-v" - @(#)PROGRAM:ld PROJECT:ld-1230.1 - BUILD 10:14:01 Jan 9 2026 - configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em armv8m.main armv8.1m.main - will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em - LTO support using: LLVM version 17.0.0 (static support for 29, runtime is 29) - TAPI support using: Apple TAPI version 17.0.0 (tapi-1700.3.8) - - - kind: "find-v1" - backtrace: - - "CMakeLists.txt:6 (find_program)" - mode: "program" - variable: "BAZEL_EXECUTABLE" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: true - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "bazel" - candidate_directories: - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/bin/" - - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/sbin/" - - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/opt/homebrew/" - - "/usr/local/bin/" - - "/usr/local/sbin/" - - "/usr/local/" - - "/usr/bin/" - - "/usr/sbin/" - - "/usr/" - - "/bin/" - - "/sbin/" - - "/usr/X11R6/bin/" - - "/usr/X11R6/sbin/" - - "/usr/X11R6/" - - "/usr/pkg/bin/" - - "/usr/pkg/sbin/" - - "/usr/pkg/" - - "/opt/bin/" - - "/opt/sbin/" - - "/opt/" - - "/sw/bin/" - - "/sw/sbin/" - - "/sw/" - - "/opt/local/bin/" - - "/opt/local/sbin/" - - "/opt/local/" - - "/Users/alex/Applications/" - - "/Applications/" - found: "/opt/homebrew/bin/bazel" - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - CMAKE_INSTALL_PREFIX: "/usr/local" - CMAKE_SYSTEM_PREFIX_PATH: - - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr" - - "/opt/homebrew" - - "/usr/local" - - "/usr" - - "/" - - "/opt/homebrew" - - "/usr/local" - - "/usr/X11R6" - - "/usr/pkg" - - "/opt" - - "/sw" - - "/opt/local" - CMAKE_SYSTEM_APPBUNDLE_PATH: - - "/Users/alex/Applications" - - "/Applications" - - - kind: "find-v1" - backtrace: - - "CMakeLists.txt:7 (find_program)" - mode: "program" - variable: "CARGO_EXECUTABLE" - description: "Path to a program." - settings: - SearchFramework: "FIRST" - SearchAppBundle: "FIRST" - CMAKE_FIND_USE_CMAKE_PATH: true - CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true - CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true - CMAKE_FIND_USE_INSTALL_PREFIX: true - names: - - "cargo" - candidate_directories: - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/usr/local/bin/" - - "/System/Cryptexes/App/usr/bin/" - - "/usr/bin/" - - "/bin/" - - "/usr/sbin/" - - "/sbin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/" - - "/opt/pmk/env/global/bin/" - - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/bin/" - - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/sbin/" - - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/" - - "/opt/homebrew/bin/" - - "/opt/homebrew/sbin/" - - "/opt/homebrew/" - - "/usr/local/bin/" - - "/usr/local/sbin/" - - "/usr/local/" - - "/usr/bin/" - - "/usr/sbin/" - - "/usr/" - - "/bin/" - - "/sbin/" - - "/usr/X11R6/bin/" - - "/usr/X11R6/sbin/" - - "/usr/X11R6/" - - "/usr/pkg/bin/" - - "/usr/pkg/sbin/" - - "/usr/pkg/" - - "/opt/bin/" - - "/opt/sbin/" - - "/opt/" - - "/sw/bin/" - - "/sw/sbin/" - - "/sw/" - - "/opt/local/bin/" - - "/opt/local/sbin/" - - "/opt/local/" - - "/Users/alex/Applications/" - - "/Applications/" - searched_directories: - - "/opt/homebrew/bin/cargo" - - "/opt/homebrew/sbin/cargo" - - "/usr/local/bin/cargo" - - "/System/Cryptexes/App/usr/bin/cargo" - - "/usr/bin/cargo" - - "/bin/cargo" - - "/usr/sbin/cargo" - - "/sbin/cargo" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin/cargo" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin/cargo" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin/cargo" - - "/opt/pmk/env/global/bin/cargo" - - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/bin/cargo" - - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/sbin/cargo" - - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/cargo" - - "/opt/homebrew/bin/cargo" - - "/opt/homebrew/sbin/cargo" - - "/opt/homebrew/cargo" - - "/usr/local/bin/cargo" - - "/usr/local/sbin/cargo" - - "/usr/local/cargo" - - "/usr/bin/cargo" - - "/usr/sbin/cargo" - - "/usr/cargo" - - "/bin/cargo" - - "/sbin/cargo" - - "/usr/X11R6/bin/cargo" - - "/usr/X11R6/sbin/cargo" - - "/usr/X11R6/cargo" - - "/usr/pkg/bin/cargo" - - "/usr/pkg/sbin/cargo" - - "/usr/pkg/cargo" - - "/opt/bin/cargo" - - "/opt/sbin/cargo" - - "/opt/cargo" - - "/sw/bin/cargo" - - "/sw/sbin/cargo" - - "/sw/cargo" - - "/opt/local/bin/cargo" - - "/opt/local/sbin/cargo" - - "/opt/local/cargo" - - "/Users/alex/Applications/cargo" - - "/Applications/cargo" - found: false - search_context: - ENV{PATH}: - - "/opt/homebrew/bin" - - "/opt/homebrew/sbin" - - "/usr/local/bin" - - "/System/Cryptexes/App/usr/bin" - - "/usr/bin" - - "/bin" - - "/usr/sbin" - - "/sbin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin" - - "/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin" - - "/opt/pmk/env/global/bin" - CMAKE_INSTALL_PREFIX: "/usr/local" - CMAKE_SYSTEM_PREFIX_PATH: - - "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr" - - "/opt/homebrew" - - "/usr/local" - - "/usr" - - "/" - - "/opt/homebrew" - - "/usr/local" - - "/usr/X11R6" - - "/usr/pkg" - - "/opt" - - "/sw" - - "/opt/local" - CMAKE_SYSTEM_APPBUNDLE_PATH: - - "/Users/alex/Applications" - - "/Applications" -... diff --git a/build/CMakeFiles/cmake.check_cache b/build/CMakeFiles/cmake.check_cache deleted file mode 100644 index 3dccd73..0000000 --- a/build/CMakeFiles/cmake.check_cache +++ /dev/null @@ -1 +0,0 @@ -# This file is generated by cmake for dependency checking of the CMakeCache.txt file From 8f33f8b31d6e70bb1f3e906dfe3c1d4284c2c2ca Mon Sep 17 00:00:00 2001 From: Alex Tacescu Date: Mon, 23 Mar 2026 00:21:47 -0700 Subject: [PATCH 9/9] Another fix for python builds on windows --- .github/workflows/_python.yaml | 3 +++ CMakeLists.txt | 1 + python/wheels.bzl | 7 ++++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/_python.yaml b/.github/workflows/_python.yaml index c1255fe..fb98223 100644 --- a/.github/workflows/_python.yaml +++ b/.github/workflows/_python.yaml @@ -68,9 +68,12 @@ jobs: if: runner.os == 'Windows' shell: pwsh run: | + $ErrorActionPreference = 'Stop' $bazelArgs = @("--output_user_root=C:/bzl") bazel @bazelArgs build //python:${{ matrix.python.target }}.dist + if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } $bazelBin = bazel @bazelArgs info bazel-bin + if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } New-Item -ItemType Directory -Force -Path dist | Out-Null Copy-Item "$bazelBin/python/${{ matrix.python.dist }}/*.whl" dist/ diff --git a/CMakeLists.txt b/CMakeLists.txt index aa6c9d4..4d18a6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,6 +77,7 @@ set_target_properties(dv_c PROPERTIES IMPORTED_LOCATION ${DV_DIPLOMAT_STATIC} INTERFACE_INCLUDE_DIRECTORIES ${DV_CODEGEN_C_DIR} ) +target_link_libraries(dv_c INTERFACE $<$:m>) add_dependencies(dv_c dv_diplomat_bridge_ext dv_diplomat_codegen) add_library(dv_cpp INTERFACE) diff --git a/python/wheels.bzl b/python/wheels.bzl index dda15ea..7863ca1 100644 --- a/python/wheels.bzl +++ b/python/wheels.bzl @@ -62,6 +62,11 @@ def dv_extension( if python_libs: deps.append(python_libs) + resolved_linkopts = select({ + "//python:windows_x86_64": ["ntdll.lib"], + "//conditions:default": [], + }) + linkopts + cc_binary( name = native_target, srcs = [ @@ -73,7 +78,7 @@ def dv_extension( ], copts = _nanobind_copts(nanobind_repo_path, limited_api = limited_api), deps = deps + extra_deps, - linkopts = linkopts, + linkopts = resolved_linkopts, linkshared = True, )