Files
MapLibreParticleLab/platform/qt/qt.cmake
Thiago Marcos P. Santos f7fef70e9d [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.
2020-02-07 20:12:44 +02:00

215 lines
7.7 KiB
CMake

# 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})