summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <tmpsantos@gmail.com>2020-02-07 16:38:14 +0200
committerThiago Marcos P. Santos <tmpsantos@gmail.com>2020-02-07 20:12:44 +0200
commitf7fef70e9ddb9f52b071703d3ff0683b921606ac (patch)
treebbb1c1bf6f9d9a871c8d45e69286f9a0c44224ca /platform
parent489adb8d8713928fbbd1f511640417b1dd2aaa8a (diff)
downloadqtlocation-mapboxgl-f7fef70e9ddb9f52b071703d3ff0683b921606ac.tar.gz
[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.
Diffstat (limited to 'platform')
-rw-r--r--platform/android/android.cmake483
-rw-r--r--platform/glfw/CMakeLists.txt44
-rw-r--r--platform/ios/ios.cmake193
-rw-r--r--platform/linux/linux.cmake134
-rw-r--r--platform/macos/macos.cmake213
-rw-r--r--platform/node/CMakeLists.txt52
-rw-r--r--platform/qt/qt.cmake214
7 files changed, 1333 insertions, 0 deletions
diff --git a/platform/android/android.cmake b/platform/android/android.cmake
new file mode 100644
index 0000000000..fafaefd264
--- /dev/null
+++ b/platform/android/android.cmake
@@ -0,0 +1,483 @@
+if(NOT ANDROID_NDK_TOOLCHAIN_INCLUDED)
+ message(FATAL_ERROR "-- Toolchain file not included, see https://developer.android.com/ndk/guides/cmake")
+endif()
+
+target_compile_definitions(
+ mbgl-core
+ PUBLIC MBGL_USE_GLES2
+)
+
+include(${PROJECT_SOURCE_DIR}/vendor/icu.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/sqlite.cmake)
+
+target_compile_options(mbgl-vendor-icu PRIVATE $<$<CONFIG:Release>:-Oz> $<$<CONFIG:Release>:-Qunused-arguments> $<$<CONFIG:Release>:-flto>)
+
+target_compile_options(
+ mbgl-vendor-sqlite
+ PRIVATE $<$<CONFIG:Release>:-Oz> $<$<CONFIG:Release>:-Qunused-arguments> $<$<CONFIG:Release>:-flto>
+)
+
+target_compile_options(
+ mbgl-compiler-options
+ INTERFACE $<$<CONFIG:Release>:-Oz> $<$<CONFIG:Release>:-Qunused-arguments> $<$<CONFIG:Release>:-flto>
+)
+
+target_link_libraries(
+ mbgl-compiler-options
+ INTERFACE
+ $<$<CONFIG:Release>:-O2>
+ $<$<CONFIG:Release>:-Wl,--icf=all>
+ $<$<CONFIG:Release>:-flto>
+ $<$<CONFIG:Release>:-fuse-ld=gold>
+)
+
+target_sources(
+ mbgl-core
+ PRIVATE
+ ${PROJECT_SOURCE_DIR}/platform/android/src/android_renderer_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/android_renderer_backend.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/android_renderer_frontend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/android_renderer_frontend.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/annotation/marker.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/annotation/marker.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/annotation/multi_point.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/annotation/polygon.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/annotation/polygon.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/annotation/polyline.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/annotation/polyline.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/asset_manager.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/asset_manager_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/asset_manager_file_source.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/async_task.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/attach_env.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/attach_env.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/bitmap.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/bitmap.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/bitmap_factory.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/bitmap_factory.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/connectivity_listener.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/connectivity_listener.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/conversion/collection.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/conversion/collection.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/conversion/color.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/conversion/color.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/conversion/constant.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/conversion/constant.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/conversion/conversion.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/feature.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/feature.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/feature_collection.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/feature_collection.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/geometry.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/geometry.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/geometry_collection.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/geometry_collection.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/line_string.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/line_string.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/multi_line_string.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/multi_line_string.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/multi_point.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/multi_point.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/multi_polygon.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/multi_polygon.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/point.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/point.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/polygon.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/polygon.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geojson/util.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geometry/lat_lng.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geometry/lat_lng.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geometry/lat_lng_bounds.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geometry/lat_lng_bounds.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geometry/lat_lng_quad.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geometry/lat_lng_quad.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geometry/projected_meters.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/geometry/projected_meters.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/gl_functions.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/graphics/pointf.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/graphics/pointf.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/graphics/rectf.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/graphics/rectf.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/gson/json_array.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/gson/json_array.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/gson/json_element.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/gson/json_element.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/gson/json_object.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/gson/json_object.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/gson/json_primitive.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/gson/json_primitive.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/image.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/java/util.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/java/util.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/java_types.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/java_types.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/jni.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/jni.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/jni_native.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/jni_native.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/mapbox.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/mapbox.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/map/camera_position.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/map/camera_position.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/map/image.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/map/image.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/map_renderer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/map_renderer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/map_renderer_runnable.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/map_renderer_runnable.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/native_map_view.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/native_map_view.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/offline/offline_manager.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/offline/offline_manager.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/offline/offline_region.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/offline/offline_region.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/offline/offline_region_definition.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/offline/offline_region_definition.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/offline/offline_region_error.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/offline/offline_region_error.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/offline/offline_region_status.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/offline/offline_region_status.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/run_loop.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/run_loop_impl.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/snapshotter/map_snapshot.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/snapshotter/map_snapshot.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/snapshotter/map_snapshotter.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/snapshotter/map_snapshotter.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/string_util.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/android_conversion.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/conversion/filter.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/conversion/filter.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/conversion/position.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/conversion/position.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/conversion/property_expression.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/conversion/property_value.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/conversion/transition_options.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/conversion/transition_options.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/conversion/url_or_tileset.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/conversion/url_or_tileset.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/formatted.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/formatted.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/formatted_section.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/formatted_section.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/background_layer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/background_layer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/circle_layer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/circle_layer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/custom_layer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/custom_layer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/fill_extrusion_layer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/fill_extrusion_layer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/fill_layer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/fill_layer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/heatmap_layer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/heatmap_layer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/hillshade_layer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/hillshade_layer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/layer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/layer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/layer_manager.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/layer_manager.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/line_layer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/line_layer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/raster_layer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/raster_layer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/symbol_layer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/layers/symbol_layer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/light.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/light.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/position.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/position.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/custom_geometry_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/custom_geometry_source.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/geojson_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/geojson_source.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/image_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/image_source.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/raster_dem_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/raster_dem_source.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/raster_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/raster_source.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/source.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/unknown_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/unknown_source.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/vector_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/sources/vector_source.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/transition_options.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/transition_options.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/value.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/style/value.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/thread.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/timer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_frontend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gl/headless_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/map/map_snapshotter.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/asset_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/database_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_manager.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_request.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_request.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/main_resource_loader.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_database.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_download.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/online_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/sqlite3.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/text/bidi.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/compression.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/monotonic_timer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/png_writer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/thread_local.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/utf.cpp
+ ${PROJECT_SOURCE_DIR}/platform/linux/src/headless_backend_egl.cpp
+)
+
+target_include_directories(
+ mbgl-core
+ PRIVATE ${PROJECT_SOURCE_DIR}/platform/default/include
+)
+
+target_link_libraries(
+ mbgl-core
+ PRIVATE
+ EGL
+ GLESv2
+ Mapbox::Base::jni.hpp
+ android
+ atomic
+ jnigraphics
+ log
+ mbgl-vendor-icu
+ mbgl-vendor-sqlite
+ z
+)
+
+add_library(
+ mbgl-core-android STATIC
+ ${PROJECT_SOURCE_DIR}/platform/android/src/file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/file_source.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/http_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/i18n/collator.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/i18n/collator_jni.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/i18n/number_format.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/i18n/number_format_jni.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/logger.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/logger.hpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/logging_android.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/text/local_glyph_rasterizer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/text/local_glyph_rasterizer_jni.hpp
+)
+
+target_include_directories(
+ mbgl-core-android
+ PRIVATE ${PROJECT_SOURCE_DIR}/platform/default/include ${PROJECT_SOURCE_DIR}/src
+)
+
+target_link_libraries(
+ mbgl-core-android
+ PRIVATE Mapbox::Base::jni.hpp mbgl-compiler-options mbgl-core
+)
+
+add_library(
+ mapbox-gl SHARED
+ ${PROJECT_SOURCE_DIR}/platform/android/src/main.cpp
+)
+
+target_include_directories(
+ mapbox-gl
+ PRIVATE ${PROJECT_SOURCE_DIR}/platform/default/include ${PROJECT_SOURCE_DIR}/src
+)
+
+target_link_libraries(
+ mapbox-gl
+ PRIVATE
+ Mapbox::Base::jni.hpp
+ mbgl-compiler-options
+ mbgl-core
+ mbgl-core-android
+)
+
+add_library(
+ example-custom-layer MODULE
+ ${PROJECT_SOURCE_DIR}/platform/android/src/example_custom_layer.cpp
+)
+
+target_include_directories(
+ example-custom-layer
+ PRIVATE ${PROJECT_SOURCE_DIR}/include
+)
+
+target_link_libraries(
+ example-custom-layer
+ PRIVATE
+ GLESv2
+ Mapbox::Base::optional
+ Mapbox::Base::typewrapper
+ Mapbox::Base::value
+ Mapbox::Base::weak
+ log
+ mbgl-compiler-options
+)
+
+add_library(
+ mbgl-test-runner SHARED
+ ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/test_runner.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/test_runner_common.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/text/local_glyph_rasterizer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/collator_test_stub.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/number_format_test_stub.cpp
+)
+
+target_include_directories(
+ mbgl-test-runner
+ PRIVATE ${ANDROID_NDK}/sources/android/native_app_glue ${PROJECT_SOURCE_DIR}/platform/android/src ${PROJECT_SOURCE_DIR}/src
+)
+
+target_link_libraries(
+ mbgl-test-runner
+ PRIVATE
+ Mapbox::Base::jni.hpp
+ mbgl-compiler-options
+ -Wl,--whole-archive
+ mbgl-test
+ -Wl,--no-whole-archive
+)
+
+if(ANDROID_NATIVE_API_LEVEL VERSION_LESS 24)
+ target_sources(
+ mbgl-test-runner
+ PRIVATE ${PROJECT_SOURCE_DIR}/platform/android/src/test/http_file_source_test_stub.cpp
+ )
+else()
+ set(CURL_DIR ${PROJECT_SOURCE_DIR}/vendor/curl-android-ios/prebuilt-with-ssl/android)
+ set(CURL_LIBRARY ${CURL_DIR}/${ANDROID_ABI}/libcurl.a)
+
+ target_sources(
+ mbgl-test-runner
+ PRIVATE ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/http_file_source.cpp
+ )
+ target_include_directories(
+ mbgl-test-runner
+ PRIVATE ${CURL_DIR}/include
+ )
+ target_link_libraries(
+ mbgl-test-runner
+ PRIVATE ${CURL_LIBRARY}
+ )
+endif()
+
+add_custom_command(
+ TARGET mbgl-test-runner PRE_BUILD
+ COMMAND
+ ${CMAKE_COMMAND}
+ -E
+ make_directory
+ ${PROJECT_SOURCE_DIR}/test/results
+ COMMAND
+ ${CMAKE_COMMAND}
+ -E
+ tar
+ "chf"
+ "test/android/app/src/main/assets/data.zip"
+ --format=zip
+ --files-from=test/android/app/src/main/assets/to_zip.txt
+ COMMAND
+ ${CMAKE_COMMAND}
+ -E
+ remove_directory
+ ${PROJECT_SOURCE_DIR}/test/results
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+)
+
+add_library(
+ mbgl-benchmark-runner SHARED
+ ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/benchmark_runner.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/test_runner_common.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/text/local_glyph_rasterizer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/collator_test_stub.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/number_format_test_stub.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/http_file_source_test_stub.cpp
+)
+
+target_include_directories(
+ mbgl-benchmark-runner
+ PRIVATE ${ANDROID_NDK}/sources/android/native_app_glue ${PROJECT_SOURCE_DIR}/platform/android/src ${PROJECT_SOURCE_DIR}/src
+)
+
+target_link_libraries(
+ mbgl-benchmark-runner
+ PRIVATE
+ Mapbox::Base::jni.hpp
+ mbgl-compiler-options
+ -Wl,--whole-archive
+ mbgl-benchmark
+ -Wl,--no-whole-archive
+)
+
+add_custom_command(
+ TARGET mbgl-benchmark-runner PRE_BUILD
+ COMMAND
+ ${CMAKE_COMMAND}
+ -E
+ make_directory
+ ${PROJECT_SOURCE_DIR}/benchmark/results
+ COMMAND
+ ${CMAKE_COMMAND}
+ -E
+ tar
+ "chf"
+ "benchmark/android/app/src/main/assets/data.zip"
+ --format=zip
+ --files-from=benchmark/android/app/src/main/assets/to_zip.txt
+ COMMAND
+ ${CMAKE_COMMAND}
+ -E
+ remove_directory
+ ${PROJECT_SOURCE_DIR}/benchmark/results
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+)
+
+add_library(
+ mbgl-render-test-runner SHARED
+ ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/render_test_runner.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/test_runner_common.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/text/local_glyph_rasterizer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/collator_test_stub.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/number_format_test_stub.cpp
+ ${PROJECT_SOURCE_DIR}/platform/android/src/test/http_file_source_test_stub.cpp
+)
+
+target_include_directories(
+ mbgl-render-test-runner
+ PRIVATE ${ANDROID_NDK}/sources/android/native_app_glue ${PROJECT_SOURCE_DIR}/platform/android/src ${PROJECT_SOURCE_DIR}/src
+)
+
+target_link_libraries(
+ mbgl-render-test-runner
+ PRIVATE
+ Mapbox::Base::jni.hpp
+ android
+ log
+ mbgl-compiler-options
+ mbgl-render-test
+)
+
+add_custom_command(
+ TARGET mbgl-render-test-runner PRE_BUILD
+ COMMAND
+ ${CMAKE_COMMAND}
+ -E
+ tar
+ "chf"
+ "render-test/android/app/src/main/assets/data.zip"
+ --format=zip
+ --files-from=render-test/android/app/src/main/assets/to_zip.txt
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+)
+
+install(TARGETS mapbox-gl LIBRARY DESTINATION lib)
diff --git a/platform/glfw/CMakeLists.txt b/platform/glfw/CMakeLists.txt
new file mode 100644
index 0000000000..0b26cc83b1
--- /dev/null
+++ b/platform/glfw/CMakeLists.txt
@@ -0,0 +1,44 @@
+find_package(OpenGL REQUIRED)
+find_package(PkgConfig REQUIRED)
+
+pkg_search_module(GLFW glfw3 REQUIRED)
+
+add_executable(
+ mbgl-glfw
+ ${PROJECT_SOURCE_DIR}/platform/glfw/main.cpp
+ ${PROJECT_SOURCE_DIR}/platform/glfw/glfw_view.cpp
+ ${PROJECT_SOURCE_DIR}/platform/glfw/glfw_gl_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/glfw/glfw_renderer_frontend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/glfw/settings_json.cpp
+ ${PROJECT_SOURCE_DIR}/platform/glfw/test_writer.cpp
+)
+
+target_include_directories(
+ mbgl-glfw
+ PRIVATE ${GLFW_INCLUDE_DIRS}
+)
+
+include(${PROJECT_SOURCE_DIR}/vendor/cheap-ruler-cpp.cmake)
+
+# Use target_link_directories when we move away from CMake 3.10.
+target_link_libraries(
+ mbgl-glfw
+ PRIVATE $<$<BOOL:${GLFW_LIBRARY_DIRS}>:-L${GLFW_LIBRARY_DIRS}>
+)
+
+target_link_libraries(
+ mbgl-glfw
+ PRIVATE
+ ${GLFW_LIBRARIES}
+ Mapbox::Base::Extras::args
+ Mapbox::Base::Extras::filesystem
+ Mapbox::Base::Extras::rapidjson
+ Mapbox::Map
+ OpenGL::GL
+ mbgl-compiler-options
+ mbgl-vendor-cheap-ruler-cpp
+)
+
+set_property(TARGET mbgl-glfw PROPERTY FOLDER Executables)
+
+install(TARGETS mbgl-glfw RUNTIME DESTINATION bin)
diff --git a/platform/ios/ios.cmake b/platform/ios/ios.cmake
new file mode 100644
index 0000000000..ce64d3e729
--- /dev/null
+++ b/platform/ios/ios.cmake
@@ -0,0 +1,193 @@
+target_compile_definitions(
+ mbgl-core
+ PUBLIC MBGL_USE_GLES2 GLES_SILENCE_DEPRECATION
+)
+
+if(NOT DEFINED IOS_DEPLOYMENT_TARGET)
+ set(IOS_DEPLOYMENT_TARGET "9.0")
+endif()
+
+macro(initialize_ios_target target)
+ set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${IOS_DEPLOYMENT_TARGET}")
+ set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_ENABLE_BITCODE "YES")
+ set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE bitcode)
+ set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH $<$<CONFIG:Debug>:YES>)
+endmacro()
+
+set_target_properties(mbgl-core PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES)
+
+target_sources(
+ mbgl-core
+ PRIVATE
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/async_task.cpp
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/collator.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/gl_functions.cpp
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/headless_backend_eagl.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/native_apple_interface.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/http_file_source.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/native_apple_interface.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/image.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/local_glyph_rasterizer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/logging_nslog.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/nsthread.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/number_format.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/reachability.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/run_loop.cpp
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/string_nsstring.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/timer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_frontend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gl/headless_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/map/map_snapshotter.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/asset_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/database_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_manager.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_request.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_request.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/main_resource_loader.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_database.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_download.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/online_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/sqlite3.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/text/bidi.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/compression.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/monotonic_timer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/png_writer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/thread_local.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/utf.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/thread_local.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/layermanager/layer_manager.cpp
+)
+
+target_include_directories(
+ mbgl-core
+ PRIVATE ${PROJECT_SOURCE_DIR}/platform/darwin/include ${PROJECT_SOURCE_DIR}/platform/default/include
+)
+
+include(${PROJECT_SOURCE_DIR}/vendor/icu.cmake)
+
+initialize_ios_target(mbgl-core)
+initialize_ios_target(mbgl-vendor-icu)
+
+target_link_libraries(
+ mbgl-core
+ PRIVATE
+ "-framework CoreGraphics"
+ "-framework CoreImage"
+ "-framework CoreLocation"
+ "-framework CoreServices"
+ "-framework CoreText"
+ "-framework Foundation"
+ "-framework GLKit"
+ "-framework ImageIO"
+ "-framework OpenGLES"
+ "-framework QuartzCore"
+ "-framework Security"
+ "-framework SystemConfiguration"
+ "-framework UIKit"
+ "-framework WebKit"
+ mbgl-vendor-icu
+ sqlite3
+ z
+)
+
+if(MBGL_IOS_RENDER_TEST)
+ set(CMAKE_OSX_ARCHITECTURES "armv7;i386;x86_64;arm64")
+
+ include(${PROJECT_SOURCE_DIR}/vendor/zip-archive.cmake)
+ initialize_ios_target(mbgl-vendor-zip-archive)
+
+ set(PREPARE_CMD "${PROJECT_SOURCE_DIR}/render-test/ios/setup_test_data.sh")
+ message("COMMAND: ${PREPARE_CMD}")
+ execute_process(COMMAND ${PREPARE_CMD} RESULT_VARIABLE CMD_ERROR WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
+ message(STATUS "CMD_ERROR:" ${CMD_ERROR})
+
+ set(RESOURCES ${PROJECT_SOURCE_DIR}/render-test/ios/Main.storyboard ${PROJECT_SOURCE_DIR}/render-test/ios/LaunchScreen.storyboard ${PROJECT_SOURCE_DIR}/test-data)
+
+ add_executable(
+ RenderTestApp
+ ${PROJECT_SOURCE_DIR}/render-test/ios/ios_test_runner.hpp
+ ${PROJECT_SOURCE_DIR}/render-test/ios/ios_test_runner.cpp
+ ${PROJECT_SOURCE_DIR}/render-test/ios/AppDelegate.h
+ ${PROJECT_SOURCE_DIR}/render-test/ios/AppDelegate.m
+ ${PROJECT_SOURCE_DIR}/render-test/ios/ViewController.h
+ ${PROJECT_SOURCE_DIR}/render-test/ios/ViewController.m
+ ${PROJECT_SOURCE_DIR}/render-test/ios/iosTestRunner.h
+ ${PROJECT_SOURCE_DIR}/render-test/ios/iosTestRunner.mm
+ ${PROJECT_SOURCE_DIR}/render-test/ios/main.m
+ ${RESOURCES}
+ )
+ initialize_ios_target(RenderTestApp)
+
+ set_target_properties(
+ RenderTestApp
+ PROPERTIES
+ MACOSX_BUNDLE
+ TRUE
+ MACOSX_BUNDLE_IDENTIFIER
+ com.mapbox.RenderTestAPP
+ MACOSX_BUNDLE_INFO_PLIST
+ ${PROJECT_SOURCE_DIR}/render-test/ios/Info.plist
+ RESOURCE
+ "${RESOURCES}"
+ )
+
+ target_include_directories(
+ RenderTestApp
+ PUBLIC {PROJECT_SOURCE_DIR}/render-test/include ${PROJECT_SOURCE_DIR}/include
+ )
+
+ target_include_directories(
+ RenderTestApp
+ PRIVATE
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src
+ ${PROJECT_SOURCE_DIR}/platform/darwin/include
+ ${PROJECT_SOURCE_DIR}/platform/darwin/include/mbgl/interface/
+ ${PROJECT_SOURCE_DIR}/platform/default/include
+ ${PROJECT_SOURCE_DIR}/src
+ )
+
+ target_include_directories(
+ RenderTestApp
+ PUBLIC ${PROJECT_SOURCE_DIR}/render-test/ios
+ )
+
+ target_link_libraries(
+ RenderTestApp
+ PRIVATE
+ "-framework CoreGraphics"
+ "-framework CoreLocation"
+ "-framework Foundation"
+ "-framework OpenGLES"
+ "-framework QuartzCore"
+ "-framework UIKit"
+ mbgl-render-test
+ mbgl-vendor-zip-archive
+ )
+
+ find_package(XCTest REQUIRED)
+
+ xctest_add_bundle(RenderTestAppTests RenderTestApp ${PROJECT_SOURCE_DIR}/render-test/ios/tests/Tests.m)
+
+ set_target_properties(
+ RenderTestAppTests
+ PROPERTIES
+ XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET
+ "${IOS_DEPLOYMENT_TARGET}"
+ XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH
+ $<$<CONFIG:Debug>:YES>
+ )
+
+ target_include_directories(
+ RenderTestAppTests
+ PUBLIC ${PROJECT_SOURCE_DIR}/render-test/ios
+ )
+
+ xctest_add_test(XCTest.RenderTestApp RenderTestAppTests)
+
+ set_target_properties(RenderTestAppTests PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${PROJECT_SOURCE_DIR}/render-test/ios/tests/Info.plist)
+endif()
+
+unset(IOS_DEPLOYMENT_TARGET CACHE)
diff --git a/platform/linux/linux.cmake b/platform/linux/linux.cmake
new file mode 100644
index 0000000000..bf89601a57
--- /dev/null
+++ b/platform/linux/linux.cmake
@@ -0,0 +1,134 @@
+find_package(CURL REQUIRED)
+find_package(ICU REQUIRED i18n)
+find_package(ICU REQUIRED uc)
+find_package(JPEG REQUIRED)
+find_package(OpenGL REQUIRED GLX)
+find_package(PNG REQUIRED)
+find_package(PkgConfig REQUIRED)
+find_package(X11 REQUIRED)
+
+pkg_search_module(LIBUV libuv REQUIRED)
+
+target_sources(
+ mbgl-core
+ PRIVATE
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_frontend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gl/headless_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/i18n/collator.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/i18n/number_format.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/layermanager/layer_manager.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/asset_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/database_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_manager.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_request.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/http_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_request.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/main_resource_loader.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_database.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_download.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/online_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/sqlite3.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/text/bidi.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/text/local_glyph_rasterizer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/async_task.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/compression.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/image.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/jpeg_reader.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/logging_stderr.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/monotonic_timer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/png_reader.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/png_writer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/run_loop.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/string_stdlib.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/thread.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/thread_local.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/timer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/utf.cpp
+ ${PROJECT_SOURCE_DIR}/platform/linux/src/gl_functions.cpp
+ ${PROJECT_SOURCE_DIR}/platform/linux/src/headless_backend_glx.cpp
+)
+
+# FIXME: Should not be needed, but now needed by node because of the headless frontend.
+target_include_directories(
+ mbgl-core
+ PUBLIC ${PROJECT_SOURCE_DIR}/platform/default/include
+ PRIVATE
+ ${CURL_INCLUDE_DIRS}
+ ${JPEG_INCLUDE_DIRS}
+ ${LIBUV_INCLUDE_DIRS}
+ ${X11_INCLUDE_DIRS}
+)
+
+include(${PROJECT_SOURCE_DIR}/vendor/nunicode.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/sqlite.cmake)
+
+target_link_libraries(
+ mbgl-core
+ PRIVATE
+ ${CURL_LIBRARIES}
+ ${JPEG_LIBRARIES}
+ ${LIBUV_LIBRARIES}
+ ${X11_LIBRARIES}
+ ICU::i18n
+ ICU::uc
+ OpenGL::GLX
+ PNG::PNG
+ mbgl-vendor-nunicode
+ mbgl-vendor-sqlite
+)
+
+add_subdirectory(${PROJECT_SOURCE_DIR}/bin)
+add_subdirectory(${PROJECT_SOURCE_DIR}/expression-test)
+add_subdirectory(${PROJECT_SOURCE_DIR}/platform/glfw)
+add_subdirectory(${PROJECT_SOURCE_DIR}/platform/node)
+
+add_executable(
+ mbgl-test-runner
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/test/main.cpp
+)
+
+target_compile_definitions(
+ mbgl-test-runner
+ PRIVATE WORK_DIRECTORY=${PROJECT_SOURCE_DIR}
+)
+
+target_link_libraries(
+ mbgl-test-runner
+ PRIVATE
+ mbgl-compiler-options
+ -Wl,--whole-archive
+ mbgl-test
+ -Wl,--no-whole-archive
+)
+
+add_executable(
+ mbgl-benchmark-runner
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/benchmark/main.cpp
+)
+
+target_link_libraries(
+ mbgl-benchmark-runner
+ PRIVATE
+ mbgl-compiler-options
+ -Wl,--whole-archive
+ mbgl-benchmark
+ -Wl,--no-whole-archive
+)
+
+add_executable(
+ mbgl-render-test-runner
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/render-test/main.cpp
+)
+
+target_link_libraries(
+ mbgl-render-test-runner
+ PRIVATE mbgl-compiler-options mbgl-render-test
+)
+
+add_test(NAME mbgl-benchmark-runner COMMAND mbgl-benchmark-runner WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
+add_test(NAME mbgl-test-runner COMMAND mbgl-test-runner WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
+
+install(TARGETS mbgl-render-test-runner RUNTIME DESTINATION bin)
diff --git a/platform/macos/macos.cmake b/platform/macos/macos.cmake
new file mode 100644
index 0000000000..ddf74bdc59
--- /dev/null
+++ b/platform/macos/macos.cmake
@@ -0,0 +1,213 @@
+find_package(OpenGL REQUIRED)
+
+target_compile_definitions(
+ mbgl-core
+ PUBLIC GL_SILENCE_DEPRECATION
+)
+
+target_sources(
+ mbgl-core
+ PRIVATE
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLAccountManager.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLAttributedExpression.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLAttributionInfo.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLBackgroundStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLCircleStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLClockDirectionFormatter.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLCompassDirectionFormatter.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLComputedShapeSource.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLCoordinateFormatter.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLDistanceFormatter.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLFeature.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLFillExtrusionStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLFillStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLForegroundStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLFoundation.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLGeometry.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLHeatmapStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLHillshadeStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLImageSource.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLLight.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLLineStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLLoggingConfiguration.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLMapCamera.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLMapSnapshotter.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLMultiPoint.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLNetworkConfiguration.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLOfflinePack.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLOfflineStorage.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLOpenGLStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLPointAnnotation.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLPointCollection.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLPolygon.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLPolyline.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLRasterDEMSource.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLRasterStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLRasterTileSource.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLRendererConfiguration.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLSDKMetricsManager.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLShape.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLShapeCollection.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLShapeOfflineRegion.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLShapeSource.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLSource.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLStyle.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLStyleLayerManager.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLStyleValue.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLSymbolStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLTilePyramidOfflineRegion.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLTileSource.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLTypes.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLVectorStyleLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLVectorTileSource.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSArray+MGLAdditions.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSBundle+MGLAdditions.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSCoder+MGLAdditions.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSDate+MGLAdditions.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSDictionary+MGLAdditions.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSExpression+MGLAdditions.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSPredicate+MGLAdditions.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSString+MGLAdditions.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSURL+MGLAdditions.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSValue+MGLAdditions.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/async_task.cpp
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/collator.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/gl_functions.cpp
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/headless_backend_cgl.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/http_file_source.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/image.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/local_glyph_rasterizer.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/logging_nslog.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/nsthread.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/number_format.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/reachability.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/run_loop.cpp
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/string_nsstring.mm
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/timer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/native_apple_interface.m
+ ${PROJECT_SOURCE_DIR}/platform/darwin/src/MGLNetworkIntegrationManager.m
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_frontend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gl/headless_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/map/map_snapshotter.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/asset_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/database_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_manager.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_request.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_request.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/main_resource_loader.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_database.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_download.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/online_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/sqlite3.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/text/bidi.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/compression.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/monotonic_timer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/png_writer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/thread_local.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/utf.cpp
+ ${PROJECT_SOURCE_DIR}/platform/macos/src/MGLAnnotationImage.m
+ ${PROJECT_SOURCE_DIR}/platform/macos/src/MGLAttributionButton.mm
+ ${PROJECT_SOURCE_DIR}/platform/macos/src/MGLCompassCell.m
+ ${PROJECT_SOURCE_DIR}/platform/macos/src/MGLMapView+IBAdditions.mm
+ ${PROJECT_SOURCE_DIR}/platform/macos/src/MGLMapView+Impl.mm
+ ${PROJECT_SOURCE_DIR}/platform/macos/src/MGLMapView+OpenGL.mm
+ ${PROJECT_SOURCE_DIR}/platform/macos/src/MGLMapView.mm
+ ${PROJECT_SOURCE_DIR}/platform/macos/src/MGLOpenGLLayer.mm
+ ${PROJECT_SOURCE_DIR}/platform/macos/src/NSColor+MGLAdditions.mm
+ ${PROJECT_SOURCE_DIR}/platform/macos/src/NSImage+MGLAdditions.mm
+ ${PROJECT_SOURCE_DIR}/platform/macos/src/NSProcessInfo+MGLAdditions.m
+)
+
+set_target_properties(mbgl-core PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES)
+
+target_compile_options(mbgl-core PRIVATE -fobjc-arc)
+
+# FIXME: Should not be needed, but now needed by node because of the headless frontend.
+target_include_directories(
+ mbgl-core
+ PUBLIC ${PROJECT_SOURCE_DIR}/platform/default/include
+)
+
+target_include_directories(
+ mbgl-core
+ PRIVATE ${PROJECT_SOURCE_DIR}/platform/darwin/include ${PROJECT_SOURCE_DIR}/platform/darwin/src ${PROJECT_SOURCE_DIR}/platform/macos/src
+)
+
+include(${PROJECT_SOURCE_DIR}/vendor/icu.cmake)
+
+target_link_libraries(
+ mbgl-core
+ PRIVATE
+ "-framework AppKit"
+ "-framework CoreGraphics"
+ "-framework CoreLocation"
+ "-framework SystemConfiguration"
+ OpenGL::GL
+ mbgl-vendor-icu
+ sqlite3
+ z
+)
+
+add_subdirectory(${PROJECT_SOURCE_DIR}/bin)
+add_subdirectory(${PROJECT_SOURCE_DIR}/expression-test)
+add_subdirectory(${PROJECT_SOURCE_DIR}/platform/glfw)
+add_subdirectory(${PROJECT_SOURCE_DIR}/platform/node)
+
+add_executable(
+ mbgl-test-runner
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/test/main.cpp
+)
+
+target_include_directories(
+ mbgl-test-runner
+ PUBLIC ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/test/include
+)
+
+target_compile_definitions(
+ mbgl-test-runner
+ PRIVATE WORK_DIRECTORY=${PROJECT_SOURCE_DIR}
+)
+
+target_link_libraries(
+ mbgl-test-runner
+ PRIVATE mbgl-compiler-options -Wl,-force_load mbgl-test
+)
+
+add_executable(
+ mbgl-benchmark-runner
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/benchmark/main.cpp
+)
+
+target_include_directories(
+ mbgl-benchmark-runner
+ PUBLIC ${PROJECT_SOURCE_DIR}/benchmark/include
+)
+
+target_link_libraries(
+ mbgl-benchmark-runner
+ PRIVATE mbgl-compiler-options -Wl,-force_load mbgl-benchmark
+)
+
+add_executable(
+ mbgl-render-test-runner
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/render-test/main.cpp
+)
+
+target_link_libraries(
+ mbgl-render-test-runner
+ PRIVATE mbgl-compiler-options mbgl-render-test
+)
+
+set_property(TARGET mbgl-benchmark-runner PROPERTY FOLDER Executables)
+set_property(TARGET mbgl-test-runner PROPERTY FOLDER Executables)
+set_property(TARGET mbgl-render-test-runner PROPERTY FOLDER Executables)
+
+add_test(NAME mbgl-benchmark-runner COMMAND mbgl-benchmark-runner WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
+add_test(NAME mbgl-test-runner COMMAND mbgl-test-runner WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
diff --git a/platform/node/CMakeLists.txt b/platform/node/CMakeLists.txt
new file mode 100644
index 0000000000..9d7d08b07c
--- /dev/null
+++ b/platform/node/CMakeLists.txt
@@ -0,0 +1,52 @@
+if(NOT EXISTS ${PROJECT_SOURCE_DIR}/node_modules/@mapbox/cmake-node-module/module.cmake)
+ message("-- Not building node bindings, dependencies not found. Run 'npm update'.")
+ return()
+endif()
+
+set(NODE_MODULE_CACHE_DIR ${CMAKE_SOURCE_DIR}/build/headers)
+include(${PROJECT_SOURCE_DIR}/node_modules/@mapbox/cmake-node-module/module.cmake)
+
+add_node_module(
+ mbgl-node
+ INSTALL_PATH ${PROJECT_SOURCE_DIR}/lib/{node_abi}/mbgl.node
+ NAN_VERSION 2.10.0
+ EXCLUDE_NODE_ABIS
+ 46
+ 47
+ 48
+ 51
+ 59
+ 67
+ 72
+ 79
+)
+
+target_sources(
+ mbgl-node
+ INTERFACE
+ ${PROJECT_SOURCE_DIR}/platform/node/src/node_conversion.hpp
+ ${PROJECT_SOURCE_DIR}/platform/node/src/node_expression.cpp
+ ${PROJECT_SOURCE_DIR}/platform/node/src/node_expression.hpp
+ ${PROJECT_SOURCE_DIR}/platform/node/src/node_feature.cpp
+ ${PROJECT_SOURCE_DIR}/platform/node/src/node_feature.hpp
+ ${PROJECT_SOURCE_DIR}/platform/node/src/node_logging.cpp
+ ${PROJECT_SOURCE_DIR}/platform/node/src/node_logging.hpp
+ ${PROJECT_SOURCE_DIR}/platform/node/src/node_map.cpp
+ ${PROJECT_SOURCE_DIR}/platform/node/src/node_map.hpp
+ ${PROJECT_SOURCE_DIR}/platform/node/src/node_mapbox_gl_native.cpp
+ ${PROJECT_SOURCE_DIR}/platform/node/src/node_request.cpp
+ ${PROJECT_SOURCE_DIR}/platform/node/src/node_request.hpp
+ ${PROJECT_SOURCE_DIR}/platform/node/src/util/async_queue.hpp
+)
+
+target_link_libraries(
+ mbgl-node
+ INTERFACE Mapbox::Map
+)
+
+# FIXME: Node bindings only run fully on Linux now because it requires libuv RunLoop (which is the default on Linux). Also, Sanitizer will
+# not work here because node will do a dlopen(), which is not currently supported.
+if(CMAKE_SYSTEM_NAME STREQUAL Linux AND NOT MBGL_WITH_SANITIZER)
+ add_test(NAME mbgl-node-memory COMMAND npm run test-memory WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
+ add_test(NAME mbgl-node-test COMMAND npm run test WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
+endif()
diff --git a/platform/qt/qt.cmake b/platform/qt/qt.cmake
new file mode 100644
index 0000000000..a7d209a077
--- /dev/null
+++ b/platform/qt/qt.cmake
@@ -0,0 +1,214 @@
+# Note: Using Sqlite instead of QSqlDatabase for better compatibility.
+
+find_package(Qt5Gui REQUIRED)
+find_package(Qt5Network REQUIRED)
+find_package(Qt5OpenGL REQUIRED)
+find_package(Qt5Widgets REQUIRED)
+
+if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
+ add_definitions("-DQT_COMPILING_QIMAGE_COMPAT_CPP")
+ add_definitions("-D_USE_MATH_DEFINES")
+ add_definitions("-Wno-deprecated-declarations")
+ add_definitions("-Wno-inconsistent-missing-override")
+ add_definitions("-Wno-macro-redefined")
+ add_definitions("-Wno-microsoft-exception-spec")
+ add_definitions("-Wno-unknown-argument")
+ add_definitions("-Wno-unknown-warning-option")
+ add_definitions("-Wno-unused-command-line-argument")
+ add_definitions("-Wno-unused-local-typedef")
+ add_definitions("-Wno-unused-private-field")
+endif()
+
+target_sources(
+ mbgl-core
+ PRIVATE
+ ${PROJECT_SOURCE_DIR}/platform/$<IF:$<PLATFORM_ID:Windows>,qt/src/bidi.cpp,default/src/mbgl/text/bidi.cpp>
+ ${PROJECT_SOURCE_DIR}/platform/default/include/mbgl/gfx/headless_backend.hpp
+ ${PROJECT_SOURCE_DIR}/platform/default/include/mbgl/gfx/headless_frontend.hpp
+ ${PROJECT_SOURCE_DIR}/platform/default/include/mbgl/gl/headless_backend.hpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_frontend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gl/headless_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/i18n/collator.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/layermanager/layer_manager.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/asset_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/database_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_manager.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_request.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_request.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/main_resource_loader.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_database.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_download.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/online_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/sqlite3.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/compression.cpp
+ ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/monotonic_timer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/async_task.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/async_task_impl.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/number_format.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/gl_functions.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/headless_backend_qt.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/http_file_source.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/http_file_source.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/http_request.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/http_request.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/local_glyph_rasterizer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qt_image.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qt_logging.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/run_loop.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/run_loop_impl.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/string_stdlib.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/thread.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/thread_local.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/timer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/timer_impl.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/utf.cpp
+)
+
+target_compile_definitions(
+ mbgl-core
+ PRIVATE QT_IMAGE_DECODERS
+ PUBLIC __QT__ MBGL_USE_GLES2
+)
+
+target_include_directories(
+ mbgl-core
+ PRIVATE ${PROJECT_SOURCE_DIR}/platform/default/include
+)
+
+include(${PROJECT_SOURCE_DIR}/vendor/icu.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/nunicode.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/sqlite.cmake)
+
+target_link_libraries(
+ mbgl-core
+ PRIVATE
+ $<$<NOT:$<PLATFORM_ID:Windows>>:z>
+ $<$<NOT:$<PLATFORM_ID:Windows>>:mbgl-vendor-icu>
+ Qt5::Core
+ Qt5::Gui
+ Qt5::Network
+ Qt5::OpenGL
+ mbgl-vendor-nunicode
+ mbgl-vendor-sqlite
+)
+
+add_library(
+ qmapboxgl SHARED
+ ${PROJECT_SOURCE_DIR}/platform/qt/include/qmapbox.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/include/qmapboxgl.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qmapbox.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qmapboxgl.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qmapboxgl_map_observer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qmapboxgl_map_observer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qmapboxgl_map_renderer.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qmapboxgl_map_renderer.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qmapboxgl_p.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qmapboxgl_renderer_backend.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qmapboxgl_renderer_backend.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qmapboxgl_scheduler.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qmapboxgl_scheduler.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qt_conversion.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qt_geojson.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/qt_geojson.hpp
+)
+
+# FIXME: Because of rapidjson conversion
+target_include_directories(
+ qmapboxgl
+ PRIVATE ${PROJECT_SOURCE_DIR}/src
+)
+
+target_include_directories(
+ qmapboxgl
+ PUBLIC ${PROJECT_SOURCE_DIR}/platform/qt/include
+)
+
+target_compile_definitions(
+ qmapboxgl
+ PRIVATE QT_BUILD_MAPBOXGL_LIB
+)
+
+target_link_libraries(
+ qmapboxgl
+ PRIVATE
+ Qt5::Core
+ Qt5::Gui
+ mbgl-compiler-options
+ mbgl-core
+)
+
+add_executable(
+ mbgl-qt
+ ${PROJECT_SOURCE_DIR}/platform/qt/app/main.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/app/mapwindow.cpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/app/mapwindow.hpp
+ ${PROJECT_SOURCE_DIR}/platform/qt/resources/common.qrc
+)
+
+# Qt public API should keep compatibility with old compilers for legacy systems
+set_property(TARGET mbgl-qt PROPERTY CXX_STANDARD 98)
+
+target_link_libraries(
+ mbgl-qt
+ PRIVATE
+ Qt5::Widgets
+ Qt5::Gui
+ mbgl-compiler-options
+ qmapboxgl
+)
+
+add_executable(
+ mbgl-test-runner
+ ${PROJECT_SOURCE_DIR}/platform/qt/test/main.cpp
+)
+
+target_include_directories(
+ mbgl-test-runner
+ PUBLIC ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/test/include
+)
+
+target_compile_definitions(
+ mbgl-test-runner
+ PRIVATE WORK_DIRECTORY=${PROJECT_SOURCE_DIR}
+)
+
+target_link_libraries(
+ mbgl-test-runner
+ PRIVATE
+ Qt5::Gui
+ Qt5::OpenGL
+ mbgl-compiler-options
+ pthread
+)
+
+if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
+ target_link_libraries(
+ mbgl-test-runner
+ PRIVATE -Wl,-force_load mbgl-test
+ )
+else()
+ target_link_libraries(
+ mbgl-test-runner
+ PRIVATE -Wl,--whole-archive mbgl-test -Wl,--no-whole-archive
+ )
+endif()
+
+find_program(MBGL_QDOC NAMES qdoc)
+
+if(MBGL_QDOC)
+ add_custom_target(mbgl-qt-docs)
+
+ add_custom_command(
+ TARGET mbgl-qt-docs PRE_BUILD
+ COMMAND
+ ${MBGL_QDOC}
+ ${PROJECT_SOURCE_DIR}/platform/qt/config.qdocconf
+ -outputdir
+ ${CMAKE_BINARY_DIR}/docs
+ )
+endif()
+
+add_test(NAME mbgl-test-runner COMMAND mbgl-test-runner WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})