[build] use vendored SQLite for LTO benefits + custom compile flags
This commit is contained in:
@@ -60,6 +60,7 @@ set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo Sanitize)
|
||||
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)
|
||||
|
||||
@@ -89,8 +90,11 @@ if(APPLE AND CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=unused-command-line-argument")
|
||||
endif()
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os -DNDEBUG")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Os -DNDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 -DNDEBUG")
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O3 -DNDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_SANITIZE "${CMAKE_CXX_FLAGS_SANITIZE} -O1 -g -fno-omit-frame-pointer -fno-optimize-sibling-calls")
|
||||
set(CMAKE_C_FLAGS_SANITIZE "${CMAKE_C_FLAGS_SANITIZE} -O1 -g -fno-omit-frame-pointer -fno-optimize-sibling-calls")
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=unknown-warning-option")
|
||||
|
||||
@@ -20,13 +20,11 @@ mason_use(vector-tile VERSION 1.0.2 HEADER_ONLY)
|
||||
|
||||
if(MBGL_PLATFORM STREQUAL "android")
|
||||
mason_use(jni.hpp VERSION 3.0.0 HEADER_ONLY)
|
||||
mason_use(sqlite VERSION 3.24.0-min-size)
|
||||
mason_use(icu VERSION 58.1-min-size)
|
||||
elseif(MBGL_PLATFORM STREQUAL "ios")
|
||||
mason_use(icu VERSION 58.1-min-size)
|
||||
elseif(MBGL_PLATFORM STREQUAL "linux")
|
||||
mason_use(glfw VERSION 2018-06-27-0be4f3f)
|
||||
mason_use(sqlite VERSION 3.24.0-min-size)
|
||||
mason_use(libuv VERSION 1.9.1)
|
||||
mason_use(libpng VERSION 1.6.25)
|
||||
mason_use(libjpeg-turbo VERSION 1.5.0)
|
||||
|
||||
36
cmake/sqlite.cmake
Normal file
36
cmake/sqlite.cmake
Normal file
@@ -0,0 +1,36 @@
|
||||
add_vendor_target(sqlite STATIC)
|
||||
|
||||
target_compile_definitions(sqlite
|
||||
PRIVATE "-DVERSION=\"3.24.0\""
|
||||
PRIVATE "-DSTDC_HEADERS=int"
|
||||
PRIVATE "-DHAVE_SYS_TYPES_H=1"
|
||||
PRIVATE "-DHAVE_SYS_STAT_H=1"
|
||||
PRIVATE "-DHAVE_STDLIB_H=1"
|
||||
PRIVATE "-DHAVE_STRING_H=1"
|
||||
PRIVATE "-DHAVE_MEMORY_H=1"
|
||||
PRIVATE "-DHAVE_STRINGS_H=1"
|
||||
PRIVATE "-DHAVE_INTTYPES_H=1"
|
||||
PRIVATE "-DHAVE_STDINT_H=1"
|
||||
PRIVATE "-DHAVE_UNISTD_H=1"
|
||||
PRIVATE "-DHAVE_DLFCN_H=1"
|
||||
PRIVATE "-DHAVE_FDATASYNC=1"
|
||||
PRIVATE "-DHAVE_USLEEP=1"
|
||||
PRIVATE "-DHAVE_LOCALTIME_R=1"
|
||||
PRIVATE "-DHAVE_GMTIME_R=1"
|
||||
PRIVATE "-DHAVE_DECL_STRERROR_R=1"
|
||||
PRIVATE "-DHAVE_STRERROR_R=1"
|
||||
PRIVATE "-DHAVE_ZLIB_H=1"
|
||||
PRIVATE "-D_REENTRANT=1"
|
||||
PRIVATE "-DSQLITE_THREADSAFE=1"
|
||||
PRIVATE "-DSQLITE_HAVE_ZLIB"
|
||||
|
||||
# These are disabled on purpose, since we're not using these features.
|
||||
# PRIVATE "-DSQLITE_ENABLE_FTS5"
|
||||
# PRIVATE "-DSQLITE_ENABLE_JSON1"
|
||||
# PRIVATE "-DSQLITE_ENABLE_FTS3"
|
||||
# PRIVATE "-DSQLITE_ENABLE_RTREE"
|
||||
)
|
||||
|
||||
target_compile_options(sqlite
|
||||
PRIVATE "-Wno-int-conversion"
|
||||
)
|
||||
@@ -1,6 +1,7 @@
|
||||
set(USE_GLES2 ON)
|
||||
|
||||
include(cmake/nunicode.cmake)
|
||||
include(cmake/sqlite.cmake)
|
||||
|
||||
# Build thin archives.
|
||||
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> cruT <TARGET> <LINK_FLAGS> <OBJECTS>")
|
||||
@@ -66,10 +67,10 @@ macro(mbgl_filesource)
|
||||
# Modify platform/android/filesource-files.txt to change the source files for this target.
|
||||
target_sources_from_file(mbgl-filesource PRIVATE platform/android/filesource-files.txt)
|
||||
|
||||
target_add_mason_package(mbgl-filesource PUBLIC sqlite)
|
||||
target_add_mason_package(mbgl-filesource PUBLIC jni.hpp)
|
||||
|
||||
target_link_libraries(mbgl-filesource
|
||||
PUBLIC sqlite
|
||||
PUBLIC -llog
|
||||
PUBLIC -landroid
|
||||
PUBLIC -lstdc++
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
include(cmake/nunicode.cmake)
|
||||
include(cmake/sqlite.cmake)
|
||||
|
||||
add_library(mbgl-loop-uv STATIC
|
||||
platform/default/async_task.cpp
|
||||
@@ -107,11 +108,10 @@ macro(mbgl_filesource)
|
||||
PRIVATE platform/default/sqlite3.cpp
|
||||
)
|
||||
|
||||
target_add_mason_package(mbgl-filesource PUBLIC sqlite)
|
||||
|
||||
# We're not referencing any cURL symbols since we're dynamically loading it. However, we want to
|
||||
# link the library anyway since we're definitely going to load it on startup anyway.
|
||||
target_link_libraries(mbgl-filesource
|
||||
PUBLIC sqlite
|
||||
PUBLIC -Wl,--no-as-needed -lcurl -Wl,--as-needed
|
||||
)
|
||||
endmacro()
|
||||
|
||||
14
scripts/vendor/sqlite.sh
vendored
Executable file
14
scripts/vendor/sqlite.sh
vendored
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/common.sh"
|
||||
|
||||
NAME=sqlite
|
||||
VERSION=3.24.0
|
||||
ROOT=sqlite-amalgamation-3240000
|
||||
|
||||
download "https://www.sqlite.org/2018/$ROOT.zip"
|
||||
init
|
||||
extract_zip "$ROOT/sqlite3.*"
|
||||
mkdir -p include src
|
||||
mv sqlite3.h include
|
||||
mv sqlite3.c src
|
||||
file_list include src -name "*.h" -o -name "*.c"
|
||||
2
vendor/sqlite/files.txt
vendored
Normal file
2
vendor/sqlite/files.txt
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
include/sqlite3.h
|
||||
src/sqlite3.c
|
||||
1
vendor/sqlite/version.txt
vendored
Normal file
1
vendor/sqlite/version.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
3.24.0
|
||||
Reference in New Issue
Block a user