1e509ee18Sopenharmony_ci# Copyright (C) 2021-2023 Huawei Device Co., Ltd.
2e509ee18Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3e509ee18Sopenharmony_ci# you may not use this file except in compliance with the License.
4e509ee18Sopenharmony_ci# You may obtain a copy of the License at
5e509ee18Sopenharmony_ci#
6e509ee18Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0
7e509ee18Sopenharmony_ci#
8e509ee18Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9e509ee18Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10e509ee18Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11e509ee18Sopenharmony_ci# See the License for the specific language governing permissions and
12e509ee18Sopenharmony_ci# limitations under the License.
13e509ee18Sopenharmony_ci
14e509ee18Sopenharmony_ciimport("$build_root/templates/cxx/cxx.gni")
15e509ee18Sopenharmony_ci
16e509ee18Sopenharmony_citemplate("ohos_prebuilt_executable") {
17e509ee18Sopenharmony_ci  assert(defined(invoker.source), "source must be defined for ${target_name}.")
18e509ee18Sopenharmony_ci
19e509ee18Sopenharmony_ci  if (defined(invoker.output)) {
20e509ee18Sopenharmony_ci    _copy_output = "${target_out_dir}/${invoker.output}"
21e509ee18Sopenharmony_ci  } else {
22e509ee18Sopenharmony_ci    _copy_output = "${target_out_dir}/${invoker.source}"
23e509ee18Sopenharmony_ci  }
24e509ee18Sopenharmony_ci
25e509ee18Sopenharmony_ci  if (!defined(invoker.deps)) {
26e509ee18Sopenharmony_ci    invoker.deps = []
27e509ee18Sopenharmony_ci  }
28e509ee18Sopenharmony_ci
29e509ee18Sopenharmony_ci  if (!defined(invoker.stable)) {
30e509ee18Sopenharmony_ci    invoker.stable = false
31e509ee18Sopenharmony_ci  }
32e509ee18Sopenharmony_ci
33e509ee18Sopenharmony_ci  deps_info = []
34e509ee18Sopenharmony_ci  foreach(dep, invoker.deps) {
35e509ee18Sopenharmony_ci    info = {
36e509ee18Sopenharmony_ci    }
37e509ee18Sopenharmony_ci    info = {
38e509ee18Sopenharmony_ci      target_out_dir =
39e509ee18Sopenharmony_ci          rebase_path(get_label_info(dep, "target_out_dir"), root_build_dir)
40e509ee18Sopenharmony_ci      target_name = get_label_info(dep, "name")
41e509ee18Sopenharmony_ci    }
42e509ee18Sopenharmony_ci    deps_info += [ info ]
43e509ee18Sopenharmony_ci  }
44e509ee18Sopenharmony_ci  module_label = get_label_info(":${target_name}", "label_with_toolchain")
45e509ee18Sopenharmony_ci  target_deps_data = {
46e509ee18Sopenharmony_ci    label = module_label
47e509ee18Sopenharmony_ci    module_deps_info = deps_info
48e509ee18Sopenharmony_ci    type = "executable"
49e509ee18Sopenharmony_ci    prebuilt = true
50e509ee18Sopenharmony_ci    stable = invoker.stable
51e509ee18Sopenharmony_ci    toolchain = get_label_info(":${target_name}", "toolchain")
52e509ee18Sopenharmony_ci    source_path = rebase_path(invoker.source, root_build_dir)
53e509ee18Sopenharmony_ci    output_path = rebase_path(_copy_output, root_build_dir)
54e509ee18Sopenharmony_ci  }
55e509ee18Sopenharmony_ci  write_file("${target_out_dir}/${target_name}_deps_data.json",
56e509ee18Sopenharmony_ci             target_deps_data,
57e509ee18Sopenharmony_ci             "json")
58e509ee18Sopenharmony_ci
59e509ee18Sopenharmony_ci  ohos_copy(target_name) {
60e509ee18Sopenharmony_ci    forward_variables_from(invoker,
61e509ee18Sopenharmony_ci                           [
62e509ee18Sopenharmony_ci                             "testonly",
63e509ee18Sopenharmony_ci                             "visibility",
64e509ee18Sopenharmony_ci
65e509ee18Sopenharmony_ci                             "deps",
66e509ee18Sopenharmony_ci                             "public_configs",
67e509ee18Sopenharmony_ci                             "subsystem_name",
68e509ee18Sopenharmony_ci                             "part_name",
69e509ee18Sopenharmony_ci
70e509ee18Sopenharmony_ci                             # For generate_module_info
71e509ee18Sopenharmony_ci                             "install_images",
72e509ee18Sopenharmony_ci                             "module_install_dir",
73e509ee18Sopenharmony_ci                             "relative_install_dir",
74e509ee18Sopenharmony_ci                             "symlink_target_name",
75e509ee18Sopenharmony_ci
76e509ee18Sopenharmony_ci                             # Open source license related
77e509ee18Sopenharmony_ci                             "license_file",
78e509ee18Sopenharmony_ci                             "license_as_sources",
79e509ee18Sopenharmony_ci                           ])
80e509ee18Sopenharmony_ci    sources = [ invoker.source ]
81e509ee18Sopenharmony_ci    outputs = [ _copy_output ]
82e509ee18Sopenharmony_ci  }
83e509ee18Sopenharmony_ci}
84e509ee18Sopenharmony_ci
85e509ee18Sopenharmony_citemplate("ohos_prebuilt_shared_library") {
86e509ee18Sopenharmony_ci  assert(defined(invoker.source), "source must be defined for ${target_name}.")
87e509ee18Sopenharmony_ci
88e509ee18Sopenharmony_ci  if (defined(invoker.output)) {
89e509ee18Sopenharmony_ci    _copy_output = "${target_out_dir}/${invoker.output}"
90e509ee18Sopenharmony_ci  } else {
91e509ee18Sopenharmony_ci    _copy_output = "${target_out_dir}/${invoker.source}"
92e509ee18Sopenharmony_ci  }
93e509ee18Sopenharmony_ci  config("${target_name}__config") {
94e509ee18Sopenharmony_ci    libs = [ _copy_output ]
95e509ee18Sopenharmony_ci  }
96e509ee18Sopenharmony_ci
97e509ee18Sopenharmony_ci  if (!defined(invoker.deps)) {
98e509ee18Sopenharmony_ci    invoker.deps = []
99e509ee18Sopenharmony_ci  }
100e509ee18Sopenharmony_ci
101e509ee18Sopenharmony_ci  if (!defined(invoker.stable)) {
102e509ee18Sopenharmony_ci    invoker.stable = false
103e509ee18Sopenharmony_ci  }
104e509ee18Sopenharmony_ci
105e509ee18Sopenharmony_ci  deps_info = []
106e509ee18Sopenharmony_ci  foreach(dep, invoker.deps) {
107e509ee18Sopenharmony_ci    info = {
108e509ee18Sopenharmony_ci    }
109e509ee18Sopenharmony_ci    info = {
110e509ee18Sopenharmony_ci      target_out_dir =
111e509ee18Sopenharmony_ci          rebase_path(get_label_info(dep, "target_out_dir"), root_build_dir)
112e509ee18Sopenharmony_ci      target_name = get_label_info(dep, "name")
113e509ee18Sopenharmony_ci    }
114e509ee18Sopenharmony_ci    deps_info += [ info ]
115e509ee18Sopenharmony_ci  }
116e509ee18Sopenharmony_ci  module_label = get_label_info(":${target_name}", "label_with_toolchain")
117e509ee18Sopenharmony_ci  target_deps_data = {
118e509ee18Sopenharmony_ci    label = module_label
119e509ee18Sopenharmony_ci    module_deps_info = deps_info
120e509ee18Sopenharmony_ci    type = "shared_library"
121e509ee18Sopenharmony_ci    prebuilt = true
122e509ee18Sopenharmony_ci    stable = invoker.stable
123e509ee18Sopenharmony_ci    toolchain = get_label_info(":${target_name}", "toolchain")
124e509ee18Sopenharmony_ci    source_path = rebase_path(invoker.source, root_build_dir)
125e509ee18Sopenharmony_ci    output_path = rebase_path(_copy_output, root_build_dir)
126e509ee18Sopenharmony_ci  }
127e509ee18Sopenharmony_ci  write_file("${target_out_dir}/${target_name}_deps_data.json",
128e509ee18Sopenharmony_ci             target_deps_data,
129e509ee18Sopenharmony_ci             "json")
130e509ee18Sopenharmony_ci
131e509ee18Sopenharmony_ci  ohos_copy(target_name) {
132e509ee18Sopenharmony_ci    forward_variables_from(invoker,
133e509ee18Sopenharmony_ci                           [
134e509ee18Sopenharmony_ci                             "testonly",
135e509ee18Sopenharmony_ci                             "visibility",
136e509ee18Sopenharmony_ci
137e509ee18Sopenharmony_ci                             "deps",
138e509ee18Sopenharmony_ci                             "public_configs",
139e509ee18Sopenharmony_ci                             "subsystem_name",
140e509ee18Sopenharmony_ci                             "part_name",
141e509ee18Sopenharmony_ci
142e509ee18Sopenharmony_ci                             # For generate_module_info
143e509ee18Sopenharmony_ci                             "install_images",
144e509ee18Sopenharmony_ci                             "module_install_dir",
145e509ee18Sopenharmony_ci                             "relative_install_dir",
146e509ee18Sopenharmony_ci                             "symlink_target_name",
147e509ee18Sopenharmony_ci
148e509ee18Sopenharmony_ci                             # Open source license related
149e509ee18Sopenharmony_ci                             "license_file",
150e509ee18Sopenharmony_ci                             "license_as_sources",
151e509ee18Sopenharmony_ci                           ])
152e509ee18Sopenharmony_ci    sources = [ invoker.source ]
153e509ee18Sopenharmony_ci    outputs = [ _copy_output ]
154e509ee18Sopenharmony_ci    if (!defined(public_configs)) {
155e509ee18Sopenharmony_ci      public_configs = []
156e509ee18Sopenharmony_ci    }
157e509ee18Sopenharmony_ci    public_configs += [ ":${target_name}__config" ]
158e509ee18Sopenharmony_ci  }
159e509ee18Sopenharmony_ci}
160e509ee18Sopenharmony_ci
161e509ee18Sopenharmony_citemplate("ohos_prebuilt_static_library") {
162e509ee18Sopenharmony_ci  assert(defined(invoker.source), "source must be defined for ${target_name}.")
163e509ee18Sopenharmony_ci
164e509ee18Sopenharmony_ci  if (defined(invoker.output)) {
165e509ee18Sopenharmony_ci    _copy_output = "${target_out_dir}/${invoker.output}"
166e509ee18Sopenharmony_ci  } else {
167e509ee18Sopenharmony_ci    _copy_output = "${target_out_dir}/${invoker.source}"
168e509ee18Sopenharmony_ci  }
169e509ee18Sopenharmony_ci  config("${target_name}__config") {
170e509ee18Sopenharmony_ci    libs = [ _copy_output ]
171e509ee18Sopenharmony_ci  }
172e509ee18Sopenharmony_ci
173e509ee18Sopenharmony_ci  ohos_copy(target_name) {
174e509ee18Sopenharmony_ci    forward_variables_from(invoker,
175e509ee18Sopenharmony_ci                           [
176e509ee18Sopenharmony_ci                             "testonly",
177e509ee18Sopenharmony_ci                             "visibility",
178e509ee18Sopenharmony_ci
179e509ee18Sopenharmony_ci                             "deps",
180e509ee18Sopenharmony_ci                             "public_configs",
181e509ee18Sopenharmony_ci                             "subsystem_name",
182e509ee18Sopenharmony_ci                             "part_name",
183e509ee18Sopenharmony_ci
184e509ee18Sopenharmony_ci                             # Open source license related
185e509ee18Sopenharmony_ci                             "license_file",
186e509ee18Sopenharmony_ci                             "license_as_sources",
187e509ee18Sopenharmony_ci                           ])
188e509ee18Sopenharmony_ci    sources = [ invoker.source ]
189e509ee18Sopenharmony_ci    outputs = [ _copy_output ]
190e509ee18Sopenharmony_ci    if (!defined(public_configs)) {
191e509ee18Sopenharmony_ci      public_configs = []
192e509ee18Sopenharmony_ci    }
193e509ee18Sopenharmony_ci    public_configs += [ ":${target_name}__config" ]
194e509ee18Sopenharmony_ci  }
195e509ee18Sopenharmony_ci}
196e509ee18Sopenharmony_ci
197e509ee18Sopenharmony_citemplate("ohos_prebuilt_etc") {
198e509ee18Sopenharmony_ci  assert(defined(invoker.source), "source must be defined for ${target_name}.")
199e509ee18Sopenharmony_ci
200e509ee18Sopenharmony_ci  if (defined(invoker.output)) {
201e509ee18Sopenharmony_ci    _copy_output = "${target_out_dir}/${invoker.output}"
202e509ee18Sopenharmony_ci  } else {
203e509ee18Sopenharmony_ci    _copy_output = "${target_out_dir}/${invoker.source}"
204e509ee18Sopenharmony_ci  }
205e509ee18Sopenharmony_ci
206e509ee18Sopenharmony_ci  module_label = get_label_info(":${target_name}", "label_with_toolchain")
207e509ee18Sopenharmony_ci  target_deps_data = {
208e509ee18Sopenharmony_ci    label = module_label
209e509ee18Sopenharmony_ci    type = "etc"
210e509ee18Sopenharmony_ci    prebuilt = true
211e509ee18Sopenharmony_ci    source_path = rebase_path(invoker.source, root_build_dir)
212e509ee18Sopenharmony_ci    output_path = rebase_path(_copy_output, root_build_dir)
213e509ee18Sopenharmony_ci  }
214e509ee18Sopenharmony_ci  write_file("${target_out_dir}/${target_name}_deps_data.json",
215e509ee18Sopenharmony_ci             target_deps_data,
216e509ee18Sopenharmony_ci             "json")
217e509ee18Sopenharmony_ci
218e509ee18Sopenharmony_ci  ohos_copy(target_name) {
219e509ee18Sopenharmony_ci    forward_variables_from(invoker,
220e509ee18Sopenharmony_ci                           [
221e509ee18Sopenharmony_ci                             "testonly",
222e509ee18Sopenharmony_ci                             "visibility",
223e509ee18Sopenharmony_ci
224e509ee18Sopenharmony_ci                             "deps",
225e509ee18Sopenharmony_ci                             "public_configs",
226e509ee18Sopenharmony_ci                             "subsystem_name",
227e509ee18Sopenharmony_ci                             "part_name",
228e509ee18Sopenharmony_ci
229e509ee18Sopenharmony_ci                             # For generate_module_info
230e509ee18Sopenharmony_ci                             "install_images",
231e509ee18Sopenharmony_ci                             "module_install_dir",
232e509ee18Sopenharmony_ci                             "relative_install_dir",
233e509ee18Sopenharmony_ci                             "symlink_target_name",
234e509ee18Sopenharmony_ci
235e509ee18Sopenharmony_ci                             # Open source license related
236e509ee18Sopenharmony_ci                             "license_file",
237e509ee18Sopenharmony_ci                             "license_as_sources",
238e509ee18Sopenharmony_ci                           ])
239e509ee18Sopenharmony_ci    sources = [ invoker.source ]
240e509ee18Sopenharmony_ci    outputs = [ _copy_output ]
241e509ee18Sopenharmony_ci  }
242e509ee18Sopenharmony_ci}
243