#!/bin/bash SCRIPT_REPO="https://github.com/google/shaderc.git" SCRIPT_COMMIT="301b4ede53d59b68bf55f95bb26412d9233c8187" ffbuild_enabled() { [[ $TARGET == mac* ]] && return -1 return 0 } ffbuild_dockerbuild() { git-mini-clone "$SCRIPT_REPO" "$SCRIPT_COMMIT" shaderc cd shaderc ./utils/git-sync-deps || exit $? mkdir build && cd build cmake -GNinja -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \ -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON \ -DENABLE_EXCEPTIONS=ON -DENABLE_GLSLANG_BINARIES=OFF -DSPIRV_SKIP_EXECUTABLES=ON \ -DSPIRV_TOOLS_BUILD_STATIC=ON -DBUILD_SHARED_LIBS=OFF .. ninja -j$(nproc) ninja install # for some reason, this does not get installed... cp libshaderc_util/libshaderc_util.a "$FFBUILD_PREFIX"/lib echo "Libs: -lstdc++" >> "$FFBUILD_PREFIX"/lib/pkgconfig/shaderc_combined.pc echo "Libs: -lstdc++" >> "$FFBUILD_PREFIX"/lib/pkgconfig/shaderc_static.pc cp "$FFBUILD_PREFIX"/lib/pkgconfig/{shaderc_combined,shaderc}.pc if [[ $TARGET == win* ]]; then rm -r "$FFBUILD_PREFIX"/bin "$FFBUILD_PREFIX"/lib/*.dll.a elif [[ $TARGET == linux* ]]; then rm -r "$FFBUILD_PREFIX"/bin "$FFBUILD_PREFIX"/lib/*.so* else echo "Unknown target" return -1 fi # prepare native glslc for compilation time glsl->spv mkdir ../native_build && cd ../native_build unset CC CXX CFLAGS CXXFLAGS LD LDFLAGS AR RANLIB NM DLLTOOL PKG_CONFIG_LIBDIR cmake -GNinja -DCMAKE_BUILD_TYPE=Release \ -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON \ -DENABLE_EXCEPTIONS=ON -DSPIRV_TOOLS_BUILD_STATIC=ON -DBUILD_SHARED_LIBS=OFF .. ninja -j$(nproc) glslc/glslc cp glslc/glslc /opt/glslc } ffbuild_configure() { echo --enable-libshaderc } ffbuild_unconfigure() { echo --disable-libshaderc }