15f9996aaSopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd.
25f9996aaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
35f9996aaSopenharmony_ci# you may not use this file except in compliance with the License.
45f9996aaSopenharmony_ci# You may obtain a copy of the License at
55f9996aaSopenharmony_ci#
65f9996aaSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
75f9996aaSopenharmony_ci#
85f9996aaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
95f9996aaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
105f9996aaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
115f9996aaSopenharmony_ci# See the License for the specific language governing permissions and
125f9996aaSopenharmony_ci# limitations under the License.
135f9996aaSopenharmony_ci
145f9996aaSopenharmony_ciimport("//build/config/clang/clang.gni")
155f9996aaSopenharmony_ciimport("//build/config/python.gni")
165f9996aaSopenharmony_ciimport("//build/templates/common/copy.gni")
175f9996aaSopenharmony_ci
185f9996aaSopenharmony_citemplate("js_declaration") {
195f9996aaSopenharmony_ci  group(target_name) {
205f9996aaSopenharmony_ci    not_needed(invoker, "*")
215f9996aaSopenharmony_ci  }
225f9996aaSopenharmony_ci}
235f9996aaSopenharmony_ci
245f9996aaSopenharmony_citemplate("gen_js_obj") {
255f9996aaSopenharmony_ci  name = target_name
265f9996aaSopenharmony_ci  action("gen_js_obj_" + name) {
275f9996aaSopenharmony_ci    visibility = [ ":*" ]
285f9996aaSopenharmony_ci
295f9996aaSopenharmony_ci    objcopy_tool = "${clang_base_path}/bin/llvm-objcopy"
305f9996aaSopenharmony_ci    platform = "${current_os}_${current_cpu}"
315f9996aaSopenharmony_ci    if (platform == "mingw_x86_64") {
325f9996aaSopenharmony_ci      script = "//build/scripts/run_objcopy_pc_mac.py"
335f9996aaSopenharmony_ci    } else if (platform == "mac_x64") {
345f9996aaSopenharmony_ci      script = "//build/scripts/run_objcopy_pc_mac.py"
355f9996aaSopenharmony_ci    } else if (platform == "linux_x64") {
365f9996aaSopenharmony_ci      script = "//build/scripts/run_objcopy_pc_mac.py"
375f9996aaSopenharmony_ci    } else if (target_cpu == "x86_64") {
385f9996aaSopenharmony_ci      script = "//build/scripts/run_objcopy.py"
395f9996aaSopenharmony_ci    } else if (target_cpu == "arm" || target_cpu == "arm64" ||
405f9996aaSopenharmony_ci               target_cpu == "riscv64" || target_cpu == "loongarch64") {
415f9996aaSopenharmony_ci      script = "//build/scripts/run_objcopy.py"
425f9996aaSopenharmony_ci    }
435f9996aaSopenharmony_ci
445f9996aaSopenharmony_ci    args = [
455f9996aaSopenharmony_ci      "--objcopy",
465f9996aaSopenharmony_ci      rebase_path(objcopy_tool),
475f9996aaSopenharmony_ci      "--input",
485f9996aaSopenharmony_ci      rebase_path(invoker.input),
495f9996aaSopenharmony_ci      "--output",
505f9996aaSopenharmony_ci      rebase_path(invoker.output),
515f9996aaSopenharmony_ci      "--arch",
525f9996aaSopenharmony_ci      current_cpu,
535f9996aaSopenharmony_ci    ]
545f9996aaSopenharmony_ci
555f9996aaSopenharmony_ci    deps = []
565f9996aaSopenharmony_ci    if (defined(invoker.dep)) {
575f9996aaSopenharmony_ci      deps += [ invoker.dep ]
585f9996aaSopenharmony_ci    }
595f9996aaSopenharmony_ci
605f9996aaSopenharmony_ci    inputs = [ invoker.input ]
615f9996aaSopenharmony_ci    outputs = [ invoker.output ]
625f9996aaSopenharmony_ci  }
635f9996aaSopenharmony_ci
645f9996aaSopenharmony_ci  source_set(name) {
655f9996aaSopenharmony_ci    sources = [ invoker.output ]
665f9996aaSopenharmony_ci    deps = [ ":gen_js_obj_" + name ]
675f9996aaSopenharmony_ci  }
685f9996aaSopenharmony_ci}
69