diff options
author | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2020-02-07 16:38:14 +0200 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2020-02-07 20:12:44 +0200 |
commit | f7fef70e9ddb9f52b071703d3ff0683b921606ac (patch) | |
tree | bbb1c1bf6f9d9a871c8d45e69286f9a0c44224ca /platform | |
parent | 489adb8d8713928fbbd1f511640417b1dd2aaa8a (diff) | |
download | qtlocation-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.cmake | 483 | ||||
-rw-r--r-- | platform/glfw/CMakeLists.txt | 44 | ||||
-rw-r--r-- | platform/ios/ios.cmake | 193 | ||||
-rw-r--r-- | platform/linux/linux.cmake | 134 | ||||
-rw-r--r-- | platform/macos/macos.cmake | 213 | ||||
-rw-r--r-- | platform/node/CMakeLists.txt | 52 | ||||
-rw-r--r-- | platform/qt/qt.cmake | 214 |
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}) |