# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
rust-version = "1.34"
name = "portable-atomic"
version = "1.10.0"
build = "build.rs"
exclude = [
    "/.*",
    "/tools",
    "/target-specs",
    "/DEVELOPMENT.md",
]
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = """
Portable atomic types including support for 128-bit atomics, atomic float, etc.
"""
readme = "README.md"
keywords = ["atomic"]
categories = [
    "concurrency",
    "embedded",
    "hardware-support",
    "no-std",
    "no-std::no-alloc",
]
license = "Apache-2.0 OR MIT"
repository = "https://github.com/taiki-e/portable-atomic"

[package.metadata.cargo_check_external_types]
allowed_external_types = ["serde::*"]

[package.metadata.docs.rs]
features = [
    "float",
    "std",
    "serde",
    "critical-section",
]
targets = ["x86_64-unknown-linux-gnu"]

[lib]
name = "portable_atomic"
path = "src/lib.rs"
doc-scrape-examples = false

[dependencies.critical-section]
version = "1"
optional = true

[dependencies.serde]
version = "1.0.60"
optional = true
default-features = false

[dev-dependencies.build-context]
version = "0.1"

[dev-dependencies.crossbeam-utils]
version = "=0.8.16"

[dev-dependencies.fastrand]
version = "2"

[dev-dependencies.paste]
version = "1"

[dev-dependencies.sptr]
version = "0.3"

[dev-dependencies.static_assertions]
version = "1"

[features]
default = ["fallback"]
disable-fiq = []
fallback = []
float = []
force-amo = []
require-cas = []
s-mode = []
std = []
unsafe-assume-single-core = []

[target."cfg(unix)".dev-dependencies.libc]
version = "=0.2.163"

[target."cfg(windows)".dev-dependencies.windows-sys]
version = "0.59"
features = [
    "Win32_Foundation",
    "Win32_System_Threading",
]

[lints.clippy]
all = "warn"
as_ptr_cast_mut = "warn"
as_underscore = "warn"
default_union_representation = "warn"
inline_asm_x86_att_syntax = "warn"
pedantic = "warn"
trailing_empty_array = "warn"
transmute_undefined_repr = "warn"
undocumented_unsafe_blocks = "warn"

[lints.clippy.bool_assert_comparison]
level = "allow"
priority = 1

[lints.clippy.borrow_as_ptr]
level = "allow"
priority = 1

[lints.clippy.cast_lossless]
level = "allow"
priority = 1

[lints.clippy.declare_interior_mutable_const]
level = "allow"
priority = 1

[lints.clippy.doc_markdown]
level = "allow"
priority = 1

[lints.clippy.float_cmp]
level = "allow"
priority = 1

[lints.clippy.incompatible_msrv]
level = "allow"
priority = 1

[lints.clippy.lint_groups_priority]
level = "allow"
priority = 1

[lints.clippy.manual_assert]
level = "allow"
priority = 1

[lints.clippy.manual_range_contains]
level = "allow"
priority = 1

[lints.clippy.missing_errors_doc]
level = "allow"
priority = 1

[lints.clippy.module_name_repetitions]
level = "allow"
priority = 1

[lints.clippy.naive_bytecount]
level = "allow"
priority = 1

[lints.clippy.nonminimal_bool]
level = "allow"
priority = 1

[lints.clippy.range_plus_one]
level = "allow"
priority = 1

[lints.clippy.similar_names]
level = "allow"
priority = 1

[lints.clippy.single_match]
level = "allow"
priority = 1

[lints.clippy.single_match_else]
level = "allow"
priority = 1

[lints.clippy.struct_excessive_bools]
level = "allow"
priority = 1

[lints.clippy.struct_field_names]
level = "allow"
priority = 1

[lints.clippy.too_many_arguments]
level = "allow"
priority = 1

[lints.clippy.too_many_lines]
level = "allow"
priority = 1

[lints.clippy.type_complexity]
level = "allow"
priority = 1

[lints.clippy.unreadable_literal]
level = "allow"
priority = 1

[lints.rust]
deprecated_safe = "warn"
improper_ctypes = "warn"
improper_ctypes_definitions = "warn"
non_ascii_idents = "warn"
rust_2018_idioms = "warn"
single_use_lifetimes = "warn"
unreachable_pub = "warn"

[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
    'cfg(target_arch,values("xtensa"))',
    'cfg(target_os,values("psx"))',
    'cfg(target_env,values("psx"))',
    'cfg(target_feature,values("lse2","lse128","rcpc3"))',
    'cfg(target_feature,values("quadword-atomics"))',
    'cfg(target_feature,values("zaamo","zabha"))',
    'cfg(target_pointer_width,values("128"))',
    "cfg(portable_atomic_test_outline_atomics_detect_false,qemu,valgrind)",
    "cfg(portable_atomic_no_outline_atomics,portable_atomic_outline_atomics)",
    "cfg(portable_atomic_unstable_coerce_unsized)",
]
