content: [workspace]
  resolver = "2"
  
  # Note: Any additions here should be repeated in default-members below.
  members = [
      "components/ads-client",
      "components/as-ohttp-client",
      "components/autofill",
      "components/context_id",
      "components/crashtest",
      "components/example",
      #"components/example/cli",
      "components/filter_adult",
      "components/fxa-client",
      "components/init_rust_components",
      "components/logins",
      "components/merino",
      "components/nimbus",
      "components/places",
      "components/push",
      "components/relay",
      "components/relevancy",
      "components/remote_settings",
      "components/search",
      "components/suggest",
      "components/suggest/suggest-bench",
      "components/support/error",
      "components/support/error/tests",
      "components/support/find-places-db",
      "components/support/firefox-versioning",
      "components/support/guid",
      "components/support/interrupt",
      "components/support/jwcrypto",
      "components/support/nimbus-cli",
      "components/support/nimbus-fml",
      "components/support/payload",
      "components/support/rand_rccrypto",
      "components/support/rate-limiter",
      "components/support/restmail-client",
      "components/support/rc_crypto",
      "components/support/rc_crypto/nss",
      "components/support/rc_crypto/nss/nss_build_common",
      "components/support/rc_crypto/nss/nss_sys",
      "components/support/rust-log-forwarder",
      "components/support/sql",
      "components/support/text-table",
      "components/support/tracing",
      "components/support/types",
      "components/support/viaduct-dev",
      "components/support/viaduct-hyper",
      "components/support/viaduct-reqwest",
      "components/sync_manager",
      "components/sync15",
      "components/tabs",
      "components/viaduct",
      "components/webext-storage",
      "components/webext-storage/ffi",
      "megazords/cirrus",
      "megazords/nimbus-experimenter",
      "megazords/full",
      "megazords/ios-rust",
      "megazords/ios-rust/focus",
      "tools/embedded-uniffi-bindgen",
      "tools/start-bindings",
      "tools/uniffi-bindgen-library-mode",
      "automation/swift-components-docs",
  
      "examples/*/",
      "testing/separated/*/",
      "testing/sync-test",
  ]
  
  exclude = [
      # Don't include git submodules in our workspace, since those packages haven't
      # been written with that in mind. They might work, but they might not.
      "components/external/glean/",
      # Excluding this due to intermittent failures; see SDK-233 and #3909 for details.
      # (including it here means you can still explicitly run it from the test directory)
      "testing/sync-test",
  ]
  
  # The `default-members` are the things that are built/tested when you run `cargo
  # build`, `cargo test` (or most of the cargo commands not provided by a
  # third-party `cargo-foo` binary) from a workspace root *without* doing one of:
  #
  # - Specifying a specific package (e.g. via `-p <package>`, `--manifest-dir
  #   <path>` ...)
  #
  # - Passing `--workspace` or `--all`.
  #
  # - Running the command from within that package (e.g. running `cargo build`
  #   inside `megazords/full` will build the full megazord, default or not).
  #
  # We use this to exclude a couple that have a disproportional compile time
  # impact to how likely they are to get broken by average changes:
  #
  # - The megazords just re-export ffi crates, which we aren't excluding, and get
  #   built freqently enough as part of gradle/xcode's build process.
  #
  # To be clear: passing the `--all` or `--workspace` arg to cargo will make it
  # use the full member set.
  default-members = [
      "components/ads-client",
      "components/as-ohttp-client",
      "components/autofill",
      "components/context_id",
      "components/crashtest",
      "components/fxa-client",
      "components/init_rust_components",
      "components/logins",
      "components/nimbus",
      "components/places",
      "components/push",
      "components/relay",
      "components/remote_settings",
      "components/search",
      "components/relevancy",
      "components/suggest",
      "components/support/error",
      "components/support/error/macros",
      "components/support/error/tests",
      "components/support/guid",
      "components/support/interrupt",
      "components/support/nimbus-cli",
      "components/support/nimbus-fml",
      "components/support/restmail-client",
      "components/support/rc_crypto",
      "components/support/rc_crypto/nss",
      "components/support/rc_crypto/nss/nss_build_common",
      "components/support/rc_crypto/nss/nss_sys",
      "components/support/sql",
      "components/support/types",
      "components/support/viaduct-reqwest",
      "components/sync_manager",
      "components/sync15",
      "components/tabs",
      "components/viaduct",
      "components/webext-storage",
      # Disabled for intermittent failures; see SDK-233 and #3909 for details.
      #    "testing/sync-test",
      "tools/embedded-uniffi-bindgen",
      "tools/uniffi-bindgen-library-mode",
      "examples/*/",
      "testing/separated/*/",
  ]
  
  # * sob* - why can't we have nice things? Workspace properties don't work in m-c when our crates are
  # "excluded" from the m-c workspace for unfortunate reasons.
  # [workspace.dependencies]
  
  [profile.release]
  opt-level = "s"
  debug = true
  lto = "thin"
  
  # We import some git submodules which in turn may depend on appservices crates.
  # We always want to use the local version of our own crates in that case.
  [patch."https://github.com/mozilla/application-services"]
  viaduct = { path = "components/viaduct" }
  