# 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 believe there's an error in this file please file an
# issue against the rust-lang/cargo repository. If you're
# editing this file be aware that the upstream Cargo.toml
# will likely look very different (and much more reasonable)

[package]
name = "harfbuzz-sys"
version = "0.3.1"
authors = ["The Servo Project Developers"]
build = "build.rs"
links = "harfbuzz"
exclude = ["harfbuzz/test/*"]
description = "Rust bindings to the HarfBuzz text shaping engine"
documentation = "https://docs.rs/harfbuzz-sys/"
keywords = ["opentype", "font", "text", "layout", "unicode"]
categories = ["external-ffi-bindings", "internationalization"]
license = "MIT"
repository = "https://github.com/servo/rust-harfbuzz"
[build-dependencies.cmake]
version = "0.1"
optional = true

[build-dependencies.pkg-config]
version = "0.3"
optional = true

[features]
build-native-freetype = ["freetype/servo-freetype-sys"]
build-native-harfbuzz = ["cmake", "pkg-config"]
default = ["build-native-harfbuzz", "build-native-freetype"]
[target."cfg(any(target_os = \"android\", all(unix, not(target_os = \"macos\"))))".dependencies.freetype]
version = "0.4"
default-features = false
[target."cfg(target_os = \"macos\")".dependencies.core-graphics]
version = "0.17"

[target."cfg(target_os = \"macos\")".dependencies.core-text]
version = "13"

[target."cfg(target_os = \"macos\")".dependencies.foreign-types]
version = "0.3"
