133eb0b6dSopenharmony_ci# Copyright (c) 2024 Huawei Device Co., Ltd.
233eb0b6dSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
333eb0b6dSopenharmony_ci# you may not use this file except in compliance with the License.
433eb0b6dSopenharmony_ci# You may obtain a copy of the License at
533eb0b6dSopenharmony_ci#
633eb0b6dSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
733eb0b6dSopenharmony_ci#
833eb0b6dSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
933eb0b6dSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
1033eb0b6dSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1133eb0b6dSopenharmony_ci# See the License for the specific language governing permissions and
1233eb0b6dSopenharmony_ci# limitations under the License.
1333eb0b6dSopenharmony_ci
1433eb0b6dSopenharmony_ciimport("//build/ohos.gni")
1533eb0b6dSopenharmony_ci
1633eb0b6dSopenharmony_ciconfig("ark_interop_config") {
1733eb0b6dSopenharmony_ci  include_dirs = [ "../../.." ]
1833eb0b6dSopenharmony_ci  cflags = [
1933eb0b6dSopenharmony_ci    "-std=c++17",
2033eb0b6dSopenharmony_ci    "-Wno-gnu-zero-variadic-macro-arguments",
2133eb0b6dSopenharmony_ci    "-fvisibility-inlines-hidden",
2233eb0b6dSopenharmony_ci    "-fvisibility=hidden",
2333eb0b6dSopenharmony_ci    "-fno-exceptions",
2433eb0b6dSopenharmony_ci    "-fno-rtti",
2533eb0b6dSopenharmony_ci    "-fmerge-all-constants",
2633eb0b6dSopenharmony_ci    "-ffunction-sections",
2733eb0b6dSopenharmony_ci    "-Wno-unused-private-field",
2833eb0b6dSopenharmony_ci  ]
2933eb0b6dSopenharmony_ci  if (current_os == "ohos") {
3033eb0b6dSopenharmony_ci    cflags += [ "-fPIC" ]
3133eb0b6dSopenharmony_ci    defines = [
3233eb0b6dSopenharmony_ci      "__LINUX__",
3333eb0b6dSopenharmony_ci      "__OHOS__=1",
3433eb0b6dSopenharmony_ci    ]
3533eb0b6dSopenharmony_ci  } else if (current_os == "linux") {
3633eb0b6dSopenharmony_ci    defines = [ "__LINUX__" ]
3733eb0b6dSopenharmony_ci  } else if (current_os == "mingw") {
3833eb0b6dSopenharmony_ci    defines = [ "__WINDOWS__" ]
3933eb0b6dSopenharmony_ci  }
4033eb0b6dSopenharmony_ci}
4133eb0b6dSopenharmony_ci
4233eb0b6dSopenharmony_ciohos_source_set("cj_envsetup") {
4333eb0b6dSopenharmony_ci  part_name = "napi"
4433eb0b6dSopenharmony_ci  subsystem_name = "arkui"
4533eb0b6dSopenharmony_ci
4633eb0b6dSopenharmony_ci  configs = [ ":ark_interop_config" ]
4733eb0b6dSopenharmony_ci  sources = [ "cj_envsetup.cpp" ]
4833eb0b6dSopenharmony_ci}
4933eb0b6dSopenharmony_ci
5033eb0b6dSopenharmony_ciohos_shared_library("ark_interop") {
5133eb0b6dSopenharmony_ci  part_name = "napi"
5233eb0b6dSopenharmony_ci  subsystem_name = "arkui"
5333eb0b6dSopenharmony_ci  innerapi_tags = [ "platformsdk" ]
5433eb0b6dSopenharmony_ci
5533eb0b6dSopenharmony_ci  public_configs = [ ":ark_interop_config" ]
5633eb0b6dSopenharmony_ci
5733eb0b6dSopenharmony_ci  sources = [
5833eb0b6dSopenharmony_ci    "ark_interop_async.cpp",
5933eb0b6dSopenharmony_ci    "ark_interop_bigint.cpp",
6033eb0b6dSopenharmony_ci    "ark_interop_engine.cpp",
6133eb0b6dSopenharmony_ci    "ark_interop_global.cpp",
6233eb0b6dSopenharmony_ci    "ark_interop_hitrace.cpp",
6333eb0b6dSopenharmony_ci    "ark_interop_module.cpp",
6433eb0b6dSopenharmony_ci    "ark_interop_napi.cpp",
6533eb0b6dSopenharmony_ci    "ark_interop_object.cpp",
6633eb0b6dSopenharmony_ci    "ark_interop_scope.cpp",
6733eb0b6dSopenharmony_ci    "ark_interop_string.cpp",
6833eb0b6dSopenharmony_ci    "ark_interop_symbol.cpp",
6933eb0b6dSopenharmony_ci  ]
7033eb0b6dSopenharmony_ci
7133eb0b6dSopenharmony_ci  deps = [
7233eb0b6dSopenharmony_ci    ":cj_envsetup",
7333eb0b6dSopenharmony_ci    "../../../..:ace_napi",
7433eb0b6dSopenharmony_ci  ]
7533eb0b6dSopenharmony_ci
7633eb0b6dSopenharmony_ci  external_deps = [
7733eb0b6dSopenharmony_ci    "ets_runtime:libark_jsruntime",
7833eb0b6dSopenharmony_ci    "hilog:libhilog",
7933eb0b6dSopenharmony_ci  ]
8033eb0b6dSopenharmony_ci
8133eb0b6dSopenharmony_ci  if (!is_mingw && !is_mac && !is_linux && !is_arkui_x && is_standard_system) {
8233eb0b6dSopenharmony_ci    external_deps += [ "c_utils:utils" ]
8333eb0b6dSopenharmony_ci
8433eb0b6dSopenharmony_ci    # macro in runtime_core in full repo will effect build napi
8533eb0b6dSopenharmony_ci    if (ohos_indep_compiler_enable) {
8633eb0b6dSopenharmony_ci      external_deps += [ "runtime_core:libarkbase_static" ]
8733eb0b6dSopenharmony_ci    }
8833eb0b6dSopenharmony_ci  }
8933eb0b6dSopenharmony_ci
9033eb0b6dSopenharmony_ci  defines = [
9133eb0b6dSopenharmony_ci    "DEBUG_JS",
9233eb0b6dSopenharmony_ci    "ENABLE_PROFILE",
9333eb0b6dSopenharmony_ci  ]
9433eb0b6dSopenharmony_ci
9533eb0b6dSopenharmony_ci  if (use_clang_coverage) {
9633eb0b6dSopenharmony_ci    defines += [ "CLANG_COVERAGE" ]
9733eb0b6dSopenharmony_ci  }
9833eb0b6dSopenharmony_ci
9933eb0b6dSopenharmony_ci  if (is_arkui_x) {
10033eb0b6dSopenharmony_ci    deps += [
10133eb0b6dSopenharmony_ci      "//third_party/bounds_checking_function:libsec_static",
10233eb0b6dSopenharmony_ci      "//third_party/libuv:uv",
10333eb0b6dSopenharmony_ci    ]
10433eb0b6dSopenharmony_ci  } else {
10533eb0b6dSopenharmony_ci    external_deps += [
10633eb0b6dSopenharmony_ci      "bounds_checking_function:libsec_static",
10733eb0b6dSopenharmony_ci      "libuv:uv",
10833eb0b6dSopenharmony_ci    ]
10933eb0b6dSopenharmony_ci  }
11033eb0b6dSopenharmony_ci
11133eb0b6dSopenharmony_ci  if (build_ohos_sdk) {
11233eb0b6dSopenharmony_ci    defines += [
11333eb0b6dSopenharmony_ci      "NO_HITRACE",
11433eb0b6dSopenharmony_ci      "NO_CONTAINER",
11533eb0b6dSopenharmony_ci    ]
11633eb0b6dSopenharmony_ci  } else {
11733eb0b6dSopenharmony_ci    external_deps += [
11833eb0b6dSopenharmony_ci      "eventhandler:libeventhandler",
11933eb0b6dSopenharmony_ci      "hitrace:hitrace_meter",
12033eb0b6dSopenharmony_ci    ]
12133eb0b6dSopenharmony_ci  }
12233eb0b6dSopenharmony_ci}
12333eb0b6dSopenharmony_ci
12433eb0b6dSopenharmony_ciohos_shared_library("ark_interop_loader") {
12533eb0b6dSopenharmony_ci  part_name = "napi"
12633eb0b6dSopenharmony_ci  subsystem_name = "arkui"
12733eb0b6dSopenharmony_ci  relative_install_dir = "module"
12833eb0b6dSopenharmony_ci
12933eb0b6dSopenharmony_ci  configs = [ ":ark_interop_config" ]
13033eb0b6dSopenharmony_ci
13133eb0b6dSopenharmony_ci  sources = [ "ark_interop_loader.cpp" ]
13233eb0b6dSopenharmony_ci
13333eb0b6dSopenharmony_ci  external_deps = [ "hilog:libhilog" ]
13433eb0b6dSopenharmony_ci
13533eb0b6dSopenharmony_ci  deps = [
13633eb0b6dSopenharmony_ci    ":cj_envsetup",
13733eb0b6dSopenharmony_ci    "../../../..:ace_napi",
13833eb0b6dSopenharmony_ci  ]
13933eb0b6dSopenharmony_ci}
140