1# Copyright (c) 2021 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//build/ohos.gni") 15import("//foundation/graphic/standard/graphic_config.gni") 16import("//third_party/wayland_standard/wayland_protocol.gni") 17 18group("default") { 19 public_deps = [ 20 ":drm-backend", 21 ":hdi-backend", 22 ":ivi-shell", 23 ":weston", 24 ":weston.ini", 25 ":weston.rc", 26 ] 27} 28 29weston_defines = [] 30 31set_defaults("ohos_shared_library") { 32 defines = weston_defines 33} 34 35set_defaults("ohos_static_library") { 36 defines = weston_defines 37} 38 39set_defaults("ohos_executable") { 40 defines = weston_defines 41} 42 43## Generate Wayland Protocols {{{ 44wayland_protocol("text_cursor_position_protocol") { 45 sources = [ "protocol/text-cursor-position.xml" ] 46} 47wayland_protocol("weston_content_protection_protocol") { 48 sources = [ "protocol/weston-content-protection.xml" ] 49} 50wayland_protocol("weston_touch_calibration_protocol") { 51 sources = [ "protocol/weston-touch-calibration.xml" ] 52} 53wayland_protocol("weston_direct_display_protocol") { 54 sources = [ "protocol/weston-direct-display.xml" ] 55} 56wayland_protocol("weston_screenshooter_protocol") { 57 sources = [ "protocol/weston-screenshooter.xml" ] 58} 59wayland_protocol("ivi_application_protocol") { 60 sources = [ "protocol/ivi-application.xml" ] 61} 62wayland_protocol("drm_auth_protocol") { 63 sources = [ "protocol/drm-auth.xml" ] 64} 65 66## Generate Wayland Protocols }}} 67 68## Build libshared.a {{{ 69config("libshared_config") { 70 visibility = [ ":*" ] 71 72 include_dirs = [ 73 "include", 74 "//third_party/wayland_standard/src", 75 "//third_party/wayland-ivi-extension_standard/include", 76 ] 77 78 cflags = [ 79 "-Wall", 80 "-Werror", 81 "-Wno-unused-parameter", 82 ] 83} 84 85config("libshared_public_config") { 86 include_dirs = [ 87 # "shared", 88 ".", 89 ] 90} 91 92ohos_static_library("libshared") { 93 sources = [ 94 "shared/config-parser.c", 95 "shared/file-util.c", 96 "shared/matrix.c", 97 "shared/option-parser.c", 98 "shared/os-compatibility.c", 99 ] 100 101 configs = [ ":libshared_config" ] 102 103 public_configs = [ ":libshared_public_config" ] 104 105 deps = [] 106 107 public_deps = [ "//third_party/wayland_standard:libwayland_server" ] 108} 109 110## Build libshared.a }}} 111 112## Build libweston.so {{{ 113config("libweston_config") { 114 visibility = [ ":*" ] 115 116 include_dirs = [ 117 "//third_party/weston/include", 118 "//third_party/wayland_standard/src", 119 "//third_party/wayland-ivi-extension_standard/include", 120 "//third_party/weston", 121 ] 122 123 cflags = [ 124 "-Wall", 125 "-Werror", 126 "-Wno-unused-parameter", 127 "-Wno-unused-function", 128 "-Wno-missing-field-initializers", 129 "-Wno-unused-variable", 130 "-Wno-implicit-function-declaration", 131 ] 132} 133 134config("libweston_public_config") { 135 include_dirs = [ 136 "include", 137 "libweston", 138 "libweston/backend-drm", # tde 139 ] 140} 141 142ohos_shared_library("libweston") { 143 sources = [ 144 "libweston/animation.c", 145 "libweston/bindings.c", 146 "libweston/clipboard.c", 147 "libweston/compositor.c", 148 "libweston/content-protection.c", 149 "libweston/data-device.c", 150 "libweston/input.c", 151 "libweston/launcher-direct.c", 152 "libweston/launcher-util.c", 153 "libweston/launcher-weston-launch.c", 154 "libweston/libinput-device.c", 155 "libweston/libinput-seat.c", 156 "libweston/linux-dmabuf.c", 157 "libweston/linux-explicit-synchronization.c", 158 "libweston/linux-sync-file.c", 159 "libweston/noop-renderer.c", 160 "libweston/pixel-formats.c", 161 "libweston/pixman-renderer.c", 162 "libweston/plugin-registry.c", 163 "libweston/screenshooter.c", 164 "libweston/tde-render-part.cpp", 165 "libweston/touch-calibration.c", 166 "libweston/vertex-clipping.c", 167 "libweston/weston-direct-display.c", 168 "libweston/zoom.c", 169 ] 170 171 configs = [ ":libweston_config" ] 172 173 public_configs = [ ":libweston_public_config" ] 174 175 deps = [ 176 ":trace", 177 ":weston_bytrace", 178 ":weston_content_protection_protocol", 179 ":weston_direct_display_protocol", 180 ":weston_touch_calibration_protocol", 181 "//third_party/libdrm:libdrm", 182 "//third_party/openGLES:libGLES", 183 "//third_party/wayland-protocols_standard:input_timestamps_unstable_v1_protocol", 184 "//third_party/wayland-protocols_standard:linux_dmabuf_unstable_v1_protocol", 185 "//third_party/wayland-protocols_standard:linux_explicit_synchronization_unstable_v1_protocol", 186 "//third_party/wayland-protocols_standard:pointer_constraints_unstable_v1_protocol", 187 "//third_party/wayland-protocols_standard:presentation_time_protocol", 188 "//third_party/wayland-protocols_standard:relative_pointer_unstable_v1_protocol", 189 "//third_party/wayland-protocols_standard:viewporter_protocol", 190 "//third_party/wayland-protocols_standard:xdg_output_unstable_v1_protocol", 191 "//utils/native/base:utils", 192 ] 193 194 public_deps = [ 195 ":libshared", 196 "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog", 197 "//drivers/peripheral/display/hdi_service/gralloc/client:hdi_gralloc_client", # tde 198 "//foundation/multimodalinput/input/patch/diff_libinput_mmi:libinput-third-mmi", 199 "//third_party/libxkbcommon:libxkbcommon", 200 "//third_party/pixman:libpixman", 201 ] 202 203 part_name = "graphic_standard" 204 subsystem_name = "graphic" 205} 206 207## Build libweston.so }}} 208 209## Build libexec_weston.a {{{ 210config("libexec_weston_config") { 211 visibility = [ ":*" ] 212 213 cflags = [ 214 "-Wall", 215 "-Werror", 216 "-Wno-unused-parameter", 217 "-Wno-missing-field-initializers", 218 "-Wno-unused-variable", 219 ] 220} 221 222config("libexec_weston_public_config") { 223 include_dirs = [] 224 225 cflags = [] 226} 227 228ohos_static_library("libexec_weston") { 229 sources = [ 230 "compositor/main.c", 231 "compositor/text-backend.c", 232 "compositor/weston-screenshooter.c", 233 ] 234 235 configs = [ ":libexec_weston_config" ] 236 237 public_configs = [ ":libexec_weston_public_config" ] 238 239 deps = [ 240 ":soft_vsync", 241 ":trace", 242 ":weston_screenshooter_protocol", 243 "//foundation/graphic/standard/frameworks/vsync:libvsync_module", 244 "//foundation/multimodalinput/input/patch/diff_libinput_mmi:libinput-third-mmi", 245 "//third_party/wayland-protocols_standard:input_method_unstable_v1_protocol", 246 "//third_party/wayland-protocols_standard:text_input_unstable_v1_protocol", 247 ] 248 249 public_deps = [ 250 ":libweston", 251 "//third_party/wayland_standard:wayland_core_protocol", 252 ] 253} 254 255## Build libexec_weston.a }}} 256 257## Build weston {{{ 258config("weston_config") { 259 visibility = [ ":*" ] 260 261 include_dirs = [] 262 263 cflags = [ 264 "-Wall", 265 "-Werror", 266 ] 267} 268 269config("weston_public_config") { 270 include_dirs = [] 271 272 cflags = [] 273} 274 275ohos_executable("weston") { 276 install_enable = true 277 278 sources = [ "compositor/executable.c" ] 279 280 configs = [ ":weston_config" ] 281 282 public_configs = [ ":weston_public_config" ] 283 284 deps = [ 285 ":libexec_weston", 286 ":trace", 287 ] 288 289 public_deps = [] 290 291 subsystem_name = "graphic" 292 part_name = "graphic_standard" 293} 294 295## Build weston }}} 296 297## Build libweston-desktop.so {{{ 298config("libweston-desktop_config") { 299 visibility = [ ":*" ] 300 301 include_dirs = [] 302 303 cflags = [ 304 "-Wall", 305 "-Werror", 306 "-Wno-unused-function", 307 ] 308} 309 310config("libweston-desktop_public_config") { 311 include_dirs = [ "include/libweston-desktop" ] 312 313 cflags = [] 314} 315 316ohos_shared_library("libweston-desktop") { 317 sources = [ 318 "libweston-desktop/client.c", 319 "libweston-desktop/libweston-desktop.c", 320 "libweston-desktop/seat.c", 321 "libweston-desktop/surface.c", 322 "libweston-desktop/wl-shell.c", 323 "libweston-desktop/xdg-shell-v6.c", 324 "libweston-desktop/xdg-shell.c", 325 ] 326 327 configs = [ ":libweston-desktop_config" ] 328 329 public_configs = [ ":libweston-desktop_public_config" ] 330 331 deps = [] 332 333 public_deps = [ 334 ":libexec_weston", 335 "//third_party/wayland-protocols_standard:xdg_shell_protocol", 336 "//third_party/wayland-protocols_standard:xdg_shell_unstable_v6_protocol", 337 ] 338 339 part_name = "graphic_standard" 340 subsystem_name = "graphic" 341} 342 343## Build libweston-desktop.so }}} 344 345## Build ivi-shell.so {{{ 346config("ivi-shell_config") { 347 visibility = [ ":*" ] 348 349 include_dirs = [] 350 351 cflags = [ 352 "-Wall", 353 "-Werror", 354 "-Wno-unused-function", 355 ] 356} 357 358config("ivi-shell_public_config") { 359 include_dirs = [] 360 361 cflags = [] 362} 363 364ohos_shared_library("ivi-shell") { 365 sources = [ 366 "ivi-shell/ivi-layout-transition.c", 367 "ivi-shell/ivi-layout.c", 368 "ivi-shell/ivi-shell.c", 369 ] 370 371 configs = [ ":ivi-shell_config" ] 372 373 public_configs = [ ":ivi-shell_public_config" ] 374 375 deps = [ 376 ":ivi_application_protocol", 377 ":libweston-desktop", 378 ":trace", 379 "//third_party/wayland_standard:wayland_core_protocol", 380 ] 381 382 public_deps = [] 383 384 subsystem_name = "graphic" 385 part_name = "graphic_standard" 386} 387 388## Build ivi-shell.so }}} 389 390# Build simple-dmabuf-egl-hos {{{ 391ohos_executable("simple-dmabuf-egl-hos") { 392 include_dirs = [ 393 ".", 394 "include", 395 "//third_party/wayland_standard/egl", 396 ] 397 398 cflags = [ "-Wno-incompatible-pointer-types" ] 399 400 sources = [ "clients/simple-dmabuf-egl-hos.c" ] 401 402 deps = [ 403 ":weston_direct_display_protocol", 404 "//foundation/graphic/standard:libgl", 405 "//foundation/graphic/standard/frameworks/wmserver:wms_protocol", 406 "//third_party/libdrm:libdrm", 407 "//third_party/wayland-protocols_standard:linux_dmabuf_unstable_v1_protocol", 408 "//third_party/wayland-protocols_standard:linux_explicit_synchronization_unstable_v1_protocol", 409 "//third_party/wayland_standard:libwayland_client", 410 "//third_party/wayland_standard:wayland_core_protocol", 411 ] 412 413 part_name = "graphic_standard" 414 subsystem_name = "graphic" 415} 416 417# Build simple-dmabuf-egl-hos }}} 418 419# Build simple-egl-hos {{{ 420ohos_executable("simple-egl-hos") { 421 include_dirs = [ 422 ".", 423 "include", 424 "//third_party/wayland_standard/egl", 425 ] 426 427 sources = [ "clients/simple-egl-hos.c" ] 428 429 cflags = [ 430 "-Wno-int-conversion", 431 "-Wno-incompatible-pointer-types", 432 ] 433 434 deps = [ 435 "//foundation/graphic/standard:libgl", 436 "//foundation/graphic/standard/frameworks/wmserver:wms_protocol", 437 "//third_party/wayland_standard:libwayland_client", 438 "//third_party/wayland_standard:wayland_core_protocol", 439 ] 440 441 part_name = "graphic_standard" 442 subsystem_name = "graphic" 443} 444 445# Build simple-egl-hos }}} 446 447## Build drm-backend.so {{{ 448config("drm-backend_config") { 449 visibility = [ ":*" ] 450 451 include_dirs = [ 452 "include", 453 "libweston/backend-drm/auth", 454 ] 455 456 cflags = [ 457 "-Wall", 458 "-Wno-error", 459 "-Wno-unused-parameter", 460 "-Wno-missing-field-initializers", 461 "-Wno-implicit-function-declaration", 462 "-Wno-unused-variable", 463 "-Wno-unused-function", 464 "-Wno-sometimes-uninitialized", 465 ] 466} 467 468ohos_shared_library("drm-backend") { 469 output_prefix_override = true 470 output_name = "drm-backend" 471 output_extension = "so" 472 473 sources = [ 474 "libweston/backend-drm/auth/wayland_drm_auth_server.c", 475 "libweston/backend-drm/drm.c", 476 "libweston/backend-drm/fb.c", 477 "libweston/backend-drm/kms.c", 478 "libweston/backend-drm/libbacklight.c", 479 "libweston/backend-drm/modes.c", 480 "libweston/backend-drm/state-helpers.c", 481 "libweston/backend-drm/state-propose.c", 482 ] 483 484 configs = [ ":drm-backend_config" ] 485 486 deps = [ 487 ":drm_auth_protocol", 488 ":libmix-renderer", 489 ":libweston", 490 ":soft_vsync", 491 ":trace", 492 "//foundation/graphic/standard:libgl", 493 "//foundation/graphic/standard/frameworks/vsync:libvsync_module", 494 "//third_party/libdrm:libdrm", 495 "//third_party/wayland-protocols_standard:linux_dmabuf_unstable_v1_protocol", 496 "//third_party/wayland-protocols_standard:presentation_time_protocol", 497 "//third_party/wayland-protocols_standard:relative_pointer_unstable_v1_protocol", 498 "//third_party/wayland_standard:wayland_core_protocol", 499 ] 500 501 part_name = "graphic_standard" 502 subsystem_name = "graphic" 503} 504 505## Build drm-backend.so }}} 506 507## Install weston.ini to /system/etc/weston.ini {{{ 508ohos_prebuilt_etc("weston.ini") { 509 source = "weston.ini" 510 part_name = "graphic_standard" 511 subsystem_name = "graphic" 512} 513 514## Install weston.ini to /system/etc/weston.ini }}} 515 516## Install weston.rc to /system/etc/init/weston.rc {{{ 517ohos_prebuilt_etc("weston.rc") { 518 if (use_musl) { 519 source = "weston.cfg" 520 } else { 521 source = "weston.rc" 522 } 523 relative_install_dir = "init" 524 part_name = "graphic_standard" 525 subsystem_name = "graphic" 526} 527 528## Install weston.rc to /system/etc/init/weston.rc }}} 529 530## Build trace.so {{{ 531config("trace_config") { 532 visibility = [ ":*" ] 533 534 cflags = [ 535 "-Wall", 536 "-Werror", 537 "-g3", 538 ] 539} 540 541config("trace_public_config") { 542 include_dirs = [ "libweston" ] 543} 544 545ohos_shared_library("trace") { 546 sources = [ "libweston/trace.cpp" ] 547 548 configs = [ ":trace_config" ] 549 550 public_configs = [ ":trace_public_config" ] 551 552 deps = [ "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog" ] 553 554 subsystem_name = "graphic" 555 part_name = "graphic_standard" 556} 557 558## Build trace.so }}} 559 560## Build soft_vsync.so {{{ 561config("soft_vsync_config") { 562 visibility = [ ":*" ] 563 564 cflags = [ 565 "-Wall", 566 "-Werror", 567 "-g3", 568 ] 569} 570 571config("soft_vsync_public_config") { 572 include_dirs = [ "libweston" ] 573} 574 575ohos_shared_library("soft_vsync") { 576 sources = [ "libweston/soft_vsync.cpp" ] 577 configs = [ ":soft_vsync_config" ] 578 public_configs = [ ":soft_vsync_public_config" ] 579 deps = [ 580 "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog", 581 "//foundation/graphic/standard/frameworks/vsync:libvsync_module", 582 ] 583 584 subsystem_name = "graphic" 585 part_name = "graphic_standard" 586} 587 588## Build soft_vsync.so }}} 589 590## Build hdi-backend.so {{{ 591config("hdi-backend_config") { 592 visibility = [ ":*" ] 593 594 cflags = [ 595 "-Wall", 596 "-Werror", 597 ] 598} 599 600ohos_shared_library("hdi-backend") { 601 output_prefix_override = true 602 output_name = "hdi-backend" 603 output_extension = "so" 604 605 sources = [ 606 "libweston/backend-hdi/hdi_backend.cpp", 607 "libweston/backend-hdi/hdi_head.cpp", 608 "libweston/backend-hdi/hdi_output.cpp", 609 "libweston/backend-hdi/hdi_renderer.cpp", 610 "libweston/backend-hdi/main.cpp", 611 ] 612 613 configs = [ ":hdi-backend_config" ] 614 615 deps = [ 616 ":libmix-renderer", 617 ":libweston", 618 ":soft_vsync", 619 ":trace", 620 "//drivers/peripheral/display/hal:hdi_display_device", 621 "//drivers/peripheral/display/hdi_service/gralloc/client:hdi_gralloc_client", 622 "//foundation/graphic/standard:libgraphic_dumper_client", 623 "//foundation/graphic/standard/frameworks/vsync:libvsync_module", 624 "//third_party/libdrm:libdrm", 625 "//third_party/wayland-protocols_standard:linux_dmabuf_unstable_v1_protocol", 626 "//third_party/wayland_standard:wayland_core_protocol", 627 "//utils/native/base:utils", 628 ] 629 630 part_name = "graphic_standard" 631 subsystem_name = "graphic" 632} 633 634## Build hdi-backend.so }}} 635 636## Build weston_bytrace.so {{{ 637config("weston_bytrace_config") { 638 visibility = [ ":*" ] 639 640 cflags = [ 641 "-Wall", 642 "-Werror", 643 "-g3", 644 ] 645} 646 647config("weston_bytrace_public_config") { 648 include_dirs = [ "." ] 649} 650 651ohos_static_library("weston_bytrace") { 652 sources = [ "libweston/weston_bytrace.cpp" ] 653 654 configs = [ ":weston_bytrace_config" ] 655 656 public_configs = [ ":weston_bytrace_public_config" ] 657 658 deps = [ 659 "//developtools/bytrace_standard/interfaces/innerkits/native:bytrace_core", 660 ] 661} 662 663## Build weston_bytrace.so }}} 664 665### Build gl-renderer.so {{{ 666config("gl-renderer_config") { 667 visibility = [ ":*" ] 668 669 include_dirs = [ "//third_party/wayland_standard/egl" ] 670 671 cflags = [ 672 "-Wno-return-type", 673 "-Wno-visibility", 674 "-Wno-unused-function", 675 "-Wno-implicit-fallthrough", 676 ] 677} 678 679ohos_shared_library("gl-renderer") { 680 output_prefix_override = true 681 output_name = "gl-renderer" 682 output_extension = "so" 683 684 sources = [ 685 "libweston/renderer-gl/egl-glue.c", 686 "libweston/renderer-gl/gl-renderer.c", 687 ] 688 689 configs = [ ":gl-renderer_config" ] 690 691 deps = [ 692 ":libweston", 693 "//foundation/graphic/standard:libgl", 694 "//third_party/libdrm:libdrm", 695 "//third_party/wayland-protocols_standard:linux_dmabuf_unstable_v1_protocol", 696 ] 697 698 part_name = "graphic_standard" 699 subsystem_name = "graphic" 700} 701 702### Build gl-renderer.so }}} 703 704### Build libmix-renderer.z.so {{{ 705config("libmix-renderer_config") { 706 visibility = [ ":*" ] 707 708 cflags = [ 709 "-Wall", 710 "-Werror", 711 "-g3", 712 ] 713} 714 715config("libmix-renderer_public_config") { 716 include_dirs = [ "libweston/renderer-mix" ] 717} 718 719ohos_shared_library("libmix-renderer") { 720 sources = [ "libweston/renderer-mix/mix_renderer.cpp" ] 721 722 configs = [ ":libmix-renderer_config" ] 723 724 public_configs = [ ":libmix-renderer_public_config" ] 725 726 deps = [ 727 ":libweston", 728 ":trace", 729 ] 730 731 part_name = "graphic_standard" 732 subsystem_name = "graphic" 733} 734## Build libmix-renderer.z.so }}} 735