# `MobDev.Exqlite`
[🔗](https://github.com/genericjam/mob_dev/blob/master/lib/mob_dev/exqlite.ex#L1)

The compile-time defines mob builds exqlite's SQLite amalgamation with.

On the host, exqlite compiles `sqlite3.c` with its own Makefile, which
enables FTS3/4/5, R*Tree, Geopoly, math functions and more. On a phone,
mob compiles the same amalgamation itself (the iOS simulator `.so`, the
iOS device `.a`, `mix mob.release --ios`), and the generated Android
`build.zig` / `CMakeLists.txt` do the same. Every one of those builds uses
this set, so the device SQLite has the features host tests rely on: an
FTS5 table that works under `mix test` also works on the phone (MOB-487).

The list is exqlite's Makefile `CFLAGS += -D…` lines, verbatim and in
order, including the unprefixed ones (`ENABLE_STAT4`, …) that SQLite
ignores; `MobDev.ExqliteTest` pins it against the locked exqlite's
Makefile. mob_new's Android templates carry the same lines (it is a
self-contained archive and can't call this module); the same test keeps
them in sync.

# `cflags`

```elixir
@spec cflags() :: [String.t()]
```

The defines as compiler flags (`-DNAME=VALUE`).

# `defines`

```elixir
@spec defines() :: [String.t()]
```

The defines, as `NAME=VALUE` strings.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
