Skip to content

Commit

Permalink
Add ARM64 support(use Enterprise WDK)
Browse files Browse the repository at this point in the history
  • Loading branch information
fcharlie committed Jul 3, 2017
1 parent 343ee2b commit 79cadcf
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 1 deletion.
57 changes: 57 additions & 0 deletions bin/EnterpriseWDK.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/usr/bin/env powershell
# EnterpriseWDK support ARM64 Target
# Program Files\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt

$ClangbuilderRoot = Split-Path -Parent $PSScriptRoot
$EWDKFile = "$ClangbuilderRoot\config\ewdk.json"

if (!(Test-Path $EWDKFile)) {
Write-Error "Not Enterprise WDK config file"
return 1
}

$EWDKObj = Get-Content -Path "$EWDKFile" |ConvertFrom-Json

$EWDKPath = $EWDKObj.Path
$EWDKVersion = $EWDKObj.Version

if (!(Test-Path $EWDKPath)) {
Write-Error "Not Enterprise WDK directory !"
return 1
}

Write-Host "Initialize Windows 10 Enterprise WDK ARM Environment ..."

Write-Host "Enterprise WDK Version: $EWDKVersion"

$BuildTools = "$EWDKPath\Program Files\Microsoft Visual Studio\2017\BuildTools"
$SDKKIT = "$EWDKPath\Program Files\Windows Kits\10"
$VCToolsVersion = (Get-Content "$BuildTools\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt").Trim()

Write-Host "Visual C++ Version: $VCToolsVersion"

# Configuration Include Path
$env:INCLUDE = "$BuildTools\VC\Tools\MSVC\$VCToolsVersion\include;$BuildTools\VC\Tools\MSVC\$VCToolsVersion\atlmfc\include;"
$includedirs = Get-ChildItem -Path "$SDKKIT\include\$EWDKVersion" | Foreach-Object {$_.FullName}
foreach ($_i in $includedirs) {
$env:INCLUDE = "$env:INCLUDE;$_i"
}

$IsWindows64 = [System.Environment]::Is64BitOperatingSystem

if ($IsWindows64) {
$HostEnv = "x64"
}
else {
$HostEnv = "x86"
}

$env:PATH += "$SDKKIT\bin\$EWDKVersion\$HostEnv;$BuildTools\VC\Tools\MSVC\$VCToolsVersion\bin\Host$HostEnv\arm64\;"
$env:PATH += "$BuildTools\VC\Tools\MSVC\$VCToolsVersion\onecore\$HostEnv\Microsoft.VC150.CRT\;$SDKKIT\Redist\ucrt\DLLs\$HostEnv"
$env:PATH += "$EWDKFile\Program Files\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.1 Tools;$BuildTools\MSBuild\15.0\Bin"

$env:LIB = "$BuildTools\VC\Tools\MSVC\$VCToolsVersion\lib\arm64;$BuildTools\VC\Tools\MSVC\$VCToolsVersion\atlmfc\lib\arm64;"
$env:LIB += "$SDKKIT\lib\$EWDKVersion\km\arm64;$SDKKIT\lib\$EWDKVersion\um\arm64;$SDKKIT\lib\$EWDKVersion\ucrt\arm64;"

$env:LIBPATH="$BuildTools\VC\Tools\MSVC\$VCToolsVersion\lib\arm64;$BuildTools\VC\Tools\MSVC\$VCToolsVersion\atlmfc\lib\arm64;"
$env:LIBPATH="$SDKKIT\UnionMetadata\$EWDKVersion\;$SDKKIT\References\$EWDKVersion\;"
10 changes: 9 additions & 1 deletion bin/VisualStudioEnvinitEx.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,21 @@ else {
}


$FixedVer = [System.Version]::Parse("15.3.26621.3")

$vsinstalls = vswhere -legacy -format json|ConvertFrom-JSON

foreach ($item in $vsinstalls) {
if ($item.instanceId -eq $InstallId) {

$vsinstall = $item.installationPath
$vsversion = $item.installationVersion
$ver = [System.Version]::Parse($vsversion)
$result = $ver.CompareTo($FixedVer)
if (($Arch -eq "ARM64") -and ($result -lt 0)) {
Write-Host "Use Enterprise WDK support ARM64"
Invoke-Expression "$PSScriptRoot\EnterpriseWDK.ps1"
return ;
}
Write-Host "Use: Visual Studio $vsversion"
Write-Host "Initialize from: $vsinstall"
if ($InstallId.StartsWith("VisualStudio")) {
Expand Down
4 changes: 4 additions & 0 deletions config/ewdk.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"Path":"D:\\EWDK",
"Version":"10.0.16225.0"
}

0 comments on commit 79cadcf

Please sign in to comment.