Prebuilt binaries for libbenchmark might be incompatible with some
environments, for example, when mbgl-benchmark target is compiled
on host with GCC and linked against mason's clang 5.0 compiled binaries.
Vendored libbenchmark avoids aforementioned issue, as the target and
the binary compiled with same compiler / options.
Vendorize the submodules and a simple CMake build
system for all them. The dependencies will inherit
compilation options for core.
The goal is to make Mapbox GL Core completely self
contained with a simple offline build.
- Port of arabic.test.js from mapbox-gl-rtl-text
- Modify BiDi::getLine to remove trailing nulls in the event UBIDI_REMOVE_BIDI_CONTROLS causes the string to shorten.
- Patch vendored ICU to avoid undefined undefined bit shifting behavior (triggered sanitizer failure)
Since commit bded6c65d5 ([build] use plain text files for file lists
to simplify integration with other build systems) adding new source
files would not cause cmake to be re-ran since it doesn't automatically
track the plain text files. Fix that by explicitly adding those files to
CMAKE_CONFIGURE_DEPENDS.
Add a parameter to Program::draw to control whether face culling should
be enabled. This will be used in a follow up commit to enable face
culling for fill extrusion layers.
The sqlite3 source code has a lot of implicit fallthroughs in case
statements. They are documented with comments but even though gcc
provides options to use these comments to suppress the warnings, that's
not always reliable. For instance, it may fail if an #ifdef follows the
comment or if the comment is within a block scope used for a case.
With gcc version '(Ubuntu 7.3.0-16ubuntu3) 7.3.0' I get warnings similar
to the below:
../../../vendor/sqlite/src/sqlite3.c: In function ‘sqlite3_db_status’:
../../../vendor/sqlite/src/sqlite3.c:20251:10: error: this statement may fall through [-Werror=implicit-fallthrough=]
op = SQLITE_DBSTATUS_CACHE_WRITE+1;
So disable the implicit falltrhough warnings for that library. Note that
-Wno-error=implicit-fallthrough is not used to keep the build silent
since this is vendor library.
- added missing linker flags for Sanitize configuration type
- changed mason's download to use cmake's built-in support instead of directly calling curl