212 lines
8.7 KiB
CMake
212 lines
8.7 KiB
CMake
message(STATUS "Configuring MapLibre Native with Qt platform")
|
|
|
|
option(MLN_QT_LIBRARY_ONLY "Build only MapLibre Native Qt bindings libraries" OFF)
|
|
option(MLN_QT_WITH_INTERNAL_SQLITE "Build MapLibre Native Qt bindings with internal sqlite" OFF)
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
find_package(Threads REQUIRED)
|
|
|
|
option(MLN_QT_WITH_INTERNAL_ICU "Build MapLibre GL Qt bindings with internal ICU" OFF)
|
|
if(NOT MLN_QT_WITH_INTERNAL_ICU)
|
|
# find ICU ignoring Qt paths
|
|
option(MLN_QT_IGNORE_ICU "Ignore Qt-provided ICU library" ON)
|
|
if(MLN_QT_IGNORE_ICU)
|
|
set(_CMAKE_PREFIX_PATH_ORIG ${CMAKE_PREFIX_PATH})
|
|
set(_CMAKE_FIND_ROOT_PATH_ORIG ${CMAKE_FIND_ROOT_PATH})
|
|
unset(CMAKE_PREFIX_PATH)
|
|
unset(CMAKE_FIND_ROOT_PATH)
|
|
endif()
|
|
|
|
find_package(ICU COMPONENTS uc REQUIRED)
|
|
|
|
if(MLN_QT_IGNORE_ICU)
|
|
set(CMAKE_PREFIX_PATH ${_CMAKE_PREFIX_PATH_ORIG})
|
|
set(CMAKE_FIND_ROOT_PATH ${_CMAKE_FIND_ROOT_PATH_ORIG})
|
|
unset(_CMAKE_PREFIX_PATH_ORIG)
|
|
unset(_CMAKE_FIND_ROOT_PATH_ORIG)
|
|
endif()
|
|
else()
|
|
message(STATUS "Using internal ICU")
|
|
include(${PROJECT_SOURCE_DIR}/vendor/icu.cmake)
|
|
endif()
|
|
endif()
|
|
|
|
if("${QT_VERSION_MAJOR}" STREQUAL "")
|
|
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
|
|
else()
|
|
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED)
|
|
endif()
|
|
find_package(Qt${QT_VERSION_MAJOR}
|
|
COMPONENTS Gui
|
|
Network
|
|
REQUIRED)
|
|
|
|
if(NOT MLN_QT_WITH_INTERNAL_SQLITE)
|
|
find_package(Qt${QT_VERSION_MAJOR}Sql REQUIRED)
|
|
else()
|
|
message(STATUS "Using internal sqlite")
|
|
include(${PROJECT_SOURCE_DIR}/vendor/sqlite.cmake)
|
|
endif()
|
|
|
|
# Debugging & ccache on Windows
|
|
if (MSVC)
|
|
foreach(config DEBUG RELWITHDEBINFO)
|
|
foreach(lang C CXX)
|
|
set(flags_var "CMAKE_${lang}_FLAGS_${config}")
|
|
string(REPLACE "/Zi" "/Z7" ${flags_var} "${${flags_var}}")
|
|
set(${flags_var} "${${flags_var}}" PARENT_SCOPE)
|
|
endforeach()
|
|
endforeach()
|
|
endif()
|
|
|
|
target_sources(
|
|
mbgl-core
|
|
PRIVATE
|
|
${PROJECT_SOURCE_DIR}/platform/$<IF:$<PLATFORM_ID:Linux>,default/src/mbgl/text/bidi.cpp,qt/src/mbgl/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/platform/time.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/mbtiles_file_source.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/$<IF:$<BOOL:${MLN_QT_WITH_INTERNAL_SQLITE}>,default/src/mbgl/storage/sqlite3.cpp,qt/src/mbgl/sqlite3.cpp>
|
|
${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/compression.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/filesystem.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/monotonic_timer.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/async_task.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/async_task_impl.hpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/gl_functions.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/headless_backend_qt.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/http_file_source.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/http_file_source.hpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/http_request.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/http_request.hpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/image.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/number_format.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/local_glyph_rasterizer.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/logging_qt.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/run_loop.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/run_loop_impl.hpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/string_stdlib.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/thread.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/thread_local.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/timer.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/timer_impl.hpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/mbgl/utf.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/utils/renderer_backend.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/utils/renderer_backend.hpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/utils/renderer_observer.hpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/utils/scheduler.cpp
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/utils/scheduler.hpp
|
|
)
|
|
|
|
target_compile_definitions(
|
|
mbgl-core
|
|
PRIVATE QT_IMAGE_DECODERS
|
|
PUBLIC __QT__
|
|
)
|
|
|
|
target_include_directories(
|
|
mbgl-core
|
|
PRIVATE ${PROJECT_SOURCE_DIR}/platform/default/include
|
|
)
|
|
|
|
include(${PROJECT_SOURCE_DIR}/vendor/nunicode.cmake)
|
|
|
|
set_property(TARGET mbgl-core PROPERTY AUTOMOC ON)
|
|
if (Qt6_FOUND AND COMMAND qt_enable_autogen_tool)
|
|
qt_enable_autogen_tool(mbgl-core "moc" ON)
|
|
endif()
|
|
|
|
target_link_libraries(
|
|
mbgl-core
|
|
PUBLIC
|
|
$<BUILD_INTERFACE:mbgl-vendor-parsedate>
|
|
$<BUILD_INTERFACE:mbgl-vendor-nunicode>
|
|
$<BUILD_INTERFACE:mbgl-vendor-csscolorparser>
|
|
$<$<NOT:$<OR:$<PLATFORM_ID:Windows>,$<PLATFORM_ID:Emscripten>>>:z>
|
|
$<IF:$<BOOL:${MLN_QT_WITH_INTERNAL_SQLITE}>,$<BUILD_INTERFACE:mbgl-vendor-sqlite>,Qt${QT_VERSION_MAJOR}::Sql>
|
|
PRIVATE
|
|
$<$<PLATFORM_ID:Linux>:${CMAKE_THREAD_LIBS_INIT}>
|
|
Qt${QT_VERSION_MAJOR}::Core
|
|
Qt${QT_VERSION_MAJOR}::Gui
|
|
Qt${QT_VERSION_MAJOR}::Network
|
|
)
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
if (MLN_QT_WITH_INTERNAL_ICU)
|
|
target_link_libraries(mbgl-core PUBLIC $<BUILD_INTERFACE:mbgl-vendor-icu>)
|
|
else()
|
|
target_link_libraries(mbgl-core PUBLIC ICU::uc)
|
|
endif()
|
|
endif()
|
|
|
|
# Object library list
|
|
get_directory_property(MLN_QT_HAS_PARENT PARENT_DIRECTORY)
|
|
if(MLN_QT_HAS_PARENT)
|
|
set(MLN_QT_VENDOR_LIBRARIES
|
|
mbgl-vendor-parsedate
|
|
mbgl-vendor-nunicode
|
|
mbgl-vendor-csscolorparser
|
|
$<$<BOOL:${MLN_QT_WITH_INTERNAL_SQLITE}>:$<BUILD_INTERFACE:mbgl-vendor-sqlite>>
|
|
$<$<AND:$<PLATFORM_ID:Linux>,$<BOOL:${MLN_QT_WITH_INTERNAL_ICU}>>:$<BUILD_INTERFACE:mbgl-vendor-icu>>
|
|
PARENT_SCOPE
|
|
)
|
|
endif()
|
|
|
|
if(NOT MLN_QT_LIBRARY_ONLY)
|
|
# test runner
|
|
add_executable(
|
|
mbgl-test-runner
|
|
${PROJECT_SOURCE_DIR}/platform/qt/test/main.cpp
|
|
)
|
|
|
|
target_include_directories(
|
|
mbgl-test-runner
|
|
PRIVATE ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/test/include
|
|
)
|
|
|
|
target_compile_definitions(
|
|
mbgl-test-runner
|
|
PRIVATE
|
|
WORK_DIRECTORY=${PROJECT_SOURCE_DIR}
|
|
$<$<PLATFORM_ID:Windows>:MBGL_BUILDING_LIB>
|
|
)
|
|
|
|
target_link_libraries(
|
|
mbgl-test-runner
|
|
PRIVATE
|
|
Qt${QT_VERSION_MAJOR}::Gui
|
|
mbgl-compiler-options
|
|
)
|
|
|
|
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 $<LINK_LIBRARY:WHOLE_ARCHIVE,mbgl-test>
|
|
)
|
|
endif()
|
|
|
|
add_test(NAME mbgl-test-runner COMMAND mbgl-test-runner WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
|
endif()
|