# Copyright (c) 2021 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import("//build/ohos.gni") import("//foundation/graphic/standard/graphic_config.gni") import("//third_party/wayland_standard/wayland_protocol.gni") group("default") { public_deps = [ ":drm-backend", ":hdi-backend", ":ivi-shell", ":weston", ":weston.ini", ":weston.rc", ] } weston_defines = [] set_defaults("ohos_shared_library") { defines = weston_defines } set_defaults("ohos_static_library") { defines = weston_defines } set_defaults("ohos_executable") { defines = weston_defines } ## Generate Wayland Protocols {{{ wayland_protocol("text_cursor_position_protocol") { sources = [ "protocol/text-cursor-position.xml" ] } wayland_protocol("weston_content_protection_protocol") { sources = [ "protocol/weston-content-protection.xml" ] } wayland_protocol("weston_touch_calibration_protocol") { sources = [ "protocol/weston-touch-calibration.xml" ] } wayland_protocol("weston_direct_display_protocol") { sources = [ "protocol/weston-direct-display.xml" ] } wayland_protocol("weston_screenshooter_protocol") { sources = [ "protocol/weston-screenshooter.xml" ] } wayland_protocol("ivi_application_protocol") { sources = [ "protocol/ivi-application.xml" ] } wayland_protocol("drm_auth_protocol") { sources = [ "protocol/drm-auth.xml" ] } ## Generate Wayland Protocols }}} ## Build libshared.a {{{ config("libshared_config") { visibility = [ ":*" ] include_dirs = [ "include", "//third_party/wayland_standard/src", "//third_party/wayland-ivi-extension_standard/include", ] cflags = [ "-Wall", "-Werror", "-Wno-unused-parameter", ] } config("libshared_public_config") { include_dirs = [ # "shared", ".", ] } ohos_static_library("libshared") { sources = [ "shared/config-parser.c", "shared/file-util.c", "shared/matrix.c", "shared/option-parser.c", "shared/os-compatibility.c", ] configs = [ ":libshared_config" ] public_configs = [ ":libshared_public_config" ] deps = [] public_deps = [ "//third_party/wayland_standard:libwayland_server" ] } ## Build libshared.a }}} ## Build libweston.so {{{ config("libweston_config") { visibility = [ ":*" ] include_dirs = [ "//third_party/weston/include", "//third_party/wayland_standard/src", "//third_party/wayland-ivi-extension_standard/include", "//third_party/weston", ] cflags = [ "-Wall", "-Werror", "-Wno-unused-parameter", "-Wno-unused-function", "-Wno-missing-field-initializers", "-Wno-unused-variable", "-Wno-implicit-function-declaration", ] } config("libweston_public_config") { include_dirs = [ "include", "libweston", "libweston/backend-drm", # tde ] } ohos_shared_library("libweston") { sources = [ "libweston/animation.c", "libweston/bindings.c", "libweston/clipboard.c", "libweston/compositor.c", "libweston/content-protection.c", "libweston/data-device.c", "libweston/input.c", "libweston/launcher-direct.c", "libweston/launcher-util.c", "libweston/launcher-weston-launch.c", "libweston/libinput-device.c", "libweston/libinput-seat.c", "libweston/linux-dmabuf.c", "libweston/linux-explicit-synchronization.c", "libweston/linux-sync-file.c", "libweston/noop-renderer.c", "libweston/pixel-formats.c", "libweston/pixman-renderer.c", "libweston/plugin-registry.c", "libweston/screenshooter.c", "libweston/tde-render-part.cpp", "libweston/touch-calibration.c", "libweston/vertex-clipping.c", "libweston/weston-direct-display.c", "libweston/zoom.c", ] configs = [ ":libweston_config" ] public_configs = [ ":libweston_public_config" ] deps = [ ":trace", ":weston_bytrace", ":weston_content_protection_protocol", ":weston_direct_display_protocol", ":weston_touch_calibration_protocol", "//third_party/libdrm:libdrm", "//third_party/openGLES:libGLES", "//third_party/wayland-protocols_standard:input_timestamps_unstable_v1_protocol", "//third_party/wayland-protocols_standard:linux_dmabuf_unstable_v1_protocol", "//third_party/wayland-protocols_standard:linux_explicit_synchronization_unstable_v1_protocol", "//third_party/wayland-protocols_standard:pointer_constraints_unstable_v1_protocol", "//third_party/wayland-protocols_standard:presentation_time_protocol", "//third_party/wayland-protocols_standard:relative_pointer_unstable_v1_protocol", "//third_party/wayland-protocols_standard:viewporter_protocol", "//third_party/wayland-protocols_standard:xdg_output_unstable_v1_protocol", "//utils/native/base:utils", ] public_deps = [ ":libshared", "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog", "//drivers/peripheral/display/hdi_service/gralloc/client:hdi_gralloc_client", # tde "//foundation/multimodalinput/input/patch/diff_libinput_mmi:libinput-third-mmi", "//third_party/libxkbcommon:libxkbcommon", "//third_party/pixman:libpixman", ] part_name = "graphic_standard" subsystem_name = "graphic" } ## Build libweston.so }}} ## Build libexec_weston.a {{{ config("libexec_weston_config") { visibility = [ ":*" ] cflags = [ "-Wall", "-Werror", "-Wno-unused-parameter", "-Wno-missing-field-initializers", "-Wno-unused-variable", ] } config("libexec_weston_public_config") { include_dirs = [] cflags = [] } ohos_static_library("libexec_weston") { sources = [ "compositor/main.c", "compositor/text-backend.c", "compositor/weston-screenshooter.c", ] configs = [ ":libexec_weston_config" ] public_configs = [ ":libexec_weston_public_config" ] deps = [ ":soft_vsync", ":trace", ":weston_screenshooter_protocol", "//foundation/graphic/standard/frameworks/vsync:libvsync_module", "//foundation/multimodalinput/input/patch/diff_libinput_mmi:libinput-third-mmi", "//third_party/wayland-protocols_standard:input_method_unstable_v1_protocol", "//third_party/wayland-protocols_standard:text_input_unstable_v1_protocol", ] public_deps = [ ":libweston", "//third_party/wayland_standard:wayland_core_protocol", ] } ## Build libexec_weston.a }}} ## Build weston {{{ config("weston_config") { visibility = [ ":*" ] include_dirs = [] cflags = [ "-Wall", "-Werror", ] } config("weston_public_config") { include_dirs = [] cflags = [] } ohos_executable("weston") { install_enable = true sources = [ "compositor/executable.c" ] configs = [ ":weston_config" ] public_configs = [ ":weston_public_config" ] deps = [ ":libexec_weston", ":trace", ] public_deps = [] subsystem_name = "graphic" part_name = "graphic_standard" } ## Build weston }}} ## Build libweston-desktop.so {{{ config("libweston-desktop_config") { visibility = [ ":*" ] include_dirs = [] cflags = [ "-Wall", "-Werror", "-Wno-unused-function", ] } config("libweston-desktop_public_config") { include_dirs = [ "include/libweston-desktop" ] cflags = [] } ohos_shared_library("libweston-desktop") { sources = [ "libweston-desktop/client.c", "libweston-desktop/libweston-desktop.c", "libweston-desktop/seat.c", "libweston-desktop/surface.c", "libweston-desktop/wl-shell.c", "libweston-desktop/xdg-shell-v6.c", "libweston-desktop/xdg-shell.c", ] configs = [ ":libweston-desktop_config" ] public_configs = [ ":libweston-desktop_public_config" ] deps = [] public_deps = [ ":libexec_weston", "//third_party/wayland-protocols_standard:xdg_shell_protocol", "//third_party/wayland-protocols_standard:xdg_shell_unstable_v6_protocol", ] part_name = "graphic_standard" subsystem_name = "graphic" } ## Build libweston-desktop.so }}} ## Build ivi-shell.so {{{ config("ivi-shell_config") { visibility = [ ":*" ] include_dirs = [] cflags = [ "-Wall", "-Werror", "-Wno-unused-function", ] } config("ivi-shell_public_config") { include_dirs = [] cflags = [] } ohos_shared_library("ivi-shell") { sources = [ "ivi-shell/ivi-layout-transition.c", "ivi-shell/ivi-layout.c", "ivi-shell/ivi-shell.c", ] configs = [ ":ivi-shell_config" ] public_configs = [ ":ivi-shell_public_config" ] deps = [ ":ivi_application_protocol", ":libweston-desktop", ":trace", "//third_party/wayland_standard:wayland_core_protocol", ] public_deps = [] subsystem_name = "graphic" part_name = "graphic_standard" } ## Build ivi-shell.so }}} # Build simple-dmabuf-egl-hos {{{ ohos_executable("simple-dmabuf-egl-hos") { include_dirs = [ ".", "include", "//third_party/wayland_standard/egl", ] cflags = [ "-Wno-incompatible-pointer-types" ] sources = [ "clients/simple-dmabuf-egl-hos.c" ] deps = [ ":weston_direct_display_protocol", "//foundation/graphic/standard:libgl", "//foundation/graphic/standard/frameworks/wmserver:wms_protocol", "//third_party/libdrm:libdrm", "//third_party/wayland-protocols_standard:linux_dmabuf_unstable_v1_protocol", "//third_party/wayland-protocols_standard:linux_explicit_synchronization_unstable_v1_protocol", "//third_party/wayland_standard:libwayland_client", "//third_party/wayland_standard:wayland_core_protocol", ] part_name = "graphic_standard" subsystem_name = "graphic" } # Build simple-dmabuf-egl-hos }}} # Build simple-egl-hos {{{ ohos_executable("simple-egl-hos") { include_dirs = [ ".", "include", "//third_party/wayland_standard/egl", ] sources = [ "clients/simple-egl-hos.c" ] cflags = [ "-Wno-int-conversion", "-Wno-incompatible-pointer-types", ] deps = [ "//foundation/graphic/standard:libgl", "//foundation/graphic/standard/frameworks/wmserver:wms_protocol", "//third_party/wayland_standard:libwayland_client", "//third_party/wayland_standard:wayland_core_protocol", ] part_name = "graphic_standard" subsystem_name = "graphic" } # Build simple-egl-hos }}} ## Build drm-backend.so {{{ config("drm-backend_config") { visibility = [ ":*" ] include_dirs = [ "include", "libweston/backend-drm/auth", ] cflags = [ "-Wall", "-Wno-error", "-Wno-unused-parameter", "-Wno-missing-field-initializers", "-Wno-implicit-function-declaration", "-Wno-unused-variable", "-Wno-unused-function", "-Wno-sometimes-uninitialized", ] } ohos_shared_library("drm-backend") { output_prefix_override = true output_name = "drm-backend" output_extension = "so" sources = [ "libweston/backend-drm/auth/wayland_drm_auth_server.c", "libweston/backend-drm/drm.c", "libweston/backend-drm/fb.c", "libweston/backend-drm/kms.c", "libweston/backend-drm/libbacklight.c", "libweston/backend-drm/modes.c", "libweston/backend-drm/state-helpers.c", "libweston/backend-drm/state-propose.c", ] configs = [ ":drm-backend_config" ] deps = [ ":drm_auth_protocol", ":libmix-renderer", ":libweston", ":soft_vsync", ":trace", "//foundation/graphic/standard:libgl", "//foundation/graphic/standard/frameworks/vsync:libvsync_module", "//third_party/libdrm:libdrm", "//third_party/wayland-protocols_standard:linux_dmabuf_unstable_v1_protocol", "//third_party/wayland-protocols_standard:presentation_time_protocol", "//third_party/wayland-protocols_standard:relative_pointer_unstable_v1_protocol", "//third_party/wayland_standard:wayland_core_protocol", ] part_name = "graphic_standard" subsystem_name = "graphic" } ## Build drm-backend.so }}} ## Install weston.ini to /system/etc/weston.ini {{{ ohos_prebuilt_etc("weston.ini") { source = "weston.ini" part_name = "graphic_standard" subsystem_name = "graphic" } ## Install weston.ini to /system/etc/weston.ini }}} ## Install weston.rc to /system/etc/init/weston.rc {{{ ohos_prebuilt_etc("weston.rc") { if (use_musl) { source = "weston.cfg" } else { source = "weston.rc" } relative_install_dir = "init" part_name = "graphic_standard" subsystem_name = "graphic" } ## Install weston.rc to /system/etc/init/weston.rc }}} ## Build trace.so {{{ config("trace_config") { visibility = [ ":*" ] cflags = [ "-Wall", "-Werror", "-g3", ] } config("trace_public_config") { include_dirs = [ "libweston" ] } ohos_shared_library("trace") { sources = [ "libweston/trace.cpp" ] configs = [ ":trace_config" ] public_configs = [ ":trace_public_config" ] deps = [ "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog" ] subsystem_name = "graphic" part_name = "graphic_standard" } ## Build trace.so }}} ## Build soft_vsync.so {{{ config("soft_vsync_config") { visibility = [ ":*" ] cflags = [ "-Wall", "-Werror", "-g3", ] } config("soft_vsync_public_config") { include_dirs = [ "libweston" ] } ohos_shared_library("soft_vsync") { sources = [ "libweston/soft_vsync.cpp" ] configs = [ ":soft_vsync_config" ] public_configs = [ ":soft_vsync_public_config" ] deps = [ "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog", "//foundation/graphic/standard/frameworks/vsync:libvsync_module", ] subsystem_name = "graphic" part_name = "graphic_standard" } ## Build soft_vsync.so }}} ## Build hdi-backend.so {{{ config("hdi-backend_config") { visibility = [ ":*" ] cflags = [ "-Wall", "-Werror", ] } ohos_shared_library("hdi-backend") { output_prefix_override = true output_name = "hdi-backend" output_extension = "so" sources = [ "libweston/backend-hdi/hdi_backend.cpp", "libweston/backend-hdi/hdi_head.cpp", "libweston/backend-hdi/hdi_output.cpp", "libweston/backend-hdi/hdi_renderer.cpp", "libweston/backend-hdi/main.cpp", ] configs = [ ":hdi-backend_config" ] deps = [ ":libmix-renderer", ":libweston", ":soft_vsync", ":trace", "//drivers/peripheral/display/hal:hdi_display_device", "//drivers/peripheral/display/hdi_service/gralloc/client:hdi_gralloc_client", "//foundation/graphic/standard:libgraphic_dumper_client", "//foundation/graphic/standard/frameworks/vsync:libvsync_module", "//third_party/libdrm:libdrm", "//third_party/wayland-protocols_standard:linux_dmabuf_unstable_v1_protocol", "//third_party/wayland_standard:wayland_core_protocol", "//utils/native/base:utils", ] part_name = "graphic_standard" subsystem_name = "graphic" } ## Build hdi-backend.so }}} ## Build weston_bytrace.so {{{ config("weston_bytrace_config") { visibility = [ ":*" ] cflags = [ "-Wall", "-Werror", "-g3", ] } config("weston_bytrace_public_config") { include_dirs = [ "." ] } ohos_static_library("weston_bytrace") { sources = [ "libweston/weston_bytrace.cpp" ] configs = [ ":weston_bytrace_config" ] public_configs = [ ":weston_bytrace_public_config" ] deps = [ "//developtools/bytrace_standard/interfaces/innerkits/native:bytrace_core", ] } ## Build weston_bytrace.so }}} ### Build gl-renderer.so {{{ config("gl-renderer_config") { visibility = [ ":*" ] include_dirs = [ "//third_party/wayland_standard/egl" ] cflags = [ "-Wno-return-type", "-Wno-visibility", "-Wno-unused-function", "-Wno-implicit-fallthrough", ] } ohos_shared_library("gl-renderer") { output_prefix_override = true output_name = "gl-renderer" output_extension = "so" sources = [ "libweston/renderer-gl/egl-glue.c", "libweston/renderer-gl/gl-renderer.c", ] configs = [ ":gl-renderer_config" ] deps = [ ":libweston", "//foundation/graphic/standard:libgl", "//third_party/libdrm:libdrm", "//third_party/wayland-protocols_standard:linux_dmabuf_unstable_v1_protocol", ] part_name = "graphic_standard" subsystem_name = "graphic" } ### Build gl-renderer.so }}} ### Build libmix-renderer.z.so {{{ config("libmix-renderer_config") { visibility = [ ":*" ] cflags = [ "-Wall", "-Werror", "-g3", ] } config("libmix-renderer_public_config") { include_dirs = [ "libweston/renderer-mix" ] } ohos_shared_library("libmix-renderer") { sources = [ "libweston/renderer-mix/mix_renderer.cpp" ] configs = [ ":libmix-renderer_config" ] public_configs = [ ":libmix-renderer_public_config" ] deps = [ ":libweston", ":trace", ] part_name = "graphic_standard" subsystem_name = "graphic" } ## Build libmix-renderer.z.so }}}