mirror of
https://github.com/felt/tippecanoe.git
synced 2026-10-03 00:45:41 +02:00
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:
+26
-6
@@ -1,11 +1,5 @@
|
||||
#include "mlt.hpp"
|
||||
|
||||
#include <mlt/decoder.hpp>
|
||||
#include <mlt/geometry.hpp>
|
||||
#include <mlt/layer.hpp>
|
||||
#include <mlt/properties.hpp>
|
||||
#include <mlt/tile.hpp>
|
||||
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include <cstdint>
|
||||
@@ -18,6 +12,14 @@
|
||||
#include <variant>
|
||||
#include <vector>
|
||||
|
||||
#ifndef NO_MLT
|
||||
#include <mlt/decoder.hpp>
|
||||
#include <mlt/geometry.hpp>
|
||||
#include <mlt/layer.hpp>
|
||||
#include <mlt/properties.hpp>
|
||||
#include <mlt/tile.hpp>
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
|
||||
bool read_varint(const char *&p, const char *end, unsigned long long &out) {
|
||||
@@ -39,6 +41,8 @@ bool read_varint(const char *&p, const char *end, unsigned long long &out) {
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifndef NO_MLT
|
||||
|
||||
long long round_coord(float v) {
|
||||
return (long long) std::llround(v);
|
||||
}
|
||||
@@ -237,6 +241,8 @@ void convert_layer(const mlt::Layer &in, mvt_layer &out, const std::shared_ptr<s
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
} // namespace
|
||||
|
||||
bool is_mlt(const std::string &message) {
|
||||
@@ -267,6 +273,18 @@ bool is_mlt(const std::string &message) {
|
||||
return layer_tag == 1;
|
||||
}
|
||||
|
||||
#ifdef NO_MLT
|
||||
|
||||
bool decode_mlt(const std::string &message, mvt_tile &out) {
|
||||
(void) message;
|
||||
(void) out;
|
||||
|
||||
fprintf(stderr, "This build was compiled without MapLibre Tile support\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
bool decode_mlt(const std::string &message, mvt_tile &out) {
|
||||
try {
|
||||
mlt::Decoder decoder(true);
|
||||
@@ -289,3 +307,5 @@ bool decode_mlt(const std::string &message, mvt_tile &out) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user