summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <thiago@mapbox.com>2016-07-27 17:58:45 +0300
committerThiago Marcos P. Santos <thiago@mapbox.com>2016-07-28 16:32:31 +0300
commit5728b2d689f5b0aed8b24bada9b2f172aa526538 (patch)
treed9a929990b959f8c073b393acd727d2ced6317f8
parent5936d3a2bcf01fce05af33a23792eb77eb46879d (diff)
downloadqtlocation-mapboxgl-5728b2d689f5b0aed8b24bada9b2f172aa526538.tar.gz
[build][Qt] Added standalone build mode
Attempt to make a build with as few build time and runtime dependencies as possible.
-rw-r--r--platform/qt/standalone/CMakeLists.txt66
-rw-r--r--platform/qt/standalone/geojson-hack.cpp1
-rw-r--r--platform/qt/standalone/standalone.cmake26
3 files changed, 93 insertions, 0 deletions
diff --git a/platform/qt/standalone/CMakeLists.txt b/platform/qt/standalone/CMakeLists.txt
new file mode 100644
index 0000000000..b00a491dd8
--- /dev/null
+++ b/platform/qt/standalone/CMakeLists.txt
@@ -0,0 +1,66 @@
+cmake_minimum_required(VERSION 3.2)
+project(qmapboxgl LANGUAGES CXX C)
+
+set(CMAKE_BUILD_TYPE Release)
+set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_SOURCE_DIR ${CMAKE_SOURCE_DIR}/../../..)
+
+set(MBGL_GENERATED ${CMAKE_BINARY_DIR}/generated)
+
+include(${CMAKE_SOURCE_DIR}/cmake/core-files.cmake)
+include(${CMAKE_SOURCE_DIR}/cmake/shaders.cmake)
+include(${CMAKE_SOURCE_DIR}/platform/qt/qt.cmake)
+include(${CMAKE_SOURCE_DIR}/platform/qt/standalone/standalone.cmake)
+
+add_library(mbgl-core STATIC
+ ${MBGL_CORE_FILES}
+)
+
+include_directories(
+ ${CMAKE_SOURCE_DIR}/include
+ ${CMAKE_SOURCE_DIR}/platform/default
+ ${CMAKE_SOURCE_DIR}/platform/qt/include
+ ${CMAKE_SOURCE_DIR}/src
+ ${MBGL_GENERATED}/include
+)
+
+add_dep(earcut 662398 mapbox/earcut.hpp) # v0.11 + header fix
+add_dep(geojson-cpp v0.1.4 mapbox/geojson-cpp)
+add_dep(geojson-vt-cpp v6.1.0 mapbox/geojson-vt-cpp)
+add_dep(geometry.hpp v0.8.0 mapbox/geometry.hpp)
+add_dep(mapbox-gl-shaders 4d1f89 mapbox/mapbox-gl-shaders)
+add_dep(protozero v1.3.0 mapbox/protozero)
+add_dep(rapidjson v1.0.2 miloyip/rapidjson)
+add_dep(unique_resource cba309 okdshin/unique_resource)
+add_dep(variant v1.1.1 mapbox/variant)
+
+add_dep(boost_algorithm boost-1.60.0 boostorg/algorithm)
+add_dep(boost_functional boost-1.60.0 boostorg/functional)
+add_dep(boost_geometry boost-1.60.0 boostorg/geometry)
+add_dep(boost_iterator boost-1.60.0 boostorg/iterator)
+add_dep(boost_regex boost-1.60.0 boostorg/regex)
+add_dep(boost_spirit boost-1.60.0 boostorg/spirit)
+
+target_sources(mbgl-core
+ ${MBGL_QT_FILES}
+ PRIVATE ${CMAKE_SOURCE_DIR}/platform/qt/standalone/geojson-hack.cpp
+)
+
+add_custom_target(mbgl-headers DEPENDS
+ ${MBGL_SHADER_FILES}
+ ${MBGL_GENERATED}/include/mbgl/util/version.hpp
+)
+
+add_dependencies(mbgl-core
+ mbgl-headers
+)
+
+target_compile_definitions(mbgl-core
+ PRIVATE -DQT_IMAGE_DECODERS
+)
+
+# FIXME: Qt should not depend on sqlite3
+target_link_libraries(mbgl-core
+ ${MBGL_QT_LIBRARIES}
+ PRIVATE -lsqlite3
+)
diff --git a/platform/qt/standalone/geojson-hack.cpp b/platform/qt/standalone/geojson-hack.cpp
new file mode 100644
index 0000000000..d1228de48e
--- /dev/null
+++ b/platform/qt/standalone/geojson-hack.cpp
@@ -0,0 +1 @@
+#include <src/mapbox/geojson.cpp>
diff --git a/platform/qt/standalone/standalone.cmake b/platform/qt/standalone/standalone.cmake
new file mode 100644
index 0000000000..5ee0fb0dc4
--- /dev/null
+++ b/platform/qt/standalone/standalone.cmake
@@ -0,0 +1,26 @@
+include(ExternalProject)
+
+# Macro for cloning and downloading our header-only dependencies
+macro(add_dep package tag git)
+ externalproject_add(${package}
+ URL https://github.com/${git}/archive/${tag}.zip
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ""
+ )
+
+ add_dependencies(mbgl-core ${package})
+
+ externalproject_get_property(${package} SOURCE_DIR)
+ target_include_directories(mbgl-core PRIVATE ${SOURCE_DIR})
+ target_include_directories(mbgl-core PRIVATE ${SOURCE_DIR}/include)
+
+ set(${package}_SOURCE_DIR ${SOURCE_DIR})
+endmacro()
+
+add_custom_command(
+ OUTPUT ${MBGL_GENERATED}/include/mbgl/util/version.hpp
+ DEPENDS ${CMAKE_SOURCE_DIR}/package.json
+ COMMAND ${CMAKE_SOURCE_DIR}/scripts/build-version.py ${MBGL_GENERATED}
+ VERBATIM
+)