1#!/bin/bash 2wd=$PWD 3CMAKE_TOOLCHAIN_MINGW_PATH=$wd/.gitlab-ci/container/debian/x86_mingw-toolchain.cmake 4mkdir -p ~/tmp 5pushd ~/tmp 6 7# Building DirectX-Headers 8git clone https://github.com/microsoft/DirectX-Headers -b v1.606.3 --depth 1 9mkdir -p DirectX-Headers/build 10pushd DirectX-Headers/build 11meson .. \ 12--backend=ninja \ 13--buildtype=release -Dbuild-test=false \ 14-Dprefix=/usr/x86_64-w64-mingw32/ \ 15--cross-file=$wd/.gitlab-ci/x86_64-w64-mingw32 16 17ninja install 18popd 19 20export VULKAN_SDK_VERSION=1.3.211.0 21 22# Building SPIRV Tools 23git clone -b sdk-$VULKAN_SDK_VERSION --depth=1 \ 24https://github.com/KhronosGroup/SPIRV-Tools SPIRV-Tools 25 26git clone -b sdk-$VULKAN_SDK_VERSION --depth=1 \ 27https://github.com/KhronosGroup/SPIRV-Headers SPIRV-Tools/external/SPIRV-Headers 28 29mkdir -p SPIRV-Tools/build 30pushd SPIRV-Tools/build 31cmake .. \ 32-DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_MINGW_PATH \ 33-DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32/ \ 34-GNinja -DCMAKE_BUILD_TYPE=Release \ 35-DCMAKE_CROSSCOMPILING=1 \ 36-DCMAKE_POLICY_DEFAULT_CMP0091=NEW 37 38ninja install 39popd 40 41# Building LLVM 42git clone -b release/14.x --depth=1 \ 43https://github.com/llvm/llvm-project llvm-project 44 45git clone -b v14.0.0 --depth=1 \ 46https://github.com/KhronosGroup/SPIRV-LLVM-Translator llvm-project/llvm/projects/SPIRV-LLVM-Translator 47 48mkdir llvm-project/build 49pushd llvm-project/build 50cmake ../llvm \ 51-DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_MINGW_PATH \ 52-DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32/ \ 53-GNinja -DCMAKE_BUILD_TYPE=Release \ 54-DCMAKE_CROSSCOMPILING=1 \ 55-DLLVM_ENABLE_RTTI=ON \ 56-DCROSS_TOOLCHAIN_FLAGS_NATIVE=-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=$PWD/../../SPIRV-Tools/external/SPIRV-Headers \ 57-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=$PWD/../../SPIRV-Tools/external/SPIRV-Headers \ 58-DLLVM_ENABLE_PROJECTS="clang" \ 59-DLLVM_TARGETS_TO_BUILD="AMDGPU;X86" \ 60-DLLVM_OPTIMIZED_TABLEGEN=TRUE \ 61-DLLVM_ENABLE_ASSERTIONS=TRUE \ 62-DLLVM_INCLUDE_UTILS=OFF \ 63-DLLVM_INCLUDE_RUNTIMES=OFF \ 64-DLLVM_INCLUDE_TESTS=OFF \ 65-DLLVM_INCLUDE_EXAMPLES=OFF \ 66-DLLVM_INCLUDE_GO_TESTS=OFF \ 67-DLLVM_INCLUDE_BENCHMARKS=OFF \ 68-DLLVM_BUILD_LLVM_C_DYLIB=OFF \ 69-DLLVM_ENABLE_DIA_SDK=OFF \ 70-DCLANG_BUILD_TOOLS=ON \ 71-DLLVM_SPIRV_INCLUDE_TESTS=OFF 72 73ninja install 74popd 75 76# Building libclc 77mkdir llvm-project/build-libclc 78pushd llvm-project/build-libclc 79cmake ../libclc \ 80-DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_MINGW_PATH \ 81-DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32/ \ 82-GNinja -DCMAKE_BUILD_TYPE=Release \ 83-DCMAKE_CROSSCOMPILING=1 \ 84-DCMAKE_POLICY_DEFAULT_CMP0091=NEW \ 85-DCMAKE_CXX_FLAGS="-m64" \ 86-DLLVM_CONFIG="/usr/x86_64-w64-mingw32/bin/llvm-config" \ 87-DLLVM_CLANG="/usr/x86_64-w64-mingw32/bin/clang" \ 88-DLLVM_AS="/usr/x86_64-w64-mingw32/bin/llvm-as" \ 89-DLLVM_LINK="/usr/x86_64-w64-mingw32/bin/llvm-link" \ 90-DLLVM_OPT="/usr/x86_64-w64-mingw32/bin/opt" \ 91-DLLVM_SPIRV="/usr/x86_64-w64-mingw32/bin/llvm-spirv" \ 92-DLIBCLC_TARGETS_TO_BUILD="spirv-mesa3d-;spirv64-mesa3d-" 93 94ninja install 95popd 96 97popd # ~/tmp 98 99# Cleanup ~/tmp 100rm -rf ~/tmp 101