[workspace] members = [".", "spcasm_derive", "spcasm-web", "sals", "sapemu", "spcfile"] [package] version.workspace = true edition.workspace = true rust-version.workspace = true authors.workspace = true license-file.workspace = true homepage.workspace = true repository.workspace = true name = "spcasm" description = "A modern, user-friendly SPC700 assembler." keywords = ["spc-700", "s-smp", "snes"] categories = [ "compilers", "command-line-utilities", "development-tools", "multimedia::audio", ] exclude = ["tests", "doc", ".github", ".vscode", "include"] build = "build.rs" default-run = "spcasm" [workspace.package] version = "1.2.0" edition = "2021" rust-version = "1.80" authors = ["kleines Filmröllchen "] license-file = "LICENSE" homepage = "https://spcasm.filmroellchen.eu/" repository = "https://github.com/kleinesfilmroellchen/spcasm" [lib] name = "spcasm" path = "src/lib.rs" required-features = [] [[bin]] name = "spcasm" # shut up cargo path = "src/../src/lib.rs" required-features = ["binaries"] test = false bench = false [[bin]] name = "brr" path = "src/brr/cli.rs" required-features = ["binaries"] test = false bench = false [features] default = ["binaries"] binaries = ["dep:clap", "dep:object", "dep:shadow-rs"] [dependencies] object = { version = "0.36", features = [ "write_core", "write_std", "elf", ], optional = true, default-features = false } parking_lot = "0.12" thiserror = "1" lalrpop-util = "0.22" num-traits = "0.2" num-derive = "0.4" arrcat = "0.1" proc-macro2 = "^1.0.86" human-panic = { version = "2", optional = true } flexstr = { version = "0.9.2", features = ["int_convert", "serde"] } hound = "3.5.1" [dependencies.miette] # TODO: figure out how to use fancy-no-backtrace without breaking the wasm build features = ["fancy-no-syscall"] version = "7" # Only compile clap for the CLIs. [dependencies.clap] version = "4" optional = true features = ["derive", "wrap_help", "string"] [dependencies.spcasm_derive] path = "spcasm_derive" version = "1.2.0" [dependencies.shadow-rs] version = "0.35" optional = true default-features = false features = ["metadata"] [dev-dependencies] trycmd = { version = "0.15", default-features = false, features = [ "filesystem", ] } reqwest = { version = "0.12", features = ["blocking"] } [build-dependencies] lalrpop = { version = "0.22", default-features = false } [build-dependencies.shadow-rs] version = "0.35" optional = true default-features = false [profile.release] opt-level = "s" lto = true debug-assertions = false debug = false [profile.bench] opt-level = 3 debug = 2 lto = "thin" debug-assertions = true incremental = true # This is the actual release profile; wasm-pack can't use custom profiles so we reserve "release" for it. [profile.spcasm-fastrelease] inherits = "release" lto = "thin" opt-level = 3 incremental = true [profile.spcasm-release] inherits = "spcasm-fastrelease" lto = "fat" incremental = false # Cross configuration [package.metadata.cross.target.x86_64-unknown-linux-gnu] pre-build = [ "apt-get update && apt-get install -y openssl clang", ] # openssl seems to be outdated otherwise [workspace.lints.rust] missing_docs = { level = "deny", priority = -10 } unused = { level = "deny", priority = -10 } non_upper_case_globals = "allow" incomplete_features = "allow" [workspace.lints.clippy] all = "deny" pedantic = "deny" nursery = "deny" [workspace.lints.rustdoc] all = "deny" [lints] workspace = true