@webgpu/shaderc
Version:
48 lines (35 loc) • 2.21 kB
Markdown
# libshaderc_spvc
A library for validating and translating SPIR-V, using SPIRV-Tools validation and the SPIRV-Cross compiler.
## Build Artifacts
There are two main shaderc libraries that are created during a CMake
compilation. The first is `libshaderc_spvc`, which is a static library
containing just the functionality exposed by libshaderc_spvc. It depends
on other compilation targets `shaderc_util`, `SPIRV-Tools`, and `SPIRV-Cross`.
The other is `libshaderc_spvc_combined`, which is a static library containing
libshaderc_spvc and all of its dependencies.
## Integrating libshaderc_spvc
There are several ways of integrating libshaderc_spvc into external projects.
1. If the external project uses CMake, then `shaderc/CMakeLists.txt` can be
included into the external project's CMake configuration and shaderc_spvc can be used
as a link target.
This is the simplest way to use libshaderc_spvc in an external project.
2. If the external project uses CMake and is building for Linux or Android,
`target_link_libraries(shaderc_spvc_combined)` can instead be specified. This is
functionally identical to the previous option.
3. If the external project does not use CMake, then the external project can
instead directly use the generated libraries. `shaderc/libshaderc_spvc/include`
should be added to the include path, and
`build/libshaderc_spvc/libshaderc_spvc_combined.a` should be linked. Note that on some
platforms `-lpthread` should also be specified.
4. If the external project does not use CMake and cannot use
`libshaderc_spvc_combined`, the following libraries or their platform-dependent
counterparts should be linked in the order specified.
* `build/libshaderc_spvc/libshaderc_spvc.a`
* `build/libshaderc_util/libshaderc_util.a`
* `build/third_party/spirv-tools/libSPIRV-Tools-opt.a`
* `build/third_party/spirv-tools/libSPIRV-Tools.a`
* `build/third_party/SPIRV-Cross/libspirv-cross-core.a`
* `build/third_party/SPIRV-Cross/libspirv-cross-glsl.a` etc.
5. If building for Android using the Android NDK, `shaderc/Android.mk` can be
included in the application's `Android.mk` and `LOCAL_STATIC_LIBRARIES:=shaderc_spvc`
can be specified. See `shaderc/android_test` for an example.