1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
# BUILD FILE SYNTAX: SKYLARK
import json
mbgl_base_path = get_base_path() or '.'
def mbgl_load_file_lists(*argv):
merged = dict(sources = [], public_headers = {}, private_headers = {})
for arg in argv:
filename = mbgl_base_path + '/' + arg + '-files.json'
add_build_file_dep('//' + filename)
files = json.load(open(filename))
merged['public_headers'].update(files['public_headers'])
merged['private_headers'].update(files['private_headers'])
merged['sources'] += files['sources']
return merged
mbgl = dict(
core = mbgl_load_file_lists('src/core', 'platform/default/filesource'),
android = mbgl_load_file_lists('platform/android/core', 'platform/android/filesource'),
ios = mbgl_load_file_lists('platform/ios/core', 'platform/ios/sdk'),
deps = [],
)
def mbgl_vendor_library(name):
files = mbgl_load_file_lists('vendor/' + name)
cxx_library(
name = "vendor-" + name,
header_namespace = "",
srcs = files['sources'],
headers = files['private_headers'],
exported_headers = files['public_headers'],
link_style = 'static',
compiler_flags = [
"-Wno-tautological-unsigned-enum-zero-compare",
],
)
mbgl['deps'].append(':vendor-' + name)
mbgl_vendor_library("icu")
mbgl_vendor_library("boost")
mbgl_vendor_library("cheap-ruler-cpp")
mbgl_vendor_library("earcut.hpp")
mbgl_vendor_library("expected")
mbgl_vendor_library("eternal")
mbgl_vendor_library("geojson-vt-cpp")
mbgl_vendor_library("mapbox-base")
mbgl_vendor_library("sqlite")
mbgl_vendor_library("polylabel")
mbgl_vendor_library("protozero")
mbgl_vendor_library("shelf-pack-cpp")
mbgl_vendor_library("unique_resource")
mbgl_vendor_library("vector-tile")
mbgl_vendor_library("wagyu")
cxx_library(
name = "core",
srcs = mbgl['core']['sources'],
platform_srcs = [
("android", mbgl['android']['sources']),
],
header_namespace = "",
headers = mbgl['core']['private_headers'],
exported_headers = mbgl['core']['public_headers'],
platform_headers = [
("android", mbgl['android']['private_headers'])
],
exported_platform_headers = [
("android", mbgl['android']['public_headers']),
],
compiler_flags = [
"-std=c++14",
"-g",
"-Wall",
"-Wextra",
"-Werror",
"-Wno-unused-variable",
"-Wno-unused-parameter",
"-Wno-c++11-narrowing",
"-Wno-tautological-constant-compare",
"-fexceptions",
"-ftemplate-depth=1024",
"-frtti",
],
preprocessor_flags = [
"-DMBGL_USE_GLES2=1",
"-DMBGL_VERSION_REV=\"standalone\"",
"-DRAPIDJSON_HAS_STDSTRING=1",
],
exported_platform_linker_flags = [
("android", [
"-lz",
"-lEGL",
"-lGLESv2",
"-landroid",
"-ljnigraphics",
"-llog",
"-fvisibility=hidden",
"-Wl,--icf=safe",
"-Wl,--version-script=" + mbgl_base_path + "/platform/android/version-script"
]),
],
visibility = ["PUBLIC"],
deps = mbgl['deps'],
soname = "libmapbox-gl.$(ext)",
)
ndk_library(
name = "android-core",
deps = [ ":core" ],
flags = [
"NDK_APPLICATION_MK=$(env PWD)/" + mbgl_base_path + "/Application.mk",
],
)
android_manifest(
name = 'android-manifest',
skeleton = 'platform/android/MapboxGLAndroidSDK/src/main/AndroidManifest.xml',
)
android_library(
name = "android",
deps = [ ":android-core" ],
manifest = ":android-manifest",
)
apple_library(
name = "ios-core",
deps = [ ":core" ],
headers = mbgl['ios']['private_headers'],
exported_headers = mbgl['ios']['public_headers'],
srcs = mbgl['ios']['sources'],
lang_compiler_flags = {
"OBJCXX_CPP_OUTPUT": [
"-std=c++14",
"-fmodules",
"-fobjc-arc",
],
"OBJC_CPP_OUTPUT": [
"-fmodules",
"-fobjc-arc",
],
"CXX_CPP_OUTPUT": [
"-std=c++14",
]
},
)
|