Add a MLT=0 build for a tippecanoe without MapLibre Tile support

MapLibre Tile support pulls in the maplibre-tile-spec submodule and needs
cmake to build it, which is a lot to ask of anyone who only wants to work
with Mapbox Vector Tiles.

`make MLT=0` compiles with -DNO_MLT, skips the submodule and its cmake
build entirely, and drops the MLT tests from `make test`. The result needs
no dependencies beyond the ones MVT already needed, and can be built from
a checkout with no submodules at all.

Everything that touches the MLT library is behind the #ifdef, which is
just the two files that were written for it. The option parsing and the
tile format helpers stay compiled either way, so nothing else needs to
know: --output-format=mlt reports that the build has no MLT support rather
than being an unrecognized value, and a tile that is recognized as MLT
reports the same instead of being misparsed as a protobuf, since the
format sniffing itself doesn't need the library.

CI builds and tests this configuration from a checkout without submodules,
so it can't quietly stop working.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LxhELiLtpUFwrPSWwTYdHG
This commit is contained in:
Claude
2026-08-06 18:05:42 +00:00
parent 13f1c3b6e4
commit c70d98afe8
6 changed files with 94 additions and 19 deletions
+6
View File
@@ -50,6 +50,12 @@ $ make -j
$ make install
```
The submodule is the [MapLibre Tile](https://github.com/maplibre/maplibre-tile-spec)
implementation, which is built with `cmake`. If you don't need MapLibre Tile support,
build with `make MLT=0` instead, which needs neither the submodule nor `cmake`. Such a
build can't read or write MLT, and rejects `--output-format=mlt`, but is otherwise the same.
Run `make clean` first if you are switching an existing build directory between the two.
See [Development](#development) below for how to upgrade your
C++ compiler or install prerequisite packages if you get
compiler errors.