Bug 1611296 - Replace spirv_cross by a wrapper crate with a different name r=jrmuizel

This works around a check in rustc that skips object files that start with the rust crate name when linking with LTO.
See upstream https://github.com/rust-lang/rust/issues/66285#issuecomment-578163265
Also, re-enables LTO for macOS fuzzy builds, since it was disabled previously in bug 1595805 as a workaround.

Differential Revision: https://phabricator.services.mozilla.com/D60911

--HG--
rename : third_party/rust/spirv_cross/.cargo-checksum.json => third_party/rust/spirv-cross-internal/.cargo-checksum.json
rename : third_party/rust/spirv_cross/Cargo.toml => third_party/rust/spirv-cross-internal/Cargo.toml
rename : third_party/rust/spirv_cross/build.rs => third_party/rust/spirv-cross-internal/build.rs
rename : third_party/rust/spirv_cross/src/bindings_native.rs => third_party/rust/spirv-cross-internal/src/bindings_native.rs
rename : third_party/rust/spirv_cross/src/bindings_wasm.rs => third_party/rust/spirv-cross-internal/src/bindings_wasm.rs
rename : third_party/rust/spirv_cross/src/bindings_wasm_functions.rs => third_party/rust/spirv-cross-internal/src/bindings_wasm_functions.rs
rename : third_party/rust/spirv_cross/src/compiler.rs => third_party/rust/spirv-cross-internal/src/compiler.rs
rename : third_party/rust/spirv_cross/src/emscripten.rs => third_party/rust/spirv-cross-internal/src/emscripten.rs
rename : third_party/rust/spirv_cross/src/glsl.rs => third_party/rust/spirv-cross-internal/src/glsl.rs
rename : third_party/rust/spirv_cross/src/hlsl.rs => third_party/rust/spirv-cross-internal/src/hlsl.rs
rename : third_party/rust/spirv_cross/src/lib.rs => third_party/rust/spirv-cross-internal/src/lib.rs
rename : third_party/rust/spirv_cross/src/msl.rs => third_party/rust/spirv-cross-internal/src/msl.rs
rename : third_party/rust/spirv_cross/src/ptr_util.rs => third_party/rust/spirv-cross-internal/src/ptr_util.rs
rename : third_party/rust/spirv_cross/src/spirv.rs => third_party/rust/spirv-cross-internal/src/spirv.rs
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/.clang-format => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/.clang-format
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/.gitignore => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/.gitignore
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/CMakeLists.txt => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/CMakeLists.txt
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/GLSL.std.450.h => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/GLSL.std.450.h
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/LICENSE => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/LICENSE
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/Makefile => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/Makefile
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/cmake/gitversion.in.h => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/cmake/gitversion.in.h
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/format_all.sh => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/format_all.sh
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/gn/BUILD.gn => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/gn/BUILD.gn
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/include/spirv_cross/barrier.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/include/spirv_cross/barrier.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/include/spirv_cross/external_interface.h => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/include/spirv_cross/external_interface.h
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/include/spirv_cross/image.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/include/spirv_cross/image.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/include/spirv_cross/internal_interface.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/include/spirv_cross/internal_interface.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/include/spirv_cross/sampler.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/include/spirv_cross/sampler.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/include/spirv_cross/thread_group.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/include/spirv_cross/thread_group.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/main.cpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/main.cpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/pkg-config/spirv-cross-c-shared.pc.in => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/pkg-config/spirv-cross-c-shared.pc.in
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv.h => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv.h
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cfg.cpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cfg.cpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cfg.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cfg.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_common.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_common.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cpp.cpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cpp.cpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cpp.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cpp.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross.cpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cross.cpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cross.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_c.cpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cross_c.cpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_c.h => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cross_c.h
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_containers.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cross_containers.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_error_handling.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cross_error_handling.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_parsed_ir.cpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cross_parsed_ir.cpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_parsed_ir.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cross_parsed_ir.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_util.cpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cross_util.cpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_cross_util.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_cross_util.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_glsl.cpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_glsl.cpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_glsl.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_glsl.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_hlsl.cpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_hlsl.cpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_hlsl.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_hlsl.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_msl.cpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_msl.cpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_msl.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_msl.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_parser.cpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_parser.cpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_parser.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_parser.hpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_reflect.cpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_reflect.cpp
rename : third_party/rust/spirv_cross/src/vendor/SPIRV-Cross/spirv_reflect.hpp => third_party/rust/spirv-cross-internal/src/vendor/SPIRV-Cross/spirv_reflect.hpp
rename : third_party/rust/spirv_cross/src/wrapper.cpp => third_party/rust/spirv-cross-internal/src/wrapper.cpp
rename : third_party/rust/spirv_cross/src/wrapper.hpp => third_party/rust/spirv-cross-internal/src/wrapper.hpp
rename : third_party/rust/spirv_cross/tests/common/mod.rs => third_party/rust/spirv-cross-internal/tests/common/mod.rs
rename : third_party/rust/spirv_cross/tests/glsl_tests.rs => third_party/rust/spirv-cross-internal/tests/glsl_tests.rs
rename : third_party/rust/spirv_cross/tests/hlsl_tests.rs => third_party/rust/spirv-cross-internal/tests/hlsl_tests.rs
rename : third_party/rust/spirv_cross/tests/msl_tests.rs => third_party/rust/spirv-cross-internal/tests/msl_tests.rs
rename : third_party/rust/spirv_cross/tests/shaders/array.vert => third_party/rust/spirv-cross-internal/tests/shaders/array.vert
rename : third_party/rust/spirv_cross/tests/shaders/array.vert.spv => third_party/rust/spirv-cross-internal/tests/shaders/array.vert.spv
rename : third_party/rust/spirv_cross/tests/shaders/rasterize_disabled.vert => third_party/rust/spirv-cross-internal/tests/shaders/rasterize_disabled.vert
rename : third_party/rust/spirv_cross/tests/shaders/rasterize_disabled.vert.spv => third_party/rust/spirv-cross-internal/tests/shaders/rasterize_disabled.vert.spv
rename : third_party/rust/spirv_cross/tests/shaders/sampler.frag => third_party/rust/spirv-cross-internal/tests/shaders/sampler.frag
rename : third_party/rust/spirv_cross/tests/shaders/sampler.frag.spv => third_party/rust/spirv-cross-internal/tests/shaders/sampler.frag.spv
rename : third_party/rust/spirv_cross/tests/shaders/simple.vert => third_party/rust/spirv-cross-internal/tests/shaders/simple.vert
rename : third_party/rust/spirv_cross/tests/shaders/simple.vert.spv => third_party/rust/spirv-cross-internal/tests/shaders/simple.vert.spv
rename : third_party/rust/spirv_cross/tests/shaders/specialization.comp => third_party/rust/spirv-cross-internal/tests/shaders/specialization.comp
rename : third_party/rust/spirv_cross/tests/shaders/specialization.comp.spv => third_party/rust/spirv-cross-internal/tests/shaders/specialization.comp.spv
rename : third_party/rust/spirv_cross/tests/shaders/struct.frag => third_party/rust/spirv-cross-internal/tests/shaders/struct.frag
rename : third_party/rust/spirv_cross/tests/shaders/struct.frag.spv => third_party/rust/spirv-cross-internal/tests/shaders/struct.frag.spv
rename : third_party/rust/spirv_cross/tests/shaders/struct.vert => third_party/rust/spirv-cross-internal/tests/shaders/struct.vert
rename : third_party/rust/spirv_cross/tests/shaders/struct.vert.spv => third_party/rust/spirv-cross-internal/tests/shaders/struct.vert.spv
rename : third_party/rust/spirv_cross/tests/shaders/workgroup.comp => third_party/rust/spirv-cross-internal/tests/shaders/workgroup.comp
rename : third_party/rust/spirv_cross/tests/shaders/workgroup.comp.spv => third_party/rust/spirv-cross-internal/tests/shaders/workgroup.comp.spv
rename : third_party/rust/spirv_cross/tests/spirv_tests.rs => third_party/rust/spirv-cross-internal/tests/spirv_tests.rs
extra : moz-landing-system : lando
This commit is contained in:
Dzmitry Malyshau 2020-01-24 14:55:41 +00:00
Родитель 96bac7d765
Коммит a98a848163
87 изменённых файлов: 62 добавлений и 42 удалений

15
Cargo.lock сгенерированный
Просмотреть файл

@ -3553,13 +3553,21 @@ dependencies = [
]
[[package]]
name = "spirv_cross"
version = "0.16.0"
source = "git+https://github.com/kvark/spirv_cross?branch=wgpu#636677bad724797789239c16e6d332e9b4d97b86"
name = "spirv-cross-internal"
version = "0.1.0"
source = "git+https://github.com/kvark/spirv_cross?branch=wgpu#9cb4de489bf80b2b23efffe5a79afb7db6247ba4"
dependencies = [
"cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "spirv_cross"
version = "0.16.0"
source = "git+https://github.com/kvark/spirv_cross?branch=wgpu#9cb4de489bf80b2b23efffe5a79afb7db6247ba4"
dependencies = [
"spirv-cross-internal 0.1.0 (git+https://github.com/kvark/spirv_cross?branch=wgpu)",
]
[[package]]
name = "stable_deref_trait"
version = "1.0.0"
@ -4905,6 +4913,7 @@ dependencies = [
"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7"
"checksum smallvec 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecf3b85f68e8abaa7555aa5abdb1153079387e60b718283d732f03897fcfc86"
"checksum socket2 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)" = "df028e0e632c2a1823d920ad74895e7f9128e6438cbc4bc6fd1f180e644767b9"
"checksum spirv-cross-internal 0.1.0 (git+https://github.com/kvark/spirv_cross?branch=wgpu)" = "<none>"
"checksum spirv_cross 0.16.0 (git+https://github.com/kvark/spirv_cross?branch=wgpu)" = "<none>"
"checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b"
"checksum storage-map 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0a4829a5c591dc24a944a736d6b1e4053e51339a79fd5d4702c4c999a9c45e"

Просмотреть файл

@ -47,26 +47,16 @@ ifeq (1,$(MOZ_PARALLEL_BUILD))
cargo_build_flags += -j1
endif
rustflags_lto = -Clto
# Disable LTO when linking gkrust_gtest.
ifneq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
rustflags_lto =
endif
# Disable LTO when linking for macOS with fuzzing for now,
# see https://github.com/rust-lang/rust/issues/66285
ifdef FUZZING_INTERFACES
ifeq ($(OS_ARCH), Darwin)
rustflags_lto =
endif
endif
# These flags are passed via `cargo rustc` and only apply to the final rustc
# invocation (i.e., only the top-level crate, not its dependencies).
cargo_rustc_flags = $(CARGO_RUSTCFLAGS)
ifndef DEVELOPER_OPTIONS
ifndef MOZ_DEBUG_RUST
# Enable link-time optimization for release builds
cargo_rustc_flags += $(rustflags_lto)
# Enable link-time optimization for release builds, but not when linking
# gkrust_gtest.
ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
cargo_rustc_flags += -Clto
endif
endif
endif

1
third_party/rust/spirv-cross-internal/.cargo-checksum.json поставляемый Normal file

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

25
third_party/rust/spirv-cross-internal/Cargo.toml поставляемый Normal file
Просмотреть файл

@ -0,0 +1,25 @@
# the name has to not be a prefix to any modules!
[package]
name = "spirv-cross-internal"
version = "0.1.0"
authors = ["Joshua Groves <josh@joshgroves.com>"]
description = "Safe wrapper around SPIRV-Cross"
license = "MIT/Apache-2.0"
homepage = "https://github.com/grovesNL/spirv_cross"
repository = "https://github.com/grovesNL/spirv_cross"
readme = "../README.md"
keywords = ["spirv", "cross"]
build = "build.rs"
edition = "2018"
[lib]
crate-type = ["rlib"]
[features]
default = []
glsl = []
hlsl = []
msl = []
[target.'cfg(not(target_arch = "wasm32"))'.build-dependencies]
cc = "1.0.4"

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

@ -1,4 +1,4 @@
use spirv_cross::{glsl, spirv};
use spirv_cross_internal::{glsl, spirv};
mod common;
use crate::common::words_from_bytes;
@ -49,7 +49,7 @@ void main()
#[test]
fn ast_compiles_all_versions_to_glsl() {
use spirv_cross::glsl::Version::*;
use spirv_cross_internal::glsl::Version::*;
let module =
spirv::Module::from_words(words_from_bytes(include_bytes!("shaders/simple.vert.spv")));

Просмотреть файл

@ -1,4 +1,4 @@
use spirv_cross::{hlsl, spirv};
use spirv_cross_internal::{hlsl, spirv};
mod common;
use crate::common::words_from_bytes;

Просмотреть файл

@ -1,4 +1,4 @@
use spirv_cross::{msl, spirv};
use spirv_cross_internal::{msl, spirv};
use std::collections::BTreeMap;
@ -257,18 +257,18 @@ fn sets_argument_buffer_index() {
spirv::Module::from_words(words_from_bytes(include_bytes!("shaders/sampler.frag.spv")));
let mut ast = spirv::Ast::<msl::Target>::parse(&module).unwrap();
let mut resource_binding_overrides = BTreeMap::new();
resource_binding_overrides.insert(spirv_cross::msl::ResourceBindingLocation {
resource_binding_overrides.insert(msl::ResourceBindingLocation {
stage: spirv::ExecutionModel::Fragment,
desc_set: 0,
binding: msl::ARGUMENT_BUFFER_BINDING,
}, spirv_cross::msl::ResourceBinding {
}, msl::ResourceBinding {
buffer_id: 2,
texture_id: 0,
sampler_id: 0,
});
let compiler_options = msl::CompilerOptions {
resource_binding_overrides,
version: spirv_cross::msl::Version::V2_0,
version: msl::Version::V2_0,
enable_argument_buffers: true,
..Default::default()
};

Просмотреть файл

@ -1,4 +1,4 @@
use spirv_cross::{hlsl as lang, spirv};
use spirv_cross_internal::{hlsl as lang, spirv};
mod common;
use crate::common::words_from_bytes;

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

23
third_party/rust/spirv_cross/Cargo.toml поставляемый
Просмотреть файл

@ -1,24 +1,17 @@
[package]
name = "spirv_cross"
version = "0.16.0"
authors = ["Joshua Groves <josh@joshgroves.com>"]
description = "Safe wrapper around SPIRV-Cross"
license = "MIT/Apache-2.0"
homepage = "https://github.com/grovesNL/spirv_cross"
repository = "https://github.com/grovesNL/spirv_cross"
readme = "../README.md"
keywords = ["spirv", "cross"]
build = "build.rs"
edition = "2018"
[features]
glsl = ["spirv-cross-internal/glsl"]
hlsl = ["spirv-cross-internal/hlsl"]
msl = ["spirv-cross-internal/msl"]
[lib]
crate-type = ["rlib"]
path = "lib.rs"
[features]
default = []
glsl = []
hlsl = []
msl = []
[target.'cfg(not(target_arch = "wasm32"))'.build-dependencies]
cc = "1.0.4"
[dependencies]
spirv-cross-internal = { path = "../spirv_cross" }

1
third_party/rust/spirv_cross/README.md поставляемый Normal file
Просмотреть файл

@ -0,0 +1 @@
This is a hacky wrapper, so that our innermost crate has a name that's different from all the object it links together.

1
third_party/rust/spirv_cross/lib.rs поставляемый Normal file
Просмотреть файл

@ -0,0 +1 @@
pub use spirv_cross_internal::*;