summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <thiago@mapbox.com>2016-08-06 01:54:46 +0300
committerThiago Marcos P. Santos <thiago@mapbox.com>2017-01-24 11:36:59 +0200
commitbccb25ef77ddac7284278953421ad539dfb04015 (patch)
tree3b6814e38e6c932ac0c5740fe726511c53c366d4
parent6f4775a243cc173efdad5750c0205da6cb2ce096 (diff)
downloadqtlocation-mapboxgl-bccb25ef77ddac7284278953421ad539dfb04015.tar.gz
[Qt] Added standalone build
No external deps, only Qt and header only libs.
-rw-r--r--platform/qt/qt.cmake1
-rw-r--r--platform/qt/standalone/CMakeLists.txt86
-rw-r--r--platform/qt/standalone/standalone.cmake50
3 files changed, 137 insertions, 0 deletions
diff --git a/platform/qt/qt.cmake b/platform/qt/qt.cmake
index 59b01060c1..aa7e14ae0a 100644
--- a/platform/qt/qt.cmake
+++ b/platform/qt/qt.cmake
@@ -96,6 +96,7 @@ elseif (CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
)
list(APPEND MBGL_QT_LIBRARIES
PRIVATE -lGL
+ PRIVATE -pthread
)
elseif (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
list(APPEND MBGL_QT_FILES
diff --git a/platform/qt/standalone/CMakeLists.txt b/platform/qt/standalone/CMakeLists.txt
new file mode 100644
index 0000000000..44b5721e41
--- /dev/null
+++ b/platform/qt/standalone/CMakeLists.txt
@@ -0,0 +1,86 @@
+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}/../../..)
+
+include(${CMAKE_SOURCE_DIR}/cmake/core-files.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}
+)
+
+add_dep(geometry.hpp v0.9.0 mapbox/geometry.hpp)
+add_dep(variant v1.1.4 mapbox/variant)
+add_dep(unique_resource cba309 okdshin/unique_resource)
+add_dep(rapidjson v1.1.0 miloyip/rapidjson)
+add_dep(libboost v1.60.0 tmpsantos/mapbox-gl-native-boost)
+add_dep(geojson-vt-cpp v6.1.3 mapbox/geojson-vt-cpp)
+add_dep(supercluster.hpp v0.2.0 mapbox/supercluster.hpp)
+add_dep(kdbush.hpp v0.1.1 mourner/kdbush.hpp)
+add_dep(earcut v0.12.1 mapbox/earcut.hpp)
+add_dep(protozero v1.4.2 mapbox/protozero)
+add_dep(geojson-cpp v0.4.0 mapbox/geojson-cpp)
+add_dep(polylabel 20daf8 mapbox/polylabel) # v.1.0.2 + include fix
+add_dep(mapbox-gl-shaders 878008 mapbox/mapbox-gl-js)
+add_dep(optional 5f08e2 tmpsantos/Optional) # polyfill for Windows
+
+add_shader(circle)
+add_shader(collision_box)
+add_shader(debug)
+add_shader(fill)
+add_shader(fill_outline)
+add_shader(fill_outline_pattern)
+add_shader(fill_pattern)
+add_shader(line)
+add_shader(line_pattern)
+add_shader(line_sdf)
+add_shader(raster)
+add_shader(symbol_icon)
+add_shader(symbol_sdf)
+
+if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
+ add_definitions(
+ -I/usr/local/opt/icu4c/include
+ )
+elseif (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
+ add_definitions(
+ -D_USE_MATH_DEFINES
+ -DNOGDI
+ -DNOMINMAX
+ )
+endif()
+
+target_sources(mbgl-core
+ ${MBGL_QT_FILES}
+ PRIVATE ${CMAKE_SOURCE_DIR}/platform/qt/src/bidi.cpp
+ PRIVATE ${CMAKE_SOURCE_DIR}/platform/qt/src/utf.cpp
+)
+
+target_link_libraries(mbgl-core
+ ${MBGL_QT_LIBRARIES}
+)
+
+add_custom_target(mbgl-headers DEPENDS
+ ${MBGL_SHADER_FILES}
+ ${CMAKE_SOURCE_DIR}/include/mbgl/util/version.hpp
+)
+
+add_dependencies(mbgl-core
+ mbgl-headers
+)
+
+include_directories(
+ ${CMAKE_SOURCE_DIR}/include
+ ${CMAKE_SOURCE_DIR}/platform/default
+ ${CMAKE_SOURCE_DIR}/platform/qt/include
+ ${CMAKE_SOURCE_DIR}/src
+)
+
+add_definitions(
+ -DQT_IMAGE_DECODERS
+ -DRAPIDJSON_HAS_STDSTRING=1
+)
diff --git a/platform/qt/standalone/standalone.cmake b/platform/qt/standalone/standalone.cmake
new file mode 100644
index 0000000000..43948f4758
--- /dev/null
+++ b/platform/qt/standalone/standalone.cmake
@@ -0,0 +1,50 @@
+include(ExternalProject)
+
+# Macro for cloning and downloading our header-only dependencies
+macro(add_dep package tag git)
+ externalproject_add(${package}
+ SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/3rd_party/${package}
+ STAMP_DIR ${CMAKE_SOURCE_DIR}/src/3rd_party/stamps
+ 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)
+ target_include_directories(qmapboxgl PRIVATE ${SOURCE_DIR})
+ target_include_directories(qmapboxgl PRIVATE ${SOURCE_DIR}/include)
+
+ set(${package}_SOURCE_DIR ${SOURCE_DIR})
+endmacro()
+
+add_custom_command(
+ OUTPUT ${CMAKE_SOURCE_DIR}/include/mbgl/util/version.hpp
+ DEPENDS ${MBGL_VERSION_DEPS}
+ COMMAND node ${CMAKE_SOURCE_DIR}/scripts/build-version.js ${CMAKE_SOURCE_DIR}
+ VERBATIM
+)
+
+macro(add_shader shader)
+ set(shader_build_cmd node ${CMAKE_SOURCE_DIR}/scripts/build-shaders.js)
+ set(shader_file_prefix ${mapbox-gl-shaders_SOURCE_DIR}/shaders)
+ set(shader_source_prefix ${mapbox-gl-shaders_SOURCE_DIR}/include/mbgl/shader)
+
+ add_custom_command(
+ OUTPUT ${shader_source_prefix}/${shader}.hpp
+ COMMAND ${shader_build_cmd} ${shader} ${shader_file_prefix} ${shader_source_prefix}
+ DEPENDS ${shader_file_prefix}/${shader}.vertex.glsl
+ DEPENDS ${shader_file_prefix}/${shader}.fragment.glsl
+ DEPENDS ${shader_file_prefix}/_prelude.vertex.glsl
+ DEPENDS ${shader_file_prefix}/_prelude.fragment.glsl
+ DEPENDS mapbox-gl-shaders
+ VERBATIM
+ )
+
+ set(MBGL_SHADER_FILES ${MBGL_SHADER_FILES} ${shader_source_prefix}/${shader}.hpp)
+endmacro()