# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# 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.

[package]
name = "teaclave_function"
version = "0.6.0"
authors = ["Teaclave Contributors <dev@teaclave.apache.org>"]
description = "Teaclave built-in functions."
license = "Apache-2.0"
edition = "2021"

[lib]
name = "teaclave_function"
crate-type = ["staticlib", "rlib"]

[features]
default = []
app = [
  "teaclave_types/app",
  "teaclave_crypto/app",
  "teaclave_runtime/app",
  "teaclave_executor_context/app",
]
mesalock_sgx = [
  "teaclave_types/mesalock_sgx",
  "teaclave_crypto/mesalock_sgx",
  "teaclave_runtime/mesalock_sgx",
  "teaclave_executor_context/mesalock_sgx",
]
cov = ["sgx_cov"]
enclave_unit_test = [
  "teaclave_test_utils/mesalock_sgx",
  "teaclave_runtime/mesalock_sgx"
]

[dependencies]
log           = { version = "0.4.17", features = ["release_max_level_info"] }
anyhow        = { version = "1.0.26" }
csv           = { version = "1" }
serde_json    = { version = "1.0.39" }
serde         = { version = "1.0.92", features = ["derive"] }
thiserror     = { version = "1.0.9" }
gbdt          = { version = "0.1.0", features = ["input", "enable_training"] }
rusty-machine = { version = "0.5.4" }
itertools     = { version = "0.8.0", default-features = false }
ring          = { version = "0.16.5" }
base64        = { version = "0.13.0" }
hex           = { version = "0.4.0"  }
image         = { version = "0.23.14", default-features = false, features = ["jpeg"] }
rustface      = { version = "0.1.7", default-features = false, features = [ "include_default_model" ] }

teaclave_types = { path = "../types" }
teaclave_crypto = { path = "../crypto" }
teaclave_runtime = { path = "../runtime", optional = true }
teaclave_test_utils = { path = "../tests/utils", optional = true }
teaclave_executor_context = { path = "../executor/context" }

sgx_cov       = { version = "2.0.0", optional = true }

[target.'cfg(not(target_vendor = "teaclave"))'.dependencies]
sgx_types     = { version = "2.0.0" }
