Skip to content

Commit 6489e37

Browse files
committed
Add support for sanitizer
1 parent f946625 commit 6489e37

File tree

4 files changed

+484
-124
lines changed

4 files changed

+484
-124
lines changed

cmake_dev.ps1

+60
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,16 @@
2929
Enable Test: yes|no|true|false|1|0
3030
.PARAMETER EnableTools
3131
Enable Tools: yes|no|true|false|1|0
32+
.PARAMETER EnableAdderssSanitizer
33+
Enable Adderss Sanitizer: yes|no|true|false|1|0
34+
.PARAMETER EnableThreadSanitizer
35+
Enable Thread Sanitizer: yes|no|true|false|1|0
36+
.PARAMETER EnableLeakSanitizer
37+
Enable Leak Sanitizer: yes|no|true|false|1|0
38+
.PARAMETER EnableUndefinedSanitizer
39+
Enable Undefined Sanitizer: yes|no|true|false|1|0
40+
.PARAMETER EnableHWAddressSanitizer
41+
Enable Hardware Address Sanitizer: yes|no|true|false|1|0
3242
.PARAMETER CMakeOptions
3343
CMake options(pwsh -File <this file> [options...] --% [cmake options])
3444
.EXAMPLE
@@ -99,6 +109,26 @@ param (
99109
ValueFromPipelineByPropertyName = $true)]
100110
[string]$EnableTools = "true",
101111

112+
[Parameter(ValueFromPipeline = $true,
113+
ValueFromPipelineByPropertyName = $true)]
114+
[string]$EnableAdderssSanitizer = "false",
115+
116+
[Parameter(ValueFromPipeline = $true,
117+
ValueFromPipelineByPropertyName = $true)]
118+
[string]$EnableThreadSanitizer = "false",
119+
120+
[Parameter(ValueFromPipeline = $true,
121+
ValueFromPipelineByPropertyName = $true)]
122+
[string]$EnableLeakSanitizer = "false",
123+
124+
[Parameter(ValueFromPipeline = $true,
125+
ValueFromPipelineByPropertyName = $true)]
126+
[string]$EnableUndefinedSanitizer = "false",
127+
128+
[Parameter(ValueFromPipeline = $true,
129+
ValueFromPipelineByPropertyName = $true)]
130+
[string]$EnableHWAddressSanitizer = "false",
131+
102132
[Parameter(ValueFromPipeline = $true,
103133
ValueFromPipelineByPropertyName = $true,
104134
ValueFromRemainingArguments = $true,
@@ -359,6 +389,36 @@ if ((Check-BooleanString "$EnableTest")) {
359389
if ((Check-BooleanString "$EnableTools")) {
360390
$CMakeGeneratorArgs += @("-DPROJECT_ENABLE_TOOLS=ON")
361391
}
392+
if ((Check-BooleanString $EnableAdderssSanitizer)) {
393+
$CMakeGeneratorArgs += @("-DPROJECT_SANTIZER_USE_ADDRESS=ON")
394+
if (-Not $BuildDirectorySet) {
395+
$BuildDirectory = "${BuildDirectory}_asan"
396+
}
397+
}
398+
elseif ((Check-BooleanString $EnableThreadSanitizer)) {
399+
$CMakeGeneratorArgs += @("-DPROJECT_SANTIZER_USE_THREAD=ON")
400+
if (-Not $BuildDirectorySet) {
401+
$BuildDirectory = "${BuildDirectory}_tsan"
402+
}
403+
}
404+
elseif ((Check-BooleanString $EnableLeakSanitizer)) {
405+
$CMakeGeneratorArgs += @("-DPROJECT_SANTIZER_USE_LEAK=ON")
406+
if (-Not $BuildDirectorySet) {
407+
$BuildDirectory = "${BuildDirectory}_lsan"
408+
}
409+
}
410+
elseif ((Check-BooleanString $EnableUndefinedSanitizer)) {
411+
$CMakeGeneratorArgs += @("-DPROJECT_SANTIZER_USE_UNDEFINED=ON")
412+
if (-Not $BuildDirectorySet) {
413+
$BuildDirectory = "${BuildDirectory}_ubsan"
414+
}
415+
}
416+
elseif ((Check-BooleanString $EnableHWAddressSanitizer)) {
417+
$CMakeGeneratorArgs += @("-DPROJECT_SANTIZER_USE_HWADDRESS=ON")
418+
if (-Not $BuildDirectorySet) {
419+
$BuildDirectory = "${BuildDirectory}_hwasan"
420+
}
421+
}
362422

363423
if (($null -ne $CMakeOptions) -and ($CMakeOptions.Count -gt 0)) {
364424
$CMakeGeneratorArgs += $CMakeOptions

0 commit comments

Comments
 (0)