mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-22 18:55:29 +03:00
221 lines
6.9 KiB
Diff
221 lines
6.9 KiB
Diff
From e18467d755f470b26f61f6893eddd76ecf0816e6 Mon Sep 17 00:00:00 2001
|
|
From: Rinigus <rinigus.git@gmail.com>
|
|
Date: Sun, 22 Nov 2020 18:47:41 +0200
|
|
Subject: [PATCH 1/2] [build][qt] Add support for qmapboxgl installation
|
|
|
|
Adds install target for Qt version of the library. Allows to
|
|
select which parts of Qt platform are built
|
|
---
|
|
platform/qt/qt.cmake | 58 +++++++++++++++++++++++++++++++++++++++++---
|
|
1 file changed, 54 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/platform/qt/qt.cmake b/platform/qt/qt.cmake
|
|
index 8184d5079c5..858833a85a5 100644
|
|
--- a/platform/qt/qt.cmake
|
|
+++ b/platform/qt/qt.cmake
|
|
@@ -1,9 +1,16 @@
|
|
# Note: Using Sqlite instead of QSqlDatabase for better compatibility.
|
|
|
|
+option(MBGL_WITH_QT_LIB_ONLY "Build only qmapboxgl library" OFF)
|
|
+option(MBGL_WITH_QT_HEADLESS "Build Mapbox GL Qt with headless support" ON)
|
|
+
|
|
+include(GNUInstallDirs)
|
|
find_package(Qt5Gui REQUIRED)
|
|
find_package(Qt5Network REQUIRED)
|
|
-find_package(Qt5OpenGL REQUIRED)
|
|
-find_package(Qt5Widgets REQUIRED)
|
|
+
|
|
+if(MBGL_WITH_QT_HEADLESS OR NOT MBGL_WITH_QT_LIB_ONLY)
|
|
+ find_package(Qt5OpenGL REQUIRED)
|
|
+ find_package(Qt5Widgets REQUIRED)
|
|
+endif()
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
|
add_definitions("-DQT_COMPILING_QIMAGE_COMPAT_CPP")
|
|
@@ -50,7 +57,6 @@ target_sources(
|
|
${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
|
|
$<$<BOOL:${MBGL_PUBLIC_BUILD}>:${PROJECT_SOURCE_DIR}/platform/qt/src/http_file_source.cpp>
|
|
$<$<BOOL:${MBGL_PUBLIC_BUILD}>:${PROJECT_SOURCE_DIR}/platform/qt/src/http_file_source.hpp>
|
|
$<$<BOOL:${MBGL_PUBLIC_BUILD}>:${PROJECT_SOURCE_DIR}/platform/qt/src/http_request.cpp>
|
|
@@ -68,6 +74,15 @@ target_sources(
|
|
${PROJECT_SOURCE_DIR}/platform/qt/src/utf.cpp
|
|
)
|
|
|
|
+if(MBGL_WITH_QT_HEADLESS OR NOT MBGL_WITH_QT_LIB_ONLY)
|
|
+ target_sources(
|
|
+ mbgl-core
|
|
+ PRIVATE
|
|
+ ${PROJECT_SOURCE_DIR}/platform/qt/src/headless_backend_qt.cpp
|
|
+ )
|
|
+endif()
|
|
+
|
|
+
|
|
target_compile_definitions(
|
|
mbgl-core
|
|
PRIVATE QT_IMAGE_DECODERS
|
|
@@ -91,11 +106,18 @@ target_link_libraries(
|
|
Qt5::Core
|
|
Qt5::Gui
|
|
Qt5::Network
|
|
- Qt5::OpenGL
|
|
mbgl-vendor-nunicode
|
|
mbgl-vendor-sqlite
|
|
)
|
|
|
|
+if(MBGL_WITH_QT_HEADLESS)
|
|
+ target_link_libraries(
|
|
+ mbgl-core
|
|
+ PRIVATE
|
|
+ Qt5::OpenGL
|
|
+ )
|
|
+endif()
|
|
+
|
|
add_library(
|
|
qmapboxgl SHARED
|
|
${PROJECT_SOURCE_DIR}/platform/qt/include/qmapbox.hpp
|
|
@@ -141,6 +163,34 @@ target_link_libraries(
|
|
mbgl-core
|
|
)
|
|
|
|
+# install library and headers
|
|
+install(
|
|
+ DIRECTORY include/mbgl
|
|
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
|
+ COMPONENT development
|
|
+)
|
|
+
|
|
+install(
|
|
+ TARGETS qmapboxgl
|
|
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT shared NAMELINK_SKIP
|
|
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT development
|
|
+)
|
|
+
|
|
+install(
|
|
+ FILES
|
|
+ platform/qt/include/QMapbox
|
|
+ platform/qt/include/QMapboxGL
|
|
+ platform/qt/include/qmapbox.hpp
|
|
+ platform/qt/include/qmapboxgl.hpp
|
|
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/qt5"
|
|
+ COMPONENT development
|
|
+)
|
|
+
|
|
+# stop here if only library is requested
|
|
+if(MBGL_WITH_QT_LIB_ONLY)
|
|
+ return()
|
|
+endif()
|
|
+
|
|
add_executable(
|
|
mbgl-qt
|
|
${PROJECT_SOURCE_DIR}/platform/qt/app/main.cpp
|
|
|
|
From ab27b9b8207754ef731b588d187c470ffb084455 Mon Sep 17 00:00:00 2001
|
|
From: Bart Ribbers <bribbers@disroot.org>
|
|
Date: Sat, 27 Feb 2021 16:39:47 +0100
|
|
Subject: [PATCH 2/2] [build][qt] Add support for using qmapboxgl as a proper
|
|
CMake dependency
|
|
|
|
This way other CMake projects requiring it can just do the usual:
|
|
|
|
find_package(QMapboxGL REQUIRED)
|
|
target_link_libraries(<target name> PUBLIC QMapboxGL)
|
|
---
|
|
CMakeLists.txt | 2 +-
|
|
platform/qt/QMapboxGLConfig.cmake.in | 12 ++++++++++
|
|
platform/qt/qt.cmake | 36 +++++++++++++++++++++++++---
|
|
3 files changed, 46 insertions(+), 4 deletions(-)
|
|
create mode 100644 platform/qt/QMapboxGLConfig.cmake.in
|
|
|
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index ad989ba8386..8f6f143add5 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -1,5 +1,5 @@
|
|
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
|
|
-project("Mapbox GL Native" LANGUAGES CXX C)
|
|
+project("Mapbox GL Native" LANGUAGES CXX C VERSION 1.6.0)
|
|
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER Core)
|
|
diff --git a/platform/qt/QMapboxGLConfig.cmake.in b/platform/qt/QMapboxGLConfig.cmake.in
|
|
new file mode 100644
|
|
index 00000000000..f25367f2ccf
|
|
--- /dev/null
|
|
+++ b/platform/qt/QMapboxGLConfig.cmake.in
|
|
@@ -0,0 +1,12 @@
|
|
+@PACKAGE_INIT@
|
|
+
|
|
+include(CMakeFindDependencyMacro)
|
|
+find_dependency(Qt5Gui @REQUIRED_QT_VERSION@)
|
|
+find_dependency(Qt5Network @REQUIRED_QT_VERSION@)
|
|
+
|
|
+if(@MBGL_WITH_QT_HEADLESS@ OR NOT @MBGL_WITH_QT_LIB_ONLY@)
|
|
+ find_dependency(Qt5OpenGL @REQUIRED_QT_VERSION@)
|
|
+endif()
|
|
+
|
|
+include("${CMAKE_CURRENT_LIST_DIR}/QMapboxGLTargets.cmake")
|
|
+@PACKAGE_INCLUDE_QCHTARGETS@
|
|
diff --git a/platform/qt/qt.cmake b/platform/qt/qt.cmake
|
|
index 858833a85a5..fbf9ce6ee54 100644
|
|
--- a/platform/qt/qt.cmake
|
|
+++ b/platform/qt/qt.cmake
|
|
@@ -145,8 +145,9 @@ target_include_directories(
|
|
)
|
|
|
|
target_include_directories(
|
|
- qmapboxgl
|
|
- PUBLIC ${PROJECT_SOURCE_DIR}/platform/qt/include
|
|
+ qmapboxgl PUBLIC
|
|
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/platform/qt/include>
|
|
+ $<INSTALL_INTERFACE:include>
|
|
)
|
|
|
|
target_compile_definitions(
|
|
@@ -172,7 +173,8 @@ install(
|
|
|
|
install(
|
|
TARGETS qmapboxgl
|
|
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT shared NAMELINK_SKIP
|
|
+ EXPORT QMapboxGLTargets
|
|
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT shared
|
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT development
|
|
)
|
|
|
|
@@ -186,6 +188,34 @@ install(
|
|
COMPONENT development
|
|
)
|
|
|
|
+set_target_properties(qmapboxgl PROPERTIES
|
|
+ EXPORT_NAME QMapboxGL
|
|
+ SOVERSION ${PROJECT_VERSION_MAJOR}
|
|
+ VERSION ${PROJECT_VERSION})
|
|
+
|
|
+include(CMakePackageConfigHelpers)
|
|
+set(CMAKECONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/qmapboxgl/)
|
|
+
|
|
+configure_package_config_file(
|
|
+ "platform/qt/QMapboxGLConfig.cmake.in"
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/QMapboxGLConfig.cmake"
|
|
+ INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
|
+ PATH_VARS CMAKE_INSTALL_PREFIX CMAKE_INSTALL_INCLUDEDIR
|
|
+ CMAKE_INSTALL_LIBDIR NO_CHECK_REQUIRED_COMPONENTS_MACRO)
|
|
+write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/QMapboxGLConfigVersion.cmake
|
|
+ VERSION ${qmapboxgl_VERSION}
|
|
+ COMPATIBILITY AnyNewerVersion)
|
|
+
|
|
+install(EXPORT QMapboxGLTargets
|
|
+ DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
|
+ COMPONENT development)
|
|
+
|
|
+install(FILES
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/QMapboxGLConfig.cmake"
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/QMapboxGLConfigVersion.cmake"
|
|
+ DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
|
+ COMPONENT development)
|
|
+
|
|
# stop here if only library is requested
|
|
if(MBGL_WITH_QT_LIB_ONLY)
|
|
return()
|