blob: 5fc499a8c6132de4a034eecf3c28f5451c57f70b (
plain)
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
|
# This file probes for the prerequisites for the build system, and outputs commands for eval'ing
# from the cmd scripts to set variables (and exit on error)
function GetCMakeVersions
{
$items = @()
$items += @(Get-ChildItem hklm:\SOFTWARE\Wow6432Node\Kitware -ErrorAction SilentlyContinue)
$items += @(Get-ChildItem hklm:\SOFTWARE\Kitware -ErrorAction SilentlyContinue)
return $items | where { $_.PSChildName.StartsWith("CMake") }
}
function GetCMakeInfo($regKey)
{
try {
$version = [System.Version] $regKey.PSChildName.Split(' ')[1]
}
catch {
return $null
}
$itemProperty = Get-ItemProperty $regKey.PSPath;
if (Get-Member -inputobject $itemProperty -name "InstallDir" -Membertype Properties) {
$cmakeDir = $itemProperty.InstallDir
}
else {
$cmakeDir = $itemProperty.'(default)'
}
$cmakePath = [System.IO.Path]::Combine($cmakeDir, "bin\cmake.exe")
if (![System.IO.File]::Exists($cmakePath)) {
return $null
}
return @{'version' = $version; 'path' = $cmakePath}
}
function LocateCMake
{
$errorMsg = "CMake is a pre-requisite to build this repository but it was not found on the path. Please install CMake from http://www.cmake.org/download/ and ensure it is on your path."
$inPathPath = (get-command cmake.exe -ErrorAction SilentlyContinue)
if ($inPathPath -ne $null) {
# Resolve the first version of CMake if multiple commands are found
if ($inPathPath.Length -gt 1) {
return $inPathPath[0].Path
}
return $inPathPath.Path
}
# Let us hope that CMake keep using their current version scheme
$validVersions = @()
foreach ($regKey in GetCMakeVersions) {
$info = GetCMakeInfo($regKey)
if ($info -ne $null) {
$validVersions += @($info)
}
}
$newestCMakePath = ($validVersions |
Sort-Object -property @{Expression={$_.version}; Ascending=$false} |
select -first 1).path
if ($newestCMakePath -eq $null) {
Throw $errorMsg
}
return $newestCMakePath
}
try {
$cmakePath = LocateCMake
[System.Console]::WriteLine("set CMakePath=" + $cmakePath)
}
catch {
[System.Console]::Error.WriteLine($_.Exception.Message)
[System.Console]::WriteLine("exit /b 1")
}
|