content: [package]
  name = "Occlum"
  version = "0.31.0"
  edition = "2021"
  
  [lib]
  name = "occlum_libos_core_rs"
  crate-type = ["staticlib"]
  
  [dependencies]
  atomic = "0.5"
  bitflags = "1.0"
  bitvec = { version = "1", default-features = false, features = ["alloc"]  }
  log = "0.4"
  aligned = "0.4.1"
  lazy_static = { version = "1.1.0", features = ["spin_no_std"] } # Implies nightly
  derive_builder = "0.9"
  ringbuf = { path = "../../deps/ringbuf" }
  rcore-fs = { path = "../../deps/sefs/rcore-fs" }
  rcore-fs-sefs = { path = "../../deps/sefs/rcore-fs-sefs" }
  rcore-fs-ramfs = { path = "../../deps/sefs/rcore-fs-ramfs" }
  rcore-fs-mountfs = { path = "../../deps/sefs/rcore-fs-mountfs" }
  rcore-fs-unionfs = { path = "../../deps/sefs/rcore-fs-unionfs" }
  rcore-fs-devfs = { path = "../../deps/sefs/rcore-fs-devfs" }
  resolv-conf = { path = "../../deps/resolv-conf" }
  serde = { path = "../../deps/serde-sgx/serde", features = ["derive"] }
  serde_json = { path = "../../deps/serde-json-sgx" }
  errno = { path = "crates/errno", features = ["occlum"] }
  vdso-time = { path = "crates/vdso-time", default-features = false, features = ["sgx"] }
  memoffset = "0.6.1"
  scroll = { version = "0.11.0", default-features = false }
  itertools = { version = "0.10.0", default-features = false, features = ["use_alloc"]  }
  ctor = "0.1"
  regex = { git = "https://github.com/mesalock-linux/regex-sgx", default-features = false, features = ["std", "unicode", "mesalock_sgx"] }
  goblin = { version = "0.5.4", default-features = false, features = ["elf64", "elf32", "endian_fd"] }
  intrusive-collections = "0.9"
  modular-bitfield = "0.11.2"
  sworndisk-v2 = { path = "../../deps/mlsdisk/core", default-features = false, features = ["occlum"] }
  ext2-rs = { path = "../../deps/ext2-rs", default-features = false, features = ["sgx"] }
  
  sgx-untrusted-alloc = { path = "./crates/sgx-untrusted-alloc", features = ["sgx"]}
  io-uring-callback = { path = "./crates/io-uring-callback", features = ["sgx"]}
  num_enum = { version = "0.5", default-features = false }
  keyable-arc = { path = "./crates/keyable-arc" }
  downcast-rs = { version = "1.2.0", default-features = false }
  spin = "0.7"
  byteorder = { version = "1.3.2", default-features = false }
  
  [patch.'https://github.com/apache/teaclave-sgx-sdk.git']
  sgx_tstd = { path = "../../deps/rust-sgx-sdk/sgx_tstd" }
  
  [features]
  default = ["integrity_only_opt", "sgx_file_cache", "sgx1_exception_sim", "kernel_heap_monitor"]
  syscall_timing = []     # Timing for each syscall. But it has cost from more ocall.
  integrity_only_opt = [] # Clear bss only. It should be disabled if checking memory reads.
  sgx_file_cache = []     # Cache SgxFile objects. Invalidation is unimplemented.
  sgx1_exception_sim = [] # Simulate #PF and #GP exceptions on SGX 1
  dcap = []               # DCAP support. The compilation relies on DCAP package.
  cov = ["sgx_cov"]       # Enable coverage colletcion.
  hyper_mode = []         # For running in hyper mode.
  pku = []                # PKU Support
  kernel_heap_monitor = []# Kernel heap usage tracking. With overhead.
  
  [target.'cfg(not(target_env = "sgx"))'.dependencies]
  sgx_types = { path = "../../deps/rust-sgx-sdk/sgx_types" }
  sgx_tstd = { path = "../../deps/rust-sgx-sdk/sgx_tstd", features = ["backtrace", "thread"] }
  sgx_trts = { path = "../../deps/rust-sgx-sdk/sgx_trts" }
  sgx_tse = { path = "../../deps/rust-sgx-sdk/sgx_tse" }
  sgx_tcrypto = { path = "../../deps/rust-sgx-sdk/sgx_tcrypto" }
  sgx_cov = { path = "../../deps/rust-sgx-sdk/sgx_cov", optional = true }
  