bc1d885bd1
Ran ./utils/git-sync-deps already, removed some unneeded files
53 lines
2.3 KiB
Markdown
53 lines
2.3 KiB
Markdown
# libshaderc
|
|
|
|
A library for compiling shader strings into SPIR-V.
|
|
|
|
## Build Artifacts
|
|
|
|
There are two main shaderc libraries that are created during a CMake
|
|
compilation. The first is `libshaderc`, which is a static library
|
|
containing just the functionality exposed by libshaderc. It depends
|
|
on other compilation targets `glslang`, `OSDependent`, `OGLCompiler`,
|
|
`shaderc_util`, `SPIRV`, `HLSL`, `SPIRV-Tools`, and `SPIRV-Tools-opt`.
|
|
|
|
The other is `libshaderc_combined`, which is a static library containing
|
|
libshaderc and all of its dependencies.
|
|
|
|
|
|
## Integrating libshaderc
|
|
|
|
There are several ways of integrating libshaderc 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 can be used
|
|
as a link target.
|
|
This is the simplest way to use libshaderc in an external project.
|
|
|
|
2. If the external project uses CMake and is building for Linux or Android,
|
|
`target_link_libraries(shaderc_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/include`
|
|
should be added to the include path, and
|
|
`build/libshaderc/libshaderc_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_combined`, the following libraries or their platform-dependent
|
|
counterparts should be linked in the order specified.
|
|
* `build/libshaderc/libshaderc.a`
|
|
* `build/third_party/glslang/glslang/glslang.a`
|
|
* `build/third_party/glslang/glslang/OSDependent/{Platform}/libOSDependent.a`
|
|
* `build/third_party/glslang/OGLCompilersDLL/libOGLCompiler.a`
|
|
* `build/third_party/glslang/libglslang.a`
|
|
* `build/shaderc_util/libshaderc_util.a`
|
|
* `build/third_party/glslang/SPIRV/libSPIRV.a`
|
|
* `build/third_party/glslang/hlsl/libHLSL.a`
|
|
* `build/third_party/spirv-tools/libSPIRV-Tools-opt.a`
|
|
* `build/third_party/spirv-tools/libSPIRV-Tools.a`
|
|
|
|
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`
|
|
can be specified. See `shaderc/android_test` for an example.
|