[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [win-pv-devel] [PATCH] Add PowerShell build scripts, version.vcxproj


  • To: Owen Smith <owen.smith@xxxxxxxxxx>, "win-pv-devel@xxxxxxxxxxxxxxxxxxxx" <win-pv-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Paul Durrant <Paul.Durrant@xxxxxxxxxx>
  • Date: Wed, 5 Jun 2019 17:22:20 +0000
  • Accept-language: en-GB, en-US
  • Authentication-results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=Paul.Durrant@xxxxxxxxxx; spf=Pass smtp.mailfrom=Paul.Durrant@xxxxxxxxxx; spf=None smtp.helo=postmaster@xxxxxxxxxxxxxxx
  • Cc: Owen Smith <owen.smith@xxxxxxxxxx>
  • Delivery-date: Wed, 05 Jun 2019 17:22:31 +0000
  • Ironport-sdr: 5ctbC8QfGRYVKVKtJQZfft/G9yScV+nkHlREpJegeQVFpjuMiSRkiYZCuBzUYUMY4/4IDVroHU QJSj0J3g3Tm32jYcSqkZGk5GtN6DJT57ntPUIRrmB7igjUlKJRUcEOdVCK1pHEVIt2k1XZ5w+C Ysak5aTcRWBC7SwXCOBF4vpV1WFWQJXuQWpNRGT/RkJPOdqywoem+9RJS+4+AVRgAtklm/QPVB omXIQA8Bxw12tX6p9je67RvYQMSYyAhSe49b6IlDoWbTktN527jTJhTqLHJDzWm/XiVA8bKn0x y0w=
  • List-id: Developer list for the Windows PV Drivers subproject <win-pv-devel.lists.xenproject.org>
  • Thread-index: AQHVGiN8lcIShK/Fr0ShhVj0b8R09qaNUdFg
  • Thread-topic: [win-pv-devel] [PATCH] Add PowerShell build scripts, version.vcxproj

> -----Original Message-----
> From: win-pv-devel [mailto:win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On 
> Behalf Of Owen Smith
> Sent: 03 June 2019 16:46
> To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> Cc: Owen Smith <owen.smith@xxxxxxxxxx>
> Subject: [win-pv-devel] [PATCH] Add PowerShell build scripts, version.vcxproj
> 
> Based on the sequence of commits to xenbus, add powershell scripts to
> build the solution using the EWDK
> version.vcxproj generates versioned files (version.h, xeniface.inf and
> wmi.mof) using scripts/genfiles.ps1
> Strips duplicated functionality from build.py toproduce consistant
> builds between python and powershell.
> 
> Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>

I can't really review a patch of this size in detail but on the basis it is a 
clone of the code in xenbus...

Acked-by: Paul Durrant <paul.durrant@xxxxxxxxxx>

> ---
>  build.ps1                                      |  90 +++++++++++++++++
>  build.py                                       | 131 
> +------------------------
>  include/version.tmpl                           |  25 +++++
>  msbuild.ps1                                    |  92 +++++++++++++++++
>  scripts/genfiles.ps1                           |  97 ++++++++++++++++++
>  src/xeniface.inf                               |  26 ++---
>  symstore.ps1                                   |  36 +++++++
>  vs2015/package/package.vcxproj                 |  16 +++
>  vs2015/version/version.vcxproj                 |  19 ++++
>  vs2015/xenagent/xenagent.vcxproj               |   1 -
>  vs2015/xeniface.sln                            |  31 ++++++
>  vs2015/xeniface/xeniface.vcxproj               |  16 ---
>  vs2015/xeniface_coinst/xeniface_coinst.vcxproj |   1 -
>  vs2017/package/package.vcxproj                 |  16 +++
>  vs2017/version/version.vcxproj                 |  16 +++
>  vs2017/xenagent/xenagent.vcxproj               |   1 -
>  vs2017/xeniface.sln                            |  31 ++++++
>  vs2017/xeniface/xeniface.vcxproj               |  16 ---
>  vs2017/xeniface_coinst/xeniface_coinst.vcxproj |   1 -
>  19 files changed, 485 insertions(+), 177 deletions(-)
>  create mode 100644 build.ps1
>  create mode 100644 include/version.tmpl
>  create mode 100644 msbuild.ps1
>  create mode 100644 scripts/genfiles.ps1
>  create mode 100644 symstore.ps1
>  create mode 100644 vs2015/version/version.vcxproj
>  create mode 100644 vs2017/version/version.vcxproj
> 
> diff --git a/build.ps1 b/build.ps1
> new file mode 100644
> index 0000000..326715d
> --- /dev/null
> +++ b/build.ps1
> @@ -0,0 +1,90 @@
> +#
> +# Main build script
> +#
> +
> +param(
> +     [Parameter(Mandatory = $true)]
> +     [string]$Type,
> +     [switch]$Sdv
> +)
> +
> +#
> +# Script Body
> +#
> +
> +Function Build {
> +     param(
> +             [string]$Arch,
> +             [string]$Type
> +     )
> +
> +     $visualstudioversion = $Env:VisualStudioVersion
> +     $solutiondir = @{ "14.0" = "vs2015"; "15.0" = "vs2017"; }
> +     $configurationbase = @{ "14.0" = "Windows 8"; "15.0" = "Windows 8"; }
> +
> +     $params = @{
> +             SolutionDir = $solutiondir[$visualstudioversion];
> +             ConfigurationBase = $configurationbase[$visualstudioversion];
> +             Arch = $Arch;
> +             Type = $Type
> +             }
> +     & ".\msbuild.ps1" @params
> +}
> +
> +Function SdvBuild {
> +     $visualstudioversion = $Env:VisualStudioVersion
> +     $solutiondir = @{ "14.0" = "vs2015"; "15.0" = "vs2017"; }
> +     $configurationbase = @{ "14.0" = "Windows 10"; "15.0" = "Windows 10"; }
> +     $arch = "x64"
> +
> +     $params = @{
> +             SolutionDir = $solutiondir[$visualstudioversion];
> +             ConfigurationBase = $configurationbase[$visualstudioversion];
> +             Arch = $arch;
> +             Type = "sdv"
> +             }
> +     & ".\msbuild.ps1" @params
> +}
> +
> +if ($Type -ne "free" -and $Type -ne "checked") {
> +     Write-Host "Invalid Type"
> +     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'
> +}
> +
> +if ([string]::IsNullOrEmpty($Env:OBJECT_PREFIX)) {
> +     Set-Item -Path Env:OBJECT_PREFIX -Value 'XenProject'
> +}
> +
> +if ([string]::IsNullOrEmpty($Env:BUILD_NUMBER)) {
> +     if (Test-Path ".build_number") {
> +             $BuildNum = Get-Content -Path ".build_number"
> +             Set-Content -Path ".build_number" -Value ([int]$BuildNum + 1)
> +     } else {
> +             $BuildNum = '0'
> +             Set-Content -Path ".build_number" -Value '1'
> +     }
> +     Set-Item -Path Env:BUILD_NUMBER -Value $BuildNum
> +}
> +
> +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
> +
> +if ($Sdv) {
> +     SdvBuild
> +}
> diff --git a/build.py b/build.py
> index 20a3ff4..95284c7 100755
> --- a/build.py
> +++ b/build.py
> @@ -24,91 +24,6 @@ def next_build_number():
>      return build_number
> 
> 
> -def make_header():
> -    now = datetime.datetime.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 OBJECT_PREFIX_STR\t"' + os.environ['OBJECT_PREFIX'] 
> + '"\n')
> -    file.write('#define OBJECT_GUID(_Name)\t' + os.environ['OBJECT_PREFIX'] 
> + ' ## _Name ## _GUID\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(vs, name):
> -    src = open('src\\%s.inf' % name, 'r')
> -    dst = open('%s\\%s.inf' % (vs, name), 'w')
> -
> -    for line in src:
> -        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('@VENDOR_PREFIX@', os.environ['VENDOR_PREFIX'], 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 copy_mof(name):
> -    src = open('src\\%s.mof' % name, 'r')
> -    dst = open('src\\%s\\wmi.mof' % name, 'w')
> -
> -    for line in src:
> -        line = re.sub('@OBJECT_PREFIX@', os.environ['OBJECT_PREFIX'], 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')
> 
> @@ -229,29 +144,6 @@ def build_sln(name, release, arch, debug, vs):
> 
>      msbuild(platform, configuration, 'Build', name + '.sln', '', vs)
> 
> -def copy_package(name, release, arch, debug, vs):
> -    configuration = get_configuration(release, debug)
> -
> -    if arch == 'x86':
> -        platform = 'Win32'
> -    elif arch == 'x64':
> -        platform = 'x64'
> -
> -    pattern = '/'.join([vs, ''.join(configuration.split(' ')), platform, 
> 'package', '*'])
> -    print('Copying package from %s' % pattern)
> -
> -    files = glob.glob(pattern)
> -
> -    dst = os.path.join(name, arch)
> -
> -    os.makedirs(dst, exist_ok=True)
> -
> -    for file in files:
> -        new = shutil.copy(file, dst)
> -        print(new)
> -
> -    print('')
> -
>  def remove_timestamps(path):
>      try:
>          os.unlink(path + '.orig')
> @@ -368,6 +260,7 @@ def manifest():
> 
> 
>  def archive(filename, files, tgz=False):
> +    print(filename)
>      access='w'
>      if tgz:
>          access='w:gz'
> @@ -397,11 +290,13 @@ def getVsVersion():
> 
>      return mapping[vsenv['VisualStudioVersion']]
> 
> +
>  def main():
>      debug = { 'checked': True, 'free': False }
>      sdv = { 'nosdv': False, None: True }
>      driver = 'xeniface'
>      vs = getVsVersion()
> +    now = datetime.datetime.now()
> 
>      if 'VENDOR_NAME' not in os.environ.keys():
>          os.environ['VENDOR_NAME'] = 'Xen Project'
> @@ -427,24 +322,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("OBJECT_PREFIX\t\t'%s'" % os.environ['OBJECT_PREFIX'])
> -    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()
> -    copy_inf(vs, driver)
> -    copy_mof(driver)
> -
>      symstore_del(driver, 30)
> 
>      release = { 'vs2015':'Windows 8',
> @@ -453,10 +330,8 @@ def main():
>      shutil.rmtree(driver, ignore_errors=True)
> 
>      build_sln(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
> -    copy_package(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
> 
>      build_sln(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
> -    copy_package(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
> 
>      symstore_add(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
>      symstore_add(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
> diff --git a/include/version.tmpl b/include/version.tmpl
> new file mode 100644
> index 0000000..c675b9c
> --- /dev/null
> +++ b/include/version.tmpl
> @@ -0,0 +1,25 @@
> +#define VENDOR_NAME_STR      "@VENDOR_NAME@"
> +#define PRODUCT_NAME_STR     "@PRODUCT_NAME@"
> +#define VENDOR_PREFIX_STR    "@VENDOR_PREFIX@"
> +#define VENDOR_DEVICE_ID_STR "@VENDOR_DEVICE_ID@"
> +
> +#define OBJECT_PREFIX_STR    "@OBJECT_PREFIX@"
> +#define OBJECT_GUID(_Name)   @OBJECT_PREFIX@ ## _Name ## _GUID
> +
> +#define MAJOR_VERSION_STR    "@MAJOR_VERSION@"
> +#define MINOR_VERSION_STR    "@MINOR_VERSION@"
> +#define MICRO_VERSION_STR    "@MICRO_VERSION@"
> +#define BUILD_NUMBER_STR     "@BUILD_NUMBER@"
> +
> +#define YEAR_STR             "@YEAR@"
> +#define MONTH_STR            "@MONTH@"
> +#define DAY_STR              "@DAY@"
> +
> +#define MAJOR_VERSION        @MAJOR_VERSION@
> +#define MINOR_VERSION        @MINOR_VERSION@
> +#define MICRO_VERSION        @MICRO_VERSION@
> +#define BUILD_NUMBER         @BUILD_NUMBER@
> +
> +#define YEAR                 @YEAR@
> +#define MONTH                @MONTH@
> +#define DAY                  @DAY@
> diff --git a/msbuild.ps1 b/msbuild.ps1
> new file mode 100644
> index 0000000..0a17673
> --- /dev/null
> +++ b/msbuild.ps1
> @@ -0,0 +1,92 @@
> +#
> +# Wrapper script for MSBuild
> +#
> +param(
> +     [string]$SolutionDir = "vs2017",
> +     [string]$ConfigurationBase = "Windows 10",
> +     [Parameter(Mandatory = $true)]
> +     [string]$Arch,
> +     [Parameter(Mandatory = $true)]
> +     [string]$Type
> +)
> +
> +Function Run-MSBuild {
> +     param(
> +             [string]$SolutionPath,
> +             [string]$Name,
> +             [string]$Configuration,
> +             [string]$Platform,
> +             [string]$Target = "Build",
> +             [string]$Inputs = ""
> +     )
> +
> +     $c = "msbuild.exe"
> +     $c += " /m:4"
> +     $c += [string]::Format(" /p:Configuration=""{0}""", $Configuration)
> +     $c += [string]::Format(" /p:Platform=""{0}""", $Platform)
> +     $c += [string]::Format(" /t:""{0}"" ", $Target)
> +     if ($Inputs) {
> +             $c += [string]::Format(" /p:Inputs=""{0}"" ", $Inputs)
> +     }
> +     $c += Join-Path -Path $SolutionPath -ChildPath $Name
> +
> +     Invoke-Expression $c
> +}
> +
> +Function Run-MSBuildSDV {
> +     param(
> +             [string]$SolutionPath,
> +             [string]$Name,
> +             [string]$Configuration,
> +             [string]$Platform
> +     )
> +
> +     $basepath = Get-Location
> +     $versionpath = Join-Path -Path $SolutionPath -ChildPath "version"
> +     $projpath = Join-Path -Path $SolutionPath -ChildPath $Name
> +     Set-Location $projpath
> +
> +     $project = [string]::Format("{0}.vcxproj", $Name)
> +     Run-MSBuild $versionpath "version.vcxproj" $Configuration $Platform 
> "Build"
> +     Run-MSBuild $projpath $project $Configuration $Platform "Build"
> +     Run-MSBuild $projpath $project $Configuration $Platform "sdv" "/clean"
> +     Run-MSBuild $projpath $project $Configuration $Platform "sdv" 
> "/check:default.sdv /debug"
> +     Run-MSBuild $projpath $project $Configuration $Platform "dvl"
> +
> +     $refine = Join-Path -Path $projpath -ChildPath "refine.sdv"
> +     if (Test-Path -Path $refine -PathType Leaf) {
> +             Run-MSBuild $projpath $project $Configuration $Platform "sdv" 
> "/refine"
> +     }
> +
> +     Copy-Item "*DVL*" -Destination $SolutionPath
> +
> +     Set-Location $basepath
> +}
> +
> +#
> +# Script Body
> +#
> +
> +$configuration = @{ "free" = "$ConfigurationBase Release"; "checked" = 
> "$ConfigurationBase Debug";
> "sdv" = "$ConfigurationBase Release"; }
> +$platform = @{ "x86" = "Win32"; "x64" = "x64" }
> +$solutionpath = Resolve-Path $SolutionDir
> +
> +Set-ExecutionPolicy -Scope CurrentUser -Force Bypass
> +
> +if ($Type -eq "free") {
> +     Run-MSBuild $solutionpath "xeniface.sln" $configuration["free"] 
> $platform[$Arch]
> +}
> +elseif ($Type -eq "checked") {
> +     Run-MSBuild $solutionpath "xeniface.sln" $configuration["checked"] 
> $platform[$Arch]
> +}
> +elseif ($Type -eq "sdv") {
> +     $archivepath = "xeniface"
> +
> +     if (-Not (Test-Path -Path $archivepath)) {
> +             New-Item -Name $archivepath -ItemType Directory | Out-Null
> +     }
> +
> +     Run-MSBuildSDV $solutionpath "xeniface" $configuration["sdv"] 
> $platform[$Arch]
> +
> +     Copy-Item -Path (Join-Path -Path $SolutionPath -ChildPath "*DVL*") 
> -Destination $archivepath
> +}
> diff --git a/scripts/genfiles.ps1 b/scripts/genfiles.ps1
> new file mode 100644
> index 0000000..64e087c
> --- /dev/null
> +++ b/scripts/genfiles.ps1
> @@ -0,0 +1,97 @@
> +#
> +# 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 = [int](Get-Date -UFormat "%Y")
> +$TheMonth = [int](Get-Date -UFormat "%m")
> +$TheDay = [int](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
> +}
> +
> +# [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;
> +     'OBJECT_PREFIX' = $Env:OBJECT_PREFIX;
> +
> +     'MAJOR_VERSION' = $Env:MAJOR_VERSION;
> +     'MINOR_VERSION' = $Env:MINOR_VERSION;
> +     'MICRO_VERSION' = $Env:MICRO_VERSION;
> +     'BUILD_NUMBER' = $Env:BUILD_NUMBER;
> +
> +     # generated values
> +     '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 "xeniface.inf"
> +$dst = Join-Path -Path $solutionpath -ChildPath "xeniface.inf"
> +Copy-FileWithReplacements $src $dst -Replacements $Replacements
> +
> +$sourcepath = Resolve-Path $SourceDir
> +$src = Join-Path -Path $sourcepath -ChildPath "xeniface.mof"
> +$dst = Join-Path -Path $sourcepath -ChildPath 'xeniface\wmi.mof'
> +Copy-FileWithReplacements $src $dst -Replacements $Replacements
> diff --git a/src/xeniface.inf b/src/xeniface.inf
> index 75d44eb..dd07570 100644
> --- a/src/xeniface.inf
> +++ b/src/xeniface.inf
> @@ -39,13 +39,13 @@ DriverPackageDisplayName=%DiskId1%
> 
>  [DestinationDirs]
>  DefaultDestDir = 12
> -Coinst.NT.Copy = 11
> -ServiceDestDir.NT.Copy = 11
> +Coinst.Copy = 11
> +ServiceDestDir.Copy = 11
> 
>  [Manufacturer]
> -%Vendor%=Inst,NT$ARCH$
> +%Vendor%=Inst,NT@INF_ARCH@
> 
> -[Inst.NT$ARCH$]
> +[Inst.NT@INF_ARCH@]
>  ; DisplayName                    Section           DeviceID
>  ; -----------                    -------           --------
> 
> @@ -53,21 +53,21 @@ ServiceDestDir.NT.Copy = 11
>  %XenIfaceDevice.DeviceDesc% =XenIface_Device, 
> XENBUS\VEN_@VENDOR_PREFIX@0001&DEV_IFACE&REV_09000000
>  %XenIfaceDevice.DeviceDesc% =XenIface_Device, 
> XENBUS\VEN_@VENDOR_PREFIX@0002&DEV_IFACE&REV_09000000
> 
> -[XenIface_Device.NT$ARCH$]
> -CopyFiles=XenIface_Device.NT.Copy
> -CopyFiles=ServiceDestDir.NT.Copy
> +[XenIface_Device]
> +CopyFiles=XenIface_Device.Copy
> +CopyFiles=ServiceDestDir.Copy
> 
> -[XenIFace_Device.NT.Copy]
> +[XenIFace_Device.Copy]
>  xeniface.sys
> 
> -[CoInst.NT.Copy]
> +[CoInst.Copy]
> 
> xeniface_coinst_@MAJOR_VERSION@_@MINOR_VERSION@_@MICRO_VERSION@_@BUILD_NUMBER@.dll,xeniface_coinst.dll
> 
> -[ServiceDestDir.NT.Copy]
> +[ServiceDestDir.Copy]
>  
> xenagent_@MAJOR_VERSION@_@MINOR_VERSION@_@MICRO_VERSION@_@BUILD_NUMBER@.exe,xenagent.exe
>  
> xenagent_@MAJOR_VERSION@_@MINOR_VERSION@_@MICRO_VERSION@_@BUILD_NUMBER@.dll,xenagent.dll
> 
> -[Xeniface_Device.NT$ARCH$.Services]
> +[Xeniface_Device.Services]
>  AddService = xeniface, %SPSVCINST_ASSOCSERVICE%, xeniface_Service_Inst
>  AddService = xenagent, %XENAGENT_FLAGS%, 
> xenagent_Service_Inst,xenagent_EventLog
> 
> @@ -83,8 +83,8 @@ AddReg = Xeniface_Parameters
>  [Xeniface_Parameters]
>  HKR,"Parameters",,0x00000010
> 
> -[Xeniface_Device.NT$ARCH$.Coinstallers]
> -CopyFiles=CoInst.NT.Copy
> +[Xeniface_Device.Coinstallers]
> +CopyFiles=CoInst.Copy
>  AddReg=CoInst_AddReg
> 
>  [CoInst_AddReg]
> diff --git a/symstore.ps1 b/symstore.ps1
> new file mode 100644
> index 0000000..c89a767
> --- /dev/null
> +++ b/symstore.ps1
> @@ -0,0 +1,36 @@
> +#
> +# Store symbols for archived build
> +#
> +param(
> +     [string]$SymbolServer = "c:\symbols",
> +     [Parameter(Mandatory = $true)]
> +     [string]$Arch
> +)
> +
> +Function Add-Symbols {
> +     param(
> +             [string]$DriverName,
> +             [string]$ArchivePath,
> +             [string]$SymbolServer,
> +             [string]$Arch
> +     )
> +
> +     Write-Host Store symbols from (Resolve-Path $ArchivePath)
> +
> +     $cwd = Get-Location
> +     Set-Location $ArchivePath
> +
> +     $path = Join-Path -Path ([string]::Format("{0}Debuggers", 
> $env:WDKContentRoot)) -ChildPath $Arch
> +     $symstore = Join-Path -Path $path -ChildPath "symstore.exe"
> +
> +     $inffile = [string]::Format("{0}.inf", $DriverName)
> +     $Version = (Get-Content -Path $inffile | Select-String 
> "DriverVer").Line.Split(',')[1]
> +
> +     Get-ChildItem -Path "." -Include "*.pdb" -Name | Write-Host
> +     & $symstore "add" "/s" $SymbolServer "/r" "/f" "*.pdb" "/t" $DriverName 
> "/v" $Version
> +
> +     Set-Location $cwd
> +}
> +
> +$archivepath = Join-Path -Path (Resolve-Path "xeniface") -ChildPath $Arch
> +Add-Symbols "xeniface" $archivepath $SymbolServer $Arch
> diff --git a/vs2015/package/package.vcxproj b/vs2015/package/package.vcxproj
> index 9dd5617..239d88d 100644
> --- a/vs2015/package/package.vcxproj
> +++ b/vs2015/package/package.vcxproj
> @@ -32,6 +32,12 @@
>      <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
>      <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
>    </PropertyGroup>
> +  <PropertyGroup Condition="'$(Platform)'=='Win32'">
> +    <ArchiveDir>..\..\$(SolutionName)\x86</ArchiveDir>
> +  </PropertyGroup>
> +  <PropertyGroup Condition="'$(Platform)'=='x64'">
> +    <ArchiveDir>..\..\$(SolutionName)\x64</ArchiveDir>
> +  </PropertyGroup>
>    <ItemGroup>
>      <ProjectReference Include="..\xeniface\xeniface.vcxproj">
>        <Project>{22166290-65D8-49D2-BB88-33201797C7D8}</Project>
> @@ -45,6 +51,7 @@
>      <ProjectReference Include="..\xencontrol\xencontrol.vcxproj">
>        <Project>{D386D8E9-D015-4AD2-A5C2-4F845A803FA2}</Project>
>      </ProjectReference>
> +    <FilesToPackage Include="..\xeniface.inf" />
>    </ItemGroup>
>    <ItemGroup Condition="Exists('$(DPINST_REDIST)')">
>      <FilesToPackage Include="$(DPINST_REDIST)\x86\dpinst.exe" 
> Condition="'$(Platform)'=='Win32'" />
> @@ -53,4 +60,13 @@
>    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
>    <ImportGroup Label="ExtensionTargets">
>    </ImportGroup>
> +  <ItemGroup>
> +    <PackageFiles Include="$(OutDir)\$(ProjectName)\*" />
> +  </ItemGroup>
> +  <Target Name="Archive" AfterTargets="TestSign">
> +    <Copy
> +       SourceFiles="@(PackageFiles)"
> +       
> DestinationFiles="@(PackageFiles->'$(ArchiveDir)\%(FileName)%(Extension)')"
> +    />
> +  </Target>
>  </Project>
> diff --git a/vs2015/version/version.vcxproj b/vs2015/version/version.vcxproj
> new file mode 100644
> index 0000000..e3c95c4
> --- /dev/null
> +++ b/vs2015/version/version.vcxproj
> @@ -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>
> diff --git a/vs2015/xenagent/xenagent.vcxproj 
> b/vs2015/xenagent/xenagent.vcxproj
> index 92b140e..a5e3460 100644
> --- a/vs2015/xenagent/xenagent.vcxproj
> +++ b/vs2015/xenagent/xenagent.vcxproj
> @@ -62,7 +62,6 @@
>      <FilesToPackage Include="$(TargetPath)" />
>      <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
>      <FilesToPackage Include="$(OutDir)$(TargetName).dll" />
> -    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" 
> Condition="'@(Inf)'!=''" />
>    </ItemGroup>
>    <ItemGroup>
>      <MessageCompile Include="..\..\src\xenagent\messages.mc" />
> diff --git a/vs2015/xeniface.sln b/vs2015/xeniface.sln
> index 7f08c1c..d7fc6ad 100644
> --- a/vs2015/xeniface.sln
> +++ b/vs2015/xeniface.sln
> @@ -2,20 +2,35 @@ 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}") = "xeniface_coinst",
> "xeniface_coinst\xeniface_coinst.vcxproj", 
> "{85C731AD-2EA2-4049-A542-D2D38EDE938C}"
> +     ProjectSection(ProjectDependencies) = postProject
> +             {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
> {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
> +     EndProjectSection
>  EndProject
>  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xeniface", 
> "xeniface\xeniface.vcxproj",
> "{22166290-65D8-49D2-BB88-33201797C7D8}"
> +     ProjectSection(ProjectDependencies) = postProject
> +             {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
> {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
> +     EndProjectSection
>  EndProject
>  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenagent", 
> "xenagent\xenagent.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}") = "package", 
> "package\package.vcxproj", "{9B071A35-
> 897C-477A-AEB7-95F77618A21D}"
>       ProjectSection(ProjectDependencies) = postProject
> +             {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
> {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
>               {22166290-65D8-49D2-BB88-33201797C7D8} = 
> {22166290-65D8-49D2-BB88-33201797C7D8}
>               {85C731AD-2EA2-4049-A542-D2D38EDE938C} = 
> {85C731AD-2EA2-4049-A542-D2D38EDE938C}
>               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B} = 
> {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}
>       EndProjectSection
>  EndProject
>  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xencontrol", 
> "xencontrol\xencontrol.vcxproj",
> "{D386D8E9-D015-4AD2-A5C2-4F845A803FA2}"
> +     ProjectSection(ProjectDependencies) = postProject
> +             {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
> {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
> +     EndProjectSection
>  EndProject
>  Global
>       GlobalSection(SolutionConfigurationPlatforms) = preSolution
> @@ -29,6 +44,22 @@ Global
>               Windows 10 Release|x64 = Windows 10 Release|x64
>       EndGlobalSection
>       GlobalSection(ProjectConfigurationPlatforms) = postSolution
> +             {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
>               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
> Debug|Win32.ActiveCfg = Windows 8
> Debug|Win32
>               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
> Debug|Win32.Build.0 = Windows 8
> Debug|Win32
>               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
> Debug|Win32.Deploy.0 = Windows 8
> Debug|Win32
> diff --git a/vs2015/xeniface/xeniface.vcxproj 
> b/vs2015/xeniface/xeniface.vcxproj
> index d02c770..4ac4d50 100644
> --- a/vs2015/xeniface/xeniface.vcxproj
> +++ b/vs2015/xeniface/xeniface.vcxproj
> @@ -35,33 +35,20 @@
> 
> <AdditionalDependencies>$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependen
> cies)</AdditionalDependencies>
>        <EnableCOMDATFolding>false</EnableCOMDATFolding>
>      </Link>
> -    <Inf>
> -      <SpecifyArchitecture>true</SpecifyArchitecture>
> -      
> <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
> -      
> <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
> -      <EnableVerbose>true</EnableVerbose>
> -    </Inf>
>    </ItemDefinitionGroup>
>    <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
>      <ClCompile>
>        
> <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
>      </ClCompile>
> -    <Inf>
> -      <Architecture>x86</Architecture>
> -    </Inf>
>    </ItemDefinitionGroup>
>    <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
>      <ClCompile>
>        
> <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
>      </ClCompile>
> -    <Inf>
> -      <Architecture>amd64</Architecture>
> -    </Inf>
>    </ItemDefinitionGroup>
>    <ItemGroup>
>      <FilesToPackage Include="$(TargetPath)" />
>      <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
> -    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" 
> Condition="'@(Inf)'!=''" />
>    </ItemGroup>
>    <ItemGroup>
>      <ClCompile Include="..\..\src\xeniface\ioctls.c" />
> @@ -90,8 +77,5 @@
>    <ItemGroup>
>      <ResourceCompile Include="..\..\src\xeniface\xeniface.rc" />
>    </ItemGroup>
> -  <ItemGroup>
> -    <Inf Include="..\xeniface.inf" />
> -  </ItemGroup>
>    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
>  </Project>
> diff --git a/vs2015/xeniface_coinst/xeniface_coinst.vcxproj
> b/vs2015/xeniface_coinst/xeniface_coinst.vcxproj
> index 7393c53..f8c99db 100644
> --- a/vs2015/xeniface_coinst/xeniface_coinst.vcxproj
> +++ b/vs2015/xeniface_coinst/xeniface_coinst.vcxproj
> @@ -48,7 +48,6 @@
>    <ItemGroup>
>      <FilesToPackage Include="$(TargetPath)" />
>      <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
> -    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" 
> Condition="'@(Inf)'!=''" />
>    </ItemGroup>
>    <ItemGroup>
>      <ClCompile Include="..\..\src\coinst\coinst.c" />
> diff --git a/vs2017/package/package.vcxproj b/vs2017/package/package.vcxproj
> index 7060312..31dacd3 100644
> --- a/vs2017/package/package.vcxproj
> +++ b/vs2017/package/package.vcxproj
> @@ -32,6 +32,12 @@
>      <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
>      <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
>    </PropertyGroup>
> +  <PropertyGroup Condition="'$(Platform)'=='Win32'">
> +    <ArchiveDir>..\..\$(SolutionName)\x86</ArchiveDir>
> +  </PropertyGroup>
> +  <PropertyGroup Condition="'$(Platform)'=='x64'">
> +    <ArchiveDir>..\..\$(SolutionName)\x64</ArchiveDir>
> +  </PropertyGroup>
>    <ItemGroup>
>      <ProjectReference Include="..\xeniface\xeniface.vcxproj">
>        <Project>{22166290-65D8-49D2-BB88-33201797C7D8}</Project>
> @@ -45,6 +51,7 @@
>      <ProjectReference Include="..\xencontrol\xencontrol.vcxproj">
>        <Project>{D386D8E9-D015-4AD2-A5C2-4F845A803FA2}</Project>
>      </ProjectReference>
> +    <FilesToPackage Include="..\xeniface.inf" />
>    </ItemGroup>
>    <ItemGroup Condition="Exists('$(DPINST_REDIST)')">
>      <FilesToPackage Include="$(DPINST_REDIST)\x86\dpinst.exe" 
> Condition="'$(Platform)'=='Win32'" />
> @@ -53,4 +60,13 @@
>    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
>    <ImportGroup Label="ExtensionTargets">
>    </ImportGroup>
> +  <ItemGroup>
> +    <PackageFiles Include="$(OutDir)\$(ProjectName)\*" />
> +  </ItemGroup>
> +  <Target Name="Archive" AfterTargets="TestSign">
> +    <Copy
> +      SourceFiles="@(PackageFiles)"
> +      
> DestinationFiles="@(PackageFiles->'$(ArchiveDir)\%(FileName)%(Extension)')"
> +    />
> +  </Target>
>  </Project>
> diff --git a/vs2017/version/version.vcxproj b/vs2017/version/version.vcxproj
> new file mode 100644
> index 0000000..9d149d0
> --- /dev/null
> +++ b/vs2017/version/version.vcxproj
> @@ -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>
> diff --git a/vs2017/xenagent/xenagent.vcxproj 
> b/vs2017/xenagent/xenagent.vcxproj
> index 6a17308..b246af5 100644
> --- a/vs2017/xenagent/xenagent.vcxproj
> +++ b/vs2017/xenagent/xenagent.vcxproj
> @@ -62,7 +62,6 @@
>      <FilesToPackage Include="$(TargetPath)" />
>      <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
>      <FilesToPackage Include="$(OutDir)$(TargetName).dll" />
> -    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" 
> Condition="'@(Inf)'!=''" />
>    </ItemGroup>
>    <ItemGroup>
>      <MessageCompile Include="..\..\src\xenagent\messages.mc" />
> diff --git a/vs2017/xeniface.sln b/vs2017/xeniface.sln
> index 1eb8156..1bdc66a 100644
> --- a/vs2017/xeniface.sln
> +++ b/vs2017/xeniface.sln
> @@ -2,16 +2,31 @@ 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}") = "xeniface_coinst",
> "xeniface_coinst\xeniface_coinst.vcxproj", 
> "{85C731AD-2EA2-4049-A542-D2D38EDE938C}"
> +     ProjectSection(ProjectDependencies) = postProject
> +             {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
> {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
> +     EndProjectSection
>  EndProject
>  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xeniface", 
> "xeniface\xeniface.vcxproj",
> "{22166290-65D8-49D2-BB88-33201797C7D8}"
> +     ProjectSection(ProjectDependencies) = postProject
> +             {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
> {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
> +     EndProjectSection
>  EndProject
>  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenagent", 
> "xenagent\xenagent.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}") = "xencontrol", 
> "xencontrol\xencontrol.vcxproj",
> "{D386D8E9-D015-4AD2-A5C2-4F845A803FA2}"
> +     ProjectSection(ProjectDependencies) = postProject
> +             {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
> {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
> +     EndProjectSection
>  EndProject
>  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", 
> "package\package.vcxproj", "{9B071A35-
> 897C-477A-AEB7-95F77618A21D}"
>       ProjectSection(ProjectDependencies) = postProject
> +             {65FA97EA-A569-4FC1-BFE7-D68E109143F7} = 
> {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
>               {22166290-65D8-49D2-BB88-33201797C7D8} = 
> {22166290-65D8-49D2-BB88-33201797C7D8}
>               {85C731AD-2EA2-4049-A542-D2D38EDE938C} = 
> {85C731AD-2EA2-4049-A542-D2D38EDE938C}
>               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B} = 
> {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}
> @@ -30,6 +45,22 @@ Global
>               Windows 10 Release|x64 = Windows 10 Release|x64
>       EndGlobalSection
>       GlobalSection(ProjectConfigurationPlatforms) = postSolution
> +             {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
>               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
> Debug|Win32.ActiveCfg = Windows 8
> Debug|Win32
>               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
> Debug|Win32.Build.0 = Windows 8
> Debug|Win32
>               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
> Debug|Win32.Deploy.0 = Windows 8
> Debug|Win32
> diff --git a/vs2017/xeniface/xeniface.vcxproj 
> b/vs2017/xeniface/xeniface.vcxproj
> index bb48955..ab74b40 100644
> --- a/vs2017/xeniface/xeniface.vcxproj
> +++ b/vs2017/xeniface/xeniface.vcxproj
> @@ -36,28 +36,16 @@
> 
> <AdditionalDependencies>$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependen
> cies)</AdditionalDependencies>
>        
> <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
>      </Link>
> -    <Inf>
> -      <SpecifyArchitecture>true</SpecifyArchitecture>
> -      
> <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
> -      
> <TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
> -      <EnableVerbose>true</EnableVerbose>
> -    </Inf>
>    </ItemDefinitionGroup>
>    <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
>      <ClCompile>
>        
> <PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
>      </ClCompile>
> -    <Inf>
> -      <Architecture>x86</Architecture>
> -    </Inf>
>    </ItemDefinitionGroup>
>    <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
>      <ClCompile>
>        
> <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
>      </ClCompile>
> -    <Inf>
> -      <Architecture>amd64</Architecture>
> -    </Inf>
>    </ItemDefinitionGroup>
>    <ItemDefinitionGroup Condition="'$(Configuration)'=='Windows 8 Release'">
>      <ClCompile>
> @@ -69,7 +57,6 @@
>    <ItemGroup>
>      <FilesToPackage Include="$(TargetPath)" />
>      <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
> -    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" 
> Condition="'@(Inf)'!=''" />
>    </ItemGroup>
>    <ItemGroup>
>      <ClCompile Include="..\..\src\xeniface\ioctls.c" />
> @@ -98,8 +85,5 @@
>    <ItemGroup>
>      <ResourceCompile Include="..\..\src\xeniface\xeniface.rc" />
>    </ItemGroup>
> -  <ItemGroup>
> -    <Inf Include="..\xeniface.inf" />
> -  </ItemGroup>
>    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
>  </Project>
> diff --git a/vs2017/xeniface_coinst/xeniface_coinst.vcxproj
> b/vs2017/xeniface_coinst/xeniface_coinst.vcxproj
> index d1988c2..b011416 100644
> --- a/vs2017/xeniface_coinst/xeniface_coinst.vcxproj
> +++ b/vs2017/xeniface_coinst/xeniface_coinst.vcxproj
> @@ -48,7 +48,6 @@
>    <ItemGroup>
>      <FilesToPackage Include="$(TargetPath)" />
>      <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
> -    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" 
> Condition="'@(Inf)'!=''" />
>    </ItemGroup>
>    <ItemGroup>
>      <ClCompile Include="..\..\src\coinst\coinst.c" />
> --
> 2.16.2.windows.1
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> https://lists.xenproject.org/mailman/listinfo/win-pv-devel
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/win-pv-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.