# 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_binder"
version = "0.6.0"
authors = ["Teaclave Contributors <dev@teaclave.apache.org>"]
description = "Abstract communication interfaces between TEE untrusted/trusted worlds."
license = "Apache-2.0"
edition = "2021"

[features]
default = []
app = ["sgx_urts/capi"]
mesalock_sgx = [
    "teaclave_binder_attribute",
    "teaclave_types/mesalock_sgx",
    "teaclave_config/mesalock_sgx",
]
enclave_unit_test = []
app_unit_test = []

[dependencies]
cfg-if     = { version = "0.1.9" }
anyhow       = { version = "1.0.26" }
log          = { version = "0.4.17", features = ["release_max_level_info"] }
serde        = { version = "1.0.92", features = ["derive"] }
serde_json   = { version = "1.0.39" }
thiserror    = { version = "1.0.9" }
url          = { version = "2.1.1" }

teaclave_types = { path = "../types" }
teaclave_config = { path = "../config" }
teaclave_binder_attribute = { path = "./attribute", optional = true }

sgx_types = { version = "2.0.0" }
sgx_urts  = { version = "2.0.0", optional = true }
