Remove dependency on llvm
[platform/upstream/mesa.git] / .gitlab-ci / container / debian / x86_build-mingw-source-deps.sh
1 #!/bin/bash
2 # shellcheck disable=SC2086 # we want word splitting
3
4 set -e
5
6 # Building libdrm (libva dependency)
7 . .gitlab-ci/container/build-libdrm.sh
8
9 wd=$PWD
10 CMAKE_TOOLCHAIN_MINGW_PATH=$wd/.gitlab-ci/container/debian/x86_mingw-toolchain.cmake
11 mkdir -p ~/tmp
12 pushd ~/tmp
13
14 # Building DirectX-Headers
15 git clone https://github.com/microsoft/DirectX-Headers -b v1.606.4 --depth 1
16 mkdir -p DirectX-Headers/build
17 pushd DirectX-Headers/build
18 meson .. \
19 --backend=ninja \
20 --buildtype=release -Dbuild-test=false \
21 -Dprefix=/usr/x86_64-w64-mingw32/ \
22 --cross-file=$wd/.gitlab-ci/x86_64-w64-mingw32
23
24 ninja install
25 popd
26
27 # Building libva
28 git clone https://github.com/intel/libva
29 pushd libva/
30 # Checking out commit hash with libva-win32 support
31 # This feature will be released with libva version 2.17
32 git checkout 2579eb0f77897dc01a02c1e43defc63c40fd2988
33 popd
34 # libva already has a build dir in their repo, use builddir instead
35 mkdir -p libva/builddir
36 pushd libva/builddir
37 meson .. \
38 --backend=ninja \
39 --buildtype=release \
40 -Dprefix=/usr/x86_64-w64-mingw32/ \
41 --cross-file=$wd/.gitlab-ci/x86_64-w64-mingw32
42
43 ninja install
44 popd
45
46 export VULKAN_SDK_VERSION=1.3.211.0
47
48 # Building SPIRV Tools
49 git clone -b sdk-$VULKAN_SDK_VERSION --depth=1 \
50 https://github.com/KhronosGroup/SPIRV-Tools SPIRV-Tools
51
52 git clone -b sdk-$VULKAN_SDK_VERSION --depth=1 \
53 https://github.com/KhronosGroup/SPIRV-Headers SPIRV-Tools/external/SPIRV-Headers
54
55 mkdir -p SPIRV-Tools/build
56 pushd SPIRV-Tools/build
57 cmake .. \
58 -DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_MINGW_PATH \
59 -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32/ \
60 -GNinja -DCMAKE_BUILD_TYPE=Release \
61 -DCMAKE_CROSSCOMPILING=1 \
62 -DCMAKE_POLICY_DEFAULT_CMP0091=NEW
63
64 ninja install
65 popd
66
67 # Building LLVM
68 git clone -b release/14.x --depth=1 \
69 https://github.com/llvm/llvm-project llvm-project
70
71 git clone -b v14.0.0 --depth=1 \
72 https://github.com/KhronosGroup/SPIRV-LLVM-Translator llvm-project/llvm/projects/SPIRV-LLVM-Translator
73
74 mkdir llvm-project/build
75 pushd llvm-project/build
76 cmake ../llvm \
77 -DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_MINGW_PATH \
78 -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32/ \
79 -GNinja -DCMAKE_BUILD_TYPE=Release \
80 -DCMAKE_CROSSCOMPILING=1 \
81 -DLLVM_ENABLE_RTTI=ON \
82 -DCROSS_TOOLCHAIN_FLAGS_NATIVE=-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=$PWD/../../SPIRV-Tools/external/SPIRV-Headers \
83 -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=$PWD/../../SPIRV-Tools/external/SPIRV-Headers \
84 -DLLVM_ENABLE_PROJECTS="clang" \
85 -DLLVM_TARGETS_TO_BUILD="AMDGPU;X86" \
86 -DLLVM_OPTIMIZED_TABLEGEN=TRUE \
87 -DLLVM_ENABLE_ASSERTIONS=TRUE \
88 -DLLVM_INCLUDE_UTILS=OFF \
89 -DLLVM_INCLUDE_RUNTIMES=OFF \
90 -DLLVM_INCLUDE_TESTS=OFF \
91 -DLLVM_INCLUDE_EXAMPLES=OFF \
92 -DLLVM_INCLUDE_GO_TESTS=OFF \
93 -DLLVM_INCLUDE_BENCHMARKS=OFF \
94 -DLLVM_BUILD_LLVM_C_DYLIB=OFF \
95 -DLLVM_ENABLE_DIA_SDK=OFF \
96 -DCLANG_BUILD_TOOLS=ON \
97 -DLLVM_SPIRV_INCLUDE_TESTS=OFF
98
99 ninja install
100 popd
101
102 # Building libclc
103 mkdir llvm-project/build-libclc
104 pushd llvm-project/build-libclc
105 cmake ../libclc \
106 -DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_MINGW_PATH \
107 -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32/ \
108 -GNinja -DCMAKE_BUILD_TYPE=Release \
109 -DCMAKE_CROSSCOMPILING=1 \
110 -DCMAKE_POLICY_DEFAULT_CMP0091=NEW \
111 -DCMAKE_CXX_FLAGS="-m64" \
112 -DLLVM_CONFIG="/usr/x86_64-w64-mingw32/bin/llvm-config" \
113 -DLLVM_CLANG="/usr/x86_64-w64-mingw32/bin/clang" \
114 -DLLVM_AS="/usr/x86_64-w64-mingw32/bin/llvm-as" \
115 -DLLVM_LINK="/usr/x86_64-w64-mingw32/bin/llvm-link" \
116 -DLLVM_OPT="/usr/x86_64-w64-mingw32/bin/opt" \
117 -DLLVM_SPIRV="/usr/x86_64-w64-mingw32/bin/llvm-spirv" \
118 -DLIBCLC_TARGETS_TO_BUILD="spirv-mesa3d-;spirv64-mesa3d-"
119
120 ninja install
121 popd
122
123 popd # ~/tmp
124
125 # Cleanup ~/tmp
126 rm -rf ~/tmp