1e0dac50fSopenharmony_ci# Copyright (c) 2022-2024 Huawei Device Co., Ltd.
2e0dac50fSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3e0dac50fSopenharmony_ci# you may not use this file except in compliance with the License.
4e0dac50fSopenharmony_ci# You may obtain a copy of the License at
5e0dac50fSopenharmony_ci#
6e0dac50fSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
7e0dac50fSopenharmony_ci#
8e0dac50fSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9e0dac50fSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10e0dac50fSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11e0dac50fSopenharmony_ci# See the License for the specific language governing permissions and
12e0dac50fSopenharmony_ci# limitations under the License.
13e0dac50fSopenharmony_ci
14e0dac50fSopenharmony_ciimport("//build/ohos.gni")
15e0dac50fSopenharmony_ciimport("../windowmanager_aafwk.gni")
16e0dac50fSopenharmony_ci
17e0dac50fSopenharmony_ciispreview = false
18e0dac50fSopenharmony_ciif (is_mingw || is_mac || is_linux) {
19e0dac50fSopenharmony_ci  ispreview = true
20e0dac50fSopenharmony_ci}
21e0dac50fSopenharmony_ciif (!ispreview) {
22e0dac50fSopenharmony_ci  group("previewer_window") {
23e0dac50fSopenharmony_ci  }
24e0dac50fSopenharmony_ci
25e0dac50fSopenharmony_ci  group("previewer_window_napi") {
26e0dac50fSopenharmony_ci  }
27e0dac50fSopenharmony_ci} else {
28e0dac50fSopenharmony_ci  if (current_os == "mac") {
29e0dac50fSopenharmony_ci    suffix = ".dylib"
30e0dac50fSopenharmony_ci  } else if (current_os == "linux") {
31e0dac50fSopenharmony_ci    suffix = ".so"
32e0dac50fSopenharmony_ci  } else if (current_os == "mingw") {
33e0dac50fSopenharmony_ci    suffix = ".dll"
34e0dac50fSopenharmony_ci  }
35e0dac50fSopenharmony_ci
36e0dac50fSopenharmony_ci  config("previewer_window_config") {
37e0dac50fSopenharmony_ci    visibility = [ "*:*" ]
38e0dac50fSopenharmony_ci    visibility += [
39e0dac50fSopenharmony_ci      "${graphic_base_path}/graphic_2d/rosen/modules/platform/image_native",
40e0dac50fSopenharmony_ci      "${graphic_base_path}/graphic_2d/rosen/modules/platform/ipc_core",
41e0dac50fSopenharmony_ci      "${graphic_base_path}/graphic_2d/rosen/modules/platform/utils",
42e0dac50fSopenharmony_ci    ]
43e0dac50fSopenharmony_ci
44e0dac50fSopenharmony_ci    include_dirs = [
45e0dac50fSopenharmony_ci      "include",
46e0dac50fSopenharmony_ci      "../utils/include",
47e0dac50fSopenharmony_ci      "${graphic_base_path}/graphic_2d/rosen/modules/platform/utils",
48e0dac50fSopenharmony_ci      "${graphic_base_path}/graphic_2d/rosen/modules/platform/ipc_core",
49e0dac50fSopenharmony_ci      "${graphic_base_path}/graphic_2d/rosen/modules/platform/image_native",
50e0dac50fSopenharmony_ci      "${window_base_path}/interfaces/innerkits/wm",
51e0dac50fSopenharmony_ci    ]
52e0dac50fSopenharmony_ci  }
53e0dac50fSopenharmony_ci
54e0dac50fSopenharmony_ci  ohos_shared_library("previewer_window") {
55e0dac50fSopenharmony_ci    libs = []
56e0dac50fSopenharmony_ci
57e0dac50fSopenharmony_ci    public_configs = [
58e0dac50fSopenharmony_ci      ":previewer_window_config",
59e0dac50fSopenharmony_ci      "${ability_runtime_path}/frameworks/simulator/common:ability_simulator_common_config",
60e0dac50fSopenharmony_ci    ]
61e0dac50fSopenharmony_ci    sources = [
62e0dac50fSopenharmony_ci      "../utils/src/window_transition_info.cpp",
63e0dac50fSopenharmony_ci      "../utils/src/wm_math.cpp",
64e0dac50fSopenharmony_ci      "src/vsync_station.cpp",
65e0dac50fSopenharmony_ci      "src/window.cpp",
66e0dac50fSopenharmony_ci      "src/window_display.cpp",
67e0dac50fSopenharmony_ci      "src/window_impl.cpp",
68e0dac50fSopenharmony_ci      "src/window_model.cpp",
69e0dac50fSopenharmony_ci      "src/window_option.cpp",
70e0dac50fSopenharmony_ci      "src/window_scene.cpp",
71e0dac50fSopenharmony_ci    ]
72e0dac50fSopenharmony_ci
73e0dac50fSopenharmony_ci    include_dirs = [
74e0dac50fSopenharmony_ci      "include",
75e0dac50fSopenharmony_ci      "${arkui_path}/ace_engine/adapter/preview/external/multimodalinput",
76e0dac50fSopenharmony_ci      "${arkui_path}/ace_engine/",
77e0dac50fSopenharmony_ci      "mock",
78e0dac50fSopenharmony_ci      "../utils/include",
79e0dac50fSopenharmony_ci      "${ide_previewer_external_path}",
80e0dac50fSopenharmony_ci    ]
81e0dac50fSopenharmony_ci    public_deps = [
82e0dac50fSopenharmony_ci      "${graphic_base_path}/graphic_2d/rosen/modules/platform:ipc_core",
83e0dac50fSopenharmony_ci      "${graphic_base_path}/graphic_2d/rosen/modules/platform:utils",
84e0dac50fSopenharmony_ci    ]
85e0dac50fSopenharmony_ci
86e0dac50fSopenharmony_ci    external_deps = [
87e0dac50fSopenharmony_ci      "ace_engine:ace_uicontent",
88e0dac50fSopenharmony_ci      "graphic_2d:librender_service_client",
89e0dac50fSopenharmony_ci      "hilog:libhilog",
90e0dac50fSopenharmony_ci    ]
91e0dac50fSopenharmony_ci
92e0dac50fSopenharmony_ci    cflags = [ "-std=c++11" ]
93e0dac50fSopenharmony_ci    part_name = "window_manager"
94e0dac50fSopenharmony_ci    subsystem_name = "window"
95e0dac50fSopenharmony_ci  }
96e0dac50fSopenharmony_ci
97e0dac50fSopenharmony_ci  config("previewer_window_napi_config") {
98e0dac50fSopenharmony_ci    visibility = [ ":*" ]
99e0dac50fSopenharmony_ci
100e0dac50fSopenharmony_ci    include_dirs = [
101e0dac50fSopenharmony_ci      "../interfaces/kits/napi/window_runtime/window_napi",
102e0dac50fSopenharmony_ci      "../interfaces/kits/napi/window_runtime/window_stage_napi",
103e0dac50fSopenharmony_ci    ]
104e0dac50fSopenharmony_ci  }
105e0dac50fSopenharmony_ci
106e0dac50fSopenharmony_ci  ohos_shared_library("previewer_window_napi") {
107e0dac50fSopenharmony_ci    public_configs = [ ":previewer_window_napi_config" ]
108e0dac50fSopenharmony_ci
109e0dac50fSopenharmony_ci    libs = []
110e0dac50fSopenharmony_ci
111e0dac50fSopenharmony_ci    sources = [
112e0dac50fSopenharmony_ci      "${ability_runtime_path}/frameworks/simulator/ability_simulator/src/js_runtime_utils.cpp",
113e0dac50fSopenharmony_ci      "../interfaces/kits/napi/window_runtime/window_napi/js_window.cpp",
114e0dac50fSopenharmony_ci      "../interfaces/kits/napi/window_runtime/window_napi/js_window_utils.cpp",
115e0dac50fSopenharmony_ci      "../interfaces/kits/napi/window_runtime/window_stage_napi/js_window_stage.cpp",
116e0dac50fSopenharmony_ci
117e0dac50fSopenharmony_ci      # mock
118e0dac50fSopenharmony_ci      "mock/js_transition_controller.cpp",
119e0dac50fSopenharmony_ci      "mock/js_window_listener.cpp",
120e0dac50fSopenharmony_ci      "mock/js_window_register_manager.cpp",
121e0dac50fSopenharmony_ci      "mock/permission.cpp",
122e0dac50fSopenharmony_ci      "mock/pixel_map_napi.cpp",
123e0dac50fSopenharmony_ci      "mock/window_manager_napi/js_window_manager.cpp",
124e0dac50fSopenharmony_ci      "mock/window_manager_napi/window_manager_module.cpp",
125e0dac50fSopenharmony_ci    ]
126e0dac50fSopenharmony_ci
127e0dac50fSopenharmony_ci    include_dirs = [
128e0dac50fSopenharmony_ci      ".",
129e0dac50fSopenharmony_ci      "include",
130e0dac50fSopenharmony_ci      "../utils/include",
131e0dac50fSopenharmony_ci      "mock",
132e0dac50fSopenharmony_ci      "${ability_runtime_path}/interfaces/inner_api/runtime/include",
133e0dac50fSopenharmony_ci    ]
134e0dac50fSopenharmony_ci
135e0dac50fSopenharmony_ci    deps = [
136e0dac50fSopenharmony_ci      ":previewer_window",
137e0dac50fSopenharmony_ci      "${graphic_base_path}/graphic_2d/rosen/modules/platform:eventhandler",
138e0dac50fSopenharmony_ci      "${graphic_base_path}/graphic_2d/rosen/modules/platform:utils",
139e0dac50fSopenharmony_ci    ]
140e0dac50fSopenharmony_ci
141e0dac50fSopenharmony_ci    external_deps = [
142e0dac50fSopenharmony_ci      "ace_engine:ace_uicontent",
143e0dac50fSopenharmony_ci      "hilog:libhilog",
144e0dac50fSopenharmony_ci      "napi:ace_napi",
145e0dac50fSopenharmony_ci    ]
146e0dac50fSopenharmony_ci
147e0dac50fSopenharmony_ci    cflags_cc = [ "-DWINDOW_PREVIEW" ]
148e0dac50fSopenharmony_ci    cflags = [ "-std=c++11" ]
149e0dac50fSopenharmony_ci
150e0dac50fSopenharmony_ci    part_name = "window_manager"
151e0dac50fSopenharmony_ci    subsystem_name = "window"
152e0dac50fSopenharmony_ci  }
153e0dac50fSopenharmony_ci
154e0dac50fSopenharmony_ci  ohos_copy("window_stage_copy_modules") {
155e0dac50fSopenharmony_ci    deps = []
156e0dac50fSopenharmony_ci    sources = []
157e0dac50fSopenharmony_ci    napi_modules = [ "window_stage_modules:windowstage" ]
158e0dac50fSopenharmony_ci
159e0dac50fSopenharmony_ci    foreach(module, napi_modules) {
160e0dac50fSopenharmony_ci      deps += [ module ]
161e0dac50fSopenharmony_ci      out_path = get_label_info(module, "root_out_dir")
162e0dac50fSopenharmony_ci      out_name = get_label_info(module, "name")
163e0dac50fSopenharmony_ci      sources += [ out_path + "/window/window_manager/lib" + out_name + suffix ]
164e0dac50fSopenharmony_ci    }
165e0dac50fSopenharmony_ci
166e0dac50fSopenharmony_ci    target_path = get_label_info(":copy_previewer_library", "target_out_dir")
167e0dac50fSopenharmony_ci
168e0dac50fSopenharmony_ci    outputs =
169e0dac50fSopenharmony_ci        [ target_path +
170e0dac50fSopenharmony_ci          "/previewer/common/bin/module/application/{{source_file_part}}" ]
171e0dac50fSopenharmony_ci    part_name = "window_manager"
172e0dac50fSopenharmony_ci    subsystem_name = "window"
173e0dac50fSopenharmony_ci  }
174e0dac50fSopenharmony_ci  ohos_copy("copy_previewer_library") {
175e0dac50fSopenharmony_ci    shared_library_path = get_label_info(":previewer_window", "root_out_dir")
176e0dac50fSopenharmony_ci    sources = [ shared_library_path +
177e0dac50fSopenharmony_ci                "/window/window_manager/libpreviewer_window" + suffix ]
178e0dac50fSopenharmony_ci    deps = [ ":previewer_window" ]
179e0dac50fSopenharmony_ci
180e0dac50fSopenharmony_ci    if (current_os == "mingw" || current_os == "mac") {
181e0dac50fSopenharmony_ci      deps += [ ":window_stage_copy_modules" ]
182e0dac50fSopenharmony_ci      shared_library_path =
183e0dac50fSopenharmony_ci          get_label_info(":previewer_window_napi", "root_out_dir")
184e0dac50fSopenharmony_ci      sources += [ shared_library_path +
185e0dac50fSopenharmony_ci                   "/window/window_manager/libpreviewer_window_napi" + suffix ]
186e0dac50fSopenharmony_ci      deps += [ ":previewer_window_napi" ]
187e0dac50fSopenharmony_ci    }
188e0dac50fSopenharmony_ci
189e0dac50fSopenharmony_ci    outputs = [ target_out_dir + "/previewer/common/bin/{{source_file_part}}" ]
190e0dac50fSopenharmony_ci    module_source_dir = target_out_dir + "/previewer/common/bin/"
191e0dac50fSopenharmony_ci    module_install_name = ""
192e0dac50fSopenharmony_ci
193e0dac50fSopenharmony_ci    part_name = "window_manager"
194e0dac50fSopenharmony_ci    subsystem_name = "window"
195e0dac50fSopenharmony_ci  }
196e0dac50fSopenharmony_ci}
197