aboutsummaryrefslogtreecommitdiff
path: root/scripts/build-zlib.ps1
blob: e9841a826b4633e0e59293ed99123624a6436c63 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ErrorActionPreference = 'Stop'  # Setting strict mode, similar to 'set -euo pipefail' in bash
. (Join-Path $PSScriptRoot "env.ps1")

Push-Location (Join-Path $BUN_DEPS_DIR 'zlib')
try {
  Run git reset --hard
  
  # TODO: make a patch upstream to change the line
  # `#ifdef _MSC_VER`
  # to account for clang-cl, which implements `__builtin_ctzl` and `__builtin_expect`
  $textToReplace = [regex]::Escape("int __inline __builtin_ctzl(unsigned long mask)") + "[^}]*}"
  $fileContent = Get-Content "deflate.h" -Raw
  if ($fileContent -match $textToReplace) {
    Set-Content -Path "deflate.h" -Value ($fileContent -replace $textToReplace, "")
  }
  else {
    throw "Failed to patch deflate.h"
  }

  Set-Location (mkdir -Force build)
  
  Run cmake .. @CMAKE_FLAGS
  Run cmake --build . --clean-first --config Release

  Copy-Item zlib.lib $BUN_DEPS_OUT_DIR

  Write-Host "-> zlib.lib"
}
finally { Pop-Location }