• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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