# wm-dyn — Android super-app: the same desk as wm-all (iOS skin), but apps # are not linked in. Opening a tile runs `cargo rustc --crate-type dylib` # against the packaged checkout and `dlopen`s the result into ModuleHost. # # The whole graph is built with `RUSTFLAGS="-C prefer-dynamic"` so that the # engine (`engine/`, one Rust dylib) is shared by the host and every app # dylib. Desktop check: `MAKEPAD_WM_ROOT= RUSTFLAGS="-C # prefer-dynamic" cargo run -p makepad-wm-dyn --release`. # # Android: the whole pack (stage the tree, cross-build, prove every tile, # pack the APK with the phone toolchain, rehearse from the packed APK) is # cargo makepad android --abi=aarch64 --package-name=nl.makepad.wmdyn # --app-label=wmdyn dyn-pack --dyn-toolchain= # -p makepad-wm-dyn --release --no-default-features # (tools/cargo_makepad/src/android/dyn_pack). The packaged workspace unifies # features across all of its members, so an app built on the phone resolves # the same engine units (apps/wm/src/dylib_host.rs); `--no-default-features` # there and here keeps every app's `standalone` graph out of that union. # The `[lib]` is the Android cdylib (cargo_makepad wraps bin-only packages # in a generated workspace under target/, which breaks the relocatable # fingerprints the on-device cargo needs). [package] name = "makepad-wm-dyn" version = "0.1.0" edition = "2021" default-run = "wm-dyn" # What `cargo makepad android dyn-pack` stages, proves and packs: the engine # dylib every tile binds, and the tile packages the phone may compile. [package.metadata.makepad.dyn] engine = "makepad-wm-engine" apps = [ "makepad-calculator", "makepad-calendar", "makepad-clock", "makepad-files", "makepad-finance", "makepad-mail", "makepad-notes", "makepad-photos", "makepad-reminders", "makepad-app-route", "makepad-sheets", "makepad-weather", ] [lib] name = "makepad_wm_dyn" path = "src/lib.rs" [[bin]] name = "wm-dyn" path = "src/main.rs" [features] default = ["tweaker"] # The design overlay (Shift+F10 with the dev overlays on). On for development # builds; the Builder's releases build without it (--no-default-features). tweaker = ["makepad-widgets/tweaker"] [dependencies] # Without the window manager's defaults: the design overlay is this app's # own `tweaker` feature. makepad-wm = { path = "../wm", default-features = false } makepad-widgets = { path = "../../widgets", default-features = false } makepad-wm-engine = { path = "engine" }