[build] Add build system for submodules

Vendorize the submodules and a simple CMake build
system for all them. The dependencies will inherit
compilation options for core.

The goal is to make Mapbox GL Core completely self
contained with a simple offline build.
This commit is contained in:
Thiago Marcos P. Santos
2018-10-24 01:53:22 +03:00
parent 3a3c05bd8a
commit 69960afb8d
38 changed files with 231 additions and 193 deletions

View File

@@ -1,6 +1,24 @@
cmake_minimum_required(VERSION 3.4)
project(mbgl LANGUAGES CXX C)
set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo Sanitize)
# Compiler configuration
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
# Required to avoid warnings when setting visibility
cmake_policy(SET CMP0063 NEW)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
option(WITH_CXX11ABI "Use the C++11 ABI" OFF)
option(WITH_COVERAGE "Enable coverage reports" OFF)
option(WITH_OSMESA "Use OSMesa headless backend" OFF)
@@ -8,6 +26,12 @@ option(WITH_EGL "Use EGL backend" OFF)
option(WITH_NODEJS "Download test dependencies like NPM and Node.js" ON)
option(WITH_ERROR "Add -Werror flag to build (turns warnings into errors)" ON)
if (WITH_ERROR)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
endif()
include(cmake/vendor.cmake)
include(cmake/mbgl.cmake)
include(cmake/mason.cmake)
include(cmake/xcode.cmake)
@@ -47,31 +71,11 @@ set_source_files_properties(src/mbgl/util/version.cpp PROPERTIES COMPILE_DEFINIT
include(cmake/mason-dependencies.cmake)
add_definitions(-DRAPIDJSON_HAS_STDSTRING=1)
if(WITH_COVERAGE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --coverage")
endif(WITH_COVERAGE)
set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo Sanitize)
# Compiler configuration
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
# Required to avoid warnings when setting visibility
cmake_policy(SET CMP0063 NEW)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-backtrace-limit=0 -w")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
@@ -80,11 +84,6 @@ else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wshadow -Wno-variadic-macros -Wno-unknown-pragmas")
endif()
if (WITH_ERROR)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
endif()
if(APPLE AND CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
# -Wno-error=unused-command-line-argument is required due to https://llvm.org/bugs/show_bug.cgi?id=7798
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=unused-command-line-argument")

View File

@@ -477,11 +477,6 @@ jobs:
name: Android code generation
command: scripts/nitpick/generated-code.js android
when: always
- run:
name: Vendored packages
command: scripts/nitpick/vendoring.js
when: always
# ------------------------------------------------------------------------------
clang-tidy:

View File

@@ -15,10 +15,6 @@ target_link_libraries(mbgl-benchmark
target_add_mason_package(mbgl-benchmark PRIVATE boost)
target_add_mason_package(mbgl-benchmark PRIVATE benchmark)
target_add_mason_package(mbgl-benchmark PRIVATE geojson)
target_add_mason_package(mbgl-benchmark PRIVATE rapidjson)
target_add_mason_package(mbgl-benchmark PRIVATE protozero)
target_add_mason_package(mbgl-benchmark PRIVATE vector-tile)
mbgl_platform_benchmark()

View File

@@ -7,21 +7,32 @@ target_include_directories(mbgl-core
PRIVATE src
)
target_add_mason_package(mbgl-core PUBLIC geometry)
target_add_mason_package(mbgl-core PUBLIC variant)
target_add_mason_package(mbgl-core PRIVATE unique_resource)
target_add_mason_package(mbgl-core PRIVATE rapidjson)
target_link_libraries(mbgl-core PRIVATE
earcut.hpp
expected
geojson-vt-cpp
kdbush.hpp
shelf-pack-cpp
supercluster.hpp
unique_resource
wagyu
)
# FIXME: We should not leak these many
# libraries in our public interface.
target_link_libraries(mbgl-core PUBLIC
geojson.hpp
geometry.hpp
icu
optional
polylabel
protozero
rapidjson
variant
vector-tile
)
target_add_mason_package(mbgl-core PRIVATE boost)
target_add_mason_package(mbgl-core PRIVATE geojson)
target_add_mason_package(mbgl-core PRIVATE geojsonvt)
target_add_mason_package(mbgl-core PRIVATE supercluster)
target_add_mason_package(mbgl-core PRIVATE kdbush)
target_add_mason_package(mbgl-core PRIVATE earcut)
target_add_mason_package(mbgl-core PRIVATE protozero)
target_add_mason_package(mbgl-core PRIVATE polylabel)
target_add_mason_package(mbgl-core PRIVATE wagyu)
target_add_mason_package(mbgl-core PRIVATE shelf-pack)
target_add_mason_package(mbgl-core PRIVATE vector-tile)
mbgl_platform_core()

View File

@@ -1,14 +1,8 @@
add_vendor_target(expected INTERFACE)
# Modify cmake/filesource-files.txt to change the source files for this target.
load_sources_list(MBGL_FILESOURCE_FILES cmake/filesource-files.txt)
add_library(mbgl-filesource STATIC ${MBGL_FILESOURCE_FILES})
target_add_mason_package(mbgl-filesource PUBLIC geometry)
target_add_mason_package(mbgl-filesource PUBLIC variant)
target_add_mason_package(mbgl-filesource PRIVATE rapidjson)
target_add_mason_package(mbgl-filesource PRIVATE boost)
target_add_mason_package(mbgl-filesource PRIVATE geojson)
target_include_directories(mbgl-filesource
PRIVATE include

View File

@@ -21,10 +21,7 @@ target_link_libraries(mbgl-glfw
)
target_add_mason_package(mbgl-glfw PRIVATE cheap-ruler)
target_add_mason_package(mbgl-glfw PRIVATE geojson)
target_add_mason_package(mbgl-glfw PRIVATE geometry)
target_add_mason_package(mbgl-glfw PRIVATE glfw)
target_add_mason_package(mbgl-glfw PRIVATE variant)
target_add_mason_package(mbgl-glfw PRIVATE args)
mbgl_platform_glfw()

View File

@@ -1,26 +0,0 @@
add_vendor_target(icu STATIC)
target_compile_definitions(icu
PRIVATE "-D_REENTRANT"
PRIVATE "-DU_HAVE_ATOMIC=1"
PRIVATE "-DU_HAVE_STRTOD_L=0"
PRIVATE "-DU_CHARSET_IS_UTF8=1"
PRIVATE "-DU_CHAR_TYPE=uint_least16_t"
PRIVATE "-DUCONFIG_NO_LEGACY_CONVERSION=1"
PRIVATE "-DUCONFIG_NO_BREAK_ITERATION=1"
)
target_compile_options(icu
PRIVATE "-Wno-shadow"
)
if(MBGL_PLATFORM STREQUAL "android")
target_compile_options(icu
PRIVATE "-Wno-tautological-unsigned-enum-zero-compare"
)
elseif(MBGL_PLATFORM STREQUAL "ios")
target_compile_options(icu
PRIVATE "-Wno-shorten-64-to-32"
)
endif()

View File

@@ -1,22 +1,8 @@
# All dependencies in a single separate file so its checksum can be used in a CI cache key name
mason_use(geometry VERSION 0.9.3 HEADER_ONLY)
mason_use(variant VERSION 1.1.4 HEADER_ONLY)
mason_use(unique_resource VERSION cba309e HEADER_ONLY)
mason_use(rapidjson VERSION 1.1.0 HEADER_ONLY)
mason_use(boost VERSION 1.65.1 HEADER_ONLY)
mason_use(geojsonvt VERSION 6.6.2 HEADER_ONLY)
mason_use(supercluster VERSION 0.2.2 HEADER_ONLY)
mason_use(kdbush VERSION 0.1.1-1 HEADER_ONLY)
mason_use(earcut VERSION 0.12.4 HEADER_ONLY)
mason_use(protozero VERSION 1.5.2 HEADER_ONLY)
mason_use(pixelmatch VERSION 0.10.0 HEADER_ONLY)
mason_use(geojson VERSION 0.4.2 HEADER_ONLY)
mason_use(polylabel VERSION 1.0.3 HEADER_ONLY)
mason_use(wagyu VERSION 0.4.3 HEADER_ONLY)
mason_use(shelf-pack VERSION 2.1.1 HEADER_ONLY)
mason_use(cheap-ruler VERSION 2.5.3 HEADER_ONLY)
mason_use(vector-tile VERSION 1.0.2 HEADER_ONLY)
mason_use(pixelmatch VERSION 0.10.0 HEADER_ONLY)
if(MBGL_PLATFORM STREQUAL "android")
mason_use(jni.hpp VERSION 4.0.1 HEADER_ONLY)
@@ -42,8 +28,6 @@ elseif(MBGL_PLATFORM STREQUAL "macos")
mason_use(swiftshader VERSION 2018-05-31)
endif()
elseif(MBGL_PLATFORM STREQUAL "qt")
mason_use(optional VERSION f27e7908 HEADER_ONLY)
if(NOT WITH_QT_DECODERS)
mason_use(libjpeg-turbo VERSION 1.5.0)
mason_use(libpng VERSION 1.6.25)

View File

@@ -57,7 +57,6 @@ target_link_libraries(mbgl-node INTERFACE
mbgl-loop-node
)
target_add_mason_package(mbgl-node INTERFACE geojson)
set_target_properties(mbgl-node.all PROPERTIES FOLDER "Node.js")
add_custom_target(mbgl-node.active DEPENDS mbgl-node.abi-${NodeJS_ABI})

View File

@@ -1,5 +0,0 @@
add_vendor_target(nunicode STATIC)
target_compile_definitions(nunicode
PRIVATE "-DNU_BUILD_STATIC"
)

View File

@@ -11,7 +11,6 @@ target_link_libraries(mbgl-render
)
target_add_mason_package(mbgl-render PRIVATE boost)
target_add_mason_package(mbgl-render PRIVATE geojson)
target_add_mason_package(mbgl-render PRIVATE args)
mbgl_platform_render()

View File

@@ -22,20 +22,15 @@ target_include_directories(mbgl-test
PRIVATE platform/default
)
target_link_libraries(mbgl-test
PRIVATE mbgl-core
PRIVATE gtest
target_link_libraries(mbgl-test PRIVATE
gtest
mbgl-core
shelf-pack-cpp
unique_resource
)
target_add_mason_package(mbgl-test PRIVATE geometry)
target_add_mason_package(mbgl-test PRIVATE variant)
target_add_mason_package(mbgl-test PRIVATE unique_resource)
target_add_mason_package(mbgl-test PRIVATE rapidjson)
target_add_mason_package(mbgl-test PRIVATE pixelmatch)
target_add_mason_package(mbgl-test PRIVATE boost)
target_add_mason_package(mbgl-test PRIVATE geojson)
target_add_mason_package(mbgl-test PRIVATE geojsonvt)
target_add_mason_package(mbgl-test PRIVATE shelf-pack)
mbgl_platform_test()

23
cmake/vendor.cmake Normal file
View File

@@ -0,0 +1,23 @@
execute_process(
COMMAND git submodule update --init .
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/vendor
)
include(${CMAKE_SOURCE_DIR}/vendor/earcut.hpp.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/expected.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/geojson-vt-cpp.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/geojson.hpp.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/geometry.hpp.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/icu.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/kdbush.hpp.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/nunicode.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/optional.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/polylabel.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/protozero.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/rapidjson.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/shelf-pack-cpp.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/supercluster.hpp.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/unique_resource.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/variant.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/vector-tile.cmake)
include(${CMAKE_SOURCE_DIR}/vendor/wagyu.cmake)

View File

@@ -1,7 +1,6 @@
set(USE_GLES2 ON)
include(cmake/sqlite.cmake)
include(cmake/icu.cmake)
# Build thin archives.
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> cruT <TARGET> <LINK_FLAGS> <OBJECTS>")
@@ -43,13 +42,9 @@ macro(mbgl_platform_core)
PRIVATE platform/android
)
target_add_mason_package(mbgl-core PUBLIC geojson)
target_add_mason_package(mbgl-core PUBLIC jni.hpp)
target_add_mason_package(mbgl-core PUBLIC rapidjson)
target_link_libraries(mbgl-core
PRIVATE icu
PUBLIC expected
PUBLIC -llog
PUBLIC -landroid
PUBLIC -ljnigraphics

View File

@@ -12,7 +12,6 @@ macro(initialize_ios_target target)
endmacro()
include(cmake/icu.cmake)
include(cmake/loop-darwin.cmake)
initialize_ios_target(icu)
initialize_ios_target(mbgl-loop-darwin)
@@ -61,16 +60,12 @@ macro(mbgl_platform_core)
PRIVATE platform/default/mbgl/util/default_thread_pool.cpp
)
target_add_mason_package(mbgl-core PUBLIC geojson)
target_add_mason_package(mbgl-core PUBLIC polylabel)
target_include_directories(mbgl-core
PUBLIC platform/darwin
PUBLIC platform/default
)
target_link_libraries(mbgl-core
PRIVATE icu
PUBLIC "-lz"
PUBLIC "-framework Foundation"
PUBLIC "-framework CoreText"

View File

@@ -1,6 +1,4 @@
include(cmake/nunicode.cmake)
include(cmake/sqlite.cmake)
include(cmake/icu.cmake)
add_library(mbgl-loop-uv STATIC
platform/default/async_task.cpp
@@ -84,7 +82,6 @@ macro(mbgl_platform_core)
target_add_mason_package(mbgl-core PUBLIC libpng)
target_add_mason_package(mbgl-core PUBLIC libjpeg-turbo)
target_add_mason_package(mbgl-core PUBLIC geojson)
target_link_libraries(mbgl-core
PRIVATE nunicode

View File

@@ -1,6 +1,5 @@
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.11)
include(cmake/icu.cmake)
include(cmake/loop-darwin.cmake)
macro(mbgl_platform_core)
@@ -54,9 +53,6 @@ macro(mbgl_platform_core)
)
endif()
target_add_mason_package(mbgl-core PUBLIC geojson)
target_add_mason_package(mbgl-core PUBLIC polylabel)
target_compile_options(mbgl-core
PRIVATE -fobjc-arc
)
@@ -67,7 +63,6 @@ macro(mbgl_platform_core)
)
target_link_libraries(mbgl-core
PRIVATE icu
PUBLIC "-lz"
PUBLIC "-framework Foundation"
PUBLIC "-framework CoreText"

View File

@@ -1,9 +1,4 @@
include(platform/qt/qt.cmake)
include(cmake/nunicode.cmake)
if(NOT WITH_QT_I18N)
include(cmake/icu.cmake)
endif()
macro(mbgl_platform_core)
target_sources(mbgl-core
@@ -16,9 +11,9 @@ macro(mbgl_platform_core)
PRIVATE platform/qt/include
)
target_link_libraries(mbgl-core
target_link_libraries(mbgl-core PRIVATE
${MBGL_QT_CORE_LIBRARIES}
PRIVATE nunicode
nunicode
)
if(NOT WITH_QT_DECODERS)
@@ -39,10 +34,6 @@ macro(mbgl_platform_core)
else()
target_sources(mbgl-core PRIVATE platform/qt/src/bidi.cpp)
endif()
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
target_add_mason_package(mbgl-core PRIVATE optional)
endif()
endmacro()
@@ -54,10 +45,6 @@ macro(mbgl_filesource)
target_link_libraries(mbgl-filesource
${MBGL_QT_FILESOURCE_LIBRARIES}
)
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
target_add_mason_package(mbgl-filesource PRIVATE optional)
endif()
endmacro()
# FIXME: For now tests are disabled on Windows until we
@@ -86,6 +73,3 @@ if (NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
)
endmacro()
endif()
target_add_mason_package(qmapboxgl PRIVATE geojson)
target_add_mason_package(qmapboxgl PRIVATE rapidjson)

View File

@@ -158,8 +158,6 @@ elseif (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
list(APPEND MBGL_QT_CORE_FILES
PRIVATE platform/qt/src/thread.cpp
)
target_add_mason_package(qmapboxgl PRIVATE optional)
elseif (CMAKE_HOST_SYSTEM_NAME STREQUAL "QNX")
list(APPEND MBGL_QT_CORE_FILES
PRIVATE platform/qt/src/thread.cpp

View File

@@ -1,38 +0,0 @@
#!/usr/bin/env node
const nitpick = require('.');
const fs = require('fs');
const {execSync} = require('child_process');
const head = process.env['CIRCLE_SHA1'];
const mergeBase = process.env['CIRCLE_MERGE_BASE'];
if (!mergeBase) {
console.log('No merge base available.');
return;
}
const checkAll = process.argv.indexOf('--check-all') >= 2;
// Run the vendoring script for all vendored packages that were modified in this PR, and check for changes.
fs.readdirSync('vendor')
.filter(name => name[0] != '.')
.filter(name => fs.statSync(`vendor/${name}`).isDirectory())
.filter(name => checkAll || execSync(`git diff --shortstat ${mergeBase} ${head} -- vendor/${name}`).toString().trim())
.forEach(name => {
execSync(`scripts/vendor/${name}.sh`);
// List missing files
var missing = execSync(`git ls-files --others --exclude-standard -- vendor/${name}`).toString().trim();
if (!missing.length) {
nitpick.ok(`All files vendored for ${name} are checked in`);
} else {
nitpick.fail(`These vendored files for ${name} are not checked in:`, missing);
}
// Diff existing files
const diff = execSync(`git -c color.ui=always diff -- vendor/${name}`).toString().trim();
if (!diff.length) {
nitpick.ok(`All files vendored for ${name} are unmodified`);
} else {
nitpick.fail(`These vendored files for ${name} have modifications:`, diff);
}
});

5
vendor/earcut.hpp.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(earcut.hpp INTERFACE)
target_include_directories(earcut.hpp SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/earcut.hpp/include
)

5
vendor/expected.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(expected INTERFACE)
target_include_directories(expected SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/expected/include
)

5
vendor/geojson-vt-cpp.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(geojson-vt-cpp INTERFACE)
target_include_directories(geojson-vt-cpp SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/geojson-vt-cpp/include
)

5
vendor/geojson.hpp.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(geojson.hpp INTERFACE)
target_include_directories(geojson.hpp SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/geojson.hpp/include
)

5
vendor/geometry.hpp.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(geometry.hpp INTERFACE)
target_include_directories(geometry.hpp SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/geometry.hpp/include
)

35
vendor/icu.cmake vendored Normal file
View File

@@ -0,0 +1,35 @@
add_library(icu STATIC
${CMAKE_SOURCE_DIR}/vendor/icu/src/cmemory.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/cstring.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/ubidi.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/ubidi_props.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/ubidiln.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/ubidiwrt.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/uchar.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/udataswp.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/uinvchar.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/umath.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/ushape.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/ustring.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/utf_impl.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/utrie2.cpp
${CMAKE_SOURCE_DIR}/vendor/icu/src/utypes.cpp
)
target_compile_definitions(icu PRIVATE
UCONFIG_NO_BREAK_ITERATION=1
UCONFIG_NO_LEGACY_CONVERSION=1
U_CHARSET_IS_UTF8=1
U_CHAR_TYPE=uint_least16_t
U_HAVE_ATOMIC=1
U_HAVE_STRTOD_L=0
_REENTRANT
)
target_compile_options(icu PRIVATE
-Wno-error
)
target_include_directories(icu SYSTEM PUBLIC
${CMAKE_SOURCE_DIR}/vendor/icu/include
)

5
vendor/kdbush.hpp.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(kdbush.hpp INTERFACE)
target_include_directories(kdbush.hpp SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/kdbush.hpp/include
)

21
vendor/nunicode.cmake vendored Normal file
View File

@@ -0,0 +1,21 @@
add_library(nunicode STATIC
${CMAKE_SOURCE_DIR}/vendor/nunicode/src/libnu/ducet.c
${CMAKE_SOURCE_DIR}/vendor/nunicode/src/libnu/strcoll.c
${CMAKE_SOURCE_DIR}/vendor/nunicode/src/libnu/strings.c
${CMAKE_SOURCE_DIR}/vendor/nunicode/src/libnu/tolower.c
${CMAKE_SOURCE_DIR}/vendor/nunicode/src/libnu/tounaccent.c
${CMAKE_SOURCE_DIR}/vendor/nunicode/src/libnu/toupper.c
${CMAKE_SOURCE_DIR}/vendor/nunicode/src/libnu/utf8.c
)
target_compile_definitions(nunicode PRIVATE
NU_BUILD_STATIC
)
target_compile_options(nunicode PRIVATE
-Wno-error
)
target_include_directories(nunicode SYSTEM PUBLIC
${CMAKE_SOURCE_DIR}/vendor/nunicode/include
)

10
vendor/optional.cmake vendored Normal file
View File

@@ -0,0 +1,10 @@
add_library(optional INTERFACE)
# This polyfill is really only needed for
# Windows. We need to be careful to not leak
# it into any of our public interfaces.
if(WIN32)
target_include_directories(optional SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/optional/include
)
endif()

5
vendor/polylabel.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(polylabel INTERFACE)
target_include_directories(polylabel SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/polylabel/include
)

5
vendor/protozero.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(protozero INTERFACE)
target_include_directories(protozero SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/protozero/include
)

15
vendor/rapidjson.cmake vendored Normal file
View File

@@ -0,0 +1,15 @@
add_library(rapidjson INTERFACE)
target_include_directories(rapidjson SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/rapidjson/include
)
target_compile_definitions(rapidjson INTERFACE
RAPIDJSON_HAS_STDSTRING=1
)
if(WIN32)
target_compile_definitions(rapidjson INTERFACE
RAPIDJSON_HAS_CXX11_RVALUE_REFS
)
endif()

5
vendor/shelf-pack-cpp.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(shelf-pack-cpp INTERFACE)
target_include_directories(shelf-pack-cpp SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/shelf-pack-cpp/include
)

5
vendor/supercluster.hpp.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(supercluster.hpp INTERFACE)
target_include_directories(supercluster.hpp SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/supercluster.hpp/include
)

5
vendor/unique_resource.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(unique_resource INTERFACE)
target_include_directories(unique_resource SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/unique_resource
)

5
vendor/variant.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(variant INTERFACE)
target_include_directories(variant SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/variant/include
)

5
vendor/vector-tile.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(vector-tile INTERFACE)
target_include_directories(vector-tile SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/vector-tile/include
)

5
vendor/wagyu.cmake vendored Normal file
View File

@@ -0,0 +1,5 @@
add_library(wagyu INTERFACE)
target_include_directories(wagyu SYSTEM INTERFACE
${CMAKE_SOURCE_DIR}/vendor/wagyu/include
)