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