Git Product home page Git Product logo

shaderc-rs's Introduction

shaderc-rs

Version Documentation

Rust bindings for the shaderc library.

Disclaimer

This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.

Usage

The included shaderc-sys crate uses build.rs to discover or build a copy of shaderc libraries. See Setup section.

First add to your Cargo.toml:

[dependencies]
shaderc = "0.8"

Then add to your crate root:

extern crate shaderc;

Documentation

shaderc provides the Compiler interface to compile GLSL/HLSL source code into SPIR-V binary modules or assembly code. It can also assemble SPIR-V assembly into binary module. Default compilation behavior can be adjusted using CompileOptions. Successful results are kept in CompilationArtifacts.

Please see Documentation for detailed documentation.

Example

Compile a shader into SPIR-V binary module and assembly text:

use shaderc;

let source = "#version 310 es\n void EP() {}";

let mut compiler = shaderc::Compiler::new().unwrap();
let mut options = shaderc::CompileOptions::new().unwrap();
options.add_macro_definition("EP", Some("main"));
let binary_result = compiler.compile_into_spirv(
    source, shaderc::ShaderKind::Vertex,
    "shader.glsl", "main", Some(&options)).unwrap();

assert_eq!(Some(&0x07230203), binary_result.as_binary().first());

let text_result = compiler.compile_into_spirv_assembly(
    source, shaderc::ShaderKind::Vertex,
    "shader.glsl", "main", Some(&options)).unwrap();

assert!(text_result.as_text().starts_with("; SPIR-V\n"));

Setup

shaderc-rs needs the C++ shaderc library. It's shipped inside the Vulkan SDK. You may be able to install it directly on some Linux distro's using the package manager. The C++ shaderc project provides artifacts downloads. You can also build it from source.

The order of preference in which the build script attempts to obtain native shaderc can be controlled by several options, which are passed through to shaderc-sys when building shaderc-rs:

  1. Building from source, if option --features build-from-source is specified.
  2. If the SHADERC_LIB_DIR environment variable is set to /path/to/shaderc/libs/, that path will be searched for native dynamic or static shaderc library.
  3. If the VULKAN_SDK environment variable is set, then $VULKAN_SDK/lib will be searched for native dynamic or static shaderc library.
  4. On Linux, system library paths like /usr/lib/ will additionally be searched for native dynamic or shaderc library, if the SHADERC_LIB_DIR is not set.
  5. Building from source, if the native shaderc library is not found via the above steps.

For each library directory, the build script will try to find and link to the dynamic native shaderc library shaderc_shared first and the static native shaderc library shaderc_combined next. To prefer searching for the static library first and the dynamic library next, the option --features prefer-static-linking may be used.

Building from Source

The shaderc-sys build.rs will automatically check out and compile a copy of native C++ shaderc and link to the generated artifacts, which requires git, cmake, and python existing in the PATH:

  • CMake
  • Git
  • Python (only works with Python 3, on Windows the executable must be named python.exe)
  • a C++11 compiler

Additionally:

  • Ninja is required on windows-msvc, but optional on all other platforms.

These requirements can be either installed with your favourite package manager or with installers from the projects' websites. Below are some example ways to get setup.

windows-msvc Example Setup

  1. rustup default stable-x86_64-pc-windows-msvc
  2. Install Build Tools for Visual Studio 2017. If you have already been using this toolchain then its probably already installed.
  3. Install the necessary tools as listed in the above and add their paths to the PATH environment variable.

windows-gnu Example Setup

windows-gnu toolchain is not supported but you can instead cross-compile to windows-gnu from windows-msvc.

Steps 1 and 2 are to workaround rust-lang/rust#49078 by using the same mingw that rust uses.

  1. Download and extract https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror/x86_64-6.3.0-release-posix-seh-rt_v5-rev2.7z
  2. Add the absolute path to mingw64\bin to your PATH environment variable.
  3. Run the command: rustup default stable-x86_64-pc-windows-msvc
  4. Run the command: rustup target install x86_64-pc-windows-gnu
  5. Install Build Tools for Visual Studio 2017. If you have already been using this toolchain then its probably already installed.
  6. Install msys2, following ALL of the instructions.
  7. Then in the msys2 terminal run: pacman --noconfirm -Syu mingw-w64-x86_64-cmake mingw-w64-x86_64-make mingw-w64-x86_64-python3 mingw-w64-x86_64-ninja
  8. Add the msys2 mingw64 binary path to the PATH environment variable.
  9. Any cargo command that builds the project needs to include --target x86_64-pc-windows-gnu e.g. to run: cargo run --target x86_64-pc-windows-gnu

Linux Example Setup

Use your package manager to install the required dev-tools

For example on ubuntu:

sudo apt-get install build-essential cmake git ninja python3

On Arch linux, you can directly install the shaderc package.

macOS Example Setup

Assuming Homebrew:

brew install git cmake ninja [email protected]

Contributions

This project is licensed under the Apache 2 license. Please see CONTRIBUTING before contributing.

Authors

This project is initialized and mainly developed by Lei Zhang (@antiagainst).

shaderc-rs's People

Contributors

acid1103 avatar antiagainst avatar chubei-oppen avatar chyyran avatar djcsdy avatar dylanede avatar filnet avatar francesca64 avatar geertbleyen avatar gkelly avatar hodasemi avatar im-0 avatar knappador avatar kocsis1david avatar marc0246 avatar michidk avatar misha1sh avatar msklywenn avatar nlordell avatar norman784 avatar oxkenshin avatar quadrupleslap avatar realitix avatar repi avatar rukai avatar rvql avatar simlay avatar unneon avatar valerie-makes avatar yokljo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shaderc-rs's Issues

Error compiling with Ninja

I'm running this with vulkano_shaders, and running into an issue with the CMake command:

   Compiling shaderc v0.3.16
error: failed to run custom build command for `shaderc v0.3.16`
process didn't exit successfully: `C:\dev\oceanic\target\debug\build\shaderc-083ecb82f454c8e1\build-script-
build` (exit code: 101)
--- stdout
running: "cmake" "C:\\Users\\Alic Szecsei\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\shaderc-0.3.
16\\build" "-G" "Ninja" "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" "-DSPIRV_SKIP_EXECUTABLES=ON" "-DSPIRV_WERRO
R=OFF" "-DSHADERC_SKIP_TESTS=ON" "-DCMAKE_C_FLAGS= /nologo /EHsc" "-DCMAKE_CXX_FLAGS= /nologo /EHsc" "-DCMA
KE_C_FLAGS_RELEASE= /nologo /EHsc" "-DCMAKE_CXX_FLAGS_RELEASE= /nologo /EHsc" "-DCMAKE_INSTALL_LIBDIR=lib"
"-DCMAKE_INSTALL_PREFIX=C:\\dev\\oceanic\\target\\debug\\build\\shaderc-934afc85cbc7abde\\out" "-DCMAKE_C_C
OMPILER=C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/HostX64
/x64/cl.exe" "-DCMAKE_CXX_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/M
SVC/14.16.27023/bin/HostX64/x64/cl.exe" "-DCMAKE_BUILD_TYPE=Release"
-- Building SPIRV-Header examples
-- SPIRV-Tools: nosetests found - python support code will be tested
-- Google Mock was not found - tests based on that will not build
-- optimizer enabled
-- Shaderc: build type is "Release".
-- Configuring Shaderc to avoid building tests.
-- asciidoctor was not found - no documentation will be generated
-- Configuring done
-- Generating done
-- Build files have been written to: C:/dev/oceanic/target/debug/build/shaderc-934afc85cbc7abde/out/build
running: "cmake" "-j4" "--build" "." "--target" "install" "--config" "Release" "--"

--- stderr
CMake Error: The source directory "C:/dev/oceanic/target/debug/build/shaderc-934afc85cbc7abde/out/build/--"
 does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
thread 'main' panicked at '
command did not execute successfully, got: exit code: 1

build script failed, must exit now', C:\Users\Alic Szecsei\.cargo\registry\src\github.com-1ecc6299db9ec823\
cmake-0.1.36\src\lib.rs:813:5

Obviously "--" is getting appended to the build directory, but I have no idea how to fix this - any suggestions?

=========

EDIT: Removing Ninja from your path should fix this error; it would be nice if there were a feature to disable Ninja so I could continue to use it for other projects without having it be automatically detected and used in this one.

support auto map locations

The corresponding sharderc function is: shaderc_compile_options_set_auto_map_locations.

This allows glsl shaders to omit location information on in and out variables.

Hopefully it's relatively trivial to add support for it.

Publish new release?

Been 7 months since the last release to crates.io, possible to publish a new one?

Specifically after getting a release with the merged PR #68 that we did.

Thanks!

Fail to support Python3.7.3 in WSL-Debian

error: failed to run custom build command for `shaderc-sys v0.5.0`

Caused by:
  process didn't exit successfully: `/mnt/f/workspace/rust-tutorials/vulkano-examples-master/target/debug/build/shaderc-sys-1e4f0c0c70caddbf/build-script-build` (exit code: 101)
--- stdout
cargo:warning=Checking for system installed libraries.  Use --features = build-from-source to disable this behavior
cargo:warning=Pre-built library not found.  Falling back to from-source build
running: "cmake" "/mnt/e/Coding/wsl/Rust/cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/shaderc-sys-0.5.0/build" "-G" "Ninja" "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" "-DSPIRV_SKIP_EXECUTABLES=ON" "-DSPIRV_WERROR=OFF" "-DSHADERC_SKIP_TESTS=ON" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_PREFIX=/mnt/f/workspace/rust-tutorials/vulkano-examples-master/target/debug/build/shaderc-sys-814e1b3412b48db9/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=/usr/bin/c++" "-DCMAKE_BUILD_TYPE=Release"
-- Building SPIRV-Header examples
-- SPIRV-Tools: nosetests was not found - python support code will not be tested
-- Google Mock was not found - tests based on that will not build
-- optimizer enabled
-- Shaderc: build type is "Release".
-- Configuring Shaderc to avoid building tests.
-- nosetests was not found - python code will not be tested
-- asciidoctor was not found - no documentation will be generated
-- Configuring done
-- Generating done
-- Build files have been written to: /mnt/f/workspace/rust-tutorials/vulkano-examples-master/target/debug/build/shaderc-sys-814e1b3412b48db9/out/build
running: "cmake" "--build" "." "--target" "install" "--config" "Release" "--" "-j8"
[1/341] Generate tables based on the SPIR-V XML registry.
FAILED: spirv-tools/generators.inc
cd /mnt/f/workspace/rust-tutorials/vulkano-examples-master/target/debug/build/shaderc-sys-814e1b3412b48db9/out/build/spirv-tools/source && /usr/bin/python3.7 /mnt/e/Coding/wsl/Rust/cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/shaderc-sys-0.5.0/build/spirv-tools/utils/generate_registry_tables.py --xml=/mnt/e/Coding/wsl/Rust/cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/shaderc-sys-0.5.0/build/spirv-headers/include/spirv/spir-v.xml --generator-output=/mnt/f/workspace/rust-tutorials/vulkano-examples-master/target/debug/build/shaderc-sys-814e1b3412b48db9/out/build/spirv-tools/generators.inc
Traceback (most recent call last):
  File "/mnt/e/Coding/wsl/Rust/cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/shaderc-sys-0.5.0/build/spirv-tools/utils/generate_registry_tables.py", line 19, in <module>
    import distutils.core
ModuleNotFoundError: No module named 'distutils.core'
[2/341] cd /mnt/f/workspace/rust-tutorials/vulkano-examples-master/target/debug/build/shaderc-sys-814e1b3412b48db9/out/build/spirv-tools && /usr/bin/cmake -DCHANGES_FILE=/mnt/e/Coding/wsl/Rust/cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/shaderc-sys-0.5.0/build/spirv-tools/CHANGES -DTEMPLATE_FILE=/mnt/e/Coding/wsl/Rust/cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/shaderc-sys-0.5.0/build/spirv-tools/cmake/SPIRV-Tools.pc.in -DOUT_FILE=/mnt/f/workspace/rust-tutorials/vulkano-examples-master/target/debug/build/shaderc-sys-814e1b3412b48db9/out/build/spirv-tools/SPIRV-Tools.pc -DCMAKE_INSTALL_PREFIX=/mnt/f/workspace/rust-tutorials/vulkano-examples-master/target/debug/build/shaderc-sys-814e1b3412b48db9/out -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_INCLUDEDIR=include -DSPIRV_LIBRARIES=-lSPIRV-Tools\ -lSPIRV-Tools-link\ -lSPIRV-Tools-opt -P /mnt/e/Coding/wsl/Rust/cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/shaderc-sys-0.5.0/build/spirv-tools/cmake/write_pkg_config.cmake
[3/341] cd /mnt/f/workspace/rust-tutorials/vulkano-examples-master/target/debug/build/shaderc-sys-814e1b3412b48db9/out/build/spirv-tools && /usr/bin/cmake -DCHANGES_FILE=/mnt/e/Coding/wsl/Rust/cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/shaderc-sys-0.5.0/build/spirv-tools/CHANGES -DTEMPLATE_FILE=/mnt/e/Coding/wsl/Rust/cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/shaderc-sys-0.5.0/build/spirv-tools/cmake/SPIRV-Tools-shared.pc.in -DOUT_FILE=/mnt/f/workspace/rust-tutorials/vulkano-examples-master/target/debug/build/shaderc-sys-814e1b3412b48db9/out/build/spirv-tools/SPIRV-Tools-shared.pc -DCMAKE_INSTALL_PREFIX=/mnt/f/workspace/rust-tutorials/vulkano-examples-master/target/debug/build/shaderc-sys-814e1b3412b48db9/out -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_INCLUDEDIR=include -DSPIRV_SHARED_LIBRARIES=-lSPIRV-Tools-shared -P /mnt/e/Coding/wsl/Rust/cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/shaderc-sys-0.5.0/build/spirv-tools/cmake/write_pkg_config.cmake
[4/341] Building CXX object glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/PoolAlloc.cpp.o
[5/341] Building CXX object glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/RemoveTree.cpp.o
[6/341] Building CXX object glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/Scan.cpp.o
[7/341] Building CXX object glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/ParseContextBase.cpp.o
[8/341] Building CXX object glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/ParseHelper.cpp.o
ninja: build stopped: subcommand failed.

--- stderr
thread 'main' panicked at '
command did not execute successfully, got: exit code: 1

build script failed, must exit now', /mnt/e/Coding/wsl/Rust/cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/cmake-0.1.40/src/lib.rs:832:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

Ray Tracing Shader Support

Hey,

the title does actually say all ...

Add support to build various ray tracing shader (.rgen, .rint, .rahit, .rchit, .rmiss, .rcall). I can already convert these shader types from glsl to spir-v on command line, it would be nice to have it automated.

Use Precompiled Sources to Link Against

I'm identifying a course of action to use pre-compiled sources to make it easier on users and package maintainers who need the rust bindings to above all build.

We have the .hpp and .so's in precompiled packages
https://www.archlinux.org/packages/extra/x86_64/shaderc/

Obviously Gentoo will include basically the entire build
https://packages.gentoo.org/packages/media-libs/shaderc

As for how to convince build.rs to optionally favor a system package for the rest of the makefile and to not check out (or just not build them), I will have to start getting up to speed on how the rust package is deciding what to link against and how to add options.

If a course of implementation is recommended I can PR the changes as well as test on my CI server's and assist in getting pre-built tooling into maintenance and actually maintain it.

MinGW undefined references to C++11 STL strings

I used windows-gnu toolchain:

          C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: E:\ark0f\Programming\Rust\projects\project-sakura\target\debug\deps\libshaderc_sys-9ed1b06d472302b7.rlib(validate_builtins.cpp.obj):validate_builtins.cpp:(.text$_ZN8spvtools3val12_GLOBAL__N_117BuiltInsValidator20ValidateF32VecHelperERKNS0_10DecorationERKNS0_11InstructionEjRKSt8functionIF12spv_result_tRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEj.isra.0+0x496): undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()'
          C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: E:\ark0f\Programming\Rust\projects\project-sakura\target\debug\deps\libshaderc_sys-9ed1b06d472302b7.rlib(validate_builtins.cpp.obj):validate_builtins.cpp:(.text$_ZN8spvtools3val12_GLOBAL__N_117BuiltInsValidator14ValidateI32VecERKNS0_10DecorationERKNS0_11InstructionEjRKSt8functionIF12spv_result_tRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.isra.0+0x187): undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()'
          C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: E:\ark0f\Programming\Rust\projects\project-sakura\target\debug\deps\libshaderc_sys-9ed1b06d472302b7.rlib(validate_builtins.cpp.obj):validate_builtins.cpp:(.text$_ZN8spvtools3val12_GLOBAL__N_117BuiltInsValidator14ValidateI32VecERKNS0_10DecorationERKNS0_11InstructionEjRKSt8functionIF12spv_result_tRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE.isra.0+0x32c): undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()'
          C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: E:\ark0f\Programming\Rust\projects\project-sakura\target\debug\deps\libshaderc_sys-9ed1b06d472302b7.rlib(validate_builtins.cpp.obj):validate_builtins.cpp:(.text$_ZN8spvtools3val12_GLOBAL__N_117BuiltInsValidator20ValidateF32ArrHelperERKNS0_10DecorationERKNS0_11InstructionEjRKSt8functionIF12spv_result_tRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEj.isra.0+0x26b): undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()'
          C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: E:\ark0f\Programming\Rust\projects\project-sakura\target\debug\deps\libshaderc_sys-9ed1b06d472302b7.rlib(validate_builtins.cpp.obj):validate_builtins.cpp:(.text$_ZN8spvtools3val12_GLOBAL__N_117BuiltInsValidator20ValidateF32ArrHelperERKNS0_10DecorationERKNS0_11InstructionEjRKSt8functionIF12spv_result_tRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEj.isra.0+0x432): undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()'
          C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: E:\ark0f\Programming\Rust\projects\project-sakura\target\debug\deps\libshaderc_sys-9ed1b06d472302b7.rlib(validate_builtins.cpp.obj):validate_builtins.cpp:(.text$_ZN8spvtools3val12_GLOBAL__N_117BuiltInsValidator33ValidateSingleBuiltInAtDefinitionERKNS0_10DecorationERKNS0_11InstructionE+0x1cc7): more undefined references to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()' follow
          collect2.exe: error: ld returned 1 exit status

Adding iOS runtime

Is there any chance of adding an iOS runtime by adding support for other targets in build.rs?

Failed to build on Ubuntu 18.10

The script can't find PYTHON_EXE on Ubuntu 18.10.

It only succeeds after installing python-dev.

Error message:

Compiling shaderc v0.3.13

error: failed to run custom build command for `shaderc v0.3.13`
process didn't exit successfully: `~/conrod/target/debug/build/shaderc-79d246f08fbd036e/build-script-build` (exit code: 101)
--- stdout
running: "cmake" "~/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-0.3.13/build" "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" "-DSPIRV_SKIP_EXECUTABLES=ON" "-DSPIRV_WERROR=OFF" "-DSHADERC_SKIP_TESTS=ON" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_PREFIX=~/Downloads/conrod/target/debug/build/shaderc-0fc9d865f5ba3bfe/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=/usr/bin/c++" "-DCMAKE_BUILD_TYPE=Release"
-- Building SPIRV-Header examples
-- SPIRV-Tools: nosetests was not found - python support code will not be tested
-- Google Mock was not found - tests based on that will not build
-- optimizer enabled
-- Shaderc: build type is "Release".
-- Configuring Shaderc to avoid building tests.
-- nosetests was not found - python code will not be tested
-- asciidoctor was not found - no documentation will be generated
-- Configuring done
-- Generating done
-- Build files have been written to: ~/Downloads/conrod/target/debug/build/shaderc-0fc9d865f5ba3bfe/out/build
running: "cmake" "--build" "." "--target" "install" "--config" "Release" "--"
[  1%] Built target SPIRV-Headers-example-1.1
[  1%] Built target SPIRV-Headers-example
[  1%] Built target spirv-tools-shared-pkg-config
[  1%] Built target spirv-tools-pkg-config
[  2%] Built target spirv-tools-spv-amd-shader-explicit-vertex-parameter
[  2%] Built target spirv-tools-debuginfo
[  2%] Built target spirv-tools-spv-amd-shader-ballot
[  2%] Built target spirv-tools-spv-amd-shader-trinary-minmax
[  2%] Built target spirv-tools-spv-amd-gcn-shader
[  3%] Built target spirv-tools-header-DebugInfo
[  4%] Built target enum_string_mapping
[  4%] Built target core_tables
[  6%] Built target HLSL
[  7%] Built target OSDependent
[  7%] Built target OGLCompiler
[  8%] Built target glslang-default-resource-limits
[  9%] Built target SPVRemapper
[  9%] Check copyright

--- stderr
/bin/sh: 1: PYTHON_EXE-NOTFOUND: not found
make[2]: *** [shaderc/CMakeFiles/check-copyright.dir/build.make:58: shaderc/CMakeFiles/check-copyright] Error 127
make[1]: *** [CMakeFiles/Makefile2:2905: shaderc/CMakeFiles/check-copyright.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
thread 'main' panicked at '
command did not execute successfully, got: exit code: 2

build script failed, must exit now', ~/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.35/src/lib.rs:778:5
note: Run with `RUST_BACKTRACE=1` for a backtrace.

warning: build failed, waiting for other jobs to finish...
error: build failed

Error when compiling v0.3.6

Hello @antiagainst,

I tried to install your module (0.3.6) with the nightly rust and I got this error:

    Updating registry `https://github.com/rust-lang/crates.io-index`
 Downloading shaderc v0.3.6                                                     
 Downloading cmake v0.1.31                                                      
   Compiling cc v1.0.15                                                         
   Compiling libc v0.2.40
   Compiling rand v0.4.2
   Compiling cmake v0.1.31
   Compiling shaderc v0.3.6
   Compiling test1 v0.1.0 (file:///home/realitix/git/rust_practice/test1)
error[E0623]: lifetime mismatch
 --> src/main.rs:3:9
  |
1 | fn longest<'a,'b>(x: &'a str, y: &'b str) -> &'b str {
  |                      -------                 -------
  |                      |
  |                      this parameter and the return type are declared with different lifetimes...
2 |     if x.len() > y.len() {
3 |         x
  |         ^ ...but data from `x` is returned here

error: aborting due to previous error

For more information about this error, try `rustc --explain E0623`.
error: Could not compile `test1`.

To learn more, run the command again with --verbose.

Do you know why I get this error ?

Failed to build on Windows (exit code: 101)

shaderc fails to build on windows
latest version, rust version 1.33.0, cargo version 1.33.0
all the pre-requisites to build are in the system
I couldn't deduce anything useful from the stderr output. If someone can, that'd be great.

this is the entire error output:

Compiling shaderc v0.3.16
error: failed to run custom build command for shaderc v0.3.16
process didn't exit successfully: C:\Users\guilh\github\KitsuneEngine2\target\debug\build\shaderc-7c36252434f41bda\build-script-build (exit code: 101)
--- stdout
running: "cmake" "C:\Users\guilh\.cargo\registry\src\github.com-1ecc6299db9ec823\shaderc-0.3.16\build" "-G" "Visual Studio 15 2017 Win64" "-Thost=x64" "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" "-DSPIRV_SKIP_EXECUTABLES=ON" "-DSPIRV_WERROR=OFF" "-DSHADERC_SKIP_TESTS=ON" "-DCMAKE_C_FLAGS= /nologo /EHsc" "-DCMAKE_CXX_FLAGS= /nologo /EHsc" "-DCMAKE_C_FLAGS_RELEASE= /nologo /EHsc" "-DCMAKE_CXX_FLAGS_RELEASE= /nologo /EHsc" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_PREFIX=C:\Users\guilh\github\KitsuneEngine2\target\debug\build\shaderc-a487fde340fded54\out" "-DCMAKE_BUILD_TYPE=Release"
-- Building SPIRV-Header examples
-- SPIRV-Tools: nosetests was not found - python support code will not be tested
-- Using Debug VC++ CRT: MDd
-- Using MinSizeRel VC++ CRT: MD
-- Using RelWithDebInfo VC++ CRT: MD
-- Google Mock was not found - tests based on that will not build
-- optimizer enabled
-- Shaderc: build type is "Release".
-- Configuring Shaderc to avoid building tests.
-- nosetests was not found - python code will not be tested
-- asciidoctor was not found - no documentation will be generated
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/guilh/github/KitsuneEngine2/target/debug/build/shaderc-a487fde340fded54/out/build
running: "cmake" "--build" "." "--target" "install" "--config" "Release" "--"
Microsoft (R) Build Engine version 15.7.180.61344 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.

HLSL.vcxproj -> C:\Users\guilh\github\KitsuneEngine2\target\debug\build\shaderc-a487fde340fded54\out\build\glslang\hlsl\Release\HLSL.lib
OGLCompiler.vcxproj -> C:\Users\guilh\github\KitsuneEngine2\target\debug\build\shaderc-a487fde340fded54\out\build\glslang\OGLCompilersDLL\Release\OGLCompiler.lib
OSDependent.vcxproj -> C:\Users\guilh\github\KitsuneEngine2\target\debug\build\shaderc-a487fde340fded54\out\build\glslang\glslang\OSDependent\Windows\Release\OSDependent.lib
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(321,5): error MSB3491: Could not write lines to file "x64\Release\spirv-tools-spv-amd-shader-explicit-vertex-parameter\spirv-to.2E826A11.tlog\spirv-tools-spv-amd-shader-explicit-vertex-parameter.lastbuildstate". The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. [C:\Users\guilh\github\KitsuneEngine2\target\debug\build\shaderc-a487fde340fded54\out\build\spirv-tools\source\spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj]
glslang.vcxproj -> C:\Users\guilh\github\KitsuneEngine2\target\debug\build\shaderc-a487fde340fded54\out\build\glslang\glslang\Release\glslang.lib
SPIRV-Headers-example.vcxproj -> C:\Users\guilh\github\KitsuneEngine2\target\debug\build\shaderc-a487fde340fded54\out\build\spirv-headers\example\Release\SPIRV-Headers-example.lib
SPIRV-Headers-example-1.1.vcxproj -> C:\Users\guilh\github\KitsuneEngine2\target\debug\build\shaderc-a487fde340fded54\out\build\spirv-headers\example\Release\SPIRV-Headers-example-1.1.lib
SPVRemapper.vcxproj -> C:\Users\guilh\github\KitsuneEngine2\target\debug\build\shaderc-a487fde340fded54\out\build\glslang\SPIRV\Release\SPVRemapper.lib
Check copyright
glslang-default-resource-limits.vcxproj -> C:\Users\guilh\github\KitsuneEngine2\target\debug\build\shaderc-a487fde340fded54\out\build\glslang\StandAlone\Release\glslang-default-resource-limits.lib
Update build-version.inc in the Shaderc build directory (if necessary).

--- stderr
thread 'main' panicked at '
command did not execute successfully, got: exit code: 1

build script failed, must exit now', C:\Users\guilh.cargo\registry\src\github.com-1ecc6299db9ec823\cmake-0.1.35\src\lib.rs:778:5
note: Run with RUST_BACKTRACE=1 environment variable to display a backtrace.`

Undocumented dependency on Python2

The build instructions only mentions Python 3.x, yet attempting to build without Python 2.x installed results in a build failure:

To build your own libshaderc for the shaderc-sys crate, the following tools must be installed and available on PATH:

  • CMake
  • Git
  • Python (only works with both Python 3.x, on windows the executable must be named python.exe)
  • a C++11 compiler

Given that Python2 reached its end-of-life on January 1st, and that many distributions (including Debian) are removing it from their future releases, I would strongly recommend getting rid of the dependency.

Fails to build on arch linux due to SPIRV_WERROR=ON

Fails to build on arch linux.
Setting SPIRV_WERROR=OFF fixes the issue.
I'm guessing this hasn't affected others because arch has a more recent compiler? (GCC 8.2.0-2)

Strangely I cant reproduce the issue when building the latest known good shaderc. I tried using the commits in the shaderc-rs submodules with just shaderc but that succeeded as well.

I think it would make sense to set SPIRV_WERROR=OFF in the build.rs file as the compiler adding new warnings shouldn't break compilation. I'm guessing C++ compilers can just add warnings whenever they want?

--- stderr
/home/rubic/Projects/Crates/shaderc-rs/build/spirv-tools/utils/update_build_version.py:91: DeprecationWarning: 'U' mode is deprecated
  with open(changes_file, mode='rU') as f:
/home/rubic/Projects/Crates/shaderc-rs/build/spirv-tools/utils/update_build_version.py:91: DeprecationWarning: 'U' mode is deprecated
  with open(changes_file, mode='rU') as f:
/home/rubic/Projects/Crates/shaderc-rs/build/spirv-tools/source/text_handler.cpp: In member function ‘spv_result_t spvtools::AssemblyContext::binaryEncodeString(const char*, spv_instruction_t*)’:
/home/rubic/Projects/Crates/shaderc-rs/build/spirv-tools/source/text_handler.cpp:316:10: error: ‘char* strncpy(char*, const char*, size_t)’ output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation]
   strncpy(dest, value, length);
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/rubic/Projects/Crates/shaderc-rs/build/spirv-tools/source/text_handler.cpp:298:31: note: length computed here
   const size_t length = strlen(value);
                         ~~~~~~^~~~~~~
At global scope:
cc1plus: error: unrecognized command line option ‘-Wno-self-assign’ [-Werror]
cc1plus: all warnings being treated as errors
make[2]: *** [spirv-tools/source/CMakeFiles/SPIRV-Tools.dir/build.make:484: spirv-tools/source/CMakeFiles/SPIRV-Tools.dir/text_handler.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:375: spirv-tools/source/CMakeFiles/SPIRV-Tools.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
/home/rubic/Projects/Crates/shaderc-rs/build/spirv-tools/source/text_handler.cpp: In member function ‘spv_result_t spvtools::AssemblyContext::binaryEncodeString(const char*, spv_instruction_t*)’:
/home/rubic/Projects/Crates/shaderc-rs/build/spirv-tools/source/text_handler.cpp:316:10: error: ‘char* strncpy(char*, const char*, size_t)’ output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation]
   strncpy(dest, value, length);
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/rubic/Projects/Crates/shaderc-rs/build/spirv-tools/source/text_handler.cpp:298:31: note: length computed here
   const size_t length = strlen(value);
                         ~~~~~~^~~~~~~
At global scope:
cc1plus: error: unrecognized command line option ‘-Wno-self-assign’ [-Werror]
cc1plus: all warnings being treated as errors
make[2]: *** [spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/build.make:484: spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/text_handler.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:636: spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
thread 'main' panicked at '
command did not execute successfully, got: exit code: 2

build script failed, must exit now', /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.33/src/lib.rs:773:5
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::print
             at libstd/sys_common/backtrace.rs:71
             at libstd/sys_common/backtrace.rs:59
   2: std::panicking::default_hook::{{closure}}
             at libstd/panicking.rs:211
   3: std::panicking::default_hook
             at libstd/panicking.rs:227
   4: std::panicking::rust_panic_with_hook
             at libstd/panicking.rs:463
   5: std::panicking::begin_panic_fmt
             at libstd/panicking.rs:350
   6: cmake::fail
             at /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.33/src/lib.rs:773
   7: cmake::run
             at /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.33/src/lib.rs:754
   8: cmake::Config::build
             at /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.33/src/lib.rs:666
   9: build_script_build::build_shaderc
             at build/build.rs:21
  10: build_script_build::main
             at build/build.rs:62
  11: std::rt::lang_start::{{closure}}
             at /checkout/src/libstd/rt.rs:74
  12: std::panicking::try::do_call
             at libstd/rt.rs:59
             at libstd/panicking.rs:310
  13: __rust_maybe_catch_panic
             at libpanic_unwind/lib.rs:105
  14: std::rt::lang_start_internal
             at libstd/panicking.rs:289
             at libstd/panic.rs:374
             at libstd/rt.rs:58
  15: std::rt::lang_start
             at /checkout/src/libstd/rt.rs:74
  16: main
  17: __libc_start_main
  18: _start

build.rs fails, when the shaderc-rs package from crates.io is used (not a git checkout)

build.rs fails with the following error-message, when shaderc-rs is included as a dependency in a project.

   Compiling shaderc v0.3.1
error: failed to run custom build command for `shaderc v0.3.1`
[...]
--- stderr
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
thread 'main' panicked at 'git submodule update --init failed', ~/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-0.3.1/build/build.rs:28:8
stack backtrace:
   0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace
             at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::_print
             at /checkout/src/libstd/sys_common/backtrace.rs:71
   2: std::panicking::default_hook::{{closure}}
             at /checkout/src/libstd/sys_common/backtrace.rs:60
             at /checkout/src/libstd/panicking.rs:380
   3: std::panicking::default_hook
             at /checkout/src/libstd/panicking.rs:396
   4: std::panicking::rust_panic_with_hook
             at /checkout/src/libstd/panicking.rs:611
   5: std::panicking::begin_panic_new
             at /checkout/src/libstd/panicking.rs:553
   6: build_script_build::git_submodule_update
             at ./build/build.rs:28
   7: build_script_build::main
             at ./build/build.rs:69
   8: __rust_maybe_catch_panic
             at /checkout/src/libpanic_unwind/lib.rs:98
   9: std::rt::lang_start
             at /checkout/src/libstd/panicking.rs:458
             at /checkout/src/libstd/panic.rs:361
             at /checkout/src/libstd/rt.rs:59
  10: main
  11: __libc_start_main
  12: _start

I guess a solution would be, to call git submodule update only, if there is a .git directory

Fails to build in a directory that has a parent directory with spaces in the name

Initially reported here: https://www.reddit.com/r/rust/comments/9ye5s8/vulkano_fails_to_compile_after_implementing/

Doing cargo run --release in the directory /home/rubic/dir with space oh no/shaderc-rs
Results in this compile error.

 97%] Building CXX object shaderc/glslc/CMakeFiles/glslc.dir/src/dependency_info.cc.o
[ 97%] Built target shaderc_shared
[ 98%] Linking CXX executable shaderc-online-compile
[ 98%] Built target shaderc-online-compile
[ 98%] Linking CXX static library libglslc.a
[ 98%] Built target glslc

--- stderr
usr/bin/ar: /home/rubic/dir: No such file or directory
make[2]: *** [shaderc/libshaderc/CMakeFiles/shaderc_combined_genfile.dir/build.make:69: shaderc/libshaderc/libshaderc_combined.a] Error 9
make[1]: *** [CMakeFiles/Makefile2:2984: shaderc/libshaderc/CMakeFiles/shaderc_combined_genfile.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:130: all] Error 2
thread 'main' panicked at '
command did not execute successfully, got: exit code: 2

build script failed, must exit now', /home/rubic/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.33/src/lib.rs:773:5
stack backtrace:
   6: std::panicking::begin_panic_fmt
             at libstd/panicking.rs:346
   7: cmake::fail
   8: cmake::run
   9: cmake::Config::build
  10: build_script_build::main

This is the important line: usr/bin/ar: /home/rubic/dir: No such file or directory
The path given to ar should be escaped.

build.rs: FreeBSD support

  • emit_std_cpp_link: ("freebsd", _) is like ("macos", _), we use libc++
  • in the big match (target_os.as_str(), target_env.as_str()), it would make sense to move ("linux", _) code to (_, _) so that it works on any unix-like platform, and use emit_std_cpp_link there instead of hardcoding stdc++
  • a default search dir of "/usr/local/lib" for target_os == "freebsd" would be nice
  • also a way to force using the shared lib when combined exists..

Release a 0.6.3 version ?

Hi,

Would you mind releasing a 0.6.3 ?

If pushing a PR is enough then I can do it... Let me know.

[Arch Linux] "could not find native static library `SPIRV-Tools-opt`, perhaps an -L flag is missing?"

This error started occurring on my Arch Linux system after doing a fresh build of nannou yesterday which relies on this crate via vulkano_shaders.

This seems related to #58, though the patch posted at #59 seems to make no difference in my case. @Abendstolz were you able to get shaderc building (not just type-checking) with the patch at #59? cargo check works OK for me, but cargo build fails with the title error.

Here is the full output I get when attempting to build shaderc-rs master branch today:

[mindtree@mindtree shaderc-rs]$ cargo build
   Compiling cc v1.0.38
   Compiling libc v0.2.60
   Compiling cmake v0.1.40
   Compiling shaderc-sys v0.6.0 (/home/mindtree/programming/rust/shaderc-rs/shaderc-sys)
warning: Checking for system installed libraries.  Use --features = build-from-source to disable this behavior
warning: Found SPIRV.  Linking libSPIRV & libglslang
error: could not find native static library `SPIRV-Tools-opt`, perhaps an -L flag is missing?

error: aborting due to previous error

The following warnings were emitted during compilation:

warning: Checking for system installed libraries.  Use --features = build-from-source to disable this behavior
warning: Found SPIRV.  Linking libSPIRV & libglslang

error: Could not compile `shaderc-sys`.

Here is the full output building the patch at #59 with unrelated deprecated item warnings omitted:

[mindtree@mindtree shaderc-rs]$ cargo build                                                                                                   
   Compiling cc v1.0.38                                                                                                                       
   Compiling libc v0.2.60                                              
   Compiling cmake v0.1.40                                                                                                                    
   Compiling shaderc-sys v0.5.0 (/home/mindtree/programming/rust/shaderc-rs/shaderc-sys)                                                      
warning: Checking for system installed libraries.  Use --features = build-from-source to disable this behavior
warning: Found SPIRV.  Linking libSPIRV & libglslang

# ... Deprecated item warnings ...

error: could not find native static library `SPIRV-Tools-opt`, perhaps an -L flag is missing?

error: aborting due to previous error

The following warnings were emitted during compilation:

warning: Checking for system installed libraries.  Use --features = build-from-source to disable this behavior
warning: Found SPIRV.  Linking libSPIRV & libglslang

error: Could not compile `shaderc-sys`.

I cargo cleaned and cargo updated before each to ensure no old broken artifacts were being used. Using the "build-from-source" feature seems to make no difference to the output in either case.

Here are the related libSPIRV* libraries I can find in my /usr/lib directory:

-rw-r--r--   1 root root 1010K Jul 19 19:46 libSPIRV.a                                                                                        
-rwxr-xr-x   1 root root  526K Jul 19 19:46 libSPIRV.so                                                                                       
lrwxrwxrwx   1 root root    11 Jul 19 19:46 libSPIRV.so.0 -> libSPIRV.so                                                                      
-rwxr-xr-x   1 root root   98K Jul 19 18:38 libSPIRV-Tools-link.so                                                                            
-rwxr-xr-x   1 root root  2.6M Jul 19 18:38 libSPIRV-Tools-opt.so                                                                             
-rwxr-xr-x   1 root root  178K Jul 19 18:38 libSPIRV-Tools-reduce.so                                                                          
-rwxr-xr-x   1 root root  1.1M Jul 19 18:38 libSPIRV-Tools-shared.so                                                                          
-rwxr-xr-x   1 root root  1.2M Jul 19 18:38 libSPIRV-Tools.so                                                                                 

Any advice on solutions/workarounds would be greatly appreciated!

mingw-w64-x86_64-ninja compiler errors for MSVC rust cargo build

I downloaded ninja from https://ninja-build.org/ and pasted in my msys2 folder and all errors went away. Might want to specify a version on your documentation and or inform to upgrade to newest version. I am compiling with CARGO and rust.

Errors are not obvious to what true error is. As far as I can tell incorrect information in Ninja for MSVC current build tools in the Msys2 download version. I am sure the guys on the google team know a lot more than I do about the Error. I installed my development environment this week.

Hopefully will help others.

Thank you Shaderc-rs team!


Caused by:
process didn't exit successfully: C:\Users\lavon\code\vulkano-examples\target\release\build\shaderc-sys-7d48b3aeb5eca3f7\build-script-build (exit code: 101)
--- stdout
cargo:warning=System installed library not found. Falling back to build from source
running: "cmake" "C:\Users\lavon\.cargo\registry\src\github.com-1ecc6299db9ec823\shaderc-sys-0.6.3\build" "-G" "Ninja" "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" "-DSPIRV_SKIP_EXECUTABLES=ON" "-DSPIRV_WERROR=OFF" "-DSHADERC_SKIP_TESTS=ON" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_C_FLAGS= /nologo /EHsc /MD" "-DCMAKE_CXX_FLAGS= /nologo /EHsc /MD" "-DCMAKE_C_FLAGS_RELEASE= /nologo /EHsc /MD" "-DCMAKE_CXX_FLAGS_RELEASE= /nologo /EHsc /MD" "-DSHADERC_ENABLE_SHARED_CRT=ON" "-DCMAKE_INSTALL_PREFIX=C:\Users\lavon\code\vulkano-examples\target\release\build\shaderc-sys-415cfd89d3cf34a1\out" "-DCMAKE_C_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29333/bin/HostX64/x64/cl.exe" "-DCMAKE_CXX_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29333/bin/HostX64/x64/cl.exe" "-DCMAKE_BUILD_TYPE=Release"
-- The C compiler identification is MSVC 19.28.29334.0
-- The CXX compiler identification is MSVC 19.28.29334.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29333/bin/HostX64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29333/bin/HostX64/x64/cl.exe - broken
-- Configuring incomplete, errors occurred!
See also "C:/Users/lavon/code/vulkano-examples/target/release/build/shaderc-sys-415cfd89d3cf34a1/out/build/CMakeFiles/CMakeOutput.log".
See also "C:/Users/lavon/code/vulkano-examples/target/release/build/shaderc-sys-415cfd89d3cf34a1/out/build/CMakeFiles/CMakeError.log".

--- stderr
CMake Error at C:/Program Files/CMake/share/cmake-3.19/Modules/CMakeTestCCompiler.cmake:66 (message):
The C compiler

  "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29333/bin/HostX64/x64/cl.exe"

is not able to compile a simple test program.

It fails with the following output:

  Change Dir: C:/Users/lavon/code/vulkano-examples/target/release/build/shaderc-sys-415cfd89d3cf34a1/out/build/CMakeFiles/CMakeTmp

  Run Build Command(s):C:/msys64/usr/bin/ninja.exe cmTC_73947 && [1/2] Building C object 'CMakeFiles\cmTC_73947.dir\testCCompiler.c.obj'
  FAILED: CMakeFiles\cmTC_73947.dir\testCCompiler.c.obj
  C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1428~1.293\bin\HostX64\x64\cl.exe  /nologo   /nologo /EHsc /MD  /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /Fo'CMakeFiles\cmTC_73947.dir\testCCompiler.c.obj' /FdCMakeFiles\cmTC_73947.dir\ /FS -c testCCompiler.c
  /bin/sh: C:PROGRA~2MICROS~12019COMMUN~1VCToolsMSVC1428~1.293binHostX64x64cl.exe: command not found
  ninja: build stopped: subcommand failed.

Some binaries are built in error

Per the discussion in #34, some binaries are being built and left around despite them not even being used by the library.

d:\dev\learn-gfx-hal\target\debug\build\shaderc-0b3a14f59f26d605\out\bin>dir
 Volume in drive D is Data
 Volume Serial Number is B265-51AB

 Directory of d:\dev\learn-gfx-hal\target\debug\build\shaderc-0b3a14f59f26d605\out\bin

2019-01-25  09:07 PM    <DIR>          .
2019-01-25  09:07 PM    <DIR>          ..
2019-01-25  09:06 PM         3,981,312 glslangValidator.exe
2019-01-25  09:06 PM         4,111,360 glslc.exe
2019-01-25  09:07 PM         4,038,144 shaderc_shared.dll
2019-01-15  09:01 AM               866 spirv-lesspipe.sh
2019-01-25  09:07 PM           218,624 spirv-remap.exe
2019-01-25  09:06 PM         1,156,608 SPIRV-Tools-shared.dll

Error compiling with Ninja on Windows

I get a linking error when trying to compile with Ninja:

Z:\DDocuments\Code\Rust\projects\19-2\hal_test (master -> origin)
λ cargo run
   Compiling proc-macro2 v0.4.27
   Compiling semver-parser v0.7.0
   Compiling num-traits v0.2.6
   Compiling winapi v0.3.6
   Compiling autocfg v0.1.2
   Compiling num-integer v0.1.39
   Compiling typenum v1.10.0
   Compiling byteorder v1.3.1
   Compiling rayon-core v1.4.1
   Compiling num-complex v0.2.1
   Compiling failure_derive v0.1.5
   Compiling cc v1.0.29
   Compiling num-derive v0.2.4
   Compiling rustc-demangle v0.1.13
   Compiling num-iter v0.1.37
   Compiling rand_core v0.4.0
   Compiling matrixmultiply v0.1.15
   Compiling rayon v1.0.3
   Compiling num-rational v0.2.1
   Compiling either v1.5.1
   Compiling libm v0.1.2
   Compiling adler32 v1.0.3
   Compiling rawpointer v0.1.0
   Compiling lzw v0.10.0
   Compiling bitflags v1.0.4
   Compiling color_quant v1.0.1
   Compiling smallvec v0.6.9
   Compiling safe-transmute v0.10.1
   Compiling scoped_threadpool v0.1.9
   Compiling range-alloc v0.1.0
   Compiling arrayvec v0.4.10
   Compiling libc v0.2.49
   Compiling crossbeam-utils v0.2.2
   Compiling log v0.4.6
   Compiling backtrace v0.3.14
   Compiling rand_chacha v0.1.1
   Compiling rand v0.6.5
   Compiling semver v0.9.0
   Compiling cmake v0.1.35
   Compiling spirv_cross v0.12.1
   Compiling rand_core v0.3.1
   Compiling inflate v0.4.5
   Compiling gif v0.10.1
   Compiling rustc_version v0.2.3
   Compiling rand_hc v0.1.0
   Compiling rand_isaac v0.1.1
   Compiling rand_xorshift v0.1.1
   Compiling shaderc v0.3.16
   Compiling num_cpus v1.10.0
   Compiling crossbeam-epoch v0.3.1
   Compiling fxhash v0.2.1
   Compiling deflate v0.7.19
   Compiling approx v0.3.1
   Compiling generic-array v0.11.1
   Compiling quote v0.6.11
   Compiling rand_pcg v0.1.1
   Compiling alga v0.7.2
   Compiling syn v0.15.26
   Compiling crossbeam-deque v0.2.0
   Compiling time v0.1.42
   Compiling rand v0.5.6
   Compiling rand_jitter v0.1.3
   Compiling rand_os v0.1.2
   Compiling d3d12 v0.1.0
   Compiling png v0.14.0
   Compiling winit v0.18.1
   Compiling chrono v0.4.6
   Compiling nalgebra v0.16.13
   Compiling simple_logger v1.0.1
   Compiling jpeg-decoder v0.1.15
   Compiling synstructure v0.10.1
   Compiling derivative v1.0.2
   Compiling tiff v0.2.2
   Compiling failure v0.1.5
   Compiling gfx-hal v0.1.0
   Compiling image v0.21.0
   Compiling gfx-backend-dx12 v0.1.1
   Compiling nalgebra-glm v0.2.1
   Compiling hal_test v0.1.0 (Z:\DDocuments\Code\Rust\projects\19-2\hal_test)
error: linking with `link.exe` failed: exit code: 1169
  |
  = note: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX64\\x64\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.102v0kev4kniol1m.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.10fp43jwndniqshy.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.18p6nq35pcdr8a46.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.19tvtkrgjzzlxey1.rcgu.o"
"Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1bgohmsoej322d3p.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1c1i8oqk8ba7uqks.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1cnkpc8273yw08yu.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1g4150ukzzcwuzm7.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1ij1qsek3hrjmo3a.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1iwn1vpbbea402j.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1ntqiezadld4mxs6.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1p6qh003ng26c6h1.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1pyd8gz7k6lt4p6f.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1qt6bx81gb3b7tcv.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1rdbj35pp4jhp07u.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1sk3fq93rl07wfjk.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1u2wmn1wehwhojwp.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1vz0yy1vzcyjpbpp.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.1zsj46scalqpw7at.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.22vqjzj7i49l3m1z.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.22ynq4cbg97m8cm1.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.23dbki22jxd9x04a.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.248nsyaqd0gjvdzi.rcgu.o"
"Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.24ia9l5f57u44x26.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.26zehwaglx7v1kn1.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.27x01o5jdm32sv2.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.29qkmcv50ivifrqf.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2befzh5fqfh321zp.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2c4s1qti4e0fyaf5.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2fohcjhy9foyt09.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2hbuotxp9njw32cz.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2hugg6dtx0h2xd5x.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2j4hi3z046w7sxps.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2j87rj2exfwyeqdq.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2kyzcjv8t3d03e3o.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2l71546r9m4yyhuo.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2nfidjsbestwy3l0.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2nz06knrceuhk6cu.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2pdprxn04mde4yxs.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2qnttv7xzout0fi0.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2s5oq8qj1f44f8gx.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2t90a6cfbdjalosl.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2vj4xjgba9obwxfe.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2w6075bssfbalh23.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2wo6yyjtndgw34lb.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.2ynkx0b0347sw0w1.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.32ipy1k0vv23w2wq.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.33nvkoy8wjk8f6fa.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.362algkm5kv17nyt.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.375um2a51mqmwrkf.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3c4pnrodhr3v6h41.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3c4roquayhmgjw17.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3d1nzjd4f42ymxtd.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3fk193nd8w4gvwgp.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3fl9olikjbmdf29u.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3g9unb82rm4vcy5g.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3hsaqwyigo9jl1mj.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3jfhnvqhs95uoaxz.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3l46t8y83c0bnrua.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3qtsrg9jpupmwez2.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3rs506abdn5s55c6.rcgu.o"
"Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3v4pll5bbfvfg83g.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.3y21ek76ak8blrb0.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.407cc9sjhnldfzn1.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.431mnrspvx1rueu6.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.477rb19v2vf6v0pz.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.47ogfj48az0plfdf.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.49fxgjvi0xseoi8j.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4cl1s8sf7iuzbntc.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4g48wd1477tfd82r.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4h24r6hrqod784ly.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4iextfrcuxhyn0he.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4iqgzyb6i393jiyo.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4m6b7q9rz61y0wkz.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4m8n3jc7zrpmzho8.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4n1pnx5moqt9c2jr.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4nphxlgj2fr5x5t0.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4o10zta91mwuysp8.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4q20ezvidt2266cb.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4rli3fway0gdxc0t.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4sqnvoamnjj80xgl.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4t6wtz630a0vwtrx.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4ufgnv9itzz7eab2.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4v51pd3gd9wlzffj.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4v9rsjl8sdni2kos.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4vr69635tqh1j38n.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4x85p134jzzyt1tf.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.4xh2q93737u6hmg0.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.51b9voxkdqihtagk.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.54eacd82kz3mz68d.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.54u6foe647vfuc5b.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.55u9cdzdxp15mpvf.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.570jclxqnh49afxs.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.57rj9e3b0l6xdul3.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.590otr5qu3nbmu1a.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.59ump3ds8qxhjb1n.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.5b4v9smpklpuk8uj.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.5bkpidhxdaqjcbi7.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.5c0r3fuctko77z5j.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.5exkg3kv2bo0618f.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.5fle8wnl0iiafylk.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.5gshjdxejq4p7c0f.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.96nrp3kii5zhrnd.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.awqwnotovh183fw.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.de8tg5nufwdlr2z.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.g0kstinxtq55u5m.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.hqwypv6gkjgo53l.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.jo0l0eawbue6bpo.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.jps0fmlqozyoxvf.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.ke1mrsyanpv7pkn.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.oyhlpzh7axda4jd.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.plmhilhdbroaoz6.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.vx804c2d4uo08b3.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.w4q1qa2773p6yhl.rcgu.o" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.xsp0icthjgumu3n.rcgu.o" "/OUT:Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.exe" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\hal_test-2fb38d64f9292a2d.56b92lc8ea8i4mp0.rcgu.o" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/LIBPATH:Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps" "/LIBPATH:Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\build\\spirv_cross-5113d348d3438ca1\\out" "/LIBPATH:Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\build\\shaderc-2676a4f96b001a7b\\out\\lib" "/LIBPATH:C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libsimple_logger-44ebd6f28f463b79.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libchrono-7ebf0562c4bdfa23.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libnum_integer-dff69c6e91752155.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libnum_traits-c96c5fc345b18bbe.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libtime-6a6181124a2e5afc.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libshaderc-1879acdbc06a201e.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libarrayvec-4cf43a85546e52b1.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libgfx_backend_dx12-c38779d66b685859.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libwinit-53628d025845ce22.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\liblibc-e2058b49d264c6f8.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\liblazy_static-4fae7ea8350deec2.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libspirv_cross-c74be2b3866182cd.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libsmallvec-3c2531ec475fd409.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libd3d12-208d5740fa43429a.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\librange_alloc-520ce42809a188d6.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libgfx_hal-d4f7083616ad2f73.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libfxhash-fd566afbe399cc6b.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libbyteorder-5b55a54776ffee77.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libfailure-d9fa1159af39187e.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libbacktrace-ec0e974d17b87095.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\librustc_demangle-b730bcbaaa2ac08d.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libwinapi-17f679ee0e0e62b8.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libbitflags-1e51f377fbdd665f.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\liblog-4647294d3872a7d5.rlib" "Z:\\DDocuments\\Code\\Rust\\projects\\19-2\\hal_test\\target\\debug\\deps\\libcfg_if-d3e43d78decf7cdd.rlib" "C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-8d2dec6a5a3c6056.rlib" "C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-b5b2642add198086.rlib" "C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libbacktrace_sys-2eb55f1d4e25d656.rlib" "C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-29c72569f739d68a.rlib" "C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_demangle-d94cf182827d715a.rlib" "C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-703222f8cf305fd1.rlib" "C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-395a9229f654abf9.rlib" "C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core-d9b87c46423f1ae7.rlib" "C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-3fac3b2302f5f715.rlib" "C:\\Users\\boogie\\.rustup\\toolchains\\nightly-2019-01-15-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-dcddb476b25aea42.rlib" "advapi32.lib" "comctl32.lib" "credui.lib" "d3d12.lib" "d3dcompiler.lib" "dbghelp.lib" "dwmapi.lib" "dxgi.lib" "gdi32.lib" "kernel32.lib" "msimg32.lib" "ole32.lib" "opengl32.lib" "secur32.lib" "setupapi.lib" "shcore.lib" "shell32.lib" "shlwapi.lib" "synchronization.lib" "user32.lib" "uxtheme.lib" "winspool.lib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "msvcrt.lib"
  = note: libspirv_cross-c74be2b3866182cd.rlib(wrapper.o) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          libspirv_cross-c74be2b3866182cd.rlib(spirv_cross.o) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          libspirv_cross-c74be2b3866182cd.rlib(spirv_cross_util.o) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          libspirv_cross-c74be2b3866182cd.rlib(spirv_glsl.o) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          libspirv_cross-c74be2b3866182cd.rlib(spirv_hlsl.o) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          libspirv_cross-c74be2b3866182cd.rlib(spirv_msl.o) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          libspirv_cross-c74be2b3866182cd.rlib(spirv_cfg.o) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          libspirv_cross-c74be2b3866182cd.rlib(spirv_cross_parsed_ir.o) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          libspirv_cross-c74be2b3866182cd.rlib(spirv_parser.o) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: struct _Cvtvec __cdecl std::_Locinfo::_Getcvt(void)const " (?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: char const * __cdecl std::_Locinfo::_Getdays(void)const " (?_Getdays@_Locinfo@std@@QEBAPEBDXZ) already defined in libcpmt.lib(wlocale.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: char const * __cdecl std::_Locinfo::_Getmonths(void)const " (?_Getmonths@_Locinfo@std@@QEBAPEBDXZ) already defined in libcpmt.lib(wlocale.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: unsigned short const * __cdecl std::_Locinfo::_W_Getdays(void)const " (?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ) already defined in libcpmt.lib(wlocale.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: unsigned short const * __cdecl std::_Locinfo::_W_Getmonths(void)const " (?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ) already defined in libcpmt.lib(wlocale.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: bool __cdecl std::ios_base::good(void)const " (?good@ios_base@std@@QEBA_NXZ) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: int __cdecl std::ios_base::flags(void)const " (?flags@ios_base@std@@QEBAHXZ) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: __int64 __cdecl std::ios_base::width(void)const " (?width@ios_base@std@@QEBA_JXZ) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: __int64 __cdecl std::ios_base::width(__int64)" (?width@ios_base@std@@QEAA_J_J@Z) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::basic_streambuf<char,struct std::char_traits<char> >(void)" (??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: virtual __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::~basic_streambuf<char,struct std::char_traits<char> >(void)" (??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: int __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::sputc(char)" (?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: __int64 __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,__int64)" (?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::eback(void)const " (?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::gptr(void)const " (?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::pbase(void)const " (?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::pptr(void)const " (?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::egptr(void)const " (?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: void __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::gbump(int)" (?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: void __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::setg(char *,char *,char *)" (?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::epptr(void)const " (?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: void __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::setp(char *,char *)" (?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: void __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::setp(char *,char *,char *)" (?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::_Pninc(void)" (?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: virtual __cdecl std::basic_ios<char,struct std::char_traits<char> >::~basic_ios<char,struct std::char_traits<char> >(void)" (??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: void __cdecl std::basic_ios<char,struct std::char_traits<char> >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > * __cdecl std::basic_ios<char,struct std::char_traits<char> >::tie(void)const " (?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: class std::basic_streambuf<char,struct std::char_traits<char> > * __cdecl std::basic_ios<char,struct std::char_traits<char> >::rdbuf(void)const " (?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: char __cdecl std::basic_ios<char,struct std::char_traits<char> >::fill(void)const " (?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "protected: __cdecl std::basic_ios<char,struct std::char_traits<char> >::basic_ios<char,struct std::char_traits<char> >(void)" (??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: __cdecl std::basic_ostream<char,struct std::char_traits<char> >::basic_ostream<char,struct std::char_traits<char> >(class std::basic_streambuf<char,struct std::char_traits<char> > *,bool)" (??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: virtual __cdecl std::basic_ostream<char,struct std::char_traits<char> >::~basic_ostream<char,struct std::char_traits<char> >(void)" (??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in libshaderc-1879acdbc06a201e.rlib(shaderc.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: void __cdecl std::basic_ostream<char,struct std::char_traits<char> >::_Osfx(void)" (?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::basic_ostream<char,struct std::char_traits<char> >::operator<<(unsigned int)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::basic_ostream<char,struct std::char_traits<char> >::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::basic_ostream<char,struct std::char_traits<char> >::operator<<(unsigned short)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@G@Z) already defined in libshaderc-1879acdbc06a201e.rlib(binary.cpp.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::basic_ostream<char,struct std::char_traits<char> >::operator<<(unsigned __int64)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z) already defined in libshaderc-1879acdbc06a201e.rlib(binary.cpp.obj)
          msvcprt.lib(MSVCP140.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::basic_ostream<char,struct std::char_traits<char> >::operator<<(int)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z) already defined in libshaderc-1879acdbc06a201e.rlib(compiler.cc.obj)
          LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
          Z:\DDocuments\Code\Rust\projects\19-2\hal_test\target\debug\deps\hal_test-2fb38d64f9292a2d.exe : fatal error LNK1169: one or more multiply defined symbols found


error: aborting due to previous error

error: Could not compile `hal_test`.

To learn more, run the command again with --verbose.

Versions:

  • CMake: 3.13.4
  • Python 3.7.0
  • Ninja 1.9.0

It's building fine without Ninja, but I had to target somewhere else, so I tried using Ninja as described in the README.
I tried reinstalling CMake, Python, Ninja, and even Build Tools.
To be honest I'm not quite sure if this is even an issue with shaderc-rs.

Update: I was using the triangle example from learn-gfx-hal when getting this error, changing it to the example given in the README works. I'll try to figure out what exactly is causing this.

File paths are way too long

The build process should attempt to use shorter paths.

When attempting to build shaderc-rs, @termhn was given the following error

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(321,5): error MSB3491: Could not write lines to file "x64\Release\spirv-tools-spv-amd-shader-explicit-vertex-parameter\spirv-to.8AECBDF2.tlog\spirv-tools-spv-amd-shader-explicit-vertex-parameter.lastbuildstate". The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. [C:\Users\Gray\Code\learn-gfx-hal\target\debug\build\shaderc-ceea3062217d891f\out\build\spirv-tools\source\spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj]

And then it was fixed by just moving up from C:\Users\Gray\Code\learn-gfx-hal to C:\dev\learn-gfx-hal, so you're right on the limit I guess, shouldn't be too hard to cut down some of the wordy stuff.

Problems to compile simple shader

Hey guys,
Actually I just need some tips.
I am trying to compile a very simple shader using your solution and I am getting an error which using the command line tool glslc I don't have.
2020-04-11 23:22:37.189893+0100 rustgraphics[53825:2886692] flock failed to lock maps file: errno = 35 thread 'main' panicked at 'called Result::unwrap()on anErr value: Render("2 compilation errors:\n/Users/jhonnyvargas/dev/rustgraphics/src/vert.glsl:8: error: \'gl_VertexIndex\' : undeclared identifier\n/Users/jhonnyvargas/dev/rustgraphics/src/vert.glsl:8: error: \'&\' : wrong operand types: no operation \'&\' exists that takes a left-hand operand of type \' temp float\' and a right operand of type \' const int\' (or there is no acceptable conversion)\n")', src/renderer/shader.rs:35:9 stack backtrace:

this is how I am compiling https://github.com/jkvargas/ruststudy/blob/master/src/renderer/shader.rs
and this is the shader itself: https://github.com/jkvargas/ruststudy/blob/master/src/vert.glsl

by the way I am on a MacOS 10.15.4
and my toolchain is stable-x86_64-apple-darwin unchanged - rustc 1.42.0 (b8cedc004 2020-03-09)

Tests no longer pass

Since the build script doesn't pin the pulled repos to a particular commit, it picks the latest versions of each of them. As well as potentially silently introducing breakage or errors, this has caused the tests to fail. Presumably the best way of dealing with this is to checkout particular commits in the build script, instead of blindly updating.

Lack of Android support

I noticed that shaderc-rs builds pretty fine for iOS already but not for Android. But shaderc is de facto standard for Android.

I tried to build shaderc-rs for Android and got some weird errors from cmake:

Cropped error log:
[296/379] Linking CXX shared library spirv-tools/source/libSPIRV-Tools-shared.dylib
  FAILED: spirv-tools/source/libSPIRV-Tools-shared.dylib 
  aarch64-linux-android29-clang++ -DANDROID -ffunction-sections -fdata-sections -fPIC -O3 -DNDEBUG -isysroot 
  /crtbegin_dynamic.o: In function _start_main':
  crtbegin.c:(.text+0x38): undefined reference to main'
  crtbegin.c:(.text+0x3c): undefined reference to `main'
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  [299/379] Building CXX object spirv-tools/source/CMakeFiles/SPIRV-Tools.dir/extensions.cpp.o
  ninja: build stopped: subcommand failed.
Full error log:
$ cargo apk run
   Compiling shaderc-sys v0.6.2
The following warnings were emitted during compilation:

warning: System installed library not found. Falling back to build from source

error: failed to run custom build command for shaderc-sys v0.6.2

Caused by:
process didn't exit successfully: /Users/enfipy/Desktop/Development/Own/creator-rs/creator/target/debug/build/shaderc-sys-e7e8ad6d63e326cd/build-script-build (exit code: 101)
--- stdout
cargo:warning=System installed library not found. Falling back to build from source
running: "cmake" "/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build" "-G" "Ninja" "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" "-DSPIRV_SKIP_EXECUTABLES=ON" "-DSPIRV_WERROR=OFF" "-DSHADERC_SKIP_TESTS=ON" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_PREFIX=/Users/enfipy/Desktop/Development/Own/creator-rs/creator/target/aarch64-linux-android/debug/build/shaderc-sys-128d78ee4a4deb1b/out" "-DCMAKE_C_FLAGS= -DANDROID -ffunction-sections -fdata-sections -fPIC" "-DCMAKE_C_COMPILER=/Users/enfipy/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android29-clang" "-DCMAKE_CXX_FLAGS= -DANDROID -ffunction-sections -fdata-sections -fPIC" "-DCMAKE_CXX_COMPILER=/Users/enfipy/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android29-clang++" "-DCMAKE_ASM_FLAGS= -DANDROID -ffunction-sections -fdata-sections -fPIC" "-DCMAKE_ASM_COMPILER=/Users/enfipy/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android29-clang" "-DCMAKE_BUILD_TYPE=Release"
-- Building SPIRV-Header examples
-- Installing SPIRV-Header
-- Google Mock was not found - tests based on that will not build
-- optimizer enabled
-- Shaderc: build type is "Release".
-- Configuring Shaderc to avoid building tests.
-- asciidoctor was not found - no documentation will be generated
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/enfipy/Desktop/Development/Own/creator-rs/creator/target/aarch64-linux-android/debug/build/shaderc-sys-128d78ee4a4deb1b/out/build
running: "cmake" "--build" "." "--target" "install" "--config" "Release" "--" "-j4"
[1/85] cd /Users/enfipy/Desktop/Development/Own/creator-rs/creator/target/aarch64-linux-android/debug/build/shaderc-sys-128d78ee4a4deb1b/out/build/spirv-tools && /usr/local/Cellar/cmake/3.17.0_1/bin/cmake -DCHANGES_FILE=/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/CHANGES -DTEMPLATE_FILE=/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/cmake/SPIRV-Tools-shared.pc.in -DOUT_FILE=/Users/enfipy/Desktop/Development/Own/creator-rs/creator/target/aarch64-linux-android/debug/build/shaderc-sys-128d78ee4a4deb1b/out/build/spirv-tools/SPIRV-Tools-shared.pc -DCMAKE_INSTALL_PREFIX=/Users/enfipy/Desktop/Development/Own/creator-rs/creator/target/aarch64-linux-android/debug/build/shaderc-sys-128d78ee4a4deb1b/out -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_INCLUDEDIR=include -DSPIRV_SHARED_LIBRARIES=-lSPIRV-Tools-shared -P /Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/cmake/write_pkg_config.cmake
[2/85] cd /Users/enfipy/Desktop/Development/Own/creator-rs/creator/target/aarch64-linux-android/debug/build/shaderc-sys-128d78ee4a4deb1b/out/build/spirv-tools && /usr/local/Cellar/cmake/3.17.0_1/bin/cmake -DCHANGES_FILE=/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/CHANGES -DTEMPLATE_FILE=/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/cmake/SPIRV-Tools.pc.in -DOUT_FILE=/Users/enfipy/Desktop/Development/Own/creator-rs/creator/target/aarch64-linux-android/debug/build/shaderc-sys-128d78ee4a4deb1b/out/build/spirv-tools/SPIRV-Tools.pc -DCMAKE_INSTALL_PREFIX=/Users/enfipy/Desktop/Development/Own/creator-rs/creator/target/aarch64-linux-android/debug/build/shaderc-sys-128d78ee4a4deb1b/out -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_INCLUDEDIR=include -DSPIRV_LIBRARIES=-lSPIRV-Tools-opt\ -lSPIRV-Tools\ -lSPIRV-Tools-link -P /Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/cmake/write_pkg_config.cmake
[3/85] Linking CXX shared library spirv-tools/source/libSPIRV-Tools-shared.dylib
FAILED: spirv-tools/source/libSPIRV-Tools-shared.dylib
: && /Users/enfipy/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android29-clang++ -DANDROID -ffunction-sections -fdata-sections -fPIC -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -dynamiclib -Wl,-headerpad_max_install_names -o spirv-tools/source/libSPIRV-Tools-shared.dylib -install_name /Users/enfipy/Desktop/Development/Own/creator-rs/creator/target/aarch64-linux-android/debug/build/shaderc-sys-128d78ee4a4deb1b/out/build/spirv-tools/source/libSPIRV-Tools-shared.dylib spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/util/bit_vector.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/util/parse_number.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/util/string_utils.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/assembly_grammar.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/binary.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/diagnostic.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/disassemble.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/enum_string_mapping.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/ext_inst.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/extensions.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/libspirv.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/name_mapper.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/opcode.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/operand.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/parsed_operand.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/print.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/software_version.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/spirv_endian.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/spirv_fuzzer_options.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/spirv_optimizer_options.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/spirv_reducer_options.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/spirv_target_env.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/spirv_validator_options.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/table.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/text.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/text_handler.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_adjacency.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_annotation.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_arithmetics.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_atomics.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_barriers.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_bitwise.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_builtins.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_capability.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_cfg.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_composites.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_constants.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_conversion.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_debug.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_decorations.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_derivatives.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_extensions.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_execution_limitations.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_function.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_id.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_image.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_interfaces.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_instruction.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_layout.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_literals.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_logicals.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_memory.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_memory_semantics.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_misc.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_mode_setting.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_non_uniform.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_primitives.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_scopes.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_small_type_uses.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validate_type.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/basic_block.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/construct.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/function.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/instruction.cpp.o spirv-tools/source/CMakeFiles/SPIRV-Tools-shared.dir/val/validation_state.cpp.o && :
clang++: warning: argument unused during compilation: '-dynamiclib' [-Wunused-command-line-argument]
clang++: warning: argument unused during compilation: '-install_name /Users/enfipy/Desktop/Development/Own/creator-rs/creator/target/aarch64-linux-android/debug/build/shaderc-sys-128d78ee4a4deb1b/out/build/spirv-tools/source/libSPIRV-Tools-shared.dylib' [-Wunused-command-line-argument]
/Users/enfipy/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/lib/aarch64-linux-android/29/crtbegin_dynamic.o: In function _start_main': crtbegin.c:(.text+0x38): undefined reference to main'
crtbegin.c:(.text+0x3c): undefined reference to `main'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
[4/85] Building CXX object spirv-tools/source/CMakeFiles/SPIRV-Tools.dir/print.cpp.o
[5/85] Building CXX object spirv-tools/source/CMakeFiles/SPIRV-Tools.dir/parsed_operand.cpp.o
[6/85] Building CXX object spirv-tools/source/CMakeFiles/SPIRV-Tools.dir/operand.cpp.o
ninja: build stopped: subcommand failed.

--- stderr
CMake Warning (dev) at CMakeLists.txt:8 (project):
Policy CMP0048 is not set: project() command manages VERSION variables.
Run "cmake --help-policy CMP0048" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.

The following variable(s) would be set to empty:

  CMAKE_PROJECT_VERSION
  CMAKE_PROJECT_VERSION_MAJOR
  CMAKE_PROJECT_VERSION_MINOR
  CMAKE_PROJECT_VERSION_PATCH

This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev):
Policy CMP0042 is not set: MACOSX_RPATH is enabled by default. Run "cmake
--help-policy CMP0042" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.

MACOSX_RPATH is not specified for the following targets:

 SPIRV-Tools-shared
 shaderc_shared

This warning is for project developers. Use -Wno-dev to suppress it.

thread 'main' panicked at '
command did not execute successfully, got: exit code: 1

build script failed, must exit now', /Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.44/src/lib.rs:885:5
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
Error: Command 'cargo build --target aarch64-linux-android' had a non-zero exit code.

I'm not sure what exactly is broken here. Any help will be highly appreciated!

Build fails on Windows with static CRT

When compiling a project with static CRT enabled (rustflags = ["-C", "target-feature=+crt-static"] set in .cargo/config for [target.x86_64-pc-windows-msvc]), the underlying shaderc C++ library fails to link.

The error log is pretty long; here is one of the failed CI runs from the project I am working on.

Still `MAX_LENGTH_ERROR` even using Ninja

Versions

  • cmake version: 3.12.2
  • ninja version: 1.9.0
  • git version 2.21.0.windows.1
  • python version Python 3.6.5rc1

PATH

%PATH%:D:\tools\ninja:D:\tools\MSYS2:C:\Program Files\Python36:C:\PROGRA~1\CMake\bin

Error

Errors when compiling:

Build FAILED.

"D:\Workspaces\RustWorkspace\vtr\target\debug\build\shaderc-b4cd8b461463a31a\out\build\install.vcxproj" (default target) (1) ->
"D:\Workspaces\RustWorkspace\vtr\target\debug\build\shaderc-b4cd8b461463a31a\out\build\ALL_BUILD.vcxproj" (default target) (3) ->
"D:\Workspaces\RustWorkspace\vtr\target\debug\build\shaderc-b4cd8b461463a31a\out\build\glslang\SPIRV\SPIRV.vcxproj" (default target) (7) ->
"D:\Workspaces\RustWorkspace\vtr\target\debug\build\shaderc-b4cd8b461463a31a\out\build\spirv-tools\source\SPIRV-Tools.vcxproj" (default target) (8) ->
"D:\Workspaces\RustWorkspace\vtr\target\debug\build\shaderc-b4cd8b461463a31a\out\build\spirv-tools\source\extinst_tables.vcxproj" (default target) (11) ->
"D:\Workspaces\RustWorkspace\vtr\target\debug\build\shaderc-b4cd8b461463a31a\out\build\spirv-tools\source\spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj" (default target) (16) ->
(InitializeBuildStatus target) ->
  C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(321,5): error MSB3491: Could not write lines to file "x64\Release\spirv-tools-spv-amd-shader-explicit-vertex-parameter\spirv-to.246FD402.tlog\spirv-tools-spv-amd-shader-explicit-vertex-parameter.lastbuildstate". The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. [D:\Workspaces\RustWorkspace\vtr\target\debug\build\shaderc-b4cd8b461463a31a\out\build\spirv-tools\source\spirv-tools-spv-amd-shader-explicit-vertex-parameter.vcxproj]

Questions

  • I wonder if I set the ENV correctly?
  • Whether or not I put Ninja into the PATH, I always get this MAX_LENGTH_ERROR, but the package is different.

Unable to build

In cloning the https://github.com/google/shaderc-rs and running cargo build on both the shaderc-sys and shaderc-rs neither work

Resulting in these errors respectively:

shaderc-sys errors:

image

shaderc-rs errors:

image

Install

image

(and got both VS 2017 and VS 2019 installed with their respective build tools, Desktop development with C++ tool)

(originally I was trying to compile a library which depended upon this library (vulkano) which eventually lead me to this issue.)

What am I doing wrong here?

Link order of libshaderc and it's dependencies

I'm trying to link (statically) against libshaderc and it's dependencies.
For windows it seems like to be:

shaderc
shaderc_util
SPIRV
glslang
OSDependent
OGLCompiler
HLSL
SPIRV-Tools-Opt
SPIRV-Tools

However, using this order on a Ubuntu 18.04 with clang 7.0.0 leads to the following undefined reference:

/usr/bin/ld: ../../lib/shaderc/bin/Linux/Release/libSPIRV-Tools-opt.a(strip_atomic_counter_memory_pass.cpp.o): in function `std::_Function_handler<void (spvtools::opt::Instruction*), spvtools::opt::StripAtomicCounterMemoryPass::Process()::$_0>::_M_invoke(std::_Any_data const&, spvtools::opt::Instruction*&&)':
strip_atomic_counter_memory_pass.cpp:(.text+0xac): undefined reference to `spvOpcodeMemorySemanticsOperandIndices(SpvOp_)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
find_library(SHADERC_LIB                NAMES "shaderc"                     HINTS ${LIB_SPIRV_RELEASE_PATH})
find_library(SHADERC_LIB_D              NAMES "shaderc"                     HINTS ${LIB_SPIRV_DEBUG_PATH})

find_library(SHADERC_UTIL_LIB           NAMES "shaderc_util"                HINTS ${LIB_SPIRV_RELEASE_PATH})
find_library(SHADERC_UTIL_LIB_D         NAMES "shaderc_util"                HINTS ${LIB_SPIRV_DEBUG_PATH})

find_library(GLSLANG_LIB                NAMES "glslang"                     HINTS ${LIB_SPIRV_RELEASE_PATH})
find_library(GLSLANG_LIB_D              NAMES "glslang" "glslangd"          HINTS ${LIB_SPIRV_DEBUG_PATH})

find_library(SPIRV_LIB                  NAMES "SPIRV"                       HINTS ${LIB_SPIRV_RELEASE_PATH})
find_library(SPIRV_LIB_D                NAMES "SPIRV" "SPIRVd"              HINTS ${LIB_SPIRV_DEBUG_PATH})

find_library(HLSL_LIB                   NAMES "HLSL"                        HINTS ${LIB_SPIRV_RELEASE_PATH})
find_library(HLSL_LIB_D                 NAMES "HLSL" "HLSLd"                HINTS ${LIB_SPIRV_DEBUG_PATH})

find_library(GLSLANG_OSDEPENDENT_LIB    NAMES "OSDependent"                 HINTS ${LIB_SPIRV_RELEASE_PATH})
find_library(GLSLANG_OSDEPENDENT_LIB_D  NAMES "OSDependent" "OSDependentd"  HINTS ${LIB_SPIRV_DEBUG_PATH})

find_library(GLSLANG_OGL_COMPILER_LIB   NAMES "OGLCompiler"                 HINTS ${LIB_SPIRV_RELEASE_PATH})
find_library(GLSLANG_OGL_COMPILER_LIB_D NAMES "OGLCompiler" "OGLCompilerd"  HINTS ${LIB_SPIRV_DEBUG_PATH})

find_library(SPIRV_TOOLS_LIB            NAMES "SPIRV-Tools"                 HINTS ${LIB_SPIRV_RELEASE_PATH})
find_library(SPIRV_TOOLS_LIB_D          NAMES "SPIRV-Tools"                 HINTS ${LIB_SPIRV_DEBUG_PATH})

find_library(SPIRV_TOOLS_OPT_LIB        NAMES "SPIRV-Tools-opt"             HINTS ${LIB_SPIRV_RELEASE_PATH})
find_library(SPIRV_TOOLS_OPT_LIB_D      NAMES "SPIRV-Tools-opt"             HINTS ${LIB_SPIRV_DEBUG_PATH})

set(SHADERC_LIBS
    ${SHADERC_LIB}
    ${SHADERC_UTIL_LIB}
    ${SPIRV_LIB}
    ${GLSLANG_LIB}
    ${GLSLANG_OSDEPENDENT_LIB}
    ${GLSLANG_OGL_COMPILER_LIB}
    ${HLSL_LIB}
    ${SPIRV_TOOLS_OPT_LIB}
    ${SPIRV_TOOLS_LIB}
)

target_link_libraries(main_target ${SHADERC_LIBS})

Unfortunately the libshaderc_combined.a library also produces a large amount of undefined references.
I have build the shaderc library from source using cmake, clang 7.0.0 and ninja (like stated in the README.md) and everything built with success.

Could someone advise me how to order the libs or how to use the combined lib?

Consider switching to using git submodules instead of manually checking out repos

This would make managing the dependencies on other repositories much more straightforward and less error prone. For example, at the moment a clean build will work, but if you try to build again after that it will fail, since the git pull commands fail due to the checked out repos not being on a branch (instead they are pinned to a commit). With git submodules you can remove all of the git related code from the build script.

Compiling with --no-default-features

I ran into issue #33 and as a workaround, I wanted to provide my own version of the shaderc_combined library instead of compiling in build.rs. The readme suggests this is possible by disabling default features and putting the library in the correct target/deps directory, but this does not seem to work: the linker does not find the shaderc_* symbols (also the native library doesn't seem to be passed into the linker arguments).

I might be forgetting something obvious that's needed for linking with the native library, but the readme doesn't say a lot on this particular use case.

Build Fails to Find Correct Python Version on Windows 10

I have just freshly installed Python versions 3.8.3 and 2.7.14 on Windows 10 using the 64-bit installers from the website. Python 3 is currently on my path, though Python 2 is not. Calling both python and py with the --version argument both return 3.8.3. As well, I have verified that Ninja and CMake can both be properly called from the command line.

When I attempt to build this crate, I get this error:

   Compiling shaderc-sys v0.6.2
error: failed to run custom build command for `shaderc-sys v0.6.2`

Caused by:
  process didn't exit successfully: `C:\Users\[username]\Rust Projects\vulkan-tutorial\target\debug\build\shaderc-sys-94432a1a0a3e5bc1\build-script-build` (exit code: 101)
--- stdout
cargo:warning=System installed library not found.  Falling back to build from source
running: "cmake" "C:\\Users\\[username]\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\shaderc-sys-0.6.2\\build" "-G" "Ninja" "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" "-DSPIRV_SKIP_EXECUTABLES=ON" "-DSPIRV_WERROR=OFF" "-DSHADERC_SKIP_TESTS=ON" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_C_FLAGS= /nologo /EHsc /MD" "-DCMAKE_CXX_FLAGS= /nologo /EHsc /MD" "-DCMAKE_C_FLAGS_RELEASE= /nologo /EHsc /MD" "-DCMAKE_CXX_FLAGS_RELEASE= /nologo /EHsc /MD" "-DSHADERC_ENABLE_SHARED_CRT=ON" "-DCMAKE_INSTALL_PREFIX=C:\\Users\\[username]\\Rust Projects\\vulkan-tutorial\\target\\debug\\build\\shaderc-sys-7a01563382570d55\\out" "-DCMAKE_C_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.21.27702/bin/HostX64/x64/cl.exe" "-DCMAKE_CXX_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.21.27702/bin/HostX64/x64/cl.exe" "-DCMAKE_ASM_FLAGS= -nologo -MD -Brepro" "-DCMAKE_ASM_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.21.27702/bin/HostX64/x64/cl.exe" "-DCMAKE_BUILD_TYPE=Release"
-- Building SPIRV-Header examples
-- Installing SPIRV-Header
-- Configuring incomplete, errors occurred!
See also "C:/Users/[username]/Rust Projects/vulkan-tutorial/target/debug/build/shaderc-sys-7a01563382570d55/out/build/CMakeFiles/CMakeOutput.log".
See also "C:/Users/[username]/Rust Projects/vulkan-tutorial/target/debug/build/shaderc-sys-7a01563382570d55/out/build/CMakeFiles/CMakeError.log".

--- stderr
CMake Warning (dev) at CMakeLists.txt:8 (project):
  Policy CMP0048 is not set: project() command manages VERSION variables.
  Run "cmake --help-policy CMP0048" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  The following variable(s) would be set to empty:

    CMAKE_PROJECT_VERSION
    CMAKE_PROJECT_VERSION_MAJOR
    CMAKE_PROJECT_VERSION_MINOR
    CMAKE_PROJECT_VERSION_PATCH
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at C:/Program Files/CMake/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find PythonInterp: Found unsuitable version "2.7.13", but
  required is at least "3" (found C:/Python27/python.exe)
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:376 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files/CMake/share/cmake-3.15/Modules/FindPythonInterp.cmake:160 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  spirv-tools/CMakeLists.txt:181 (find_package)
  spirv-tools/CMakeLists.txt:191 (find_host_package)


thread 'main' panicked at '
command did not execute successfully, got: exit code: 1

build script failed, must exit now', C:\Users\[username]\.cargo\registry\src\github.com-1ecc6299db9ec823\cmake-0.1.43\src\lib.rs:1104:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

I decided to try renaming my Python 2 directory, as it seems that the script stops searching when it encounters Python 2. Doing so gets me this error instead. It appears that there is still a dependency on Python 2, so this output is perhaps not the most useful. I'll include it here regardless, in case it's of any interest.

   Compiling shaderc-sys v0.6.2
error: failed to run custom build command for `shaderc-sys v0.6.2`

Caused by:
  process didn't exit successfully: `C:\Users\[username]\Rust Projects\vulkan-tutorial\target\debug\build\shaderc-sys-94432a1a0a3e5bc1\build-script-build` (exit code: 101)
--- stdout
cargo:warning=System installed library not found.  Falling back to build from source
running: "cmake" "C:\\Users\\[username]\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\shaderc-sys-0.6.2\\build" "-G" "Ninja" "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" "-DSPIRV_SKIP_EXECUTABLES=ON" "-DSPIRV_WERROR=OFF" "-DSHADERC_SKIP_TESTS=ON" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_C_FLAGS= /nologo /EHsc /MD" "-DCMAKE_CXX_FLAGS= /nologo /EHsc /MD" "-DCMAKE_C_FLAGS_RELEASE= /nologo /EHsc /MD" "-DCMAKE_CXX_FLAGS_RELEASE= /nologo /EHsc /MD" "-DSHADERC_ENABLE_SHARED_CRT=ON" "-DCMAKE_INSTALL_PREFIX=C:\\Users\\[username]\\Rust Projects\\vulkan-tutorial\\target\\debug\\build\\shaderc-sys-7a01563382570d55\\out" "-DCMAKE_C_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.21.27702/bin/HostX64/x64/cl.exe" "-DCMAKE_CXX_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.21.27702/bin/HostX64/x64/cl.exe" "-DCMAKE_ASM_FLAGS= -nologo -MD -Brepro" "-DCMAKE_ASM_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.21.27702/bin/HostX64/x64/cl.exe" "-DCMAKE_BUILD_TYPE=Release"
-- Building SPIRV-Header examples
-- Installing SPIRV-Header
-- Using Release VC++ CRT: MD
-- Google Mock was not found - tests based on that will not build
-- optimizer enabled
-- Shaderc: build type is "Release".
-- Configuring Shaderc to avoid building tests.
-- asciidoctor was not found - no documentation will be generated
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/[username]/Rust Projects/vulkan-tutorial/target/debug/build/shaderc-sys-7a01563382570d55/out/build
running: "cmake" "--build" "." "--target" "install" "--config" "Release" "--" "-j4"
[1/359] Generate extended instruction tables for opencl.debuginfo.100.
FAILED: spirv-tools/opencl.debuginfo.100.insts.inc
cmd.exe /C "cd /D "C:\Users\[username]\Rust Projects\vulkan-tutorial\target\debug\build\shaderc-sys-7a01563382570d55\out\build\spirv-tools\source" && C:\Python27\python.exe C:/Users/[username]/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=C:/Users/[username]/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/source/extinst.opencl.debuginfo.100.grammar.json "--vendor-insts-output=C:/Users/[username]/Rust Projects/vulkan-tutorial/target/debug/build/shaderc-sys-7a01563382570d55/out/build/spirv-tools/opencl.debuginfo.100.insts.inc" --vendor-operand-kind-prefix=CLDEBUG100_"
The system cannot find the path specified.
[2/359] Generate extended instruction tables for spv-amd-shader-explicit-vertex-parameter.
FAILED: spirv-tools/spv-amd-shader-explicit-vertex-parameter.insts.inc
cmd.exe /C "cd /D "C:\Users\[username]\Rust Projects\vulkan-tutorial\target\debug\build\shaderc-sys-7a01563382570d55\out\build\spirv-tools\source" && C:\Python27\python.exe C:/Users/[username]/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=C:/Users/[username]/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json "--vendor-insts-output=C:/Users/[username]/Rust Projects/vulkan-tutorial/target/debug/build/shaderc-sys-7a01563382570d55/out/build/spirv-tools/spv-amd-shader-explicit-vertex-parameter.insts.inc" --vendor-operand-kind-prefix="
The system cannot find the path specified.
[3/359] Generate extended instruction tables for spv-amd-gcn-shader.
FAILED: spirv-tools/spv-amd-gcn-shader.insts.inc
cmd.exe /C "cd /D "C:\Users\[username]\Rust Projects\vulkan-tutorial\target\debug\build\shaderc-sys-7a01563382570d55\out\build\spirv-tools\source" && C:\Python27\python.exe C:/Users/[username]/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=C:/Users/[username]/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/source/extinst.spv-amd-gcn-shader.grammar.json "--vendor-insts-output=C:/Users/[username]/Rust Projects/vulkan-tutorial/target/debug/build/shaderc-sys-7a01563382570d55/out/build/spirv-tools/spv-amd-gcn-shader.insts.inc" --vendor-operand-kind-prefix="
The system cannot find the path specified.
[4/359] Generate extended instruction tables for debuginfo.
FAILED: spirv-tools/debuginfo.insts.inc
cmd.exe /C "cd /D "C:\Users\[username]\Rust Projects\vulkan-tutorial\target\debug\build\shaderc-sys-7a01563382570d55\out\build\spirv-tools\source" && C:\Python27\python.exe C:/Users/[username]/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/utils/generate_grammar_tables.py --extinst-vendor-grammar=C:/Users/[username]/.cargo/registry/src/github.com-1ecc6299db9ec823/shaderc-sys-0.6.2/build/spirv-tools/source/extinst.debuginfo.grammar.json "--vendor-insts-output=C:/Users/[username]/Rust Projects/vulkan-tutorial/target/debug/build/shaderc-sys-7a01563382570d55/out/build/spirv-tools/debuginfo.insts.inc" --vendor-operand-kind-prefix="
The system cannot find the path specified.
ninja: build stopped: subcommand failed.

--- stderr
CMake Warning (dev) at CMakeLists.txt:8 (project):
  Policy CMP0048 is not set: project() command manages VERSION variables.
  Run "cmake --help-policy CMP0048" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  The following variable(s) would be set to empty:

    CMAKE_PROJECT_VERSION
    CMAKE_PROJECT_VERSION_MAJOR
    CMAKE_PROJECT_VERSION_MINOR
    CMAKE_PROJECT_VERSION_PATCH
This warning is for project developers.  Use -Wno-dev to suppress it.

thread 'main' panicked at '
command did not execute successfully, got: exit code: 1

build script failed, must exit now', C:\Users\[username]\.cargo\registry\src\github.com-1ecc6299db9ec823\cmake-0.1.43\src\lib.rs:1104:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

It would seem that Python 2 is a dependency. Is there anything I can do to make sure that the build finds the versions it needs at the right time?

Error when trying to launch program.

Hello, when I try to load my program straight from the targets/release directory, I get this errror:
./test_assets: error while loading shared libraries: libshaderc_shared.so: cannot open shared object file: No such file or directory.

However, it works fine when I run it with cargo run --release

Step by step setup documentation.

In order to use library with vulkano I need step by step instructions for setting up the build environment in the vulkano readme. It would make sense to also include these instructions in the shaderc-rs readme.

For ubuntu this is easy: sudo apt-get install git python cmake
People using other distros can fairly easily adapt this to their own package manager.

I have no access to macOS so I have no idea about this one. I hear brew is popular over there?

For windows I need both msvc and gnu toolchains to work, I'm not sure if they require different tools, however I can only get msvc to work.
I setup the dependencies via msys2. I ran:
pacman -Syu mingw-w64-x86_64-cmake mingw-w64-x86_64-make mingw-w64-x86_64-gcc mingw64/mingw-w64-x86_64-pkg-config
and have C:\msys64\mingw64\bin;C:\msys64\usr\bin added to my path

At this point I can set the toolchain to msvc and cargo build + cargo test successfully

However I tried to compile with the gnu toolchain using the terminal window packaged with git and I get the following error with the boilerplate stripped out:

$ cargo build
--- stderr
CMake Error at C:/msys64/mingw64/share/cmake-3.12/Modules/CMakeMinGWFindMake.cmake:12 (message):
  sh.exe was found in your PATH, here:

  C:/Program Files/Git/usr/bin/sh.exe

  For MinGW make to work correctly sh.exe must NOT be in your path.

  Run cmake from a shell that does not have sh.exe in your PATH.

  If you want to use a UNIX shell, then use MSYS Makefiles.

Call Stack (most recent call first):
  CMakeLists.txt:8 (project)


CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
thread 'main' panicked at '
command did not execute successfully, got: exit code: 1

             at C:\Users\Rukai\.cargo\registry\src\github.com-1ecc6299db9ec823\cmake-0.1.33\src/lib.rs:773
   7: cmake::run
             at C:\Users\Rukai\.cargo\registry\src\github.com-1ecc6299db9ec823\cmake-0.1.33\src/lib.rs:754
   8: cmake::Config::build
             at C:\Users\Rukai\.cargo\registry\src\github.com-1ecc6299db9ec823\cmake-0.1.33\src/lib.rs:606
   9: build_script_build::build_shaderc
             at build/build.rs:21
  10: build_script_build::main
             at build/build.rs:6

Alright, so I try with powershell and cargo build succeeds but then I run cargo test and get so many of these errors that the powershell scrollback is full of them:

          C:\Users\Rukai\Desktop\Crates\shaderc-rs\target\debug\build\shaderc-76ef6e510d12bc1e\out\lib\libshaderc_combined.a(validate_instruction.cpp.obj):validate_instruction.cpp:(.text$_ZNSt6vectorIN8spvtools3val10DecorationESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_[_ZNSt6vectorIN8spvtools3val10DecorationESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_]+0x21b): undefined reference to `operator delete(void*)'
          C:\Users\Rukai\Desktop\Crates\shaderc-rs\target\debug\build\shaderc-76ef6e510d12bc1e\out\lib\libshaderc_combined.a(validate_instruction.cpp.obj):validate_instruction.cpp:(.text$_ZNSt6vectorIN8spvtools3val10DecorationESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_[_ZNSt6vectorIN8spvtools3val10DecorationESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_]+0x231): undefined reference to `operator delete(void*)'
          C:\Users\Rukai\Desktop\Crates\shaderc-rs\target\debug\build\shaderc-76ef6e510d12bc1e\out\lib\libshaderc_combined.a(validate_instruction.cpp.obj):validate_instruction.cpp:(.text$_ZNSt6vectorIN8spvtools3val10DecorationESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_[_ZNSt6vectorIN8spvtools3val10DecorationESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_]+0x2c9): undefined reference to `std::__throw_bad_alloc()'
          C:\Users\Rukai\Desktop\Crates\shaderc-rs\target\debug\build\shaderc-76ef6e510d12bc1e\out\lib\libshaderc_combined.a(validate_instruction.cpp.obj):validate_instruction.cpp:(.text$_ZNSt10_HashtableIjSt4pairIKjSt3setI17SpvExecutionMode_St4lessIS3_ESaIS3_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEyyPNSA_10_Hash_nodeIS8_Lb0EEEy[_ZNSt10_HashtableIjSt4pairIKjSt3setI17SpvExecutionMode_St4lessIS3_ESaIS3_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEyyPNSA_10_Hash_nodeIS8_Lb0EEEy]+0x37): undefined reference to `std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long long, unsigned long long, unsigned long long) const'
          C:\Users\Rukai\Desktop\Crates\shaderc-rs\target\debug\build\shaderc-76ef6e510d12bc1e\out\lib\libshaderc_combined.a(validate_instruction.cpp.obj):validate_instruction.cpp:(.text$_ZNSt10_HashtableIjSt4pairIKjSt3setI17SpvExecutionMode_St4lessIS3_ESaIS3_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEyyPNSA_10_Hash_nodeIS8_Lb0EEEy[_ZNSt10_HashtableIjSt4pairIKjSt3setI17SpvExecutionMode_St4lessIS3_ESaIS3_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEyyPNSA_10_Hash_nodeIS8_Lb0EEEy]+0xa9): undefined reference to `operator new(unsigned long long)'
          C:\Users\Rukai\Desktop\Crates\shaderc-rs\target\debug\build\shaderc-76ef6e510d12bc1e\out\lib\libshaderc_combined.a(validate_instruction.cpp.obj):validate_instruction.cpp:(.text$_ZNSt10_HashtableIjSt4pairIKjSt3setI17SpvExecutionMode_St4lessIS3_ESaIS3_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEyyPNSA_10_Hash_nodeIS8_Lb0EEEy[_ZNSt10_HashtableIjSt4pairIKjSt3setI17SpvExecutionMode_St4lessIS3_ESaIS3_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEyyPNSA_10_Hash_nodeIS8_Lb0EEEy]+0x139): undefined reference to `operator delete(void*)'
          C:\Users\Rukai\Desktop\Crates\shaderc-rs\target\debug\build\shaderc-76ef6e510d12bc1e\out\lib\libshaderc_combined.a(validate_instruction.cpp.obj):validate_instruction.cpp:(.text$_ZNSt10_HashtableIjSt4pairIKjSt3setI17SpvExecutionMode_St4lessIS3_ESaIS3_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEyyPNSA_10_Hash_nodeIS8_Lb0EEEy[_ZNSt10_HashtableIjSt4pairIKjSt3setI17SpvExecutionMode_St4lessIS3_ESaIS3_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEyyPNSA_10_Hash_nodeIS8_Lb0EEEy]+0x1b5): undefined reference to `std::__throw_bad_alloc()'

Any idea what I need to do to build with the windows-gnu toolchain?

[Windows] Linking with pre-built dynamic library fails

When setting SHADERC_LIB_DIR to /path/to/shaderc/bin (implying that I want dynamic linkage), linker issues following error:

error: linking with `link.exe` failed: exit code: 1181                                                                  
  |
  = note: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\HostX64\x64\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib" "E:\Projects\testsc\target\debug\deps\testsc.21j59gef162pi5qu.rcgu.o" "E:\Projects\testsc\target\debug\deps\testsc.285crb9lg1fijir5.rcgu.o" "E:\Projects\testsc\target\debug\deps\testsc.2zf9ru0rpvf1kqbm.rcgu.o" "E:\Projects\testsc\target\debug\deps\testsc.3v2sq2q0w83icjjk.rcgu.o" "E:\Projects\testsc\target\debug\deps\testsc.5ev3mu7wd8chgvpi.rcgu.o" "E:\Projects\testsc\target\debug\deps\testsc.5gqn7i2z86y3kd4w.rcgu.o" "/OUT:E:\Projects\testsc\target\debug\deps\testsc.exe" "E:\Projects\testsc\target\debug\deps\testsc.2yqu992c926i7c10.rcgu.o" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\etc\intrinsic.natvis" "/NATVIS:C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\etc\liballoc.natvis" "/NATVIS:C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\etc\libcore.natvis"
"/NATVIS:C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\etc\libstd.natvis" "/LIBPATH:E:\Projects\testsc\target\debug\deps" "/LIBPATH:C:\ProgramData\shaderc\bin" "/LIBPATH:C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib" "E:\Projects\testsc\target\debug\deps\libshaderc-98dc482ba5d8e7e3.rlib" "E:\Projects\testsc\target\debug\deps\libshaderc_sys-f3fc139ef83e0397.rlib" "E:\Projects\testsc\target\debug\deps\liblibc-41107e176498dbd5.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libstd-d2cb2280bcd44383.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libpanic_unwind-140520697b0936d7.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libhashbrown-a3e1790633df522a.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\librustc_std_workspace_alloc-2f29aa3beddef483.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libbacktrace-963dd21d9104800a.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\librustc_demangle-ac2d16dbeba7d44c.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libunwind-bab8a0038eeffc7d.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libcfg_if-0a2aca5d715fa450.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\liblibc-04cd9a6d769db645.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\liballoc-69018e88568c263f.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\librustc_std_workspace_core-f33a85683612f403.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libcore-a5f276186a1cbe1e.rlib" "C:\Users\junchen.zhou\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libcompiler_builtins-7c234882c060b305.rlib" "shaderc_shared.lib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "msvcrt.lib"
  = note: Non-UTF-8 output: LINK : fatal error LNK1181: 无法打开输入文件“shaderc_shared.lib” (Can't open file shaderc_shared.lib)

But if I copy /path/to/shaderc/lib/shaderc_shared.lib to /path/to/shaderc/bin/shaderc_shared.lib, the linking process succeeds.

Add support for HLSL related APIs

  • shaderc_compile_options_set_auto_bind_uniforms
  • shaderc_compile_options_set_hlsl_io_mapping
  • shaderc_compile_options_set_hlsl_offsets
  • shaderc_compile_options_set_binding_base
  • shaderc_compile_options_set_binding_base_for_stage
  • shaderc_compile_options_set_hlsl_register_set_and_binding_for_stage
  • shaderc_compile_options_set_hlsl_register_set_and_binding

Includes issue with Rust Nightly

In Vulkano project(that is using shaderc-rs under the hood) we faced a false-positive glsl error happening with includes feature on Rust Nightly build("rustc 1.49.0-nightly (91a79fb29 2020-10-07)").

This is a minimal reproducible example:

#version 450
#include <common.glsl>

Error messages from the Compile::compile_into_spirv function are:

           shader.glsl:2: error: '#line' : must by followed by an integral literal
           shader.glsl:2: error: 'preprocessor evaluation' : bad expression
           shader.glsl:2: error: '#line' : unexpected tokens following directive

The "common.glsl" file is properly configured through the CompileOptions::set_include_callback function. Neither the snippet above nor "common.glsl" contain a "#line" directive. And this test example works fine with Rust Stable.

Support dynamically linked glslang

The build script currently assumes that libSPIRV from glslang is always available in a static version (libSPIRV.a). However, this is not true on my system, I only have libSPIRV.so and my libshaderc_combined.a relies on symbols from that .so.

Would it be possible to add a check for libSPIRV.so to the build-script so that the crate compiles correctly on my system?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.