-
-
Notifications
You must be signed in to change notification settings - Fork 232
Expand file tree
/
Copy pathbuild-sentry-native.ps1
More file actions
102 lines (91 loc) · 2.62 KB
/
build-sentry-native.ps1
File metadata and controls
102 lines (91 loc) · 2.62 KB
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
param([switch] $Clean)
Set-StrictMode -Version Latest
$ErrorActionPreference = "Stop"
Push-Location $PSScriptRoot/..
try
{
$submodule = 'modules/sentry-native'
$outDir = 'src/Sentry/Platforms/Native/sentry-native'
$buildDir = "$submodule/build"
$actualBuildDir = $buildDir
$additionalArgs = @()
$libPrefix = 'lib'
$libExtension = '.a'
if ($IsMacOS)
{
$outDir += '/osx'
$additionalArgs += @('-D', 'CMAKE_OSX_ARCHITECTURES=arm64;x86_64')
$additionalArgs += @('-D', 'CMAKE_OSX_DEPLOYMENT_TARGET=12.0')
}
elseif ($IsWindows)
{
$additionalArgs += @('-C', 'src/Sentry/Platforms/Native/windows-config.cmake')
$actualBuildDir = "$buildDir/RelWithDebInfo"
$libPrefix = ''
$libExtension = '.lib'
if ("Arm64".Equals([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString()))
{
$outDir += '/win-arm64'
}
else
{
$outDir += '/win-x64'
}
}
elseif ($IsLinux)
{
$musl = (ldd --version 2>&1) -match 'musl'
$arm64 = "Arm64".Equals([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString())
if ($musl -and $arm64)
{
$outDir += '/linux-musl-arm64'
}
elseif ($arm64)
{
$outDir += '/linux-arm64'
}
elseif ($musl)
{
$outDir += '/linux-musl-x64'
}
else
{
$outDir += '/linux-x64'
}
}
else
{
throw "Unsupported platform"
}
git submodule update --init --recursive $submodule
if ($Clean)
{
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue $buildDir
}
cmake `
-S $submodule `
-B $buildDir `
-D CMAKE_BUILD_TYPE=RelWithDebInfo `
-D SENTRY_SDK_NAME=sentry.native.dotnet `
-D SENTRY_BUILD_SHARED_LIBS=0 `
-D SENTRY_BACKEND=inproc `
-D SENTRY_TRANSPORT=none `
$additionalArgs
cmake `
--build $buildDir `
--target sentry `
--config RelWithDebInfo `
--parallel
$srcFile = "$actualBuildDir/${libPrefix}sentry$libExtension"
$outFile = "$outDir/${libPrefix}sentry-native$libExtension"
# New-Item creates the directory if it doesn't exist.
New-Item -ItemType File -Path $outFile -Force | Out-Null
Write-Host "Copying $srcFile to $outFile"
Copy-Item -Force -Path $srcFile -Destination $outFile
# Touch the file to mark it as up-to-date for MSBuild
(Get-Item $outFile).LastWriteTime = Get-Date
}
finally
{
Pop-Location
}