forked from mapbox/mapbox-gl-native
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[build] Move the
next
buildsystem to the root
This will make the `next` buildsystem no longer the `next`, but the `actual`. The idea is to simplify the build, removing scripts, to make the platform buildsystem generated by CMake more compatible with IDEs and make development more streamlined. It will also make cross compilation easier.
- Loading branch information
Showing
33 changed files
with
2,653 additions
and
2,895 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,24 +1,42 @@ | ||
# Mapbox GL Native | ||
|
||
A library for embedding interactive, customizable vector maps into native applications on multiple platforms. It takes stylesheets that conform to the [Mapbox Style Specification](https://github.com/mapbox/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://github.com/mapbox/vector-tile-spec), and renders them using OpenGL. [Mapbox GL JS](https://github.com/mapbox/mapbox-gl-js) is the WebGL-based counterpart, designed for use on the Web. | ||
A library for embedding interactive, customizable vector maps into native applications on multiple platforms. It | ||
takes stylesheets that conform to the [Mapbox Style Specification](https://github.com/mapbox/mapbox-gl-style-spec/), | ||
applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://github.com/mapbox/vector-tile-spec), | ||
and renders them using OpenGL. [Mapbox GL JS](https://github.com/mapbox/mapbox-gl-js) is the WebGL-based counterpart, | ||
designed for use on the Web. | ||
|
||
| SDK | Languages | Build status | | ||
| --------------------------------------------------- | ---------------------------------- | ---------------------------------------- | | ||
| Mapbox GL Native Core | C++14 | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) [![Coverage Status](https://codecov.io/gh/mapbox/mapbox-gl-native/branch/master/graph/badge.svg)](https://codecov.io/gh/mapbox/mapbox-gl-native) | | ||
| [Mapbox Maps SDK for Android](../platform/android/) | Java | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) | | ||
| [Mapbox Maps SDK for iOS](../platform/ios/) | Objective-C or Swift | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) | | ||
| [Mapbox Maps SDK for macOS](../platform/macos/) | Objective-C, Swift, or AppleScript | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) | | ||
| [node-mapbox-gl-native](../platform/node/) | Node.js | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) | | ||
| [Mapbox Maps SDK for Qt](../platform/qt) | C++03 | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) [![AppVeyor CI build status](https://ci.appveyor.com/api/projects/status/3q12kbcooc6df8uc?svg=true)](https://ci.appveyor.com/project/Mapbox/mapbox-gl-native) | | ||
|
||
## The Mapbox GL ecosystem | ||
[Additional Mapbox GL Native–based libraries](https://wiki.openstreetmap.org/wiki/Mapbox_GL#Libraries) for **hybrid applications** are developed outside of this repository. If your platform or hybrid application framework isn’t listed there, consider embedding [Mapbox GL JS](https://github.com/mapbox/mapbox-gl-js) using the standard Web capabilities on your platform. | ||
|
||
This repository hosts the cross-platform Mapbox GL Native library, plus convenient SDKs for several platforms. The cross-platform library comes with a [GLFW](https://github.com/glfw/glfw)-based demo application for Ubuntu Linux and macOS. The SDKs target the usual languages on their respective platforms: | ||
## License | ||
|
||
| SDK | Languages | Build status | | ||
| --------------------------------------- | ---------------------------------- | ---------------------------------------- | | ||
| [Mapbox GL Native](INSTALL.md) | C++14 | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) [![Coverage Status](https://codecov.io/gh/mapbox/mapbox-gl-native/branch/master/graph/badge.svg)](https://codecov.io/gh/mapbox/mapbox-gl-native) | | ||
| [Mapbox Maps SDK for Android](https://github.com/mapbox/mapbox-gl-native-android) | Java | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native-android.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native-android/tree/master) | | ||
| [Mapbox Maps SDK for iOS](platform/ios/) | Objective-C or Swift | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) | | ||
| [Mapbox Maps SDK for macOS](platform/macos/) | Objective-C, Swift, or AppleScript | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) | | ||
| [node-mapbox-gl-native](platform/node/) | Node.js | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) | | ||
| [Mapbox Maps SDK for Qt](platform/qt) | C++03 | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) [![AppVeyor CI build status](https://ci.appveyor.com/api/projects/status/3q12kbcooc6df8uc?svg=true)](https://ci.appveyor.com/project/Mapbox/mapbox-gl-native) | | ||
Mapbox GL Native is licensed under the [3-Clause BSD license](../LICENSE.md). | ||
|
||
[Additional Mapbox GL Native–based libraries](https://wiki.openstreetmap.org/wiki/Mapbox_GL#Libraries) for **hybrid applications** are developed outside of this repository. If your platform or hybrid application framework isn’t listed there, consider embedding [Mapbox GL JS](https://github.com/mapbox/mapbox-gl-js) using the standard Web capabilities on your platform. | ||
## Developing | ||
|
||
## License | ||
The `next` directory contains the next generation buildsystem for Mapbox GL Native, based solely on CMake with the | ||
goal of minimizing the use of scripts, increase portability and support building Mapbox GL Native as a subdirectory | ||
of another CMake project. This new buildsystem is also designed to build offline, making use of pre-installed and | ||
vendorized dependencies. When using the build bot docker image, the build should produce the exact same results as | ||
the bots, making it a hermetically sealed build for Linux, Qt and Android. | ||
|
||
### Building and running tests | ||
|
||
Mapbox GL Native is licensed under the [2-Clause BSD license](LICENSE.md). The licenses of its dependencies are tracked via [FOSSA](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmapbox%2Fmapbox-gl-native): | ||
The following command, executed from the root of this repository tree, will build Mapbox GL Native targeting your | ||
host architecture given that you have all the dependencies installed. | ||
|
||
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmapbox%2Fmapbox-gl-native.svg?type=large)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmapbox%2Fmapbox-gl-native) | ||
``` | ||
$ mkdir build && cd build | ||
$ cmake .. | ||
$ make -j8 | ||
$ make test ARGS=-V | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
add_library( | ||
mbgl-benchmark STATIC EXCLUDE_FROM_ALL | ||
${PROJECT_SOURCE_DIR}/benchmark/api/query.benchmark.cpp | ||
${PROJECT_SOURCE_DIR}/benchmark/api/render.benchmark.cpp | ||
${PROJECT_SOURCE_DIR}/benchmark/function/camera_function.benchmark.cpp | ||
${PROJECT_SOURCE_DIR}/benchmark/function/composite_function.benchmark.cpp | ||
${PROJECT_SOURCE_DIR}/benchmark/function/source_function.benchmark.cpp | ||
${PROJECT_SOURCE_DIR}/benchmark/parse/filter.benchmark.cpp | ||
${PROJECT_SOURCE_DIR}/benchmark/parse/tile_mask.benchmark.cpp | ||
${PROJECT_SOURCE_DIR}/benchmark/parse/vector_tile.benchmark.cpp | ||
${PROJECT_SOURCE_DIR}/benchmark/src/mbgl/benchmark/benchmark.cpp | ||
${PROJECT_SOURCE_DIR}/benchmark/storage/offline_database.benchmark.cpp | ||
${PROJECT_SOURCE_DIR}/benchmark/util/dtoa.benchmark.cpp | ||
${PROJECT_SOURCE_DIR}/benchmark/util/tilecover.benchmark.cpp | ||
) | ||
|
||
target_include_directories( | ||
mbgl-benchmark | ||
PRIVATE ${PROJECT_SOURCE_DIR}/benchmark/src ${PROJECT_SOURCE_DIR}/platform/default/include ${PROJECT_SOURCE_DIR}/src | ||
) | ||
|
||
target_include_directories( | ||
mbgl-benchmark | ||
PUBLIC ${PROJECT_SOURCE_DIR}/benchmark/include ${PROJECT_SOURCE_DIR}/include | ||
) | ||
|
||
include(${PROJECT_SOURCE_DIR}/vendor/benchmark.cmake) | ||
|
||
# Needed for testing private classes | ||
get_target_property(MBGL_CORE_PRIVATE_LIBRARIES mbgl-core LINK_LIBRARIES) | ||
|
||
target_link_libraries( | ||
mbgl-benchmark | ||
PRIVATE ${MBGL_CORE_PRIVATE_LIBRARIES} mbgl-vendor-benchmark mbgl-compiler-options | ||
PUBLIC mbgl-core | ||
) | ||
|
||
set_property(TARGET mbgl-benchmark PROPERTY FOLDER Core) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
add_executable( | ||
mbgl-expression-test | ||
${PROJECT_SOURCE_DIR}/expression-test/expression_test_logger.cpp | ||
${PROJECT_SOURCE_DIR}/expression-test/expression_test_logger.hpp | ||
${PROJECT_SOURCE_DIR}/expression-test/expression_test_parser.cpp | ||
${PROJECT_SOURCE_DIR}/expression-test/expression_test_parser.hpp | ||
${PROJECT_SOURCE_DIR}/expression-test/expression_test_runner.cpp | ||
${PROJECT_SOURCE_DIR}/expression-test/expression_test_runner.hpp | ||
${PROJECT_SOURCE_DIR}/expression-test/test_runner_common.cpp | ||
${PROJECT_SOURCE_DIR}/expression-test/test_runner_common.hpp | ||
${PROJECT_SOURCE_DIR}/expression-test/main.cpp | ||
) | ||
|
||
target_compile_definitions( | ||
mbgl-expression-test | ||
PRIVATE TEST_RUNNER_ROOT_PATH="${PROJECT_SOURCE_DIR}" | ||
) | ||
|
||
# FIXME: Should not use core private interface | ||
target_include_directories( | ||
mbgl-expression-test | ||
PRIVATE ${PROJECT_SOURCE_DIR}/src | ||
) | ||
|
||
target_link_libraries( | ||
mbgl-expression-test | ||
PRIVATE | ||
Mapbox::Base::Extras::args | ||
Mapbox::Base::Extras::filesystem | ||
Mapbox::Base::io | ||
mbgl-core | ||
) | ||
|
||
set_property(TARGET mbgl-expression-test PROPERTY FOLDER Executables) | ||
|
||
string(RANDOM LENGTH 5 ALPHABET 0123456789 MBGL_EXPRESSION_TEST_SEED) | ||
|
||
add_test(NAME mbgl-expression-test COMMAND mbgl-expression-test -s --seed=${MBGL_EXPRESSION_TEST_SEED} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) |
Oops, something went wrong.