summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: 583c3df59394a006a42b65e75f25dcd78f5cc20a (plain)
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
project("Mapbox GL Native" LANGUAGES CXX C)

set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER Core)

set(
    MEMORYCHECK_COMMAND_OPTIONS
    "--leak-check=full --gen-suppressions=all --error-exitcode=1 --suppressions=${PROJECT_SOURCE_DIR}/scripts/valgrind.sup"
)

include(CTest)

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release)
endif()

option(MBGL_WITH_CORE_ONLY "Build only the core bits, no platform code" OFF)
option(MBGL_WITH_COVERAGE "Enable code coverage collection" OFF)
option(MBGL_WITH_QT "Build Mapbox GL Qt bindings" OFF)
option(MBGL_WITH_SANITIZER "Use [address|thread|undefined] here" OFF)
option(MBGL_WITH_RTTI "Compile with runtime type information" OFF)
option(MBGL_WITH_OPENGL "Build with OpenGL renderer" ON)
option(MBGL_WITH_WERROR "Make all compilation warnings errors" ON)

add_library(
    mbgl-compiler-options INTERFACE
)

set(UBSAN_BLACKLIST ${PROJECT_SOURCE_DIR}/scripts/ubsan.blacklist)

target_compile_options(
    mbgl-compiler-options
    INTERFACE
        $<$<BOOL:${MBGL_WITH_COVERAGE}>:--coverage>
        $<$<BOOL:${MBGL_WITH_SANITIZER}>:-DSANITIZE>
        $<$<BOOL:${MBGL_WITH_SANITIZER}>:-fno-omit-frame-pointer>
        $<$<BOOL:${MBGL_WITH_SANITIZER}>:-fno-optimize-sibling-calls>
        $<$<STREQUAL:${MBGL_WITH_SANITIZER},address>:-fsanitize=address>
        $<$<STREQUAL:${MBGL_WITH_SANITIZER},thread>:-fsanitize=thread>
        $<$<STREQUAL:${MBGL_WITH_SANITIZER},undefined>:-fsanitize=implicit-conversion,
        -fsanitize-blacklist=${UBSAN_BLACKLIST}>
        $<$<STREQUAL:${MBGL_WITH_SANITIZER},undefined>:-fsanitize=undefined,
        -fsanitize-blacklist=${UBSAN_BLACKLIST}>
        $<$<STREQUAL:${MBGL_WITH_SANITIZER},undefined>:-fsanitize=unsigned-integer-overflow,
        -fsanitize-blacklist=${UBSAN_BLACKLIST}>
        $<$<STREQUAL:${MBGL_WITH_SANITIZER},undefined>:-fsanitize=nullability,
        -fsanitize-blacklist=${UBSAN_BLACKLIST}>
        $<$<STREQUAL:${MBGL_WITH_SANITIZER},undefined>:-fsanitize=float-divide-by-zero,
        -fsanitize-blacklist=${UBSAN_BLACKLIST}>
        $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<NOT:$<BOOL:${MBGL_WITH_RTTI}>>>:-fno-rtti>
        $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<NOT:$<PLATFORM_ID:Windows>>>:-Wall>
        $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<NOT:$<PLATFORM_ID:Windows>>>:-Wshadow>
        $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<NOT:$<PLATFORM_ID:Windows>>>:-Wextra>
        $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<NOT:$<PLATFORM_ID:Windows>>,$<BOOL:${MBGL_WITH_WERROR}>>:-Werror>
        $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<PLATFORM_ID:Android>>:-Wno-error=tautological-constant-compare>
        $<$<CXX_COMPILER_ID:GNU>:-Wno-error=maybe-uninitialized>
        $<$<CXX_COMPILER_ID:GNU>:-Wno-error=return-type>
        $<$<CXX_COMPILER_ID:GNU>:-Wno-error=unknown-pragmas>
        $<$<CXX_COMPILER_ID:AppleClang>:-Wno-error=deprecated-declarations>
        $<$<CXX_COMPILER_ID:AppleClang>:-Wno-error=unused-parameter>
        $<$<CXX_COMPILER_ID:AppleClang>:-Wno-error=unused-property-ivar>
)

target_link_libraries(
    mbgl-compiler-options
    INTERFACE
        $<$<BOOL:${MBGL_WITH_COVERAGE}>:--coverage>
        $<$<STREQUAL:${MBGL_WITH_SANITIZER},address>:-fsanitize=address>
        $<$<STREQUAL:${MBGL_WITH_SANITIZER},thread>:-fsanitize=thread>
        $<$<STREQUAL:${MBGL_WITH_SANITIZER},undefined>:-fsanitize=undefined>
)

cmake_policy(SET CMP0063 NEW)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)

if(MBGL_WITH_QT)
    find_package(Qt5Core REQUIRED)
    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTORCC ON)
endif()

add_library(
    mbgl-core STATIC
    ${PROJECT_SOURCE_DIR}/include/mbgl/actor/actor.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/actor/actor_ref.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/actor/aspiring_actor.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/actor/established_actor.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/actor/mailbox.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/actor/message.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/actor/scheduler.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/annotation/annotation.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/gfx/backend_scope.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/gfx/renderable.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/gfx/renderer_backend.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/gfx/rendering_stats.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/background_layer_factory.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/circle_layer_factory.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/fill_extrusion_layer_factory.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/fill_layer_factory.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/heatmap_layer_factory.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/hillshade_layer_factory.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/layer_factory.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/layer_manager.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/line_layer_factory.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/raster_layer_factory.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/symbol_layer_factory.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/map/bound_options.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/map/camera.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/map/change.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/map/map.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/map/map_observer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/map/map_options.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/map/mode.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/map/projection_mode.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/math/clamp.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/math/log2.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/math/minmax.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/math/wrap.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/platform/settings.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/platform/thread.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/renderer/query.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/renderer/renderer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/renderer/renderer_frontend.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/renderer/renderer_observer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/renderer/renderer_state.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/storage/database_file_source.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/storage/file_source.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/storage/file_source_manager.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/storage/network_status.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/storage/offline.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/storage/online_file_source.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/storage/resource.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/storage/resource_options.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/storage/resource_transform.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/storage/response.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/color_ramp_property_value.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/color_ramp_property_value.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/constant.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/coordinate.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/custom_geometry_source_options.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/filter.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/function.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/geojson.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/geojson_options.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/get_json_type.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/layer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/light.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/position.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/property_value.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/rotation.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/source.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/tileset.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion/transition_options.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/conversion_impl.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/assertion.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/at.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/boolean_operator.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/case.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/check_subtype.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/coalesce.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/coercion.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/collator.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/collator_expression.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/comparison.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/compound_expression.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/dsl.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/error.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/expression.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/find_zoom_curve.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/format_expression.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/format_section_override.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/formatted.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/get_covering_stops.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/image.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/image_expression.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/in.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/interpolate.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/interpolator.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/is_constant.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/is_expression.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/length.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/let.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/literal.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/match.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/number_format.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/parsing_context.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/step.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/type.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/value.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/within.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/filter.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/image.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/layer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/layer_properties.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/background_layer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/circle_layer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/fill_extrusion_layer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/fill_layer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/heatmap_layer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/hillshade_layer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/line_layer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/raster_layer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/symbol_layer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/light.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/position.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/property_expression.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/property_value.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/rotation.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/source.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/sources/custom_geometry_source.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/sources/geojson_source.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/sources/image_source.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/sources/raster_dem_source.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/sources/raster_source.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/sources/vector_source.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/style.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/style_property.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/transition_options.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/types.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/style/undefined.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/tile/tile_id.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/tile/tile_necessity.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/async_request.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/async_task.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/char_array_buffer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/chrono.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/color.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/compression.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/constants.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/convert.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/enum.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/event.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/exception.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/expected.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/feature.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/font_stack.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/geo.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/geojson.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/geometry.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/ignore.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/image.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/immutable.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/indexed_tuple.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/interpolate.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/logging.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/noncopyable.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/optional.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/pass_types.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/platform.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/premultiply.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/projection.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/range.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/run_loop.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/size.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/string.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/thread.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/tileset.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/timer.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/traits.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/type_list.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/unitbezier.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/util.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/variant.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/work_request.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/work_task.hpp
    ${PROJECT_SOURCE_DIR}/include/mbgl/util/work_task_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/actor/mailbox.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/actor/scheduler.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/algorithm/update_renderables.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/algorithm/update_tile_masks.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/annotation_manager.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/annotation_manager.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/annotation_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/annotation_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/annotation_tile.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/annotation_tile.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/fill_annotation_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/fill_annotation_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/line_annotation_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/line_annotation_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/render_annotation_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/render_annotation_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/shape_annotation_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/shape_annotation_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/symbol_annotation_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/annotation/symbol_annotation_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/geometry/anchor.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/geometry/debug_font_data.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/geometry/dem_data.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/geometry/dem_data.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/geometry/feature_index.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/geometry/feature_index.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/geometry/line_atlas.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/geometry/line_atlas.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/attribute.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/attribute.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/color_mode.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/command_encoder.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/context.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/cull_face_mode.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/debug_group.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/depth_mode.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/draw_mode.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/draw_scope.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/index_buffer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/index_vector.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/offscreen_texture.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/render_pass.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/renderbuffer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/renderer_backend.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/rendering_stats.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/stencil_mode.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/texture.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/types.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/uniform.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/upload_pass.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/vertex_buffer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/gfx/vertex_vector.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/background_layer_factory.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/circle_layer_factory.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/fill_extrusion_layer_factory.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/fill_layer_factory.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/heatmap_layer_factory.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/hillshade_layer_factory.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/layer_factory.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/layer_manager.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/line_layer_factory.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/raster_layer_factory.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/symbol_layer_factory.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/circle_layout.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/clip_lines.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/clip_lines.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/layout.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/merge_lines.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/merge_lines.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/pattern_layout.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/symbol_feature.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/symbol_instance.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/symbol_instance.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/symbol_layout.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/symbol_layout.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/symbol_projection.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/layout/symbol_projection.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/map/map.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/map/map_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/map/map_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/map/map_options.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/map/transform.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/map/transform.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/map/transform_state.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/map/transform_state.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/map/zoom_history.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/math/log2.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/platform/settings.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/attributes.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/background_pattern_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/background_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/background_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/circle_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/circle_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/clipping_mask_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/clipping_mask_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/collision_box_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/collision_box_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/collision_circle_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/debug_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/debug_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/fill_extrusion_pattern_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/fill_extrusion_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/fill_extrusion_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/fill_outline_pattern_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/fill_outline_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/fill_pattern_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/fill_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/fill_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/heatmap_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/heatmap_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/heatmap_texture_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/heatmap_texture_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/hillshade_prepare_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/hillshade_prepare_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/hillshade_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/hillshade_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/line_gradient_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/line_pattern_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/line_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/line_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/line_sdf_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/program_parameters.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/program_parameters.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/programs.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/programs.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/raster_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/raster_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/segment.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/symbol_icon_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/symbol_program.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/symbol_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/symbol_sdf_icon_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/symbol_sdf_text_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/symbol_text_and_icon_program.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/textures.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/programs/uniforms.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/backend_scope.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/bucket.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/bucket_parameters.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/bucket_parameters.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/circle_bucket.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/circle_bucket.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/debug_bucket.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/debug_bucket.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/fill_bucket.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/fill_bucket.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/heatmap_bucket.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/heatmap_bucket.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/hillshade_bucket.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/hillshade_bucket.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/line_bucket.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/line_bucket.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/raster_bucket.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/raster_bucket.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/symbol_bucket.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/buckets/symbol_bucket.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/cross_faded_property_evaluator.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/cross_faded_property_evaluator.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/data_driven_property_evaluator.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/group_by_layout.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/group_by_layout.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/image_atlas.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/image_atlas.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/image_manager.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/image_manager.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/image_manager_observer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_background_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_background_layer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_circle_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_circle_layer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_fill_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_fill_layer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_heatmap_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_heatmap_layer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_hillshade_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_hillshade_layer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_line_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_line_layer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_raster_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_raster_layer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_symbol_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_symbol_layer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/paint_parameters.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/paint_parameters.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/paint_property_binder.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/paint_property_statistics.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/pattern_atlas.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/pattern_atlas.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/possibly_evaluated_property_value.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/property_evaluation_parameters.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/property_evaluator.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_layer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_light.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_light.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_orchestrator.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_orchestrator.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_pass.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_source_observer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_static_data.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_static_data.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_tile.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_tile.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/render_tree.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/renderer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/renderer_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/renderer_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/renderer_state.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_custom_geometry_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_custom_geometry_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_geojson_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_geojson_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_image_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_image_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_raster_dem_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_raster_dem_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_raster_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_raster_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_tile_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_tile_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_vector_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/sources/render_vector_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/source_state.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/source_state.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/style_diff.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/style_diff.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/tile_mask.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/tile_parameters.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/tile_pyramid.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/tile_pyramid.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/tile_render_data.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/tile_render_data.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/transition_parameters.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/update_parameters.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/upload_parameters.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/sprite/sprite_loader.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/sprite/sprite_loader.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/sprite/sprite_loader_observer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/sprite/sprite_parser.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/sprite/sprite_parser.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/storage/asset_file_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/storage/file_source_manager.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/storage/http_file_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/storage/local_file_source.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/storage/main_resource_loader.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/storage/network_status.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/storage/resource.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/storage/resource_options.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/storage/resource_transform.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/storage/response.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/collection.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/color_ramp_property_value.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/constant.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/coordinate.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/custom_geometry_source_options.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/filter.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/function.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/geojson.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/geojson_options.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/get_json_type.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/json.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/light.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/position.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/property_value.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/rotation.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/stringify.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/tileset.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/conversion/transition_options.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/custom_tile_loader.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/custom_tile_loader.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/assertion.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/at.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/boolean_operator.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/case.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/check_subtype.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/coalesce.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/coercion.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/collator.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/collator_expression.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/comparison.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/compound_expression.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/dsl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/dsl_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/expression.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/find_zoom_curve.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/format_expression.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/formatted.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/get_covering_stops.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/image.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/image_expression.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/in.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/interpolate.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/is_constant.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/is_expression.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/length.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/let.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/literal.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/match.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/number_format.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/parsing_context.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/step.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/util.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/util.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/value.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/within.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/filter.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/image.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/image_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/image_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layer_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layer_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layer_observer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/background_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/background_layer_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/background_layer_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/background_layer_properties.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/background_layer_properties.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/circle_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/circle_layer_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/circle_layer_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/circle_layer_properties.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/circle_layer_properties.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/fill_extrusion_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/fill_extrusion_layer_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/fill_extrusion_layer_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/fill_extrusion_layer_properties.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/fill_extrusion_layer_properties.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/fill_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/fill_layer_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/fill_layer_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/fill_layer_properties.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/fill_layer_properties.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/heatmap_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/heatmap_layer_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/heatmap_layer_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/heatmap_layer_properties.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/heatmap_layer_properties.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/hillshade_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/hillshade_layer_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/hillshade_layer_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/hillshade_layer_properties.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/hillshade_layer_properties.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/line_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/line_layer_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/line_layer_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/line_layer_properties.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/line_layer_properties.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/raster_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/raster_layer_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/raster_layer_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/raster_layer_properties.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/raster_layer_properties.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/symbol_layer.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/symbol_layer_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/symbol_layer_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/symbol_layer_properties.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/symbol_layer_properties.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/layout_property.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/light.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/light_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/light_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/light_observer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/observer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/paint_property.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/parser.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/parser.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/properties.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/property_expression.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/rapidjson_conversion.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/source_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/source_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/source_observer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/custom_geometry_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/custom_geometry_source_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/custom_geometry_source_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/geojson_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/geojson_source_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/geojson_source_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/image_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/image_source_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/image_source_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/raster_dem_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/raster_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/raster_source_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/raster_source_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/vector_source.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/vector_source_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/sources/vector_source_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/style.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/style_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/style_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/style/types.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/bidi.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/check_max_angle.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/check_max_angle.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/collision_feature.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/collision_feature.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/collision_index.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/collision_index.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/cross_tile_symbol_index.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/cross_tile_symbol_index.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/get_anchors.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/get_anchors.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/glyph.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/glyph.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/glyph_atlas.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/glyph_atlas.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/glyph_manager.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/glyph_manager.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/glyph_manager_observer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/glyph_pbf.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/glyph_pbf.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/glyph_range.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/language_tag.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/language_tag.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/local_glyph_rasterizer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/placement.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/placement.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/quads.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/quads.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/shaping.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/shaping.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/tagged_string.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/text/tagged_string.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/custom_geometry_tile.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/custom_geometry_tile.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/geojson_tile.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/geojson_tile.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/geojson_tile_data.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/geometry_tile.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/geometry_tile.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/geometry_tile_data.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/geometry_tile_data.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/geometry_tile_worker.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/geometry_tile_worker.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/raster_dem_tile.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/raster_dem_tile.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/raster_dem_tile_worker.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/raster_dem_tile_worker.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/raster_tile.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/raster_tile.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/raster_tile_worker.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/raster_tile_worker.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/tile.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/tile.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/tile_cache.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/tile_cache.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/tile_id_hash.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/tile_id_io.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/tile_loader.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/tile_loader_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/tile_observer.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/vector_tile.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/vector_tile.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/vector_tile_data.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/tile/vector_tile_data.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/bounding_volumes.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/bounding_volumes.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/chrono.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/color.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/constants.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/convert.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/dtoa.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/dtoa.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/event.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/font_stack.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/geo.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/geojson_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/geometry_within.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/geometry_within.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/grid_index.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/grid_index.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/hash.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/http_header.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/http_header.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/http_timeout.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/http_timeout.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/i18n.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/i18n.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/interpolate.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/intersection_tests.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/intersection_tests.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/io.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/io.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/literal.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/logging.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/longest_common_subsequence.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/mapbox.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/mapbox.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/mat2.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/mat2.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/mat3.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/mat3.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/mat4.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/mat4.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/math.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/premultiply.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/rapidjson.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/rapidjson.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/rect.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/std.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/stopwatch.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/stopwatch.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/string.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/thread.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/thread_local.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/thread_pool.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/thread_pool.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/tile_coordinate.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/tile_cover.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/tile_cover.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/tile_cover_impl.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/tile_cover_impl.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/tile_range.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/tiny_sdf.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/tiny_sdf.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/token.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/url.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/url.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/utf.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/version.cpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/version.hpp
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/work_request.cpp
)

if(MBGL_WITH_OPENGL)
    message("-- Configuring GL-Native with OpenGL renderer backend")
    target_compile_definitions(
        mbgl-core
        PRIVATE MBGL_RENDER_BACKEND_OPENGL=1
    )
    target_sources(
        mbgl-core
        PRIVATE
            ${PROJECT_SOURCE_DIR}/include/mbgl/gfx/backend.hpp
            ${PROJECT_SOURCE_DIR}/include/mbgl/gl/custom_layer.hpp
            ${PROJECT_SOURCE_DIR}/include/mbgl/gl/custom_layer_factory.hpp
            ${PROJECT_SOURCE_DIR}/include/mbgl/gl/renderable_resource.hpp
            ${PROJECT_SOURCE_DIR}/include/mbgl/gl/renderer_backend.hpp
            ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/location_indicator_layer_factory.hpp
            ${PROJECT_SOURCE_DIR}/include/mbgl/platform/gl_functions.hpp
            ${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/location_indicator_layer.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/attribute.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/attribute.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/command_encoder.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/command_encoder.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/context.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/context.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/custom_layer.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/custom_layer_factory.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/custom_layer_impl.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/custom_layer_impl.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/debugging_extension.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/debugging_extension.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/defines.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/draw_scope_resource.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/enum.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/enum.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/extension.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/framebuffer.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/index_buffer_resource.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/index_buffer_resource.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/object.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/object.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/offscreen_texture.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/offscreen_texture.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/program.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/render_custom_layer.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/render_custom_layer.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/render_pass.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/render_pass.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/renderbuffer_resource.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/renderer_backend.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/state.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/texture.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/texture.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/texture_resource.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/texture_resource.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/types.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/uniform.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/uniform.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/upload_pass.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/upload_pass.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/value.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/value.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_array.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_array.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_array_extension.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_buffer_resource.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_buffer_resource.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/location_indicator_layer_factory.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/platform/gl_functions.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/background.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/background_pattern.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/circle.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/clipping_mask.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/collision_box.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/collision_circle.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/debug.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/fill.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/fill_extrusion.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/fill_extrusion_pattern.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/fill_outline.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/fill_outline_pattern.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/fill_pattern.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/heatmap.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/heatmap_texture.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/hillshade.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/hillshade_prepare.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/line.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/line_gradient.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/line_pattern.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/line_sdf.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/preludes.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/raster.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/shader_source.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/shader_source.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/shaders.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/shaders.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/symbol_icon.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/symbol_sdf_icon.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/symbol_sdf_text.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/programs/gl/symbol_text_and_icon.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_location_indicator_layer.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/renderer/layers/render_location_indicator_layer.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/location_indicator_layer.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/location_indicator_layer_impl.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/location_indicator_layer_impl.hpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/location_indicator_layer_properties.cpp
            ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/location_indicator_layer_properties.hpp
    )
endif()

if(EXISTS ${PROJECT_SOURCE_DIR}/.git/HEAD)
    execute_process(
        COMMAND
            git
            rev-parse
            --short=8
            HEAD
        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
        OUTPUT_VARIABLE MBGL_VERSION_REV
        OUTPUT_STRIP_TRAILING_WHITESPACE
    )
else()
    set(MBGL_VERSION_REV 00000000)
endif()

set_source_files_properties(
    ${PROJECT_SOURCE_DIR}/src/mbgl/util/version.cpp
    PROPERTIES
    COMPILE_DEFINITIONS
    MBGL_VERSION_REV="${MBGL_VERSION_REV}"
)

target_include_directories(
    mbgl-core
    PRIVATE ${PROJECT_SOURCE_DIR}/src
)

target_include_directories(
    mbgl-core
    PUBLIC ${PROJECT_SOURCE_DIR}/include
)

include(${PROJECT_SOURCE_DIR}/vendor/boost.cmake)
include(${PROJECT_SOURCE_DIR}/vendor/csscolorparser.cmake)
include(${PROJECT_SOURCE_DIR}/vendor/earcut.hpp.cmake)
include(${PROJECT_SOURCE_DIR}/vendor/eternal.cmake)
include(${PROJECT_SOURCE_DIR}/vendor/mapbox-base.cmake)
include(${PROJECT_SOURCE_DIR}/vendor/parsedate.cmake)
include(${PROJECT_SOURCE_DIR}/vendor/polylabel.cmake)
include(${PROJECT_SOURCE_DIR}/vendor/protozero.cmake)
include(${PROJECT_SOURCE_DIR}/vendor/unique_resource.cmake)
include(${PROJECT_SOURCE_DIR}/vendor/vector-tile.cmake)
include(${PROJECT_SOURCE_DIR}/vendor/wagyu.cmake)

target_link_libraries(
    mbgl-core
    PRIVATE
        Mapbox::Base::Extras::kdbush.hpp
        Mapbox::Base::supercluster.hpp
        Mapbox::Base::shelf-pack-cpp
        Mapbox::Base::geojson-vt-cpp
        mbgl-compiler-options
        mbgl-vendor-boost
        mbgl-vendor-csscolorparser
        mbgl-vendor-earcut.hpp
        mbgl-vendor-eternal
        mbgl-vendor-parsedate
        mbgl-vendor-polylabel
        mbgl-vendor-protozero
        mbgl-vendor-unique_resource
        mbgl-vendor-vector-tile
        mbgl-vendor-wagyu
    PUBLIC
        Mapbox::Base
        Mapbox::Base::Extras::expected-lite
        Mapbox::Base::Extras::rapidjson
        Mapbox::Base::geojson.hpp
        Mapbox::Base::geometry.hpp
        Mapbox::Base::optional
        Mapbox::Base::variant
)

set_target_properties(
    mbgl-core
    PROPERTIES
        INTERFACE_MAPBOX_NAME "Mapbox GL Native"
        INTERFACE_MAPBOX_URL "https://github.com/mapbox/mapbox-gl-native"
        INTERFACE_MAPBOX_AUTHOR "Mapbox"
        INTERFACE_MAPBOX_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE.md
)

set_property(TARGET mbgl-core PROPERTY FOLDER Core)

add_library(
    Mapbox::Map ALIAS mbgl-core
)

if(MBGL_WITH_PLATFORM_EXTRAS)
    include(${MBGL_WITH_PLATFORM_EXTRAS})
endif()

if(MBGL_WITH_CORE_ONLY)
    return()
endif()

include(${PROJECT_SOURCE_DIR}/scripts/license.cmake)

if(MBGL_WITH_QT)
    include(${PROJECT_SOURCE_DIR}/platform/qt/qt.cmake)
elseif(CMAKE_SYSTEM_NAME STREQUAL Android)
    include(${PROJECT_SOURCE_DIR}/platform/android/android.cmake)
elseif(CMAKE_SYSTEM_NAME STREQUAL iOS)
    include(${PROJECT_SOURCE_DIR}/platform/ios/ios.cmake)
elseif(CMAKE_SYSTEM_NAME STREQUAL Linux)
    include(${PROJECT_SOURCE_DIR}/platform/linux/linux.cmake)
elseif(CMAKE_SYSTEM_NAME STREQUAL Darwin)
    include(${PROJECT_SOURCE_DIR}/platform/macos/macos.cmake)
else()
    message(FATAL_ERROR "Unsupported target platform: " ${CMAKE_SYSTEM_NAME})
endif()

add_subdirectory(${PROJECT_SOURCE_DIR}/test)
add_subdirectory(${PROJECT_SOURCE_DIR}/benchmark)
add_subdirectory(${PROJECT_SOURCE_DIR}/render-test)

if(EXISTS ${PROJECT_SOURCE_DIR}/internal/internal.cmake)
    include(${PROJECT_SOURCE_DIR}/internal/internal.cmake)
endif()