[workspace]
resolver = "2"
members = [
    "ostd",
    "ostd/libs/align_ext",
    "ostd/libs/ostd-macros",
    "ostd/libs/id-alloc",
    "ostd/libs/linux-bzimage/builder",
    "ostd/libs/linux-bzimage/boot-params",
    "ostd/libs/linux-bzimage/setup",
    "ostd/libs/ktest",
    "kernel",
    "kernel/aster-nix",
    "kernel/comps/block",
    "kernel/comps/console",
    "kernel/comps/framebuffer",
    "kernel/comps/input",
    "kernel/comps/network",
    "kernel/comps/time",
    "kernel/comps/virtio",
    "kernel/libs/cpio-decoder",
    "kernel/libs/int-to-c-enum",
    "kernel/libs/int-to-c-enum/derive",
    "kernel/libs/aster-rights",
    "kernel/libs/aster-rights-proc",
    "kernel/libs/aster-util",
    "kernel/libs/keyable-arc",
    "kernel/libs/typeflags",
    "kernel/libs/typeflags-util",
]
exclude = [
    "kernel/libs/comp-sys/cargo-component",
    "kernel/libs/comp-sys/component",
    "kernel/libs/comp-sys/component-macro",
    "kernel/libs/comp-sys/controlled",
    "osdk",
    "target/osdk/base",
]

# Cargo only looks at the profile settings 
# in the Cargo.toml manifest at the root of the workspace

[profile.release]
lto = "thin"

# Release profile configuration with Link Time Optimization (LTO) enabled.
#
# This profile is optimized for maximum runtime performance, 
# (achieving a 2% reduction in latency for the getpid system call).
# However, enabling LTO significantly increases compilation times,
# approximately doubling them compared to when LTO is not enabled.
[profile.release-lto]
inherits = "release"
lto = true
# lto can only be enabled when panic strategy is abort
panic = "abort"
# set codegen-units as the smallest number
codegen-units = 1
