defmodule Firebird.MixProject do use Mix.Project def project do [ app: :firebird, version: "0.2.0", elixir: "~> 1.14", start_permanent: Mix.env() == :prod, deps: deps(), name: "Firebird", description: "Run WebAssembly from Elixir. Load WASM modules in Rust, Go, C — call them like native functions.", source_url: "https://github.com/hdresearch/firebird", homepage_url: "https://github.com/hdresearch/firebird", package: package(), docs: docs(), test_coverage: [tool: ExCoveralls], preferred_cli_env: [ coveralls: :test, "coveralls.detail": :test, "coveralls.html": :test ] ] end def application do [ extra_applications: [:logger] ] end defp package do [ licenses: ["MIT"], links: %{ "GitHub" => "https://github.com/hdresearch/firebird", "Docs" => "https://hexdocs.pm/firebird" }, files: ~w(lib priv/wasm fixtures/math.wasm fixtures/wat_math.wasm mix.exs README.md CHEATSHEET.md LICENSE) ] end defp docs do [ main: "readme", extras: [ "README.md", "CHEATSHEET.md", "CONTRIBUTING.md", "docs/GETTING_STARTED.md", "docs/DECISION_GUIDE.md", "docs/PERFORMANCE_GUIDE.md", "docs/API.md", "docs/ARCHITECTURE.md", "docs/COOKBOOK.md", "docs/TROUBLESHOOTING.md", "docs/ELIXIR_TO_WASM.md", "docs/PHOENIX_TO_WASM.md", "docs/TESTING_GUIDE.md", "docs/FAQ.md", "docs/WASM_TARGET.md", "docs/WASM_TARGET_API.md" ], groups_for_extras: [ Guides: [ "docs/GETTING_STARTED.md", "docs/DECISION_GUIDE.md", "docs/PERFORMANCE_GUIDE.md", "docs/TESTING_GUIDE.md", "docs/COOKBOOK.md", "docs/FAQ.md", "docs/TROUBLESHOOTING.md" ], Reference: [ "docs/API.md", "docs/ARCHITECTURE.md", "docs/WASM_TARGET_API.md", "CHEATSHEET.md" ], Advanced: [ "docs/ELIXIR_TO_WASM.md", "docs/PHOENIX_TO_WASM.md", "docs/WASM_TARGET.md", "CONTRIBUTING.md" ] ], groups_for_modules: [ Core: [ Firebird, Firebird.Runtime, Firebird.Module, Firebird.Pool, Firebird.Lazy, Firebird.Memory ], "Streaming & Pipelines": [ Firebird.Stream, Firebird.Pipeline, Firebird.Builder, Firebird.Batch ], "Developer Tools": [ Firebird.Inspector, Firebird.TestCase, Firebird.TestHelpers, Firebird.TypedCall, Firebird.Sigils, Firebird.Quick, Firebird.Unwrap ], Production: [ Firebird.Cache, Firebird.ModuleCache, Firebird.Preloader, Firebird.HotReload, Firebird.Metrics, Firebird.Benchmark, Firebird.Profiler, Firebird.Sandbox ], "WASM Target (Elixir → WASM)": ~r/Firebird\.Target/, Errors: [Firebird.WasmError, Firebird.Errors], Phoenix: ~r/Firebird\.Phoenix/, Compiler: ~r/Firebird\.Compiler/, "Mix Tasks": ~r/Mix\.Tasks/ ] ] end defp deps do [ # WASM runtime {:wasmex, "~> 0.9"}, {:jason, "~> 1.4"}, {:excoveralls, "~> 0.18", only: :test}, {:benchee, "~> 1.3", only: :dev}, {:ex_doc, "~> 0.31", only: :dev, runtime: false} ] end end