tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 -