summaryrefslogtreecommitdiff
path: root/platform/qt/qt.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'platform/qt/qt.cmake')
-rw-r--r--platform/qt/qt.cmake214
1 files changed, 214 insertions, 0 deletions
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})