build-dxc.sh (2728B)
1 #!/bin/bash 2 set -x -e -v 3 4 # This script is for building the DirectX Shader Compiler (DXC). 5 # It takes the target CPU architecture as parameter ("x86_64" or "aarch64"). 6 7 export MOZ_DXC_TARGET_ARCH=$1 8 9 export VSINSTALLDIR="$MOZ_FETCHES_DIR/vs" 10 11 # Detect a windows SDK version by looking at the directory names in 12 # "Windows Kits/10/Include/". At the time of writing this comment, there 13 # is one, but we pick the first result in alphabetical order in to reduce 14 # the risk of breakage if the vs-toolchain job changes. 15 export MOZ_DXC_WIN10_SDK_VERSION=`ls "$VSINSTALLDIR/Windows Kits/10/Include/" | sort | head -n 1` 16 17 artifact=$(basename "$TOOLCHAIN_ARTIFACT") 18 dxc_folder=${artifact%.tar.*} 19 20 21 dxc_src_dir="$MOZ_FETCHES_DIR/DirectXShaderCompiler" 22 cd "$dxc_src_dir" 23 24 # Configure and build. 25 dxc_build_dir="$dxc_src_dir/build" 26 mkdir "$dxc_build_dir" 27 cd "$dxc_build_dir" 28 29 # Note: it is important that LLVM_ENABLE_ASSERTIONS remains enabled. 30 31 cmake .. \ 32 -C ../cmake/caches/PredefinedParams.cmake \ 33 -DCMAKE_TOOLCHAIN_FILE=../cmake/platforms/WinMsvc.cmake \ 34 -DHOST_ARCH="$MOZ_DXC_TARGET_ARCH" \ 35 -DCMAKE_BUILD_TYPE=Release \ 36 -DLLVM_DISABLE_ASSEMBLY_FILES=ON \ 37 -DLLVM_NATIVE_TOOLCHAIN="$MOZ_FETCHES_DIR/clang" \ 38 -DLLVM_WINSYSROOT="$VSINSTALLDIR" \ 39 -DDIASDK_INCLUDE_DIR="$VSINSTALLDIR/DIA SDK/include" \ 40 -DWIN10_SDK_PATH="$VSINSTALLDIR/Windows Kits/10" -DWIN10_SDK_VERSION="$MOZ_DXC_WIN10_SDK_VERSION" \ 41 -DCMAKE_RC_COMPILER="$MOZ_FETCHES_DIR/clang/bin/llvm-rc" \ 42 -DHLSL_INCLUDE_TESTS=OFF -DCLANG_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_TESTS=OFF \ 43 -DHLSL_BUILD_DXILCONV=OFF -DSPIRV_WERROR=OFF \ 44 -DENABLE_SPIRV_CODEGEN=OFF \ 45 -DLLVM_ENABLE_ASSERTIONS=ON \ 46 -DLLVM_ASSERTIONS_NO_STRINGS=ON \ 47 -DLLVM_ASSERTIONS_TRAP=ON \ 48 -DDXC_CODEGEN_EXCEPTIONS_TRAP=ON \ 49 -DDXC_DISABLE_ALLOCATOR_OVERRIDES=ON \ 50 -G Ninja 51 52 53 # Only build the required target. 54 # NOTE: This builds `dxcompiler.pdb`, too. 55 ninja dxcompiler.dll 56 57 # Pack the result and upload. 58 mkdir "$dxc_folder" 59 cp bin/dxcompiler.dll bin/dxcompiler.pdb "$dxc_folder" 60 61 mkdir -p "$UPLOAD_DIR" 62 tar cavf "$UPLOAD_DIR/$artifact" "$dxc_folder" 63 64 cd "$GECKO_PATH" 65 66 # Create a directory for `*.sym` files of the form `…/<bin>/<hash>/<bin>.sym`. 67 symbols_dir="$dxc_build_dir/sym" 68 bin_dir="$dxc_build_dir/bin" 69 ./mach python toolkit/crashreporter/tools/symbolstore.py \ 70 "$MOZ_FETCHES_DIR/dump_syms/dump_syms" \ 71 --platform "WINNT" \ 72 --no-rust \ 73 --no-moz-extra-info \ 74 "$symbols_dir" \ 75 "$bin_dir/dxcompiler.dll" 76 # NOTE: `dll` is not a typo. `symbolstore.py` will find the `pdb` based on this name. 77 78 # Upload a symbols tarball to this job's artifacts. 79 symbols_archive="$UPLOAD_DIR/target.crashreporter-symbols-dxc.tar.zst" 80 cd "$symbols_dir" 81 tar cavf "$symbols_archive" * 82 cd -