[package]
name = "gtfsort"
version = "0.2.4"
authors = [
    "alejandrogzi <alejandrxgzi@gmail.com>",
    "eternal-flame-AD <yume@yumechi.jp>",
]
edition = "2021"
license = "MIT"
description = "An optimized chr/pos/feature GTF/GFF sorter using a lexicographic-based index ordering algorithm written in Rust."
homepage = "https://github.com/alejandrogzi/gtfsort"
repository = "https://github.com/alejandrogzi/gtfsort"
readme = "../README.md"
keywords = ["sort", "gtf", "gff", "gtfsort"]
categories = ["command-line-utilities", "science"]
default-run = "gtfsort"

[dependencies]
clap = { version = "4.0", features = ["derive"] }
colored = { version = "3" }
natord = "1.0.9"
indoc = "2.0.4"
log = "0.4.14"
simple_logger = "5.0.0"
thiserror = "2.0"
rayon = "1.8.0"
num_cpus = "1.16.0"
libc = "0.2.151"
hashbrown = { version = "0.16", features = ["rayon"] }
dashmap = "6"
time = "0.3.36"
libR-sys = { version = "0.7.0", optional = true }
reqwest = { version = "0.13.2", features = ["blocking"], optional = true }
crc = { version = "3.2.1", optional = true }
flate2 = "1.0.30"
serde = { version = "1.0.204", features = ["derive"], optional = true }
serde_json = { version = "1.0.122", optional = true }

[target.'cfg(windows)'.dependencies]
windows = { version = "0.58.0", features = [
    "Win32",
    "Win32_System",
    "Win32_System_Threading",
    "Win32_System_ProcessStatus",
    "Win32_System_Memory",
    "Win32_Security",
] }

[features]
default = ["mmap", "c_ffi"]
testing = ["dep:reqwest", "dep:crc"]
benchmark = ["testing", "dep:serde", "dep:serde_json"]
mmap = []
c_ffi = []
all_ffi = ["c_ffi"]
serde = ["dep:serde"]
serde_json = ["dep:serde_json"]

[profile.release]
lto = true
opt-level = 3

[lib]
name = "gtfsort"
path = "src/lib.rs"
crate-type = ["cdylib", "rlib"]

[[bin]]
name = "gtfsort"
path = "src/main.rs"

[[bin]]
name = "gtfsort-benchmark"
path = "ci/benchmark.rs"
required-features = ["mmap", "benchmark"]

[[test]]
name = "integration_test"
path = "ci/integration_test.rs"
required-features = ["testing"]

[build-dependencies]
cbindgen = "0.26.0"
