[build] use vendored version of ICU

This commit is contained in:
Konstantin Käfer
2018-09-04 17:26:24 +02:00
parent f006eb9728
commit e51eb0fc23
13 changed files with 177 additions and 13 deletions

View File

@@ -300,7 +300,7 @@ step-library:
jobs:
nitpick:
docker:
- image: mbgl/7d2403f42e:base
- image: mbgl/7d2403f42e:linux-clang-4
working_directory: /src
environment:
LIBSYSCONFCPUS: 4

26
cmake/icu.cmake Normal file
View File

@@ -0,0 +1,26 @@
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

@@ -20,7 +20,6 @@ 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(icu VERSION 58.1-min-size)
elseif(MBGL_PLATFORM STREQUAL "ios")
mason_use(icu VERSION 58.1-min-size)
elseif(MBGL_PLATFORM STREQUAL "linux")
@@ -30,7 +29,6 @@ elseif(MBGL_PLATFORM STREQUAL "linux")
mason_use(libjpeg-turbo VERSION 1.5.0)
mason_use(webp VERSION 0.5.1)
mason_use(benchmark VERSION 1.4.1${MASON_CXXABI_SUFFIX})
mason_use(icu VERSION 58.1-min-size)
mason_use(args VERSION 6.2.0 HEADER_ONLY)
if(WITH_EGL)
@@ -39,7 +37,6 @@ elseif(MBGL_PLATFORM STREQUAL "linux")
elseif(MBGL_PLATFORM STREQUAL "macos")
mason_use(glfw VERSION 2018-06-27-0be4f3f)
mason_use(benchmark VERSION 1.4.1)
mason_use(icu VERSION 58.1-min-size)
mason_use(args VERSION 6.2.0 HEADER_ONLY)
if(WITH_EGL)
@@ -53,8 +50,4 @@ elseif(MBGL_PLATFORM STREQUAL "qt")
mason_use(libpng VERSION 1.6.25)
mason_use(webp VERSION 0.5.1)
endif()
if(NOT WITH_QT_I18N)
mason_use(icu VERSION 58.1-min-size)
endif()
endif()

View File

@@ -2,6 +2,7 @@ set(USE_GLES2 ON)
include(cmake/nunicode.cmake)
include(cmake/sqlite.cmake)
include(cmake/icu.cmake)
# Build thin archives.
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> cruT <TARGET> <LINK_FLAGS> <OBJECTS>")
@@ -46,10 +47,10 @@ macro(mbgl_platform_core)
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_add_mason_package(mbgl-core PRIVATE icu)
target_link_libraries(mbgl-core
PRIVATE nunicode
PRIVATE icu
PUBLIC expected
PUBLIC -llog
PUBLIC -landroid

View File

@@ -12,7 +12,9 @@ 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,7 +63,6 @@ macro(mbgl_platform_core)
target_add_mason_package(mbgl-core PUBLIC geojson)
target_add_mason_package(mbgl-core PUBLIC polylabel)
target_add_mason_package(mbgl-core PRIVATE icu)
target_include_directories(mbgl-core
PUBLIC platform/darwin
@@ -69,6 +70,7 @@ macro(mbgl_platform_core)
)
target_link_libraries(mbgl-core
PRIVATE icu
PUBLIC "-lz"
PUBLIC "-framework Foundation"
PUBLIC "-framework CoreText"

View File

@@ -285,6 +285,8 @@
558DE7A11E5615E400C7916D /* MGLFoundation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 558DE79E1E5615E400C7916D /* MGLFoundation_Private.h */; };
558DE7A21E5615E400C7916D /* MGLFoundation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 558DE79F1E5615E400C7916D /* MGLFoundation.mm */; };
558DE7A31E5615E400C7916D /* MGLFoundation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 558DE79F1E5615E400C7916D /* MGLFoundation.mm */; };
55CF752F213ED92000ED86C4 /* libicu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55CF752E213ED92000ED86C4 /* libicu.a */; };
55CF7531213ED92A00ED86C4 /* libicu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55CF7530213ED92A00ED86C4 /* libicu.a */; };
55D120A61F791007004B6D81 /* libmbgl-loop-darwin.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55D120A71F791007004B6D81 /* libmbgl-loop-darwin.a */; };
55D120A81F79100C004B6D81 /* libmbgl-filesource.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55D120A91F79100C004B6D81 /* libmbgl-filesource.a */; };
55E2AD131E5B125400E8C587 /* MGLOfflineStorageTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 55E2AD121E5B125400E8C587 /* MGLOfflineStorageTests.mm */; };
@@ -972,6 +974,8 @@
556660D71E1D085500E2C41B /* MGLVersionNumber.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MGLVersionNumber.m; path = ../../darwin/test/MGLVersionNumber.m; sourceTree = "<group>"; };
558DE79E1E5615E400C7916D /* MGLFoundation_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFoundation_Private.h; sourceTree = "<group>"; };
558DE79F1E5615E400C7916D /* MGLFoundation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFoundation.mm; sourceTree = "<group>"; };
55CF752E213ED92000ED86C4 /* libicu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libicu.a; sourceTree = BUILT_PRODUCTS_DIR; };
55CF7530213ED92A00ED86C4 /* libicu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libicu.a; sourceTree = BUILT_PRODUCTS_DIR; };
55D120A71F791007004B6D81 /* libmbgl-loop-darwin.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-loop-darwin.a"; sourceTree = BUILT_PRODUCTS_DIR; };
55D120A91F79100C004B6D81 /* libmbgl-filesource.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-filesource.a"; sourceTree = BUILT_PRODUCTS_DIR; };
55D8C9941D0F133500F42F10 /* config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = config.xcconfig; path = ../../build/ios/config.xcconfig; sourceTree = "<group>"; };
@@ -1357,6 +1361,7 @@
DAABF73D1CBC59BB005B1825 /* libmbgl-core.a in Frameworks */,
55D120A61F791007004B6D81 /* libmbgl-loop-darwin.a in Frameworks */,
55D120A81F79100C004B6D81 /* libmbgl-filesource.a in Frameworks */,
55CF752F213ED92000ED86C4 /* libicu.a in Frameworks */,
DA27C24E1CBB3811000B0ECD /* GLKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -1368,6 +1373,7 @@
DAAE5F8720F046E60089D85B /* libmbgl-core.a in Frameworks */,
DAAE5F8920F047240089D85B /* libmbgl-filesource.a in Frameworks */,
DAAE5F8A20F0472E0089D85B /* libmbgl-loop-darwin.a in Frameworks */,
55CF7531213ED92A00ED86C4 /* libicu.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1839,6 +1845,8 @@
DA1DC9921CB6DF24006E619F /* Frameworks */ = {
isa = PBXGroup;
children = (
55CF7530213ED92A00ED86C4 /* libicu.a */,
55CF752E213ED92000ED86C4 /* libicu.a */,
55D120A91F79100C004B6D81 /* libmbgl-filesource.a */,
55D120A71F791007004B6D81 /* libmbgl-loop-darwin.a */,
36F1153C1D46080700878E1A /* libmbgl-platform-ios.a */,

View File

@@ -1,5 +1,6 @@
include(cmake/nunicode.cmake)
include(cmake/sqlite.cmake)
include(cmake/icu.cmake)
add_library(mbgl-loop-uv STATIC
platform/default/async_task.cpp
@@ -81,11 +82,11 @@ 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 webp)
target_add_mason_package(mbgl-core PRIVATE icu)
target_add_mason_package(mbgl-core PUBLIC geojson)
target_link_libraries(mbgl-core
PRIVATE nunicode
PRIVATE icu
PUBLIC -lz
)

View File

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

View File

@@ -85,6 +85,7 @@
556660D61E1D07E400E2C41B /* MGLVersionNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 556660D51E1D07E400E2C41B /* MGLVersionNumber.m */; };
558DE7A61E56161C00C7916D /* MGLFoundation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 558DE7A41E56161C00C7916D /* MGLFoundation_Private.h */; };
558DE7A71E56161C00C7916D /* MGLFoundation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 558DE7A51E56161C00C7916D /* MGLFoundation.mm */; };
55CF7533213EDADF00ED86C4 /* libicu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55CF7532213EDADF00ED86C4 /* libicu.a */; };
55D120A31F7906E6004B6D81 /* libmbgl-filesource.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55D120A41F7906E6004B6D81 /* libmbgl-filesource.a */; };
55D120A51F790A0C004B6D81 /* libmbgl-filesource.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55D120A41F7906E6004B6D81 /* libmbgl-filesource.a */; };
55E2AD111E5B0A6900E8C587 /* MGLOfflineStorageTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 55E2AD101E5B0A6900E8C587 /* MGLOfflineStorageTests.mm */; };
@@ -378,6 +379,7 @@
556660D51E1D07E400E2C41B /* MGLVersionNumber.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MGLVersionNumber.m; path = ../../darwin/test/MGLVersionNumber.m; sourceTree = "<group>"; };
558DE7A41E56161C00C7916D /* MGLFoundation_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFoundation_Private.h; sourceTree = "<group>"; };
558DE7A51E56161C00C7916D /* MGLFoundation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFoundation.mm; sourceTree = "<group>"; };
55CF7532213EDADF00ED86C4 /* libicu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libicu.a; sourceTree = BUILT_PRODUCTS_DIR; };
55D120A41F7906E6004B6D81 /* libmbgl-filesource.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-filesource.a"; sourceTree = BUILT_PRODUCTS_DIR; };
55D9B4B01D005D3900C1CCE2 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
55E2AD101E5B0A6900E8C587 /* MGLOfflineStorageTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLOfflineStorageTests.mm; path = ../../darwin/test/MGLOfflineStorageTests.mm; sourceTree = "<group>"; };
@@ -672,6 +674,7 @@
5548BE781D09E718005DDE81 /* libmbgl-core.a in Frameworks */,
55D120A31F7906E6004B6D81 /* libmbgl-filesource.a in Frameworks */,
52B5D17F1E5E26DF00BBCB48 /* libmbgl-loop-darwin.a in Frameworks */,
55CF7533213EDADF00ED86C4 /* libicu.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1064,6 +1067,7 @@
DAE6C31E1CC308BC00DB3429 /* Frameworks */ = {
isa = PBXGroup;
children = (
55CF7532213EDADF00ED86C4 /* libicu.a */,
55D120A41F7906E6004B6D81 /* libmbgl-filesource.a */,
5548BE7B1D0ACBBD005DDE81 /* libmbgl-loop-darwin.a */,
55D9B4B01D005D3900C1CCE2 /* libz.tbd */,

View File

@@ -1,6 +1,10 @@
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
${MBGL_QT_CORE_FILES}
@@ -33,7 +37,7 @@ macro(mbgl_platform_core)
if(NOT WITH_QT_I18N)
target_sources(mbgl-core PRIVATE platform/default/bidi.cpp)
target_add_mason_package(mbgl-core PRIVATE icu)
target_link_libraries(mbgl-core PRIVATE icu)
else()
target_sources(mbgl-core PRIVATE platform/qt/src/bidi.cpp)
endif()

54
scripts/vendor/icu.sh vendored Executable file
View File

@@ -0,0 +1,54 @@
#!/usr/bin/env bash
source "$(dirname "${BASH_SOURCE[0]}")/common.sh"
NAME=icu
VERSION=61.1
ROOT=icu/source
download "http://download.icu-project.org/files/icu4c/$VERSION/icu4c-${VERSION//./_}-src.tgz"
init
STRIP_COMPONENTS=2 extract_gzip "${ROOT}/common/*.h" "${ROOT}/common/*.cpp"
STRIP_COMPONENTS=1 extract_gzip "icu/LICENSE"
# List all files we want to extract
FILES=(
ushape.cpp
ubidi.cpp
ubidi_props.cpp
ubidiln.cpp
ubidiwrt.cpp
ustring.cpp
uinvchar.cpp
uchar.cpp
udataswp.cpp
umath.cpp
utrie2.cpp
utf_impl.cpp
utypes.cpp
cmemory.cpp
cstring.cpp
)
# Find dependencies for all of these files
echo ">> Finding dependencies..."
ALL=()
for FILE in "${FILES[@]}"; do
ALL+=($(cd "common" && $CXX -std=c++14 -I. -c "$FILE" -M | sed -e 's/^[a-z0-9._-]*: *//;s/ *\\$//'))
done
# Remove duplicates
IFS=$'\n' ALL=($(sort <<< "${ALL[*]}" | uniq | sed '/^\//d'))
unset IFS
echo ">> Copying files..."
mkdir -p src include/unicode
for FILE in "${ALL[@]}"; do
[[ "$FILE" = unicode/* ]] && DIR="include" || DIR="src"
# Copy file and replace #include "unicode/*" with #include <unicode/*> so that we can separate
# includes and source-only files.
sed 's/^#include \"\(unicode\/[^\"]\{1,\}\)\"/#include <\1>/' "common/$FILE" > "$DIR/$FILE"
done
rm -rf common
file_list include src -name "*.h" -o -name "*.cpp"

69
vendor/icu/files.txt vendored Normal file
View File

@@ -0,0 +1,69 @@
include/unicode/bytestream.h
include/unicode/char16ptr.h
include/unicode/localpointer.h
include/unicode/platform.h
include/unicode/ptypes.h
include/unicode/putil.h
include/unicode/rep.h
include/unicode/std_string.h
include/unicode/stringoptions.h
include/unicode/stringpiece.h
include/unicode/ubidi.h
include/unicode/uchar.h
include/unicode/uclean.h
include/unicode/uconfig.h
include/unicode/udata.h
include/unicode/uiter.h
include/unicode/umachine.h
include/unicode/unistr.h
include/unicode/uobject.h
include/unicode/urename.h
include/unicode/uscript.h
include/unicode/uset.h
include/unicode/ushape.h
include/unicode/ustring.h
include/unicode/utf.h
include/unicode/utf16.h
include/unicode/utf8.h
include/unicode/utf_old.h
include/unicode/utypes.h
include/unicode/uvernum.h
include/unicode/uversion.h
src/cmemory.cpp
src/cmemory.h
src/cstring.cpp
src/cstring.h
src/cwchar.h
src/mutex.h
src/putilimp.h
src/uassert.h
src/ubidi.cpp
src/ubidi_props.cpp
src/ubidi_props.h
src/ubidi_props_data.h
src/ubidiimp.h
src/ubidiln.cpp
src/ubidiwrt.cpp
src/uchar.cpp
src/uchar_props_data.h
src/ucln.h
src/ucln_cmn.h
src/ucmndata.h
src/udatamem.h
src/udataswp.cpp
src/udataswp.h
src/uinvchar.cpp
src/uinvchar.h
src/umapfile.h
src/umath.cpp
src/umutex.h
src/uprops.h
src/uset_imp.h
src/ushape.cpp
src/ustr_imp.h
src/ustring.cpp
src/utf_impl.cpp
src/utrie2.cpp
src/utrie2.h
src/utrie2_impl.h
src/utypes.cpp

1
vendor/icu/version.txt vendored Normal file
View File

@@ -0,0 +1 @@
61.1