xref: /third_party/rust/crates/cxx/BUILD.gn (revision 33d722a9)
133d722a9Sopenharmony_ci# Copyright (c) 2023 Huawei Device Co., Ltd.
233d722a9Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
333d722a9Sopenharmony_ci# you may not use this file except in compliance with the License.
433d722a9Sopenharmony_ci# You may obtain a copy of the License at
533d722a9Sopenharmony_ci#
633d722a9Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
733d722a9Sopenharmony_ci#
833d722a9Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
933d722a9Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
1033d722a9Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1133d722a9Sopenharmony_ci# See the License for the specific language governing permissions and
1233d722a9Sopenharmony_ci# limitations under the License.
1333d722a9Sopenharmony_ci
1433d722a9Sopenharmony_ciimport("//build/ohos.gni")
1533d722a9Sopenharmony_ci
1633d722a9Sopenharmony_ciohos_cargo_crate("lib") {
1733d722a9Sopenharmony_ci  crate_name = "cxx"
1833d722a9Sopenharmony_ci  crate_type = "rlib"
1933d722a9Sopenharmony_ci  crate_root = "src/lib.rs"
2033d722a9Sopenharmony_ci
2133d722a9Sopenharmony_ci  sources = [ "src/lib.rs" ]
2233d722a9Sopenharmony_ci  edition = "2018"
2333d722a9Sopenharmony_ci  cargo_pkg_version = "1.0.97"
2433d722a9Sopenharmony_ci  cargo_pkg_authors = "David Tolnay <dtolnay@gmail.com>"
2533d722a9Sopenharmony_ci  cargo_pkg_name = "cxx"
2633d722a9Sopenharmony_ci  cargo_pkg_description = "Safe interop between Rust and C++"
2733d722a9Sopenharmony_ci  deps = [ "//third_party/rust/crates/cxx/macro:lib(${host_toolchain})" ]
2833d722a9Sopenharmony_ci  features = [
2933d722a9Sopenharmony_ci    "alloc",
3033d722a9Sopenharmony_ci    "std",
3133d722a9Sopenharmony_ci  ]
3233d722a9Sopenharmony_ci  build_root = "build.rs"
3333d722a9Sopenharmony_ci  build_sources = [ "build.rs" ]
3433d722a9Sopenharmony_ci}
3533d722a9Sopenharmony_ci
3633d722a9Sopenharmony_ciconfig("cxx_cppdeps_header_config") {
3733d722a9Sopenharmony_ci  include_dirs = [ "include" ]
3833d722a9Sopenharmony_ci}
3933d722a9Sopenharmony_ci
4033d722a9Sopenharmony_ciohos_static_library("cxx_cppdeps") {
4133d722a9Sopenharmony_ci  part_name = "build_framework"
4233d722a9Sopenharmony_ci  subsystem_name = "build"
4333d722a9Sopenharmony_ci  defines = [ "RUST_CXX_NO_EXCEPTIONS" ]
4433d722a9Sopenharmony_ci  public_configs = [ ":cxx_cppdeps_header_config" ]
4533d722a9Sopenharmony_ci  sources = [
4633d722a9Sopenharmony_ci    "//third_party/rust/crates/cxx/include/cxx.h",
4733d722a9Sopenharmony_ci    "//third_party/rust/crates/cxx/src/cxx.cc",
4833d722a9Sopenharmony_ci  ]
4933d722a9Sopenharmony_ci  deps = [ "//third_party/rust/crates/cxx:lib" ]
5033d722a9Sopenharmony_ci  if (is_win) {
5133d722a9Sopenharmony_ci    defines += [ "CXX_RS_EXPORT=__declspec(dllexport)" ]
5233d722a9Sopenharmony_ci  } else {
5333d722a9Sopenharmony_ci    defines += [ "CXX_RS_EXPORT=__attribute__((visibility(\"default\")))" ]
5433d722a9Sopenharmony_ci  }
5533d722a9Sopenharmony_ci}
56