mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-29 16:56:10 +03:00
85 lines
2.4 KiB
Plaintext
85 lines
2.4 KiB
Plaintext
# Copyright 2021 The Chromium Authors
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import("//build/buildflag_header.gni")
|
|
import("//build/config/rust.gni")
|
|
|
|
if (toolchain_has_rust) {
|
|
config("edition_2021") {
|
|
rustflags = [ "--edition=2021" ]
|
|
}
|
|
|
|
config("edition_2018") {
|
|
rustflags = [ "--edition=2018" ]
|
|
}
|
|
|
|
config("edition_2015") {
|
|
rustflags = [ "--edition=2015" ]
|
|
}
|
|
|
|
# The required dependencies for cxx-generated bindings, that must be included
|
|
# on the C++ side.
|
|
static_library("cxx_cppdeps") {
|
|
sources = [
|
|
"//third_party/rust/cxx/v1/crate/include/cxx.h",
|
|
"//third_party/rust/cxx/v1/crate/src/cxx.cc",
|
|
]
|
|
|
|
defines = [ "RUST_CXX_NO_EXCEPTIONS" ]
|
|
|
|
if (is_win) {
|
|
defines += [ "CXX_RS_EXPORT=__declspec(dllexport)" ]
|
|
} else {
|
|
defines += [ "CXX_RS_EXPORT=__attribute__((visibility(\"default\")))" ]
|
|
}
|
|
|
|
# Depending on the C++ bindings side of cxx then requires also depending
|
|
# on the Rust bindings, since one calls the other. And the Rust bindings
|
|
# require the Rust standard library.
|
|
# Normally the Rust stdlib is brought in as a dependency by depending
|
|
# on any first-party Rust target. But in this case, it's conceivable
|
|
# that pure-C++ targets will not depend on any 1p Rust code so we'll add
|
|
# the Rust stdlib explicitly.
|
|
deps = [ ":cxx_rustdeps" ]
|
|
|
|
if (use_local_std_by_default) {
|
|
deps += [ "//build/rust/std:link_local_std" ]
|
|
} else {
|
|
assert(prebuilt_libstd_supported,
|
|
"Prebuilt Rust stdlib is not available for this target")
|
|
deps += [ "//build/rust/std:link_prebuilt_std" ]
|
|
}
|
|
}
|
|
|
|
# The required dependencies for cxx-generated bindings, that must be included
|
|
# on the Rust side.
|
|
group("cxx_rustdeps") {
|
|
public_deps = [ "//third_party/rust/cxx/v1:lib" ]
|
|
}
|
|
}
|
|
|
|
# Enables code behind #[cfg(test)]. This should only be used for targets where
|
|
# testonly=true.
|
|
config("test") {
|
|
rustflags = [
|
|
"--cfg",
|
|
"test",
|
|
]
|
|
}
|
|
|
|
# TODO(crbug.com/gn/104): GN rust_proc_macro targets are missing this
|
|
# command line flag, for the proc_macro crate which is provided by rustc for
|
|
# compiling proc-macros.
|
|
config("proc_macro_extern") {
|
|
rustflags = [
|
|
"--extern",
|
|
"proc_macro",
|
|
]
|
|
}
|
|
|
|
# Forbids unsafe code in crates with this config.
|
|
config("forbid_unsafe") {
|
|
rustflags = [ "-Funsafe_code" ]
|
|
}
|