]> xenbits.xensource.com Git - pvdrivers/win/xenbus.git/commitdiff
Invoke genfiles.ps1 from msbuild
authorPaul Durrant <paul.durrant@citrix.com>
Wed, 24 Apr 2019 09:04:31 +0000 (10:04 +0100)
committerPaul Durrant <paul.durrant@citrix.com>
Wed, 24 Apr 2019 09:56:24 +0000 (10:56 +0100)
The patch adds a new 'version.vcxproj' which other projects depend on.
This project's sole job is to invoke genfiles.ps1 to set up version.h and
xenbus.inf. Correspondingly the direct invocation of genfiles.ps1 is
removed from build.ps1 and equivalent functionality is removed from
build.py.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
build.ps1
build.py
genfiles.ps1 [deleted file]
scripts/genfiles.ps1 [new file with mode: 0644]
vs2015/version/version.vcxproj [new file with mode: 0644]
vs2015/xenbus.sln
vs2017/version/version.vcxproj [new file with mode: 0644]
vs2017/xenbus.sln

index bea93cc96799372d3d997a069a3a02145345c1d6..194d2397892ca0991a4ef69a7050a1bebc6bbc00 100644 (file)
--- a/build.ps1
+++ b/build.ps1
@@ -22,12 +22,6 @@ Function Build {
        $solutiondir = @{ "14.0" = "vs2015"; "15.0" = "vs2017"; }
        $configurationbase = @{ "14.0" = "Windows 10"; "15.0" = "Windows 10"; }
 
-       $params = @{
-               SolutionDir = $solutiondir[$visualstudioversion];
-               Arch = $Arch;
-       }
-       & ".\genfiles.ps1" @params
-
        $params = @{
                SolutionDir = $solutiondir[$visualstudioversion];
                ConfigurationBase = $configurationbase[$visualstudioversion];
@@ -48,12 +42,6 @@ Function SdvBuild {
        $configurationbase = @{ "14.0" = "Windows 10"; "15.0" = "Windows 10"; }
        $arch = "x64"
 
-       $params = @{
-               SolutionDir = $solutiondir[$visualstudioversion];
-               Arch = $arch;
-       }
-       & ".\genfiles.ps1" @params
-
        $params = @{
                SolutionDir = $solutiondir[$visualstudioversion];
                ConfigurationBase = $configurationbase[$visualstudioversion];
@@ -68,6 +56,22 @@ if ($Type -ne "free" -and $Type -ne "checked") {
        Exit -1
 }
 
+if ([string]::IsNullOrEmpty($Env:VENDOR_NAME)) {
+   Set-Item -Path Env:VENDOR_NAME -Value 'Xen Project'
+}
+
+if ([string]::IsNullOrEmpty($Env:VENDOR_PREFIX)) {
+   Set-Item -Path Env:VENDOR_PREFIX -Value 'XP'
+}
+
+if ([string]::IsNullOrEmpty($Env:PRODUCT_NAME)) {
+   Set-Item -Path Env:PRODUCT_NAME -Value 'Xen'
+}
+
+Set-Item -Path Env:MAJOR_VERSION -Value '9'
+Set-Item -Path Env:MINOR_VERSION -Value '0'
+Set-Item -Path Env:MICRO_VERSION -Value '0'
+
 Build "x86" $Type
 Build "x64" $Type
 
index 3acf97709b8500e73e565f2a86ecebb7ede0198e..16bb5e37abc34799162cecc70e1bf91bbddf2f9b 100755 (executable)
--- a/build.py
+++ b/build.py
@@ -24,76 +24,6 @@ def next_build_number():
     return build_number
 
 
-def make_header(now):
-    file = open('include\\version.h', 'w')
-
-    file.write('#define VENDOR_NAME_STR\t\t"' + os.environ['VENDOR_NAME'] + '"\n')
-    file.write('#define VENDOR_PREFIX_STR\t"' + os.environ['VENDOR_PREFIX'] + '"\n')
-
-    if 'VENDOR_DEVICE_ID' in os.environ.keys():
-        file.write('#define VENDOR_DEVICE_ID_STR\t"' + os.environ['VENDOR_DEVICE_ID'] + '"\n')
-
-    file.write('#define PRODUCT_NAME_STR\t"' + os.environ['PRODUCT_NAME'] + '"\n')
-    file.write('\n')
-
-    file.write('#define MAJOR_VERSION\t\t' + os.environ['MAJOR_VERSION'] + '\n')
-    file.write('#define MAJOR_VERSION_STR\t"' + os.environ['MAJOR_VERSION'] + '"\n')
-    file.write('\n')
-
-    file.write('#define MINOR_VERSION\t\t' + os.environ['MINOR_VERSION'] + '\n')
-    file.write('#define MINOR_VERSION_STR\t"' + os.environ['MINOR_VERSION'] + '"\n')
-    file.write('\n')
-
-    file.write('#define MICRO_VERSION\t\t' + os.environ['MICRO_VERSION'] + '\n')
-    file.write('#define MICRO_VERSION_STR\t"' + os.environ['MICRO_VERSION'] + '"\n')
-    file.write('\n')
-
-    file.write('#define BUILD_NUMBER\t\t' + os.environ['BUILD_NUMBER'] + '\n')
-    file.write('#define BUILD_NUMBER_STR\t"' + os.environ['BUILD_NUMBER'] + '"\n')
-    file.write('\n')
-
-    file.write('#define YEAR\t\t\t' + str(now.year) + '\n')
-    file.write('#define YEAR_STR\t\t"' + str(now.year) + '"\n')
-    file.write('\n')
-
-    file.write('#define MONTH\t\t\t' + str(now.month) + '\n')
-    file.write('#define MONTH_STR\t\t"' + str(now.month) + '"\n')
-    file.write('\n')
-
-    file.write('#define DAY\t\t\t' + str(now.day) + '\n')
-    file.write('#define DAY_STR\t\t\t"' + str(now.day) + '"\n')
-    file.write('\n')
-
-    file.close()
-
-
-def copy_inf(now, vs, arch, name):
-    inf_arch = { 'x86':'x86',
-                 'x64':'amd64' }
-    src = open('src\\%s.inf' % name, 'r')
-    dst = open('%s\\%s.inf' % (vs, name), 'w')
-
-    for line in src:
-        line = re.sub('@INF_DATE@', now.strftime("%m/%d/%Y"), line)
-        line = re.sub('@INF_ARCH@', inf_arch[arch], line)
-        line = re.sub('@MAJOR_VERSION@', os.environ['MAJOR_VERSION'], line)
-        line = re.sub('@MINOR_VERSION@', os.environ['MINOR_VERSION'], line)
-        line = re.sub('@MICRO_VERSION@', os.environ['MICRO_VERSION'], line)
-        line = re.sub('@BUILD_NUMBER@', os.environ['BUILD_NUMBER'], line)
-        line = re.sub('@VENDOR_NAME@', os.environ['VENDOR_NAME'], line)
-        line = re.sub('@PRODUCT_NAME@', os.environ['PRODUCT_NAME'], line)
-
-        if re.search('@VENDOR_DEVICE_ID@', line):
-            if 'VENDOR_DEVICE_ID' not in os.environ.keys():
-                continue
-            line = re.sub('@VENDOR_DEVICE_ID@', os.environ['VENDOR_DEVICE_ID'], line)
-
-        dst.write(line)
-
-    dst.close()
-    src.close()
-
-
 def get_expired_symbols(name, age = 30):
     path = os.path.join(os.environ['SYMBOL_SERVER'], '000Admin\\history.txt')
 
@@ -412,21 +342,6 @@ def main():
         print(os.environ['GIT_REVISION'], file=revision)
         revision.close()
 
-    print("VENDOR_NAME\t\t'%s'" % os.environ['VENDOR_NAME'])
-    print("VENDOR_PREFIX\t\t'%s'" % os.environ['VENDOR_PREFIX'])
-
-    if 'VENDOR_DEVICE_ID' in os.environ.keys():
-        print("VENDOR_DEVICE_ID\t'%s'" % os.environ['VENDOR_DEVICE_ID'])
-
-    print("PRODUCT_NAME\t\t'%s'" % os.environ['PRODUCT_NAME'])
-    print("MAJOR_VERSION\t\t%s" % os.environ['MAJOR_VERSION'])
-    print("MINOR_VERSION\t\t%s" % os.environ['MINOR_VERSION'])
-    print("MICRO_VERSION\t\t%s" % os.environ['MICRO_VERSION'])
-    print("BUILD_NUMBER\t\t%s" % os.environ['BUILD_NUMBER'])
-    print()
-
-    make_header(now)
-
     symstore_del(driver, 30)
 
     release = { 'vs2015':'Windows 8',
@@ -434,11 +349,9 @@ def main():
 
     shutil.rmtree(driver, ignore_errors=True)
 
-    copy_inf(now, vs, 'x86', driver)
     build_sln(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
     copy_package(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
 
-    copy_inf(now, vs, 'x64', driver)
     build_sln(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
     copy_package(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
 
diff --git a/genfiles.ps1 b/genfiles.ps1
deleted file mode 100644 (file)
index d9a5088..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-#
-# Generate version.h and xenbus.inf
-#
-param(
-       [string]$SolutionDir = "vs2017",
-       [string]$ConfigFile = $null,
-       [Parameter(Mandatory = $true)]
-       [string]$Arch
-)
-
-# Copy $InFileName -> $OutFileName replacing $Token$_.Key$Token with $_.Value from
-# either $ConfigFile or $Replacements
-Function Copy-FileWithReplacements {
-       param(
-               [Parameter(Mandatory = $true)]
-               [string]$InFileName,
-               [Parameter(Mandatory = $true)]
-               [string]$OutFileName,
-               [string]$ConfigFile,
-               [hashtable]$Replacements,
-               [string]$Token = "@"
-       )
-
-       Write-Host "Copy-FileWithReplacements"
-       Write-Host $InFileName" -> "$OutFileName
-
-       if ($ConfigFile) {
-               $List = Get-Content $ConfigFile | Out-String | iex
-               $List | Out-String | Write-Host
-       } elseif ($Replacements) {
-               $List = $Replacements
-       } else {
-               Write-Host "Invalid Arguments, ConfigFile or Replacements must be set"
-               Write-Host
-               Exit -1
-       }
-
-       (Get-Content $InFileName) | 
-       ForEach-Object {
-               $line = $_
-               $List.GetEnumerator() | ForEach-Object {
-                       $key = [string]::Format("{0}{1}{2}", $Token, $_.Name, $Token)
-                       if (([string]::IsNullOrEmpty($_.Value)) -and ($line.Contains($key))) {
-                               Write-Host "Skipping Line Containing " $_.Name
-                               $line = $null
-                       }
-                       $line = $line -replace $key, $_.Value
-               }
-               $line
-       } |
-       Set-Content $OutFileName
-}
-
-#
-# Script Body
-#
-$cwd = Get-Location
-Set-Location $PSScriptRoot
-
-$TheYear = Get-Date -UFormat "%Y"
-$TheMonth = Get-Date -UFormat "%m"
-$TheDay = Get-Date -UFormat "%d"
-$InfArch = @{ "x86" = "x86"; "x64" = "amd64" }
-$InfDate = Get-Date -UFormat "%m/%d/%Y"
-
-# if GitRevision is $null, GIT_REVISION will be excluded from the Copy-FileWithReplacements
-$GitRevision = & "git.exe" "rev-list" "--max-count=1" "HEAD"
-if ($GitRevision) {
-       Set-Content -Path ".revision" -Value $GitRevision
-}
-
-# if ".build_number" doesnt exist, BUILD_NUMBER = 0
-# since this can called by the vcxproj, do not autoincrement the build number
-# as this will mean x64 and Win32 builds have different numbers!
-if (Test-Path ".build_number") {
-       $TheBuildNum = Get-Content -Path ".build_number"
-} else {
-       Set-Content -Path ".build_number" -Value "0"
-}
-if (-not $TheBuildNum) {
-       $TheBuildNum = '0'
-}
-
-# [ordered] makes output easier to parse by humans
-$Replacements = [ordered]@{
-       # default parameters, may be overridden in config.ps1
-       'VENDOR_NAME' = 'Xen Project';
-       'PRODUCT_NAME' = 'Xen';
-       'VENDOR_DEVICE_ID' = $null; # must define this replacement, or @VENDOR_DEVICE_ID@ will remain in OutFileName
-       'VENDOR_PREFIX' = 'XP';
-
-       'MAJOR_VERSION' = '9';
-       'MINOR_VERSION' = '0';
-       'MICRO_VERSION' = '0';
-
-       # generated values (should not be in config.ps1)
-       'BUILD_NUMBER' = $TheBuildNum;
-       'GIT_REVISION' = $GitRevision;
-
-       'INF_DATE' = $InfDate;
-       'INF_ARCH' = $InfArch[$Arch];
-       'YEAR' = $TheYear;
-       'MONTH' = $TheMonth;
-       'DAY' = $TheDay
-}
-
-if ($ConfigFile -and (Test-Path -Path $ConfigFile)) {
-       $config = Resolve-Path $ConfigFile | Get-Content | Out-String | iex
-       $config.GetEnumerator() | % { $Replacements[$_.Key] = $_.Value }
-}
-
-$Replacements | Out-String | Write-Host
-
-$includepath = Resolve-Path "include"
-$src = Join-Path -Path $includepath -ChildPath "version.tmpl"
-$dst = Join-Path -Path $includepath -ChildPath "version.h"
-Copy-FileWithReplacements $src $dst -Replacements $Replacements
-
-$sourcepath = Resolve-Path "src"
-$solutionpath = Resolve-Path $SolutionDir
-$src = Join-Path -Path $sourcepath -ChildPath "xenbus.inf"
-$dst = Join-Path -Path $solutionpath -ChildPath "xenbus.inf"
-Copy-FileWithReplacements $src $dst -Replacements $Replacements
-
-Set-Location $cwd
diff --git a/scripts/genfiles.ps1 b/scripts/genfiles.ps1
new file mode 100644 (file)
index 0000000..d3a7d34
--- /dev/null
@@ -0,0 +1,103 @@
+#
+# Generate version.h and xenbus.inf
+#
+param(
+       [string]$Platform = "Win32",
+       [string]$SolutionDir = "vs2017",
+       [string]$IncludeDir = "include",
+       [string]$SourceDir = "src"
+)
+
+# Copy $InFileName -> $OutFileName replacing $Token$_.Key$Token with $_.Value from
+# $Replacements
+Function Copy-FileWithReplacements {
+       param(
+               [Parameter(Mandatory = $true)]
+               [string]$InFileName,
+               [Parameter(Mandatory = $true)]
+               [string]$OutFileName,
+               [hashtable]$Replacements,
+               [string]$Token = "@"
+       )
+
+       Write-Host "Copy-FileWithReplacements"
+       Write-Host $InFileName" -> "$OutFileName
+
+       (Get-Content $InFileName) |
+       ForEach-Object {
+               $line = $_
+               $Replacements.GetEnumerator() | ForEach-Object {
+                       $key = [string]::Format("{0}{1}{2}", $Token, $_.Name, $Token)
+                       if (([string]::IsNullOrEmpty($_.Value)) -and ($line.Contains($key))) {
+                               Write-Host "Skipping Line Containing " $_.Name
+                               $line = $null
+                       }
+                       $line = $line -replace $key, $_.Value
+               }
+               $line
+       } |
+       Set-Content $OutFileName
+}
+
+#
+# Script Body
+#
+$TheYear = Get-Date -UFormat "%Y"
+$TheMonth = Get-Date -UFormat "%m"
+$TheDay = Get-Date -UFormat "%d"
+$InfArch = @{ "Win32" = "x86"; "x64" = "amd64" }
+$InfDate = Get-Date -UFormat "%m/%d/%Y"
+
+# if GitRevision is $null, GIT_REVISION will be excluded from the Copy-FileWithReplacements
+$GitRevision = & "git.exe" "rev-list" "--max-count=1" "HEAD"
+if ($GitRevision) {
+       Set-Content -Path ".revision" -Value $GitRevision
+}
+
+# if ".build_number" doesnt exist, BUILD_NUMBER = 0
+# since this can called by the vcxproj, do not autoincrement the build number
+# as this will mean x64 and Win32 builds have different numbers!
+if (Test-Path ".build_number") {
+       $TheBuildNum = Get-Content -Path ".build_number"
+} else {
+       Set-Content -Path ".build_number" -Value "0"
+}
+if (-not $TheBuildNum) {
+       $TheBuildNum = '0'
+}
+
+# [ordered] makes output easier to parse by humans
+$Replacements = [ordered]@{
+       # values determined from the build environment
+       'VENDOR_NAME' = $Env:VENDOR_NAME;
+       'PRODUCT_NAME' = $Env:PRODUCT_NAME;
+       'VENDOR_DEVICE_ID' = $Env:VENDOR_DEVICE_ID;
+       'VENDOR_PREFIX' = $Env:VENDOR_PREFIX;
+
+       'MAJOR_VERSION' = $Env:MAJOR_VERSION;
+       'MINOR_VERSION' = $Env:MINOR_VERSION;
+       'MICRO_VERSION' = $Env:MICRO_VERSION;
+
+       # generated values
+       'BUILD_NUMBER' = $TheBuildNum;
+       'GIT_REVISION' = $GitRevision;
+
+       'INF_DATE' = $InfDate;
+       'INF_ARCH' = $InfArch[$Platform];
+       'YEAR' = $TheYear;
+       'MONTH' = $TheMonth;
+       'DAY' = $TheDay
+}
+
+$Replacements | Out-String | Write-Host
+
+$includepath = Resolve-Path $IncludeDir
+$src = Join-Path -Path $includepath -ChildPath "version.tmpl"
+$dst = Join-Path -Path $includepath -ChildPath "version.h"
+Copy-FileWithReplacements $src $dst -Replacements $Replacements
+
+$sourcepath = Resolve-Path $SourceDir
+$solutionpath = Resolve-Path $SolutionDir
+$src = Join-Path -Path $sourcepath -ChildPath "xenbus.inf"
+$dst = Join-Path -Path $solutionpath -ChildPath "xenbus.inf"
+Copy-FileWithReplacements $src $dst -Replacements $Replacements
diff --git a/vs2015/version/version.vcxproj b/vs2015/version/version.vcxproj
new file mode 100644 (file)
index 0000000..e3c95c4
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\configs.props" />
+  <Import Project="..\targets.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{65FA97EA-A569-4FC1-BFE7-D68E109143F7}</ProjectGuid>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Script>..\..\scripts\genfiles.ps1</Script>
+    <SolutionDir>..</SolutionDir>
+    <IncludeDir>..\..\include</IncludeDir>
+    <SourceDir>..\..\src</SourceDir>
+  </PropertyGroup>
+  <Target Name="GetNativeManifest"></Target>
+  <Target Name="Build">
+    <Exec Command="powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File $(Script) $(Platform) $(SolutionDir) $(IncludeDir) $(SourceDir)" />
+  </Target>
+  <Target Name="GetCopyToOutputDirectoryItems"></Target>
+</Project>
index 6d971b21dc26ff500d5975e3ea6c652ffe4912c5..ecb354061fc1a13e6a247f82ca840aaa897d9edc 100644 (file)
@@ -2,24 +2,38 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 14
 VisualStudioVersion = 14.0.25420.1
 MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", "version\version.vcxproj", "{65FA97EA-A569-4FC1-BFE7-D68E109143F7}"
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus_coinst", "xenbus_coinst\xenbus_coinst.vcxproj", "{4BF41378-C01B-4002-8581-563C5F703362}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus_monitor", "xenbus_monitor\xenbus_monitor.vcxproj", "{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xen", "xen\xen.vcxproj", "{9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenfilt", "xenfilt\xenfilt.vcxproj", "{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}"
        ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C} = {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}
        EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus", "xenbus\xenbus.vcxproj", "{14C16C29-77C9-475B-A618-1B01E67CF985}"
        ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C} = {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}
        EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", "package\package.vcxproj", "{92E5A46B-913C-45C6-B6F8-7E062D85279F}"
        ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
                {14C16C29-77C9-475B-A618-1B01E67CF985} = {14C16C29-77C9-475B-A618-1B01E67CF985}
                {4BF41378-C01B-4002-8581-563C5F703362} = {4BF41378-C01B-4002-8581-563C5F703362}
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C} = {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}
@@ -39,6 +53,22 @@ Global
                Windows 10 Release|x64 = Windows 10 Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Debug|Win32.Build.0 = Windows 10 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Debug|x64.ActiveCfg = Windows 10 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Debug|x64.Build.0 = Windows 10 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Release|Win32.ActiveCfg = Windows 10 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Release|Win32.Build.0 = Windows 10 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Release|x64.ActiveCfg = Windows 10 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Release|x64.Build.0 = Windows 10 Release|x64
                {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
                {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
                {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
@@ -57,28 +87,20 @@ Global
                {4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|x64.Build.0 = Windows 10 Release|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|x64.Deploy.0 = Windows 8 Debug|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|Win32.Deploy.0 = Windows 8 Release|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|x64.Deploy.0 = Windows 8 Release|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Debug|Win32.Build.0 = Windows 10 Debug|Win32
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Debug|Win32.Deploy.0 = Windows 10 Debug|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Debug|x64.ActiveCfg = Windows 10 Debug|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Debug|x64.Build.0 = Windows 10 Debug|x64
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Debug|x64.Deploy.0 = Windows 10 Debug|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Release|Win32.ActiveCfg = Windows 10 Release|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Release|Win32.Build.0 = Windows 10 Release|Win32
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Release|Win32.Deploy.0 = Windows 10 Release|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Release|x64.ActiveCfg = Windows 10 Release|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Release|x64.Build.0 = Windows 10 Release|x64
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Release|x64.Deploy.0 = Windows 10 Release|x64
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
@@ -129,28 +151,20 @@ Global
                {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 10 Release|x64.Build.0 = Windows 10 Release|x64
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|x64.Deploy.0 = Windows 8 Debug|x64
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|Win32.Deploy.0 = Windows 8 Release|Win32
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|x64.Deploy.0 = Windows 8 Release|x64
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Debug|Win32.Build.0 = Windows 10 Debug|Win32
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Debug|Win32.Deploy.0 = Windows 10 Debug|Win32
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Debug|x64.ActiveCfg = Windows 10 Debug|x64
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Debug|x64.Build.0 = Windows 10 Debug|x64
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Debug|x64.Deploy.0 = Windows 10 Debug|x64
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Release|Win32.ActiveCfg = Windows 10 Release|Win32
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Release|Win32.Build.0 = Windows 10 Release|Win32
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Release|Win32.Deploy.0 = Windows 10 Release|Win32
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Release|x64.ActiveCfg = Windows 10 Release|x64
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Release|x64.Build.0 = Windows 10 Release|x64
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Release|x64.Deploy.0 = Windows 10 Release|x64
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
diff --git a/vs2017/version/version.vcxproj b/vs2017/version/version.vcxproj
new file mode 100644 (file)
index 0000000..9d149d0
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{65FA97EA-A569-4FC1-BFE7-D68E109143F7}</ProjectGuid>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Script>..\..\scripts\genfiles.ps1</Script>
+    <SolutionDir>..</SolutionDir>
+    <IncludeDir>..\..\include</IncludeDir>
+    <SourceDir>..\..\src</SourceDir>
+  </PropertyGroup>
+  <Target Name="Build">
+    <Exec Command="powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File $(Script) $(Platform) $(SolutionDir) $(IncludeDir) $(SourceDir)" />
+  </Target>
+</Project>
index 6d971b21dc26ff500d5975e3ea6c652ffe4912c5..fc85d4730fba65ac7e8a4ab13f5874ce668669c8 100644 (file)
@@ -1,25 +1,39 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
+# Visual Studio 15
+VisualStudioVersion = 15.0.27703.2042
 MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", "version\version.vcxproj", "{65FA97EA-A569-4FC1-BFE7-D68E109143F7}"
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus_coinst", "xenbus_coinst\xenbus_coinst.vcxproj", "{4BF41378-C01B-4002-8581-563C5F703362}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus_monitor", "xenbus_monitor\xenbus_monitor.vcxproj", "{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xen", "xen\xen.vcxproj", "{9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}"
+       ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenfilt", "xenfilt\xenfilt.vcxproj", "{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}"
        ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C} = {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}
        EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus", "xenbus\xenbus.vcxproj", "{14C16C29-77C9-475B-A618-1B01E67CF985}"
        ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C} = {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}
        EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", "package\package.vcxproj", "{92E5A46B-913C-45C6-B6F8-7E062D85279F}"
        ProjectSection(ProjectDependencies) = postProject
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
                {14C16C29-77C9-475B-A618-1B01E67CF985} = {14C16C29-77C9-475B-A618-1B01E67CF985}
                {4BF41378-C01B-4002-8581-563C5F703362} = {4BF41378-C01B-4002-8581-563C5F703362}
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C} = {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}
@@ -29,24 +43,32 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", "package\package.
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Windows 8 Debug|Win32 = Windows 8 Debug|Win32
-               Windows 8 Debug|x64 = Windows 8 Debug|x64
-               Windows 8 Release|Win32 = Windows 8 Release|Win32
-               Windows 8 Release|x64 = Windows 8 Release|x64
                Windows 10 Debug|Win32 = Windows 10 Debug|Win32
                Windows 10 Debug|x64 = Windows 10 Debug|x64
                Windows 10 Release|Win32 = Windows 10 Release|Win32
                Windows 10 Release|x64 = Windows 10 Release|x64
+               Windows 8 Debug|Win32 = Windows 8 Debug|Win32
+               Windows 8 Debug|x64 = Windows 8 Debug|x64
+               Windows 8 Release|Win32 = Windows 8 Release|Win32
+               Windows 8 Release|x64 = Windows 8 Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
-               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
-               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
-               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
-               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
-               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
-               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
-               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Debug|Win32.Build.0 = Windows 10 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Debug|x64.ActiveCfg = Windows 10 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Debug|x64.Build.0 = Windows 10 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Release|Win32.ActiveCfg = Windows 10 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Release|Win32.Build.0 = Windows 10 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Release|x64.ActiveCfg = Windows 10 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Release|x64.Build.0 = Windows 10 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+               {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
                {4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
                {4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|Win32.Build.0 = Windows 10 Debug|Win32
                {4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|x64.ActiveCfg = Windows 10 Debug|x64
@@ -55,38 +77,30 @@ Global
                {4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|Win32.Build.0 = Windows 10 Release|Win32
                {4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|x64.ActiveCfg = Windows 10 Release|x64
                {4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|x64.Build.0 = Windows 10 Release|x64
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|x64.Deploy.0 = Windows 8 Debug|x64
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|Win32.Deploy.0 = Windows 8 Release|Win32
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|x64.Deploy.0 = Windows 8 Release|x64
+               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+               {4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Debug|Win32.Build.0 = Windows 10 Debug|Win32
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Debug|Win32.Deploy.0 = Windows 10 Debug|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Debug|x64.ActiveCfg = Windows 10 Debug|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Debug|x64.Build.0 = Windows 10 Debug|x64
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Debug|x64.Deploy.0 = Windows 10 Debug|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Release|Win32.ActiveCfg = Windows 10 Release|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Release|Win32.Build.0 = Windows 10 Release|Win32
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Release|Win32.Deploy.0 = Windows 10 Release|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Release|x64.ActiveCfg = Windows 10 Release|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Release|x64.Build.0 = Windows 10 Release|x64
-               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 Release|x64.Deploy.0 = Windows 10 Release|x64
-               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
-               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
-               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
-               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
-               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
-               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
-               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
-               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 10 Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 10 Debug|Win32.Build.0 = Windows 10 Debug|Win32
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 10 Debug|x64.ActiveCfg = Windows 10 Debug|x64
@@ -95,14 +109,14 @@ Global
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 10 Release|Win32.Build.0 = Windows 10 Release|Win32
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 10 Release|x64.ActiveCfg = Windows 10 Release|x64
                {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 10 Release|x64.Build.0 = Windows 10 Release|x64
-               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
-               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
-               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
-               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
-               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
-               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
-               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
-               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
+               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+               {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
                {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 10 Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
                {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 10 Debug|Win32.Build.0 = Windows 10 Debug|Win32
                {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 10 Debug|x64.ActiveCfg = Windows 10 Debug|x64
@@ -111,14 +125,14 @@ Global
                {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 10 Release|Win32.Build.0 = Windows 10 Release|Win32
                {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 10 Release|x64.ActiveCfg = Windows 10 Release|x64
                {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 10 Release|x64.Build.0 = Windows 10 Release|x64
-               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
-               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
-               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
-               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
-               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
-               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
-               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
-               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
+               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+               {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
                {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 10 Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
                {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 10 Debug|Win32.Build.0 = Windows 10 Debug|Win32
                {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 10 Debug|x64.ActiveCfg = Windows 10 Debug|x64
@@ -127,32 +141,35 @@ Global
                {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 10 Release|Win32.Build.0 = Windows 10 Release|Win32
                {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 10 Release|x64.ActiveCfg = Windows 10 Release|x64
                {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 10 Release|x64.Build.0 = Windows 10 Release|x64
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|x64.Deploy.0 = Windows 8 Debug|x64
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|Win32.Deploy.0 = Windows 8 Release|Win32
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|x64.Deploy.0 = Windows 8 Release|x64
+               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+               {14C16C29-77C9-475B-A618-1B01E67CF985}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Debug|Win32.Build.0 = Windows 10 Debug|Win32
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Debug|Win32.Deploy.0 = Windows 10 Debug|Win32
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Debug|x64.ActiveCfg = Windows 10 Debug|x64
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Debug|x64.Build.0 = Windows 10 Debug|x64
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Debug|x64.Deploy.0 = Windows 10 Debug|x64
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Release|Win32.ActiveCfg = Windows 10 Release|Win32
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Release|Win32.Build.0 = Windows 10 Release|Win32
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Release|Win32.Deploy.0 = Windows 10 Release|Win32
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Release|x64.ActiveCfg = Windows 10 Release|x64
                {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Release|x64.Build.0 = Windows 10 Release|x64
-               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 10 Release|x64.Deploy.0 = Windows 10 Release|x64
+               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Debug|x64.Build.0 = Windows 8 Debug|x64
+               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|Win32.Build.0 = Windows 8 Release|Win32
+               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|x64.ActiveCfg = Windows 8 Release|x64
+               {92E5A46B-913C-45C6-B6F8-7E062D85279F}.Windows 8 Release|x64.Build.0 = Windows 8 Release|x64
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
        EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+               SolutionGuid = {B401BB41-D030-43B6-B5FD-9ADFE9A6648E}
+       EndGlobalSection
 EndGlobal