Removed Visual Studio project and NuGet infrastructure (#148)
* Removed many uncessary things and forced the project to be CMake only * Updated README status badge
This commit is contained in:
Родитель
187f76f565
Коммит
4888f0a386
|
@ -1,13 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.9)
|
||||
|
||||
if (NOT GLTFSDK_FOUND)
|
||||
set(GLTFSDK_FOUND TRUE)
|
||||
add_library(GLTFSDK STATIC IMPORTED GLOBAL)
|
||||
set_target_properties(GLTFSDK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/build/native/include")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_DEBUG "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/arm64-v8a/Debug/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELEASE "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/arm64-v8a/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELWITHDEBINFO "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/arm64-v8a/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_MINSIZEREL "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/arm64-v8a/Release/static/libGLTFSDK.a")
|
||||
# Default location for other build configurations defaults to Debug
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/arm64-v8a/Debug/static/libGLTFSDK.a")
|
||||
endif()
|
|
@ -1,13 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.9)
|
||||
|
||||
if (NOT GLTFSDK_FOUND)
|
||||
set(GLTFSDK_FOUND TRUE)
|
||||
add_library(GLTFSDK STATIC IMPORTED GLOBAL)
|
||||
set_target_properties(GLTFSDK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/build/native/include")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_DEBUG "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/armeabi-v7a/Debug/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELEASE "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/armeabi-v7a/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELWITHDEBINFO "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/armeabi-v7a/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_MINSIZEREL "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/armeabi-v7a/Release/static/libGLTFSDK.a")
|
||||
# Default location for other build configurations defaults to Debug
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/armeabi-v7a/Debug/static/libGLTFSDK.a")
|
||||
endif()
|
|
@ -1,13 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.9)
|
||||
|
||||
if (NOT GLTFSDK_FOUND)
|
||||
set(GLTFSDK_FOUND TRUE)
|
||||
add_library(GLTFSDK STATIC IMPORTED GLOBAL)
|
||||
set_target_properties(GLTFSDK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/build/native/include")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_DEBUG "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x86/Debug/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELEASE "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x86/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELWITHDEBINFO "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x86/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_MINSIZEREL "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x86/Release/static/libGLTFSDK.a")
|
||||
# Default location for other build configurations defaults to Debug
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x86/Debug/static/libGLTFSDK.a")
|
||||
endif()
|
|
@ -1,13 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.9)
|
||||
|
||||
if (NOT GLTFSDK_FOUND)
|
||||
set(GLTFSDK_FOUND TRUE)
|
||||
add_library(GLTFSDK STATIC IMPORTED GLOBAL)
|
||||
set_target_properties(GLTFSDK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/build/native/include")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_DEBUG "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x86_64/Debug/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELEASE "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x86_64/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELWITHDEBINFO "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x86_64/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_MINSIZEREL "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x86_64/Release/static/libGLTFSDK.a")
|
||||
# Default location for other build configurations defaults to Debug
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x86_64/Debug/static/libGLTFSDK.a")
|
||||
endif()
|
|
@ -1,13 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.9)
|
||||
|
||||
if (NOT GLTFSDK_FOUND)
|
||||
set(GLTFSDK_FOUND TRUE)
|
||||
add_library(GLTFSDK STATIC IMPORTED GLOBAL)
|
||||
set_target_properties(GLTFSDK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/build/native/include")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_DEBUG "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/iOS/Debug/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELEASE "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/iOS/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELWITHDEBINFO "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/iOS/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_MINSIZEREL "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/iOS/Release/static/libGLTFSDK.a")
|
||||
# Default location for other build configurations defaults to Debug
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/iOS/Debug/static/libGLTFSDK.a")
|
||||
endif()
|
|
@ -1,13 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.9)
|
||||
|
||||
if (NOT GLTFSDK_FOUND)
|
||||
set(GLTFSDK_FOUND TRUE)
|
||||
add_library(GLTFSDK STATIC IMPORTED GLOBAL)
|
||||
set_target_properties(GLTFSDK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/build/native/include")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_DEBUG "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/iOSSimulator64/Debug/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELEASE "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/iOSSimulator64/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELWITHDEBINFO "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/iOSSimulator64/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_MINSIZEREL "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/iOSSimulator64/Release/static/libGLTFSDK.a")
|
||||
# Default location for other build configurations defaults to Debug
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/iOSSimulator64/Debug/static/libGLTFSDK.a")
|
||||
endif()
|
|
@ -1,13 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.9)
|
||||
|
||||
if (NOT GLTFSDK_FOUND)
|
||||
set(GLTFSDK_FOUND TRUE)
|
||||
add_library(GLTFSDK STATIC IMPORTED GLOBAL)
|
||||
set_target_properties(GLTFSDK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/build/native/include")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_DEBUG "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x64/Debug/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELEASE "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x64/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_RELWITHDEBINFO "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x64/Release/static/libGLTFSDK.a")
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION_MINSIZEREL "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x64/Release/static/libGLTFSDK.a")
|
||||
# Default location for other build configurations defaults to Debug
|
||||
set_target_properties(GLTFSDK PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/build/native/lib/x64/Debug/static/libGLTFSDK.a")
|
||||
endif()
|
Двоичные данные
Build/CoApp/CoApp.Tools.Powershell.msi
Двоичные данные
Build/CoApp/CoApp.Tools.Powershell.msi
Двоичный файл не отображается.
|
@ -1,26 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets Git.exe location.
|
||||
|
||||
.DESCRIPTION
|
||||
Looks for git.exe in multiple program file locations.
|
||||
|
||||
.PARAMETER GitLocations
|
||||
Additional locations in which to search for git.exe
|
||||
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter()]
|
||||
[string[]]$GitLocations
|
||||
)
|
||||
|
||||
function main {
|
||||
$searchLocations = $GitLocations + @("git", "${env:ProgramFiles(x86)}\Git\bin\git.exe", "${env:ProgramFiles}\Git\bin\git.exe", "${env:ProgramW6432}\Git\bin\git.exe")
|
||||
return ($searchLocations | ? { Get-Command $_ -ErrorAction SilentlyContinue } | Select -First 1)
|
||||
}
|
||||
|
||||
main
|
|
@ -1,55 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Creates a new annotated git tag using a VSTS RESTful API call.
|
||||
|
||||
.DESCRIPTION
|
||||
Constructs and invokes the following RESTful API call:
|
||||
https://www.visualstudio.com/en-us/docs/integrate/api/git/annotatedtags#create-annotated-tag
|
||||
|
||||
We do things this way rather than using git directly because of auth issues.
|
||||
Git repos cloned through automatic builds aren't set up to authenticate against
|
||||
their remotes, so we can't make any git calls that affect the central repo.
|
||||
REST calls are very easy to authenticate against from build definitions.
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$TagName,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$TagMessage,
|
||||
[Parameter()]
|
||||
[String]$RepoName = $Env:BUILD_REPOSITORY_NAME,
|
||||
[Parameter()]
|
||||
[String]$Sha1 = $Env:BUILD_SOURCEVERSION
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
$Verbose = [bool]$PSBoundParameters["Verbose"]
|
||||
|
||||
function main {
|
||||
if (! $RepoName) {
|
||||
Write-Error "Must provide a RepoName if this isn't invoked through VSTS"
|
||||
}
|
||||
|
||||
elseif (! $Sha1) {
|
||||
Write-Error "Must provide a Sha1 if this isn't invoked through VSTS"
|
||||
}
|
||||
else
|
||||
{
|
||||
$uri = "https://microsoft.visualstudio.com/DefaultCollection/Apps/_apis/git/repositories/$RepoName/annotatedTags"
|
||||
$body = @{
|
||||
"name" = "$TagName"
|
||||
"message" = "$TagMessage"
|
||||
"taggedObject" = @{
|
||||
"objectId" = "$Sha1"
|
||||
}
|
||||
}
|
||||
|
||||
&"$PSScriptRoot\..\..\XplatScripts\NuGet.macOS\Invoke-VstsRestMethod.ps1" -Uri "$uri" -Body $body -Method "Post" -ApiVersion "4.0-preview" -Verbose
|
||||
}
|
||||
}
|
||||
|
||||
main
|
|
@ -1,168 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
function CheckTextForReleaseNotesTags
|
||||
{
|
||||
Param(
|
||||
[Parameter()]
|
||||
[String[]]$FormattedText
|
||||
)
|
||||
|
||||
$definedTags = GetDefinedTags
|
||||
|
||||
$allTags = @()
|
||||
foreach ($line in $FormattedText)
|
||||
{
|
||||
$tags = @()
|
||||
while ($line -match "^\s*\[(\w+)\](.+)*$")
|
||||
{
|
||||
$tag,$line = $matches[1,2]
|
||||
$tags += $tag
|
||||
}
|
||||
|
||||
if (!$tags)
|
||||
{
|
||||
Write-Verbose @"
|
||||
No tags in line:
|
||||
$line
|
||||
"@
|
||||
continue
|
||||
}
|
||||
|
||||
if ($tags -contains $definedTags.noReleaseTag)
|
||||
{
|
||||
Write-Verbose "The `"No Release Notes`" tag was detected - this PR won't generate release notes"
|
||||
# if there's only one tag in the entire line, the length will return the string length instead of 1
|
||||
if ($tags.count -gt 1)
|
||||
{
|
||||
Write-Host $tags.count
|
||||
Write-Host "Additional tags detected after [NORELEASENOTES] tag that will not be used: $($tags[1..($tags.length-1)])"
|
||||
return $false
|
||||
}
|
||||
return $true
|
||||
}
|
||||
|
||||
$containsSectionTag = $false
|
||||
|
||||
# make sure the tags contain only one sectionTags
|
||||
foreach ($tag in $tags)
|
||||
{
|
||||
if ($definedTags.sectionTags -contains $tag)
|
||||
{
|
||||
if ($containsSectionTag)
|
||||
{
|
||||
Write-Host "Each Release Note line must contain only 1 section tag: $($definedTags.sectionTags). The following line has more than one valid section tag: `n$line"
|
||||
return $false
|
||||
}
|
||||
$containsSectionTag = $true
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "Invalid tag provided: $tag. Each release note line must contain exactly one section tag: $($definedTags.sectionTags). To instead have no release notes for this PR, use: $NoReleaseTag"
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
||||
if (!$containsSectionTag)
|
||||
{
|
||||
Write-Host "Each Release Note line must contain 1 section tag: $($definedTags.sectionTags). The following line is missing a valid section tag: `n$line"
|
||||
return $false
|
||||
}
|
||||
|
||||
Write-Verbose @"
|
||||
Found Tags: $tags in line:
|
||||
$line
|
||||
"@
|
||||
if ($line -notmatch "[\d\w]+")
|
||||
{
|
||||
Write-Host @"
|
||||
Each Release Notes line must contain release note text after the tags, on the same line. For example:
|
||||
[Minor] This text is the release note line that will get added to the release notes file :)
|
||||
"@
|
||||
return $false
|
||||
}
|
||||
|
||||
$allTags += $tags
|
||||
}
|
||||
|
||||
if (!$allTags)
|
||||
{
|
||||
Write-Host "No tags found - please tag your PR title or description appropriately for release notes."
|
||||
return $false
|
||||
}
|
||||
return $true
|
||||
}
|
||||
|
||||
function GetDefinedTags
|
||||
{
|
||||
Param(
|
||||
[Parameter()]
|
||||
[String]$DefinedTagsFile
|
||||
)
|
||||
|
||||
if (! $DefinedTagsFile) {
|
||||
$DefinedTagsFile = (Join-Path $PSScriptRoot "ReleaseNotesTags.json")
|
||||
}
|
||||
|
||||
Write-Verbose "Reading defined tags from $DefinedTagsFile"
|
||||
if (!(Test-Path $DefinedTagsFile))
|
||||
{
|
||||
Write-Error "Cannot read in $DefinedTagsFile file containing standard tag names"
|
||||
}
|
||||
$tagFile = Get-Content -Path $DefinedTagsFile | ConvertFrom-Json
|
||||
Write-Verbose ($tagFile | Format-Table -Wrap | Out-String)
|
||||
return $tagFile
|
||||
}
|
||||
|
||||
function GetCommitInfoObject
|
||||
{
|
||||
Param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[String]$sha1
|
||||
)
|
||||
|
||||
$GitCommand = . (Join-Path $PSScriptRoot "GetGitCommand.ps1")
|
||||
if (!$GitCommand)
|
||||
{
|
||||
Write-Error "Unable to find git"
|
||||
}
|
||||
|
||||
$commitInfo = & $GitCommand show -s --format='%B' $sha1
|
||||
|
||||
$descriptionLines = @()
|
||||
|
||||
foreach ($line in $commitInfo)
|
||||
{
|
||||
if ($line -match "Merged PR ([\d]+):(.+|$)")
|
||||
{
|
||||
$prNum = $matches[1]
|
||||
if ($matches[2])
|
||||
{
|
||||
$descriptionLines += $matches[2].Trimstart(' ')
|
||||
}
|
||||
Write-Verbose "PR number found: $prNum with title: $descriptionLines"
|
||||
}
|
||||
# Related work items
|
||||
elseif ($line -match "^Related work items: #(.+)")
|
||||
{
|
||||
$WorkItems = $Matches[1] -split ', #'
|
||||
Write-Verbose "Work Items found: $WorkItems"
|
||||
}
|
||||
# Release note line
|
||||
else
|
||||
{
|
||||
$descriptionLines += $line
|
||||
Write-Verbose "Adding description line: $line"
|
||||
}
|
||||
}
|
||||
|
||||
return [PSObject]@{
|
||||
PRNum = $prNum;
|
||||
WorkItems = $workItems;
|
||||
Description = $descriptionLines;
|
||||
}
|
||||
}
|
||||
|
||||
Export-ModuleMember -Function 'GetDefinedTags'
|
||||
Export-ModuleMember -Function 'CheckTextForReleaseNotesTags'
|
||||
Export-ModuleMember -Function 'GetCommitInfoObject'
|
|
@ -1,140 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<# .SYNOPSIS
|
||||
Checks a Pull Request to make sure it is formatted to automatically generate release notes.
|
||||
|
||||
.DESCRIPTION
|
||||
Given a Pull Request's ID number, checks the PR's title and description to ensure it contains correctly formatted release notes.
|
||||
This is only a format checker, it does not generate release notes from the Pull Request.
|
||||
|
||||
.PARAMETER PullRequestID
|
||||
Optional. The ID number of the Pull Request. This is defaulted to env:SYSTEM_PULLREQUEST_PULLREQUESTID, which is set when invoked from a PR build.
|
||||
|
||||
.PARAMETER RepoName
|
||||
Optional. The git repository name, this is defaulted to env:BUILD_REPOSITORY_NAME, which is set when invoked from a PR build.
|
||||
|
||||
.PARAMETER DefinedTagsFilePath
|
||||
Optional. The .json file containing the defined valid tags we use to generate release notes. The path should be relative to this script.
|
||||
|
||||
.PARAMETER LocalPATLocation
|
||||
Optional. The location of a local PAT token to make authorized VSTS REST calls to get info for the given PR and repo.
|
||||
For use when running locally, as this script will use env:SYSTEM_ACCESSTOKEN by default, which is set when invoked from a PR build.
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter()]
|
||||
[String]$PullRequestID = $env:SYSTEM_PULLREQUEST_PULLREQUESTID,
|
||||
[Parameter()]
|
||||
[String]$RepoName = $env:BUILD_REPOSITORY_NAME,
|
||||
[Parameter()]
|
||||
[String]$LocalPATLocation
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
function Main
|
||||
{
|
||||
Import-Module (Join-Path $PSScriptRoot "ReleaseNotesHelper.psm1")
|
||||
|
||||
PrintReleaseNoteFormatInfo
|
||||
|
||||
if (!$PullRequestID)
|
||||
{
|
||||
Write-Error "Pull Request ID cannot be null."
|
||||
}
|
||||
|
||||
$prInfo = GetPRInfo
|
||||
$validFormat = CheckTextForReleaseNotesTags $prInfo
|
||||
|
||||
|
||||
if (!$validFormat)
|
||||
{
|
||||
Write-Error "Please tag your PR title or description appropriately for release notes."
|
||||
}
|
||||
|
||||
Write-Verbose "Finished checking - the PR is in a correct format to generate release notes"
|
||||
}
|
||||
|
||||
function PrintReleaseNoteFormatInfo
|
||||
{
|
||||
Write-Host @"
|
||||
This script will check the format of the PR to ensure it will work with the automated release notes system.
|
||||
Your PR must contain at least one formatted release note entry, either within the PR's title or the PR's description.
|
||||
The format of this release note entry must begin with tags.
|
||||
If your PR does not involve any changes that should generate release notes, use the [NORELEASENOTES] tag.
|
||||
To generate release notes, put each release note line on a single line each, and prefix it with tags to describe the file and section.
|
||||
|
||||
Within each release note file, you must define what kind of change was made. For each release note line, specify one (and only one) section tag. The project tag values are:
|
||||
[FEATURE]
|
||||
[BREAKING]
|
||||
[MINOR]
|
||||
[BUG]
|
||||
|
||||
As an example, here is a PR description you may have:
|
||||
|
||||
[FEATURE] Adding new feature that does something and everything. This is a very long release note line that must not contain any line breaks.
|
||||
[BUG] Fixed hang in ViewerApp
|
||||
And if I were to type text in my PR title or description, without any tags in front, they won't be included in the release notes.
|
||||
|
||||
Pull Request ID provided for this build: $PullRequestID
|
||||
"@
|
||||
}
|
||||
|
||||
# Use REST apis to get the current Pull Request information
|
||||
function GetPRInfo()
|
||||
{
|
||||
# edits to a PR title/description happens extremely quickly, GET calls get updated info.
|
||||
$url = "https://microsoft.visualstudio.com/DefaultCollection/Apps/_apis/git/repositories/$RepoName/pullRequests/$PullRequestID" + "?api-version=3.0"
|
||||
|
||||
$result = Rest $url
|
||||
|
||||
Write-Verbose $result
|
||||
|
||||
$prInfo = @($result.title)
|
||||
$prInfo += $result.description -split '\n'
|
||||
|
||||
Write-Verbose "PR text: $prInfo"
|
||||
|
||||
if (!$prInfo)
|
||||
{
|
||||
Write-Error "PR title and description are empty for PR id: $PullRequestID"
|
||||
}
|
||||
|
||||
return $prInfo
|
||||
}
|
||||
|
||||
function Rest($url)
|
||||
{
|
||||
if ($env:SYSTEM_ACCESSTOKEN)
|
||||
{
|
||||
$authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
|
||||
}
|
||||
# Running locally
|
||||
else
|
||||
{
|
||||
Write-Host "No SYSTEM_ACCESSTOKEN environment variable found. Getting local PAT token at location $LocalPATLocation"
|
||||
$encodedPat = getEncodedPat
|
||||
$authorization = "Basic $encodedPat"
|
||||
}
|
||||
|
||||
return Invoke-RestMethod $url -Headers @{Authorization = $authorization}
|
||||
}
|
||||
|
||||
# Decrypt a secure string, and then convert to base64 (expected by auth headers)
|
||||
# Taken from https://github.com/DarqueWarrior/team/blob/master/src/team.psm1
|
||||
function getEncodedPat()
|
||||
{
|
||||
if (!$LocalPATLocation)
|
||||
{
|
||||
Write-Error "No local pat provided, and no value in `$env:SYSTEM_ACCESSTOKEN."
|
||||
}
|
||||
|
||||
[SecureString]$encryptedPat = Get-Content $LocalPATLocation | ConvertTo-SecureString
|
||||
|
||||
$credential = New-Object System.Management.Automation.PSCredential "foo",$encryptedPat
|
||||
$decryptedPat = $credential.GetNetworkCredential().Password
|
||||
return [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$decryptedPat"))
|
||||
}
|
||||
|
||||
Main
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"NoReleaseTag": "NoReleaseNotes",
|
||||
"SectionTags": [
|
||||
"Feature", "Breaking", "Minor", "Bug"
|
||||
]
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
#!/usr/local/bin/powershell
|
||||
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
pushd $PSScriptRoot
|
||||
|
||||
$ScriptPath = "$PSScriptRoot/../../XPlatScripts/NuGet.macOS/NuGetRestore.ps1"
|
||||
|
||||
$Args = "-Verbose -PackagesConfigRoot ../../ -NuGetConfig ../../NuGet.Config -PackagesPath ../../packages"
|
||||
|
||||
Invoke-Expression "& $ScriptPath $Args"
|
||||
|
||||
popd
|
|
@ -1,36 +0,0 @@
|
|||
[{
|
||||
"name": "Release",
|
||||
"reasons": ["Release"],
|
||||
"config": {
|
||||
"PublishNuGet": "true",
|
||||
"PublishMarkdownDocs": "true"
|
||||
}
|
||||
}, {
|
||||
"name": "CI",
|
||||
"reasons": ["IndividualCI", "BatchedCI"],
|
||||
"config": {
|
||||
"PublishNuGet": "true",
|
||||
"PublishMarkdownDocs": "true"
|
||||
}
|
||||
}, {
|
||||
"name": "Nightly",
|
||||
"reasons": ["Schedule"],
|
||||
"config": {
|
||||
"PublishNuGet": "false",
|
||||
"PublishMarkdownDocs": "false"
|
||||
}
|
||||
}, {
|
||||
"name": "PullRequest",
|
||||
"reasons": ["PullRequest"],
|
||||
"config": {
|
||||
"PublishNuGet": "false",
|
||||
"PublishMarkdownDocs": "false"
|
||||
}
|
||||
}, {
|
||||
"name": "Manual",
|
||||
"reasons": ["Manual"],
|
||||
"config": {
|
||||
"PublishNuGet": "false",
|
||||
"PublishMarkdownDocs": "false"
|
||||
}
|
||||
}]
|
|
@ -1,74 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
# Based on the build reason, modify the build output location and set some
|
||||
# default VSTS variables that will control behavior. If these variables have
|
||||
# been explicitly set this script won't override them.
|
||||
# See build.reason at: https://www.visualstudio.com/en-us/docs/build/define/variables
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$BuildDefinitionBase,
|
||||
[Parameter()]
|
||||
[String]$BuildReason
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
if (! $BuildReason) {
|
||||
$BuildReason = $Env:BUILD_REASON
|
||||
|
||||
if (! $BuildReason) {
|
||||
Write-Error "BuildReason must be provided if this script wasn't invoked from VSTS"
|
||||
}
|
||||
}
|
||||
|
||||
function main {
|
||||
$buildConfig = getConfigForBuildReason $BuildReason
|
||||
|
||||
# We want to update <definition name> to be $base.$qualifier so e.g. PR builds go to a
|
||||
# separate path. We are actually updating the reserved variable that indicates the build
|
||||
# definition name, but it doesn't seem to have any adverse effects.
|
||||
setVstsVariable "Build.DefinitionName" "${BuildDefinitionBase}.$($buildConfig.name)"
|
||||
|
||||
setDefaultVariables $buildConfig.config
|
||||
}
|
||||
|
||||
function getConfigForBuildReason([String]$buildReason) {
|
||||
$allConfig = Get-Content "$PSScriptRoot\SetBuildVariables.json" | ConvertFrom-Json
|
||||
foreach ($config in $allConfig) {
|
||||
foreach ($reason in $config.reasons) {
|
||||
if ($reason -match $buildReason) {
|
||||
Write-Verbose "Reason '$buildReason' matches $($config | ConvertTo-Json)"
|
||||
return $config
|
||||
}
|
||||
}
|
||||
|
||||
Write-Verbose "Reason '$buildReason' does not match $($config | ConvertTo-Json)"
|
||||
}
|
||||
|
||||
Write-Error "Unable to find a config matching reason $buildReason."
|
||||
}
|
||||
|
||||
function setDefaultVariables([PSCustomObject]$config) {
|
||||
foreach ($configEntry in $config.PSObject.Properties) {
|
||||
setDefaultVstsVariable $configEntry.Name $configEntry.Value
|
||||
}
|
||||
}
|
||||
|
||||
function setDefaultVstsVariable([String]$name, [String]$value) {
|
||||
$setValue = (Get-Item -ErrorAction SilentlyContinue "Env:$name").value
|
||||
if ($setValue) {
|
||||
Write-Verbose "Variable $name is already set to $setValue; not overriding it."
|
||||
return
|
||||
}
|
||||
setVstsVariable $name $value
|
||||
}
|
||||
|
||||
# https://github.com/Microsoft/vsts-tasks/blob/master/docs/authoring/commands.md
|
||||
function setVstsVariable([String]$name, [String]$value) {
|
||||
Write-Verbose "Setting $name to $value"
|
||||
Write-Host "##vso[task.setvariable variable=$name;]$value"
|
||||
}
|
||||
|
||||
main
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"relativeRoot": "../..",
|
||||
"tests": [{
|
||||
"Name": "GLTFSDK.Test",
|
||||
"Framework": "androidEmulator",
|
||||
"Path": "Built/Out/android_<abi>/<configuration>/GLTFSDK.Test/GLTFSDK.Test",
|
||||
"Tags": "emulator",
|
||||
"Configurations": ["Debug"],
|
||||
"Platforms": ["x86"]
|
||||
}]
|
||||
}
|
|
@ -1,256 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Determines the build/package version based on the most recent tags in the git branch hierarchy, or a provided override version number.
|
||||
|
||||
.DESCRIPTION
|
||||
Determines the next version number either for release or pre-release, with the ability to override all version numbers.
|
||||
It will use git describe and the branch name in combination with the version overrides to determine the new version.
|
||||
|
||||
MASTER branch:
|
||||
- Branch name "master". By default, will +1 to the last found tag's patch number, unless overrides are provided
|
||||
PATCH branch:
|
||||
- Branch name "Release/a.b", overrided version must match a.b
|
||||
- By default, will +1 to the last found tag's patch number, unless overrides are provided
|
||||
HOTFIX branch:
|
||||
- Branch name "Release/a.b.c", overrided version numbers must match a.b.c
|
||||
- By default, will +1 to the last found tag's hotfix number, unless overrides are provided
|
||||
|
||||
.PARAMETER SourceDirectory
|
||||
Optional. The root source tree to scan, which must be a valid git repo with current branch master, or a patch/hotfix branch
|
||||
|
||||
.PARAMETER VersionOverride
|
||||
Optional. The version number to override with, in format "vMajor.vMinor.vPatch.vHotfix". Must be either all overrided
|
||||
with numbers, or must be left null let the script decide the next version.
|
||||
|
||||
.PARAMETER GenerateReleaseVersion
|
||||
Optional. Defaults to pre-release (false). If true, generates release version number instead
|
||||
|
||||
.EXAMPLE
|
||||
VersionNumberGenerator.ps1 -SourceDirectory "D:\Build vNext\Builds\cb11432a\Infrastructure\Code" -VersionOverride "1.2.3.4" -GenerateReleaseVersion True
|
||||
|
||||
.RESULT EXAMPLE
|
||||
1.2.3.4 for release
|
||||
<Major>.<Minor>.<Patch>.<Hotfix>
|
||||
|
||||
1.2.3.4-b05-g94f7eb5 for prerelease
|
||||
<Major>.<Minor>.<Patch>.<Hotfix>-b<2-digit-#-commits>-<SHA1-gitcommit-hash>
|
||||
|
||||
CoApp follows semver 1.0.0 so the part after <Hotfix> cannot include periods.
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
|
||||
param(
|
||||
[string]$SourceDirectory,
|
||||
[string]$VersionOverride,
|
||||
[string]$GenerateReleaseVersion = $false
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# TO DO: comparing if versionoverride is a string of $null is a workaround
|
||||
# to deal with Command Line build step that doesn't allow passing in empty parameters
|
||||
if ($VersionOverride -eq '$null')
|
||||
{
|
||||
$VersionOverride = $null
|
||||
}
|
||||
|
||||
# Initialize global params
|
||||
if (!$SourceDirectory)
|
||||
{
|
||||
$SourceDirectory = (Get-Item $PSScriptRoot).Parent.Parent.FullName
|
||||
}
|
||||
|
||||
$GitCommand = . (Join-Path $PSScriptRoot "GetGitCommand.ps1")
|
||||
if (!$GitCommand)
|
||||
{
|
||||
Write-Error "Unable to find git"
|
||||
}
|
||||
|
||||
[Boolean]$GenerateReleaseVersion = [System.Convert]::ToBoolean($GenerateReleaseVersion)
|
||||
|
||||
Enum BranchType
|
||||
{
|
||||
Master
|
||||
Patch
|
||||
Hotfix
|
||||
}
|
||||
|
||||
|
||||
function Main
|
||||
{
|
||||
Write-Verbose "Begin script VersionNumberGenerator.ps1"
|
||||
Write-Verbose "Source Directory = $SourceDirectory"
|
||||
Write-Verbose "GenerateReleaseVersion = $GenerateReleaseVersion"
|
||||
Write-Verbose "VersionOverride = $VersionOverride"
|
||||
|
||||
$overridedVerNumbers = ParseVersionOverride $VersionOverride
|
||||
Push-Location $SourceDirectory
|
||||
$gitTraceOriginal = $env:GIT_TRACE
|
||||
|
||||
try
|
||||
{
|
||||
$env:GIT_TRACE = 1
|
||||
|
||||
$tagInfo = GetLastTagInfo
|
||||
|
||||
if ($overridedVerNumbers)
|
||||
{
|
||||
$versionNums = $overridedVerNumbers
|
||||
}
|
||||
else
|
||||
{
|
||||
$branchObject = GetBranchInfo
|
||||
|
||||
# deep copy
|
||||
$versionNums = $tagInfo.VerNums | foreach { $_ }
|
||||
|
||||
if ($branchObject.Type -eq [BranchType]::Master)
|
||||
{
|
||||
$versionNums[2] = [int]($versionNums[2]) + 1
|
||||
$versionNums[3] = 0
|
||||
}
|
||||
else
|
||||
{
|
||||
$verNumLength = $branchObject.VerNums.length
|
||||
|
||||
# if git describe doesn't match branch name, use the branch name and set remaining numbers to 0
|
||||
if ($branchObject.VerNums[0..$verNumLength] | where { $versionNums[0..$verNumLength] -notcontains $_})
|
||||
{
|
||||
Write-Verbose "Last tag doesn't match branch name - using branch name version instead"
|
||||
[array]::copy($branchObject.VerNums, $versionNums, $verNumLength)
|
||||
|
||||
if ($branchObject.Type -eq [BranchType]::Hotfix -or $branchObject.Type -eq [BranchType]::Patch)
|
||||
{
|
||||
$versionNums[3] = 0
|
||||
}
|
||||
if ($branchObject.Type -eq [BranchType]::Patch)
|
||||
{
|
||||
$versionNums[2] = 0
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($branchObject.Type -eq [BranchType]::Hotfix)
|
||||
{
|
||||
$versionNums[3] = [int]($versionNums[3]) + 1
|
||||
}
|
||||
elseif ($branchObject.Type -eq [BranchType]::Patch)
|
||||
{
|
||||
$versionNums[2] = [int]($versionNums[2]) + 1
|
||||
$versionNums[3] = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$versionString = FormatVersionNumsIntoString $versionNums $GenerateReleaseVersion $tagInfo.CommitInfo
|
||||
|
||||
Write-Host "##vso[task.setvariable variable=GLTFSDKVersionNumber;]$versionString"
|
||||
|
||||
Write-Verbose "New version number is: $versionString"
|
||||
Write-Verbose "Set GLTFSDKVersionNumber to $versionString"
|
||||
Write-Verbose "Exiting script VersionNumberGenerator.ps1"
|
||||
}
|
||||
|
||||
finally
|
||||
{
|
||||
Pop-Location
|
||||
$env:GIT_TRACE = $gitTraceOriginal
|
||||
}
|
||||
|
||||
return $versionString
|
||||
}
|
||||
|
||||
# Checks that the provided override version is valid and returns a string array containing the separate version parts.
|
||||
function ParseVersionOverride($VersionOverride)
|
||||
{
|
||||
if ($VersionOverride -match "^(\d+)\.(\d+)\.(\d+)\.(\d+)$")
|
||||
{
|
||||
return $Matches[1..4]
|
||||
}
|
||||
elseif (!$VersionOverride)
|
||||
{
|
||||
return $null
|
||||
}
|
||||
Write-Error "Version Override is not valid: must be empty or a 4-part version number, ex. 1.4.6.0"
|
||||
}
|
||||
|
||||
function GetBranchInfo()
|
||||
{
|
||||
# If this is a PR build, derive versions using the branch we're merging to
|
||||
if ($Env:SYSTEM_PULLREQUEST_TARGETBRANCH) {
|
||||
$gitBranchName = $Env:SYSTEM_PULLREQUEST_TARGETBRANCH
|
||||
# If this is a central build that isn't a PR, use the branch we're building on
|
||||
} elseif ($Env:BUILD_SOURCEBRANCH) {
|
||||
$gitBranchName = $Env:BUILD_SOURCEBRANCH
|
||||
# Otherwise, just make git calls to see if there's a branch on the commit we're building
|
||||
} else {
|
||||
$gitBranchName = & $GitCommand name-rev --name-only HEAD
|
||||
}
|
||||
|
||||
if ($gitBranchName -match "^refs/heads/(.+)$") {
|
||||
$gitBranchName = $matches[1]
|
||||
}
|
||||
|
||||
Write-Verbose "Branch name: $gitBranchName"
|
||||
$info = [PSObject]@{ Type=""; VerNums=""}
|
||||
|
||||
if ($gitBranchName -match "^Release/(\d+)\.(\d+).(\d+)$")
|
||||
{
|
||||
$info.Type = [BranchType]::Hotfix
|
||||
$info.VerNums = $Matches[1..3]
|
||||
}
|
||||
elseif ($gitBranchName -match "^Release/(\d+)\.(\d+)$")
|
||||
{
|
||||
|
||||
$info.Type = [BranchType]::Patch
|
||||
$info.VerNums = $Matches[1..2]
|
||||
}
|
||||
else
|
||||
{
|
||||
$info.Type = [BranchType]::Master
|
||||
}
|
||||
|
||||
Write-Verbose "$($info.Type) branch detected"
|
||||
return $info
|
||||
}
|
||||
|
||||
# Formats the given array of version numbers into a final version string
|
||||
# Pre-release versions are suffixed with additional commit information
|
||||
function FormatVersionNumsIntoString($versionNums, $generateRelease, $commitInfo)
|
||||
{
|
||||
$result = $versionNums -join '.'
|
||||
|
||||
if (!$generateRelease)
|
||||
{
|
||||
$result += "-b"
|
||||
$result += $commitInfo
|
||||
}
|
||||
|
||||
return $result
|
||||
}
|
||||
|
||||
# Calls git describe to find the last tag, given overrided version numbers. If there is no tag found, it will error or continue depending on $noMatchShouldError
|
||||
# Note: the [0-9]* in the git match will look for a single digit and then wildcard, so "1a" would match even though it is an invalid version number.
|
||||
# So, immediately afterwards, we make sure it uses only digits using more powerful regex matching
|
||||
function GetLastTagInfo
|
||||
{
|
||||
$lastTag = & $GitCommand describe --tags --long --dirty --always --first-parent --match "[rv][0-9]*.[0-9]*.[0-9]"
|
||||
|
||||
Write-Verbose "Git describe result: $lastTag"
|
||||
|
||||
if ($lastTag -match "[rv](\d+)\.(\d+)\.(\d+)\.(\d+)-(\d+)(-g\S{7})\S*$")
|
||||
{
|
||||
$info = [PSObject]@{ VerNums=""; CommitInfo=""}
|
||||
$info.VerNums = $Matches[1..4]
|
||||
$info.CommitInfo = ("{0:D2}" -f [int]$Matches[5]) + $Matches[6]
|
||||
return $info
|
||||
}
|
||||
Write-Error "No tag found with format: $formatString. Erroring out."
|
||||
}
|
||||
|
||||
Main
|
|
@ -1,31 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
# Based on the build reason, modify the build output location and set some
|
||||
# default VSTS variables that will control behavior. If these variables have
|
||||
# been explicitly set this script won't override them.
|
||||
# See build.reason at: https://www.visualstudio.com/en-us/docs/build/define/variables
|
||||
[CmdletBinding()]
|
||||
|
||||
param(
|
||||
[string]$SourceDirectory = $env:BUILD_SOURCESDIRECTORY,
|
||||
[string]$CommitId = $env:BUILD_SOURCEVERSION,
|
||||
[string]$BranchName = $env:BUILD_SOURCEBRANCH,
|
||||
[string]$VersionOverride,
|
||||
[string]$GenerateReleaseVersion = $false,
|
||||
[string]$ModifyWindowsStoreApps = $true,
|
||||
[string]$ModifyCoAppPackages = $true,
|
||||
[string]$ModifyNuGetPackages = $true,
|
||||
[string]$WriteVersionHeader = $true,
|
||||
[string]$ExcludeFolders
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
function Main
|
||||
{
|
||||
$versionString = . "$PSScriptRoot\VersionGenerator.ps1" -SourceDirectory $SourceDirectory -VersionOverride $VersionOverride -GenerateReleaseVersion $GenerateReleaseVersion -Verbose
|
||||
. "$PSScriptRoot\VersionModifier.ps1" -SourceDirectory $SourceDirectory -CommitId $CommitId -BranchName $BranchName -ExcludeFolders $ExcludeFolders -VersionString $versionString -ModifyWindowsStoreApps $ModifyWindowsStoreApps -ModifyCoAppPackages $ModifyCoAppPackages -ModifyNuGetPackages $ModifyNuGetPackages -WriteVersionHeader $WriteVersionHeader -Verbose
|
||||
}
|
||||
|
||||
Main
|
|
@ -1,251 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Scans the source tree for various file types and modifies their version numbers to all be the same
|
||||
depending on the version of the build
|
||||
|
||||
.DESCRIPTION
|
||||
Scans the source tree for Windows Store App package.appxmanifest files, CoApp autopkg files and NuGet nuspec files.
|
||||
For each one modifies the version information stored in the package metadata appropriately.
|
||||
Nuget and CoApp builds (ie based on autopkg or nuspec files) have their version (xml) tag replaced directly by the
|
||||
version string. AppxManifest files only have the X.Y.Z modified because they cannot contain any other semantic
|
||||
information within their version information.
|
||||
|
||||
.PARAMETER SourceDirectory
|
||||
MANDATORY. The root source tree to scan.
|
||||
|
||||
.PARAMETER ModifyWindowsStoreApps
|
||||
Whether or not to modify the package.appxmanifest files for Windows Store Apps.
|
||||
|
||||
.PARAMETER ModifyCoAppPackages
|
||||
Whether or not to modify the autopkg files for c++ nuget packages generated with CoApp.
|
||||
|
||||
.PARAMETER ModifyNuGetPackages
|
||||
Whether or not to modify the nuspec files for non-c++ nuget packages.
|
||||
|
||||
.PARAMETER WriteVersionHeader
|
||||
Whether or not to modify the SpectreVersionInternal.h header file that is compiled into the Spectre::Utils::GetPackageVersion() method.
|
||||
|
||||
.PARAMETER ExcludeFolders
|
||||
A semi-colon delimited list of folder patterns to ignore.
|
||||
|
||||
.PARAMETER VersionString
|
||||
The version number we will use.
|
||||
|
||||
.EXAMPLE
|
||||
VersionModifier.ps1 -VersionString "1.2.3.4" -SourceDirectory "D:\Build vNext\Builds\cb11432a\Infrastructure\Code" -ModifyWindowsStoreApps true -ExcludeFolders "Microsoft.Lift.WorkflowActivities.Tests"
|
||||
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)][string]$VersionString,
|
||||
[string]$SourceDirectory = $env:BUILD_SOURCESDIRECTORY,
|
||||
[string]$CommitId = $env:BUILD_SOURCEVERSION,
|
||||
[string]$BranchName = $env:BUILD_SOURCEBRANCH,
|
||||
[string]$ModifyWindowsStoreApps = $true,
|
||||
[string]$ModifyCoAppPackages = $true,
|
||||
[string]$ModifyNuGetPackages = $true,
|
||||
[string]$WriteVersionHeader = $true,
|
||||
[string]$ExcludeFolders
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# Initialize global params
|
||||
if (!$SourceDirectory)
|
||||
{
|
||||
$SourceDirectory = (Get-Item $PSScriptRoot).Parent.Parent.FullName
|
||||
}
|
||||
|
||||
[Boolean]$ModifyWindowsStoreApps = [System.Convert]::ToBoolean($ModifyWindowsStoreApps)
|
||||
[Boolean]$ModifyCoAppPackages = [System.Convert]::ToBoolean($ModifyCoAppPackages)
|
||||
[Boolean]$ModifyNuGetPackages = [System.Convert]::ToBoolean($ModifyNuGetPackages)
|
||||
[Boolean]$WriteVersionHeader = [System.Convert]::ToBoolean($WriteVersionHeader)
|
||||
[Boolean]$IsReleaseVersion = [System.Convert]::ToBoolean($IsReleaseVersion)
|
||||
|
||||
|
||||
function Main
|
||||
{
|
||||
if ($VersionString -notmatch "^((\d+)\.(\d+)\.(\d+)\.(\d+))")
|
||||
{
|
||||
Write-Error "Version string $VersionString must include 4 digits separated by ."
|
||||
}
|
||||
$versionNumString = $Matches[1]
|
||||
|
||||
Write-Verbose "Entering script VersionModifier.ps1"
|
||||
Write-Verbose "Source Directory = $SourceDirectory"
|
||||
Write-Verbose "Full version string is: $VersionString, version numbers are $versionNumString"
|
||||
|
||||
$buildInfo = "Built from git commit $($CommitId) ($BranchName) on build machine $(hostname) at $(Get-Date), version $VersionString"
|
||||
Write-Verbose "Build info: $buildInfo"
|
||||
|
||||
if ($ModifyWindowsStoreApps)
|
||||
{
|
||||
ModifyPackageAppxManifest $versionNumString
|
||||
}
|
||||
|
||||
if ($ModifyCoAppPackages)
|
||||
{
|
||||
ModifyAutoPkgFiles $buildInfo
|
||||
}
|
||||
|
||||
if ($ModifyNuGetPackages)
|
||||
{
|
||||
ModifyNuSpecPackages $buildInfo
|
||||
}
|
||||
|
||||
if ($WriteVersionHeader)
|
||||
{
|
||||
WriteVersionHeader
|
||||
}
|
||||
|
||||
Write-Verbose "Exiting script VersionModifier.ps1"
|
||||
}
|
||||
|
||||
<#make sure the reference apps still build
|
||||
We aren't going to be publishing any of these (Although it'd be nice if we could, because then we could just run WACK tests real easy)
|
||||
So, make sure that the version number in the appxmanifest still allows it to build, check if dashes are allowed and letters
|
||||
Want to try to keep the hash in the release version if possible.
|
||||
Use our release version, not this funky logic here
|
||||
Version in appxmanifest must be in format: "Major.Minor.Build.Revision". Value must contain a valid four-part version number.
|
||||
# Reads the version number from the given package.appxmanifest
|
||||
# Modifies the version numbers in package.appxmanifest files
|
||||
#>
|
||||
function ModifyPackageAppxManifest
|
||||
{
|
||||
Foreach ($file in GetFileWrapper "*.appxmanifest")
|
||||
{
|
||||
Write-Verbose $file
|
||||
|
||||
[xml]$appxData = Get-Content $file
|
||||
|
||||
Write-Verbose "Replacing $($appxData.Package.Identity.Version) with $VersionString"
|
||||
|
||||
$appxData.Package.Identity.Version = $VersionString
|
||||
$appxData.Save($file)
|
||||
}
|
||||
}
|
||||
|
||||
# Reads various properties from the given nuspec file and returns them in a hash-table
|
||||
# Writes the new version number, tags and releaseNotes (the build info) into the nuSpec file
|
||||
# Modifies the version numbers in nuspec files
|
||||
function ModifyNuSpecPackages($buildInfo)
|
||||
{
|
||||
Foreach ($file in GetFileWrapper "*.nuspec")
|
||||
{
|
||||
Write-Verbose $file
|
||||
|
||||
[xml]$nuspecData = Get-Content $file
|
||||
|
||||
Write-Verbose "Replacing version $($nuspecData.package.metadata.version) with $VersionString"
|
||||
Write-Verbose "Replacing release notes with: $buildInfo"
|
||||
|
||||
$nuspecData.package.metadata.version = $VersionString
|
||||
$nuspecData.package.metadata.releaseNotes = $buildInfo
|
||||
|
||||
foreach ($dependency in $nuspecData.package.metadata.dependencies.dependency) {
|
||||
if (IsPackageNameInternal $dependency.id) {
|
||||
Write-Verbose "Replacing dependency $($dependency.id) version $($dependency.version) with $VersionString"
|
||||
$dependency.version = $VersionString
|
||||
}
|
||||
}
|
||||
|
||||
$nuspecData.Save($file)
|
||||
}
|
||||
}
|
||||
|
||||
# Modifies the version numbers in autopkg files
|
||||
function ModifyAutoPkgFiles($buildInfo)
|
||||
{
|
||||
Foreach ($file in GetFileWrapper "*.autopkg")
|
||||
{
|
||||
Write-Verbose $file
|
||||
|
||||
$newContent = ""
|
||||
Foreach ($line in Get-Content $file)
|
||||
{
|
||||
# Match line of the form "<whitespace?>version<whitespace?>:<whitespace?><versionString><whitespace?><semicolon>"
|
||||
if ($line -match "(\s+)?(version)(\s+)?:(\s+)?([\S\.]+)(\s+)?;")
|
||||
{
|
||||
Write-Verbose "Replacing $oldVersion with $VersionString"
|
||||
$line = $line.Replace($matches[5], $VersionString)
|
||||
}
|
||||
# Match dependency line of the form "Microsoft.Lift.*/<version>;" or "Microsoft.Lift.*/<version>,"
|
||||
elseif ($line -match "^\s+(\S+?)\/([0-9\.]+)[;,]$" -and (IsPackageNameInternal $matches[1]))
|
||||
{
|
||||
$packageName = $matches[1]
|
||||
$oldVersion = $matches[2]
|
||||
Write-Verbose "Replacing dependency $packageName version $oldVersion with $VersionString"
|
||||
$line = $line.Replace($oldVersion, $VersionString)
|
||||
}
|
||||
# Match "releaseNotes" line which uses a string enclosed in double-quotes with an optional at symbol at the start
|
||||
elseif ($line -match "(\s+)?(releaseNotes)(\s+)?:(\s+)?(@)?\""(.*)\""(\s+)?;")
|
||||
{
|
||||
# Replace releaseNotes with new value (the build info). We don't do a blind replace of the old release notes with the new because that fails if
|
||||
# the existing release notes are a substring that is found elsewhere in the line. Instead we reconstruct the string, including whitespace and
|
||||
# optional @ symbol, but replacing the current release notes section with the new one.
|
||||
|
||||
Write-Verbose "Replacing release notes with: $buildInfo"
|
||||
$line = "$($matches[1])$($matches[2])$($matches[3]):$($matches[4])$($matches[5])""$buildInfo""$($matches[7]);"
|
||||
}
|
||||
$newContent += "$line`n"
|
||||
}
|
||||
|
||||
Set-Content $file $newContent
|
||||
}
|
||||
}
|
||||
|
||||
function IsPackageNameInternal([String]$packageName) {
|
||||
return $packageName.StartsWith("Microsoft.Lift")
|
||||
}
|
||||
|
||||
# Writes Version.h file in nuspec files
|
||||
# [void] prevents stringBuilder.Append from outputting capacity/length information
|
||||
function WriteVersionHeader
|
||||
{
|
||||
$outPath = $SourceDirectory + "\Built\Int\";
|
||||
$outFile = $outPath + "SpectreVersionInternal.h";
|
||||
|
||||
# This just writes SpectreVersionInternal.h into the intermediate folder
|
||||
Write-Verbose "Writing $outFile with SPECTRE_PACKAGE_VERSION = $VersionString"
|
||||
|
||||
# just overwrite the whole .h file
|
||||
$stringBuilder = New-Object System.Text.StringBuilder
|
||||
[void]$stringBuilder.Append("// Copyright (c) Microsoft Corporation. All rights reserved." + [Environment]::NewLine)
|
||||
[void]$stringBuilder.Append("// Licensed under the MIT License." + [Environment]::NewLine)
|
||||
[void]$stringBuilder.Append([Environment]::NewLine)
|
||||
[void]$stringBuilder.Append("#pragma once" + [Environment]::NewLine)
|
||||
[void]$stringBuilder.Append([Environment]::NewLine)
|
||||
[void]$stringBuilder.Append("// This file is autogenerated by VersionModifier.ps1" + [Environment]::NewLine)
|
||||
[void]$stringBuilder.Append([Environment]::NewLine)
|
||||
[void]$stringBuilder.Append("#define SPECTRE_PACKAGE_VERSION " + '"' + $VersionString + '"' + [Environment]::NewLine)
|
||||
|
||||
$item = New-Item $outPath -ItemType Directory -Force
|
||||
Out-File -encoding "UTF8" -filepath $outFile -inputobject $stringBuilder.ToString() -force
|
||||
}
|
||||
|
||||
# This function is a wrapper around Get-ChildItem so we can mock the return
|
||||
function GetFileWrapper($searchPattern)
|
||||
{
|
||||
$files = Get-ChildItem $SourceDirectory -Recurse -Include $searchPattern
|
||||
$fileNames = $files | Foreach-Object { $_.FullName }
|
||||
return $fileNames | Where-Object { ! (ShouldIgnoreFile $_) }
|
||||
}
|
||||
|
||||
function ShouldIgnoreFile($fileName)
|
||||
{
|
||||
foreach ($excludeFolder in ($ExcludeFolders.Split(";") | Where-Object { $_ }))
|
||||
{
|
||||
if ($fileName.Contains($excludeFolder))
|
||||
{
|
||||
Write-Verbose "Ignoring $fileName due to exclusion folder $ignore"
|
||||
return $true
|
||||
}
|
||||
}
|
||||
|
||||
return $false
|
||||
}
|
||||
|
||||
Main
|
|
@ -1,98 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Build the Windows solutions from the command line.
|
||||
|
||||
.DESCRIPTION
|
||||
Builds the Visual Studio projects generated by wininit.ps1
|
||||
|
||||
.PARAMETER NoNuGet
|
||||
Disable build of NuGet packages
|
||||
|
||||
.EXAMPLE
|
||||
winbuild.ps1
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[switch]$NoNuGet,
|
||||
[switch]$NoArm,
|
||||
[switch]$NoArm64,
|
||||
[switch]$Nox64,
|
||||
[switch]$NoWin32,
|
||||
[switch]$NoDebug,
|
||||
[switch]$NoRelease
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
|
||||
function BuildPlatform($folder)
|
||||
{
|
||||
Write-Host "Build $folder"
|
||||
Push-Location "$PSScriptRoot/../../Built/Int/$folder"
|
||||
try
|
||||
{
|
||||
if (!$NoDebug)
|
||||
{
|
||||
cmake --build . --target install --config Debug
|
||||
}
|
||||
|
||||
if (!$NoRelease)
|
||||
{
|
||||
cmake --build . --target install --config Release
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
Pop-Location
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function BuildNuGet()
|
||||
{
|
||||
#nuget pack $PSScriptRoot/GLTFSDK/GLTFSDK.macOS.CPP.nuspec -OutputDirectory $PSScriptRoot/Built/Out/NuGet
|
||||
try
|
||||
{
|
||||
# You must install CoApp for this to work.
|
||||
# See http://coapp.org/tutorials/installation.html
|
||||
# Also, if it still doesn't work, try this https://github.com/appveyor/ci/issues/1446
|
||||
Write-NuGetPackage $PSScriptRoot/../../GLTFSDK/GLTFSDK.Windows.CPP.autopkg
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Error "Unable to generate NuGet package. Check that you have CoApp installed."
|
||||
}
|
||||
}
|
||||
|
||||
function Main()
|
||||
{
|
||||
if (!$NoWin32)
|
||||
{
|
||||
BuildPlatform "cmake_Win32"
|
||||
}
|
||||
|
||||
if (!$Nox64)
|
||||
{
|
||||
BuildPlatform "cmake_x64"
|
||||
}
|
||||
|
||||
if (!$NoArm)
|
||||
{
|
||||
BuildPlatform "cmake_ARM"
|
||||
}
|
||||
|
||||
if (!$NoArm64)
|
||||
{
|
||||
BuildPlatform "cmake_ARM64"
|
||||
}
|
||||
|
||||
if (!$NoNuGet)
|
||||
{
|
||||
BuildNuGet
|
||||
}
|
||||
}
|
||||
|
||||
Main
|
|
@ -1,85 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Setup the Visual Studio solution for building on Windows.
|
||||
This should be run after every git pull or clean and should be safe to run any time.
|
||||
|
||||
.DESCRIPTION
|
||||
Runs the cmake build required to generate the solutions for building all variants of the GLTFSDK on Windows.
|
||||
Regenerates SpectreVersionInternal.h
|
||||
|
||||
.PARAMETER Clean
|
||||
Clean the output folders before building
|
||||
|
||||
.EXAMPLE
|
||||
wininit.ps1
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[switch]$Clean,
|
||||
[switch]$NoArm,
|
||||
[switch]$NoArm64,
|
||||
[switch]$Nox64,
|
||||
[switch]$NoWin32
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
|
||||
function CleanFiles()
|
||||
{
|
||||
Remove-Item "$PSScriptRoot/../../Built" -Recurse -Force -ErrorAction Ignore | Write-Host
|
||||
Remove-Item "$PSScriptRoot/../../packages" -Recurse -Force -ErrorAction Ignore | Write-Host
|
||||
}
|
||||
|
||||
function GeneratePlatform($platform, $path)
|
||||
{
|
||||
Write-Host "Generate $platform Solution"
|
||||
New-Item -Path "$PSScriptRoot/../../Built/Int" -Name $path -ItemType Directory -Force | Out-Null
|
||||
Push-Location "$PSScriptRoot/../../Built/Int/$path" | Out-Null
|
||||
try
|
||||
{
|
||||
$argList = @(
|
||||
"-G", "Visual Studio 16 2019",
|
||||
"-A", "$platform"
|
||||
)
|
||||
|
||||
& cmake $argList "..\..\.."
|
||||
}
|
||||
finally
|
||||
{
|
||||
Pop-Location | Out-Null
|
||||
}
|
||||
}
|
||||
|
||||
function Main()
|
||||
{
|
||||
if ($Clean)
|
||||
{
|
||||
CleanFiles
|
||||
}
|
||||
|
||||
if (!$NoWin32)
|
||||
{
|
||||
GeneratePlatform "Win32" "cmake_Win32"
|
||||
}
|
||||
|
||||
if (!$Nox64)
|
||||
{
|
||||
GeneratePlatform "x64" "cmake_x64"
|
||||
}
|
||||
|
||||
if (!$NoArm)
|
||||
{
|
||||
GeneratePlatform "ARM" "cmake_ARM"
|
||||
}
|
||||
|
||||
if (!$NoArm64)
|
||||
{
|
||||
GeneratePlatform "ARM64" "cmake_ARM64"
|
||||
}
|
||||
}
|
||||
|
||||
Main
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="rapidjson.temprelease" version="0.0.2.20" targetFramework="native" />
|
||||
</packages>
|
|
@ -1,261 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>15.0</VCProjectVersion>
|
||||
<ProjectGuid>{DE6A7757-2DF3-4705-829B-96A77BABF0B2}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>Deserialize</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Source\main.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\GLTFSDK\GLTFSDK.vcxproj">
|
||||
<Project>{f656c078-7f2a-4753-9b92-5e959af80e26}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,22 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Source\main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,261 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>15.0</VCProjectVersion>
|
||||
<ProjectGuid>{DE6A7757-2DE3-4705-829B-96A77BABF0B2}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>Serialize</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)GLTFSDK\Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Source\main.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\GLTFSDK\GLTFSDK.vcxproj">
|
||||
<Project>{f656c078-7f2a-4753-9b92-5e959af80e26}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,22 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Source\main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,115 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Label="Globals">
|
||||
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||
<HasSharedItems>true</HasSharedItems>
|
||||
<ItemsProjectGuid>{45d41acc-2c3c-43d2-bc10-02aa73ffc7c7}</ItemsProjectGuid>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ProjectCapability Include="SourceItemsFromImports" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\AnimationUtils.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\BufferBuilder.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Color.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Deserialize.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Document.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Extension.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\ExtensionHandlers.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\ExtensionsKHR.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\GLBResourceReader.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\GLBResourceWriter.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\GLTFResourceReader.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\GLTFResourceWriter.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Math.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\MeshPrimitiveUtils.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\MicrosoftGeneratorVersion.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\PBRUtils.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\ResourceWriter.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Schema.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\SchemaValidation.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Serialize.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Validation.cpp" />
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Version.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\AnimationUtils.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\BufferBuilder.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Color.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Constants.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Deserialize.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Document.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Exceptions.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Extension.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\ExtensionHandlers.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\ExtensionsKHR.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\ExtrasDocument.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\GLBResourceReader.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\GLBResourceWriter.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\GLTF.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\GLTFResourceReader.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\GLTFResourceWriter.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\IStreamCache.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\IStreamReader.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\IStreamWriter.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\IndexedContainer.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Math.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\MeshPrimitiveUtils.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\MicrosoftGeneratorVersion.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Optional.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\PBRUtils.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\RapidJsonUtils.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\ResourceReaderUtils.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\ResourceWriter.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Schema.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\SchemaValidation.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Serialize.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\StreamCache.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\StreamCacheLRU.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\StreamUtils.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Traverse.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Validation.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Version.h" />
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Visitor.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\accessor.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\accessor.sparse.indices.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\accessor.sparse.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\accessor.sparse.values.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\animation.channel.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\animation.channel.target.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\animation.sampler.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\animation.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\asset.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\buffer.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\bufferView.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\camera.orthographic.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\camera.perspective.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\camera.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\extension.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\extras.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\glTF.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\glTFChildOfRootProperty.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\glTFProperty.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\glTFid.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\image.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\material.normalTextureInfo.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\material.occlusionTextureInfo.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\material.pbrMetallicRoughness.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\material.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\mesh.primitive.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\mesh.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\node.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\sampler.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\scene.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\skin.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\texture.schema.json" />
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\textureInfo.schema.json" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,308 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{5a13d977-5e8b-49dd-b668-963625ef9f63}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\GLTFSDK">
|
||||
<UniqueIdentifier>{a70fdcf2-7d10-4464-92b9-354dca3e5455}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{aced3b92-d8be-4cbb-b67e-2fd30a9cf404}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\GLTFSDK">
|
||||
<UniqueIdentifier>{2d9c059f-2d4b-4972-959d-466c338929c7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Schema">
|
||||
<UniqueIdentifier>{b291fdfc-80fc-4b07-9b60-64a6373f5409}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Schema\Extension">
|
||||
<UniqueIdentifier>{f49e18b0-39bc-4049-8304-ab9683888d6f}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\AnimationUtils.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\BufferBuilder.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Color.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Deserialize.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Document.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Extension.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\ExtensionHandlers.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\ExtensionsKHR.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\GLBResourceReader.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\GLBResourceWriter.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\GLTFResourceReader.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\GLTFResourceWriter.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Math.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\MeshPrimitiveUtils.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\MicrosoftGeneratorVersion.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\PBRUtils.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\ResourceWriter.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Serialize.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Validation.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Version.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\SchemaValidation.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Source\Schema.cpp">
|
||||
<Filter>Source Files\GLTFSDK</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\AnimationUtils.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Color.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Constants.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\BufferBuilder.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Deserialize.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Document.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Exceptions.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Extension.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\ExtensionHandlers.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\ExtensionsKHR.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\ExtrasDocument.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\GLBResourceReader.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\GLBResourceWriter.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\GLTF.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\GLTFResourceReader.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\GLTFResourceWriter.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\IndexedContainer.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\IStreamReader.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\IStreamCache.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\IStreamWriter.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Math.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\MeshPrimitiveUtils.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\MicrosoftGeneratorVersion.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\PBRUtils.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\RapidJsonUtils.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\ResourceReaderUtils.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\ResourceWriter.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Schema.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Serialize.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\StreamCache.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\StreamCacheLRU.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\StreamUtils.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Traverse.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Visitor.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Validation.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Version.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\SchemaValidation.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(MSBuildThisFileDirectory)..\GLTFSDK\Inc\GLTFSDK\Optional.h">
|
||||
<Filter>Header Files\GLTFSDK</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\accessor.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\accessor.sparse.indices.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\accessor.sparse.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\accessor.sparse.values.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\animation.channel.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\animation.channel.target.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\animation.sampler.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\animation.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\asset.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\buffer.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\bufferView.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\camera.orthographic.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\camera.perspective.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\camera.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\extension.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\extras.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\glTF.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\glTFChildOfRootProperty.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\glTFProperty.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\glTFid.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\image.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\material.normalTextureInfo.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\material.occlusionTextureInfo.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\material.pbrMetallicRoughness.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\material.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\mesh.primitive.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\mesh.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\node.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\sampler.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\scene.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\skin.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\texture.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\GLTFSDK\schema\textureInfo.schema.json">
|
||||
<Filter>Schema</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
112
GLTFSDK.sln
112
GLTFSDK.sln
|
@ -1,112 +0,0 @@
|
|||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27130.2003
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GLTFSDK", "GLTFSDK\GLTFSDK.vcxproj", "{F656C078-7F2A-4753-9B92-5E959AF80E26}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GLTFSDK.Test", "GLTFSDK.Test\GLTFSDK.Test.vcxproj", "{F170B140-6AB9-4014-97D9-D897E0493CEC}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26} = {F656C078-7F2A-4753-9B92-5E959AF80E26}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GLTFSDK.Shared.CPP", "GLTFSDK.Shared.CPP\GLTFSDK.Shared.CPP.vcxitems", "{45D41ACC-2C3C-43D2-BC10-02AA73FFC7C7}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GLTFSDK.TestUtils", "GLTFSDK.TestUtils\GLTFSDK.TestUtils.vcxitems", "{F4FD814F-0664-49AE-A41D-99F1BB24F0CE}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{86B90B4A-0EEE-4154-8A57-003225F65D6B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Deserialize", "GLTFSDK.Samples\Deserialize\Deserialize.vcxproj", "{DE6A7757-2DF3-4705-829B-96A77BABF0B2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Serialize", "GLTFSDK.Samples\Serialize\Serialize.vcxproj", "{DE6A7757-2DE3-4705-829B-96A77BABF0B2}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||
GLTFSDK.Shared.CPP\GLTFSDK.Shared.CPP.vcxitems*{45d41acc-2c3c-43d2-bc10-02aa73ffc7c7}*SharedItemsImports = 9
|
||||
GLTFSDK.TestUtils\GLTFSDK.TestUtils.vcxitems*{f4fd814f-0664-49ae-a41d-99f1bb24f0ce}*SharedItemsImports = 9
|
||||
GLTFSDK.Shared.CPP\GLTFSDK.Shared.CPP.vcxitems*{f656c078-7f2a-4753-9b92-5e959af80e26}*SharedItemsImports = 4
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|ARM = Debug|ARM
|
||||
Debug|ARM64 = Debug|ARM64
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|ARM = Release|ARM
|
||||
Release|ARM64 = Release|ARM64
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Debug|ARM.Build.0 = Debug|ARM
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Debug|x64.Build.0 = Debug|x64
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Debug|x86.Build.0 = Debug|Win32
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Release|ARM.ActiveCfg = Release|ARM
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Release|ARM.Build.0 = Release|ARM
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Release|x64.ActiveCfg = Release|x64
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Release|x64.Build.0 = Release|x64
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Release|x86.ActiveCfg = Release|Win32
|
||||
{F656C078-7F2A-4753-9B92-5E959AF80E26}.Release|x86.Build.0 = Release|Win32
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Debug|ARM.Build.0 = Debug|ARM
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Debug|ARM64.ActiveCfg = Debug|ARM
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Debug|x64.Build.0 = Debug|x64
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Debug|x86.Build.0 = Debug|Win32
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Release|ARM.ActiveCfg = Release|ARM
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Release|ARM.Build.0 = Release|ARM
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Release|ARM64.ActiveCfg = Release|ARM
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Release|x64.ActiveCfg = Release|x64
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Release|x64.Build.0 = Release|x64
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Release|x86.ActiveCfg = Release|Win32
|
||||
{F170B140-6AB9-4014-97D9-D897E0493CEC}.Release|x86.Build.0 = Release|Win32
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Debug|ARM.Build.0 = Debug|ARM
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Debug|x64.Build.0 = Debug|x64
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Debug|x86.Build.0 = Debug|Win32
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Release|ARM.ActiveCfg = Release|ARM
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Release|ARM.Build.0 = Release|ARM
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Release|x64.ActiveCfg = Release|x64
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Release|x64.Build.0 = Release|x64
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Release|x86.ActiveCfg = Release|Win32
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2}.Release|x86.Build.0 = Release|Win32
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Debug|ARM.Build.0 = Debug|ARM
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Debug|x64.Build.0 = Debug|x64
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Debug|x86.Build.0 = Debug|Win32
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Release|ARM.ActiveCfg = Release|ARM
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Release|ARM.Build.0 = Release|ARM
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Release|x64.ActiveCfg = Release|x64
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Release|x64.Build.0 = Release|x64
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Release|x86.ActiveCfg = Release|Win32
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{DE6A7757-2DF3-4705-829B-96A77BABF0B2} = {86B90B4A-0EEE-4154-8A57-003225F65D6B}
|
||||
{DE6A7757-2DE3-4705-829B-96A77BABF0B2} = {86B90B4A-0EEE-4154-8A57-003225F65D6B}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {B683866C-07F1-4E03-8D84-0A683408D980}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,50 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Microsoft.glTF.Android.CPP</id>
|
||||
<version>0.0.0.0</version>
|
||||
<title>Microsoft.glTF.Android.CPP</title>
|
||||
<authors>Microsoft</authors>
|
||||
<owners>Microsoft</owners>
|
||||
<requireLicenseAcceptance>true</requireLicenseAcceptance>
|
||||
<description>A C++ library for decoding and encoding glTF files.</description>
|
||||
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
|
||||
<licenseUrl>https://opensource.org/licenses/MIT</licenseUrl>
|
||||
<projectUrl>https://aka.ms/Y8fymc</projectUrl>
|
||||
<iconUrl>https://i.imgur.com/dj5ogtZ.png</iconUrl>
|
||||
<tags></tags>
|
||||
<releaseNotes>(Replaced by NuGet build system)</releaseNotes>
|
||||
</metadata>
|
||||
<files>
|
||||
<!-- x86|Debug -->
|
||||
<file src="..\Built\Out\android_x86\Debug\GLTFSDK\libGLTFSDK.a" target="\build\native\lib\x86\Debug\static" />
|
||||
<!-- x86|Release -->
|
||||
<file src="..\Built\Out\android_x86\Release\GLTFSDK\libGLTFSDK.a" target="\build\native\lib\x86\Release\static" />
|
||||
<!-- x64|Debug -->
|
||||
<file src="..\Built\Out\android_x86_64\Debug\GLTFSDK\libGLTFSDK.a" target="\build\native\lib\x86_64\Debug\static" />
|
||||
<!-- x64|Release -->
|
||||
<file src="..\Built\Out\android_x86_64\Release\GLTFSDK\libGLTFSDK.a" target="\build\native\lib\x86_64\Release\static" />
|
||||
<!-- arm32|Debug -->
|
||||
<file src="..\Built\Out\android_armeabi-v7a\Debug\GLTFSDK\libGLTFSDK.a" target="\build\native\lib\armeabi-v7a\Debug\static" />
|
||||
<!-- arm32|Release -->
|
||||
<file src="..\Built\Out\android_armeabi-v7a\Release\GLTFSDK\libGLTFSDK.a" target="\build\native\lib\armeabi-v7a\Release\static" />
|
||||
<!-- arm64|Debug -->
|
||||
<file src="..\Built\Out\android_arm64-v8a\Debug\GLTFSDK\libGLTFSDK.a" target="\build\native\lib\arm64-v8a\Debug\static" />
|
||||
<!-- arm64|Release -->
|
||||
<file src="..\Built\Out\android_arm64-v8a\Release\GLTFSDK\libGLTFSDK.a" target="\build\native\lib\arm64-v8a\Release\static" />
|
||||
<!-- Build (C++) -->
|
||||
<file src="..\GLTFSDK\Inc\**\*" target="\build\native\include" />
|
||||
<!-- Build (C++) -->
|
||||
<file src="..\Built\Out\RapidJSON\include\**\*" target="\build\native\include" />
|
||||
|
||||
<!-- CMake Module -->
|
||||
<file src="..\Build\CMake\Android\FindGLTFSDK.android_x86.cmake" target="" />
|
||||
<file src="..\Build\CMake\Android\FindGLTFSDK.android_x86_64.cmake" target="" />
|
||||
<file src="..\Build\CMake\Android\FindGLTFSDK.android_armeabi-v7a.cmake" target="" />
|
||||
<file src="..\Build\CMake\Android\FindGLTFSDK.android_arm64-v8a.cmake" target="" />
|
||||
<!-- Readme files -->
|
||||
<file src="..\LICENSE**" target="\" />
|
||||
<file src="..\thirdPartyNotices.txt" target="\" />
|
||||
<file src="..\readme.md" target="\" />
|
||||
</files>
|
||||
</package>
|
|
@ -1,130 +0,0 @@
|
|||
configurations {
|
||||
Platform {
|
||||
key : "Platform";
|
||||
choices: { Win32, x64, ARM, ARM64, AnyCPU };
|
||||
Win32.aliases : { x86, win32, ia32, 386 };
|
||||
x64.aliases : { x64, amd64, em64t, intel64, x86-64, x86_64 };
|
||||
ARM.aliases : { arm, woa };
|
||||
ARM64.aliases : { arm64 };
|
||||
AnyCPU.aliases : { anycpu, any };
|
||||
};
|
||||
}
|
||||
nuget {
|
||||
nuspec {
|
||||
id = Microsoft.glTF.VS2017.CPP;
|
||||
version : 0.0.0.0;
|
||||
title : Microsoft.glTF.VS2017.CPP;
|
||||
authors : { Microsoft };
|
||||
owners : { Microsoft };
|
||||
requireLicenseAcceptance : true;
|
||||
summary : @"A C++ library for decoding and encoding glTF files.";
|
||||
description : @"A C++ library for decoding and encoding glTF files.";
|
||||
copyright : @"© Microsoft Corporation. All rights reserved.";
|
||||
licenseUrl : "https://opensource.org/licenses/MIT";
|
||||
projectUrl : "https://aka.ms/Y8fymc";
|
||||
iconUrl : "https://i.imgur.com/dj5ogtZ.png";
|
||||
releaseNotes: "(Replaced by NuGet build system)";
|
||||
}
|
||||
|
||||
files {
|
||||
#defines {
|
||||
BASE = "..";
|
||||
};
|
||||
|
||||
readmes:{
|
||||
#destination = ${pkg_root};
|
||||
"${BASE}\LICENSE",
|
||||
"${BASE}\thirdPartyNotices.txt",
|
||||
"${BASE}\readme.md"
|
||||
};
|
||||
|
||||
side-by-side-symbols += {
|
||||
#output {
|
||||
package = default;
|
||||
};
|
||||
#destination : ${d_lib};
|
||||
};
|
||||
|
||||
nestedIncludePluginManager:{
|
||||
#destination = ${d_include}GLTFSDK;
|
||||
"${BASE}\GLTFSDK\Inc\GLTFSDK\*.h",
|
||||
};
|
||||
|
||||
nested2IncludePluginManager: {
|
||||
#destination = ${d_include}rapidjson;
|
||||
"${BASE}\Built\Out\RapidJSON\include\rapidjson\**\*.h"
|
||||
};
|
||||
|
||||
[win32,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_Win32\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_Win32\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[win32,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_Win32\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_Win32\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[x64,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_x64\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_x64\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[x64,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_x64\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_x64\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm64,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM64\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM64\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm64,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM64\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM64\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,130 +0,0 @@
|
|||
configurations {
|
||||
Platform {
|
||||
key : "Platform";
|
||||
choices: { Win32, x64, ARM, ARM64, AnyCPU };
|
||||
Win32.aliases : { x86, win32, ia32, 386 };
|
||||
x64.aliases : { x64, amd64, em64t, intel64, x86-64, x86_64 };
|
||||
ARM.aliases : { arm, woa };
|
||||
ARM64.aliases : { arm64 };
|
||||
AnyCPU.aliases : { anycpu, any };
|
||||
};
|
||||
}
|
||||
nuget {
|
||||
nuspec {
|
||||
id = Microsoft.glTF.VS2019.CPP;
|
||||
version : 0.0.0.0;
|
||||
title : Microsoft.glTF.VS2019.CPP;
|
||||
authors : { Microsoft };
|
||||
owners : { Microsoft };
|
||||
requireLicenseAcceptance : true;
|
||||
summary : @"A C++ library for decoding and encoding glTF files.";
|
||||
description : @"A C++ library for decoding and encoding glTF files.";
|
||||
copyright : @"© Microsoft Corporation. All rights reserved.";
|
||||
licenseUrl : "https://opensource.org/licenses/MIT";
|
||||
projectUrl : "https://aka.ms/Y8fymc";
|
||||
iconUrl : "https://i.imgur.com/dj5ogtZ.png";
|
||||
releaseNotes: "(Replaced by NuGet build system)";
|
||||
}
|
||||
|
||||
files {
|
||||
#defines {
|
||||
BASE = "..";
|
||||
};
|
||||
|
||||
readmes:{
|
||||
#destination = ${pkg_root};
|
||||
"${BASE}\LICENSE",
|
||||
"${BASE}\thirdPartyNotices.txt",
|
||||
"${BASE}\readme.md"
|
||||
};
|
||||
|
||||
side-by-side-symbols += {
|
||||
#output {
|
||||
package = default;
|
||||
};
|
||||
#destination : ${d_lib};
|
||||
};
|
||||
|
||||
nestedIncludePluginManager:{
|
||||
#destination = ${d_include}GLTFSDK;
|
||||
"${BASE}\GLTFSDK\Inc\GLTFSDK\*.h",
|
||||
};
|
||||
|
||||
nested2IncludePluginManager: {
|
||||
#destination = ${d_include}rapidjson;
|
||||
"${BASE}\Built\Out\RapidJSON\include\rapidjson\**\*.h"
|
||||
};
|
||||
|
||||
[win32,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_Win32\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_Win32\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[win32,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_Win32\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_Win32\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[x64,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_x64\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_x64\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[x64,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_x64\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_x64\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm64,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM64\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM64\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm64,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM64\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM64\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,130 +0,0 @@
|
|||
configurations {
|
||||
Platform {
|
||||
key : "Platform";
|
||||
choices: { Win32, x64, ARM, ARM64, AnyCPU };
|
||||
Win32.aliases : { x86, win32, ia32, 386 };
|
||||
x64.aliases : { x64, amd64, em64t, intel64, x86-64, x86_64 };
|
||||
ARM.aliases : { arm, woa };
|
||||
ARM64.aliases : { arm64 };
|
||||
AnyCPU.aliases : { anycpu, any };
|
||||
};
|
||||
}
|
||||
nuget {
|
||||
nuspec {
|
||||
id = Microsoft.glTF.VS2017.CPP;
|
||||
version : 0.0.0.0;
|
||||
title : Microsoft.glTF.VS2017.CPP;
|
||||
authors : { Microsoft };
|
||||
owners : { Microsoft };
|
||||
requireLicenseAcceptance : true;
|
||||
summary : @"A C++ library for decoding and encoding glTF files.";
|
||||
description : @"A C++ library for decoding and encoding glTF files.";
|
||||
copyright : @"© Microsoft Corporation. All rights reserved.";
|
||||
licenseUrl : "https://opensource.org/licenses/MIT";
|
||||
projectUrl : "https://aka.ms/Y8fymc";
|
||||
iconUrl : "https://i.imgur.com/dj5ogtZ.png";
|
||||
releaseNotes: "(Replaced by NuGet build system)";
|
||||
}
|
||||
|
||||
files {
|
||||
#defines {
|
||||
BASE = "..";
|
||||
};
|
||||
|
||||
readmes:{
|
||||
#destination = ${pkg_root};
|
||||
"${BASE}\LICENSE",
|
||||
"${BASE}\thirdPartyNotices.txt",
|
||||
"${BASE}\readme.md"
|
||||
};
|
||||
|
||||
side-by-side-symbols += {
|
||||
#output {
|
||||
package = default;
|
||||
};
|
||||
#destination : ${d_bin};
|
||||
};
|
||||
|
||||
nestedIncludePluginManager:{
|
||||
#destination = ${d_include}GLTFSDK;
|
||||
"${BASE}\GLTFSDK\Inc\GLTFSDK\*.h",
|
||||
};
|
||||
|
||||
nested2IncludePluginManager: {
|
||||
#destination = ${d_include}rapidjson;
|
||||
"${BASE}\Built\Out\RapidJSON\include\rapidjson\**\*.h"
|
||||
};
|
||||
|
||||
[win32,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_Win32\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_Win32\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[win32,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_Win32\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_Win32\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[x64,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_x64\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_x64\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[x64,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_x64\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_x64\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm64,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM64\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM64\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm64,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM64\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM64\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,130 +0,0 @@
|
|||
configurations {
|
||||
Platform {
|
||||
key : "Platform";
|
||||
choices: { Win32, x64, ARM, ARM64, AnyCPU };
|
||||
Win32.aliases : { x86, win32, ia32, 386 };
|
||||
x64.aliases : { x64, amd64, em64t, intel64, x86-64, x86_64 };
|
||||
ARM.aliases : { arm, woa };
|
||||
ARM64.aliases : { arm64 };
|
||||
AnyCPU.aliases : { anycpu, any };
|
||||
};
|
||||
}
|
||||
nuget {
|
||||
nuspec {
|
||||
id = Microsoft.glTF.VS2019.CPP;
|
||||
version : 0.0.0.0;
|
||||
title : Microsoft.glTF.VS2019.CPP;
|
||||
authors : { Microsoft };
|
||||
owners : { Microsoft };
|
||||
requireLicenseAcceptance : true;
|
||||
summary : @"A C++ library for decoding and encoding glTF files.";
|
||||
description : @"A C++ library for decoding and encoding glTF files.";
|
||||
copyright : @"© Microsoft Corporation. All rights reserved.";
|
||||
licenseUrl : "https://opensource.org/licenses/MIT";
|
||||
projectUrl : "https://aka.ms/Y8fymc";
|
||||
iconUrl : "https://i.imgur.com/dj5ogtZ.png";
|
||||
releaseNotes: "(Replaced by NuGet build system)";
|
||||
}
|
||||
|
||||
files {
|
||||
#defines {
|
||||
BASE = "..";
|
||||
};
|
||||
|
||||
readmes:{
|
||||
#destination = ${pkg_root};
|
||||
"${BASE}\LICENSE",
|
||||
"${BASE}\thirdPartyNotices.txt",
|
||||
"${BASE}\readme.md"
|
||||
};
|
||||
|
||||
side-by-side-symbols += {
|
||||
#output {
|
||||
package = default;
|
||||
};
|
||||
#destination : ${d_bin};
|
||||
};
|
||||
|
||||
nestedIncludePluginManager:{
|
||||
#destination = ${d_include}GLTFSDK;
|
||||
"${BASE}\GLTFSDK\Inc\GLTFSDK\*.h",
|
||||
};
|
||||
|
||||
nested2IncludePluginManager: {
|
||||
#destination = ${d_include}rapidjson;
|
||||
"${BASE}\Built\Out\RapidJSON\include\rapidjson\**\*.h"
|
||||
};
|
||||
|
||||
[win32,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_Win32\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_Win32\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[win32,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_Win32\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_Win32\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[x64,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_x64\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_x64\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[x64,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_x64\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_x64\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm64,debug] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM64\Debug\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM64\Debug\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
|
||||
[arm64,release] {
|
||||
lib: {
|
||||
${BASE}\Built\Out\windows_ARM64\Release\GLTFSDK\GLTFSDK.lib,
|
||||
};
|
||||
side-by-side-symbols: {
|
||||
${BASE}\Built\Out\windows_ARM64\Release\GLTFSDK\GLTFSDK.pdb
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Microsoft.glTF.iOS.CPP</id>
|
||||
<version>0.0.0.0</version>
|
||||
<title>Microsoft.glTF.iOS.CPP</title>
|
||||
<authors>Microsoft</authors>
|
||||
<owners>Microsoft</owners>
|
||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||
<description>A C++ library for decoding and encoding glTF files.</description>
|
||||
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
|
||||
<tags></tags>
|
||||
<releaseNotes>(Replaced by NuGet build system)</releaseNotes>
|
||||
</metadata>
|
||||
<files>
|
||||
<!-- iOS|Debug -->
|
||||
<file src="../Built/Out/iOS/Debug/GLTFSDK/libGLTFSDK.a" target="/build/native/lib/iOS/Debug/static" />
|
||||
<!-- iOS|Release -->
|
||||
<file src="../Built/Out/iOS/Release/GLTFSDK/libGLTFSDK.a" target="/build/native/lib/iOS/Release/static" />
|
||||
<!-- iOSSimulator|Debug -->
|
||||
<file src="../Built/Out/iOSSimulator64/Debug/GLTFSDK/libGLTFSDK.a" target="/build/native/lib/iOSSimulator64/Debug/static" />
|
||||
<!-- iOSSimulator|Release -->
|
||||
<file src="../Built/Out/iOSSimulator64/Release/GLTFSDK/libGLTFSDK.a" target="/build/native/lib/iOSSimulator64/Release/static" />
|
||||
<!-- Build (C++) -->
|
||||
<file src="../GLTFSDK/Inc/**/*" target="/build/native/include" />
|
||||
<!-- Build (C++) -->
|
||||
<file src="..\Built\Out\RapidJSON\include\**\*" target="\build\native\include" />
|
||||
<!-- CMake Modules -->
|
||||
<file src="../Build/CMake/FindGLTFSDK.iOS.cmake" target="" />
|
||||
<file src="../Build/CMake/FindGLTFSDK.iOSSimulator64.cmake" target="" />
|
||||
</files>
|
||||
</package>
|
|
@ -1,34 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Microsoft.glTF.macOS.CPP</id>
|
||||
<version>0.0.0.0</version>
|
||||
<title>Microsoft.glTF.macOS.CPP</title>
|
||||
<authors>Microsoft</authors>
|
||||
<owners>Microsoft</owners>
|
||||
<requireLicenseAcceptance>true</requireLicenseAcceptance>
|
||||
<description>A C++ library for decoding and encoding glTF files.</description>
|
||||
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
|
||||
<licenseUrl>https://opensource.org/licenses/MIT</licenseUrl>
|
||||
<projectUrl>https://aka.ms/Y8fymc</projectUrl>
|
||||
<iconUrl>https://i.imgur.com/dj5ogtZ.png</iconUrl>
|
||||
<tags></tags>
|
||||
<releaseNotes>(Replaced by NuGet build system)</releaseNotes>
|
||||
</metadata>
|
||||
<files>
|
||||
<!-- x64|Debug -->
|
||||
<file src="../Built/Out/macOS/Debug/GLTFSDK/libGLTFSDK.a" target="/build/native/lib/x64/Debug/static" />
|
||||
<!-- x64|Release -->
|
||||
<file src="../Built/Out/macOS/Release/GLTFSDK/libGLTFSDK.a" target="/build/native/lib/x64/Release/static" />
|
||||
<!-- Build (C++) -->
|
||||
<file src="../GLTFSDK/Inc/**/*" target="/build/native/include" />
|
||||
<!-- Build (C++) -->
|
||||
<file src="..\Built\Out\RapidJSON\include\**\*" target="\build\native\include" />
|
||||
<!-- CMake Module -->
|
||||
<file src="../Build/CMake/FindGLTFSDK.macOS.cmake" target="" />
|
||||
<!-- Readme files -->
|
||||
<file src="../LICENSE**" target="/" />
|
||||
<file src="../thirdPartyNotices.txt" target="/" />
|
||||
<file src="../readme.md" target="/" />
|
||||
</files>
|
||||
</package>
|
|
@ -1,219 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{F656C078-7F2A-4753-9B92-5E959AF80E26}</ProjectGuid>
|
||||
<RootNamespace>GLTFSDK</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="Shared">
|
||||
<Import Project="..\GLTFSDK.Shared.CPP\GLTFSDK.Shared.CPP.vcxitems" Label="Shared" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup>
|
||||
<OutDir>$(SolutionDir)Built\Out\$(PlatformToolset)\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</OutDir>
|
||||
<IntDir>$(SolutionDir)Built\Int\$(PlatformToolset)\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(OutDir)Inc;</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<AdditionalIncludeDirectories>Inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<PreBuildEvent>
|
||||
<Command>powershell -ExecutionPolicy Bypass $(ProjectDir)GenerateSchemaJsonHeader.ps1 -outPath $(OutDir)Inc</Command>
|
||||
</PreBuildEvent>
|
||||
<PreBuildEvent>
|
||||
<Message>Autogenerate SchemaJson.h header.</Message>
|
||||
</PreBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<None Include="GenerateSchemaJsonHeader.ps1" />
|
||||
<None Include="GLTFSDK.CPP.autopkg" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<!--<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />-->
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
<Import Project="..\packages\rapidjson.temprelease.0.0.2.20\build\native\rapidjson.temprelease.targets" Condition="Exists('..\packages\rapidjson.temprelease.0.0.2.20\build\native\rapidjson.temprelease.targets')" />
|
||||
</ImportGroup>
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\rapidjson.temprelease.0.0.2.20\build\native\rapidjson.temprelease.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\rapidjson.temprelease.0.0.2.20\build\native\rapidjson.temprelease.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
|
@ -1,14 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="GLTFSDK.CPP.autopkg" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="GenerateSchemaJsonHeader.ps1" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="rapidjson.temprelease" version="0.0.2.20" targetFramework="native" />
|
||||
</packages>
|
10
README.md
10
README.md
|
@ -1,4 +1,4 @@
|
|||
[![Build Status](https://gltfsdk.visualstudio.com/build/_apis/build/status/Microsoft.glTF-SDK)](https://gltfsdk.visualstudio.com/build/_build/latest?definitionId=1)
|
||||
[![Build Status](https://github.com/microsoft/glTF-SDK/actions/workflows/ci.yml/badge.svg)](https://github.com/microsoft/glTF-SDK/actions/workflows/ci.yml)
|
||||
|
||||
# Microsoft glTF SDK - A C++ Deserializer/Serializer for glTF
|
||||
|
||||
|
@ -10,14 +10,6 @@
|
|||
* Low memory overhead
|
||||
* Utilities for converting input data of any type (e.g. float/uint8/uint16 RGB/RGBA color) into a single type such as float RGBA color
|
||||
|
||||
# Nuget Packages
|
||||
|
||||
* [Microsoft.glTF.VS2019.CPP](https://www.nuget.org/packages/Microsoft.glTF.VS2019.CPP/)
|
||||
* [Microsoft.glTF.VS2017.CPP](https://www.nuget.org/packages/Microsoft.glTF.VS2017.CPP/)
|
||||
* [Microsoft.glTF.macOS.CPP](https://www.nuget.org/packages/Microsoft.glTF.macOS.CPP/)
|
||||
* [Microsoft.glTF.iOS.CPP](https://www.nuget.org/packages/Microsoft.glTF.iOS.CPP/)
|
||||
* [Microsoft.glTF.Android.CPP](https://www.nuget.org/packages/Microsoft.glTF.Android.CPP/)
|
||||
|
||||
# Trademarks
|
||||
|
||||
glTF is a trademark of The Khronos Group Inc.
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
; DO NOT EDIT (unless you know what you are doing)
|
||||
;
|
||||
; This subdirectory is a git "subrepo", and this file is maintained by the
|
||||
; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme
|
||||
;
|
||||
[subrepo]
|
||||
remote = https://microsoft.visualstudio.com/DefaultCollection/Apps/_git/bigpark.canvas.xplatScripts
|
||||
branch = master
|
||||
commit = dc613aec03efa5ac16d41021a6cb28b435244864
|
||||
parent = cef0f3b6b89a94b82c80d12f8c6c00d8ae787843
|
||||
cmdver = 0.4.0
|
|
@ -1,2 +0,0 @@
|
|||
packages.config
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$NewVersion,
|
||||
[Parameter()]
|
||||
[String[]]$RootPackages,
|
||||
[Parameter()]
|
||||
[String]$SourceDirectory,
|
||||
[Parameter()]
|
||||
[String]$ExcludeFolders = "Build\packages"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
$Verbose = [bool]$PSBoundParameters["Verbose"]
|
||||
$CalculateClosure = Join-Path $PSScriptRoot "CalculateNugetPackageClosure.ps1"
|
||||
$UpdatePackages = Join-Path $PSScriptRoot "UpdateNugetPackages.ps1"
|
||||
|
||||
function main
|
||||
{
|
||||
$closure = . $CalculateClosure -NewVersion $NewVersion -RootPackages $RootPackages -Verbose:$Verbose
|
||||
. $UpdatePackages -NuGetPackageClosure $closure -SourceDirectory $SourceDirectory -ExcludeFolders $ExcludeFolders -Verbose:$Verbose
|
||||
}
|
||||
|
||||
main
|
|
@ -1,224 +0,0 @@
|
|||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$NewVersion,
|
||||
[Parameter()]
|
||||
[String[]]$RootPackages
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
$Verbose = [bool]$PSBoundParameters["Verbose"]
|
||||
$InvokeVsts = Join-Path $PSScriptRoot "Invoke-VstsRestMethod.ps1"
|
||||
|
||||
function main
|
||||
{
|
||||
if (! $RootPackages)
|
||||
{
|
||||
$RootPackages = Get-Content (Join-Path $PSScriptRoot "CanvasCoreNugetPackages.config")
|
||||
}
|
||||
|
||||
$packageRegistry = getPackageRegistry
|
||||
$closure = @{}
|
||||
$rootPackages | % { $closure[$_] = (getActualPackageVersion $_ $NewVersion $packageRegistry) }
|
||||
foreach ($packageName in $rootPackages)
|
||||
{
|
||||
addPackageAndDirectDependencies $packageName $closure[$packageName] $closure $packageRegistry
|
||||
}
|
||||
|
||||
return $closure
|
||||
}
|
||||
|
||||
function addPackageAndDirectDependencies($packageName, $packageVersion, $closure, $packageRegistry)
|
||||
{
|
||||
$packageDependencies = getPackageDependencies $packageName $packageVersion $packageRegistry
|
||||
|
||||
foreach ($dependency in $packageDependencies)
|
||||
{
|
||||
addDependencyToClosure $dependency $closure $packageRegistry
|
||||
}
|
||||
}
|
||||
|
||||
function addDependencyToClosure($dependency, $closure, $packageRegistry)
|
||||
{
|
||||
$packageName = $dependency.packageName
|
||||
$packageVersion = getMinimumDependencyVersion $dependency $packageRegistry
|
||||
if (! $packageVersion)
|
||||
{
|
||||
Write-Verbose "Didn't find a valid version for $packageName"
|
||||
return
|
||||
}
|
||||
|
||||
Write-Verbose "Using version $packageVersion for $packageName"
|
||||
|
||||
$existing = $closure[$packageName]
|
||||
if ($existing -and ($existing -ne $packageVersion))
|
||||
{
|
||||
# For now, we're just assuming that multiple packages can't depend on different versions of the same dependency.
|
||||
# This works right now, but we may want to enhance this in the future by e.g. taking the maximum if
|
||||
# there are conflicting versions.
|
||||
Write-Error "Package $packageName has two conflicting versions: $packageVersion =/= $existing"
|
||||
}
|
||||
|
||||
$closure[$packageName] = $packageVersion
|
||||
}
|
||||
|
||||
function getMinimumDependencyVersion($dependency, $packageRegistry)
|
||||
{
|
||||
$packageInfo = $packageRegistry | ? { $_.name -eq $dependency.packageName }
|
||||
|
||||
if (! $packageInfo)
|
||||
{
|
||||
Write-Warning "Not updating version for dependency $($dependency.packageName) because it isn't in the BigPark feed"
|
||||
return $null
|
||||
}
|
||||
|
||||
# Right now Canvas dependency versions are only specified with inclusive mins
|
||||
if (! ($dependency.versionRange -match "\[(.+), \)"))
|
||||
{
|
||||
Write-Error "Don't know how to parse dependency $($dependency.packageName) range: $($dependency.versionRange)"
|
||||
}
|
||||
|
||||
$partialMin = $matches[1]
|
||||
Write-Verbose "Looking for the earliest version of $($dependency.packageName) that is at least $partialMin"
|
||||
|
||||
$versionsInRange = $packageInfo.versions.version | ? { (compareVersions $_ $partialMin) -ge 0 }
|
||||
if ($versionsInRange.count -eq 0)
|
||||
{
|
||||
Write-Error "No available versions of $($dependency.packageName) in range $($dependency.versionRange)"
|
||||
}
|
||||
|
||||
Write-Verbose "Available versions: $($versionsInRange -join ", ")"
|
||||
|
||||
return getMinimumVersion $versionsInRange
|
||||
}
|
||||
|
||||
function getMinimumVersion($versions)
|
||||
{
|
||||
if (! $versions)
|
||||
{
|
||||
return $versions
|
||||
}
|
||||
|
||||
$min = $null
|
||||
foreach ($version in $versions)
|
||||
{
|
||||
if (($min -eq $null) -or ((compareVersions $version $min) -lt 0))
|
||||
{
|
||||
$min = $version.ToString()
|
||||
}
|
||||
}
|
||||
|
||||
return $min
|
||||
}
|
||||
|
||||
# Return -1 if a < b, 1 if a > b, or 0 if a == b
|
||||
# Doesn't do complicated nuget v3 prerelease comparisons
|
||||
function compareVersions($a, $b)
|
||||
{
|
||||
$aRelease,$aPrerelease = $a.split("-", 2)
|
||||
$bRelease,$bPrerelease = $b.split("-", 2)
|
||||
|
||||
$aParts = [int[]]$aRelease.split(".")
|
||||
$bParts = [int[]]$bRelease.split(".")
|
||||
|
||||
# Pad out the version numbers with zeroes.
|
||||
# e.g. 1.1 == 1.1.0
|
||||
while ($aParts.count -lt $bParts.count)
|
||||
{
|
||||
$aParts += @(0)
|
||||
}
|
||||
while ($bParts.count -lt $aParts.count)
|
||||
{
|
||||
$bParts += @(0)
|
||||
}
|
||||
|
||||
foreach ($idx in (0..($aParts.count-1)))
|
||||
{
|
||||
$cmp = compareScalars $aParts[$idx] $bParts[$idx]
|
||||
if ($cmp -ne 0)
|
||||
{
|
||||
return $cmp
|
||||
}
|
||||
}
|
||||
|
||||
# If we're here the release part of the number is equal, so compare the prerelease part
|
||||
# Note we're doing an alphabetic comparison, so e.g. 1.0.0-b2 > 1.0.0-b11
|
||||
# This shouldn't matter because we don't typically take dependencies on prerelease versions
|
||||
$cmp = compareScalars $aPrerelease $bPrerelease
|
||||
return $cmp
|
||||
}
|
||||
|
||||
function compareScalars($a, $b)
|
||||
{
|
||||
if ($a -lt $b)
|
||||
{
|
||||
return -1
|
||||
}
|
||||
|
||||
if ($a -gt $b)
|
||||
{
|
||||
return 1
|
||||
}
|
||||
|
||||
if ($a -eq $b)
|
||||
{
|
||||
return 0
|
||||
}
|
||||
|
||||
Write-Error "Objects $a and $b aren't comparable"
|
||||
}
|
||||
|
||||
function getPackageRegistry
|
||||
{
|
||||
return (. $InvokeVsts "https://microsoft.feeds.visualstudio.com/DefaultCollection/_apis/packaging/feeds/BigPark/packages?includeAllVersions=true" -Verbose:$Verbose).value
|
||||
}
|
||||
|
||||
function getPackageDependencies($packageName, $packageVersion, $packageRegistry)
|
||||
{
|
||||
$packageInfo = $packageRegistry | ? { $_.name -eq $packageName }
|
||||
if (! $packageInfo)
|
||||
{
|
||||
Write-Error "No package in the BigPark feed with name $packageName"
|
||||
}
|
||||
|
||||
$shallowVersionInfo = $packageInfo.versions | ? { $_.version -eq $packageVersion }
|
||||
if (! $shallowVersionInfo)
|
||||
{
|
||||
Write-Error "Version $packageVersion of $packageName is not in BigPark feed"
|
||||
}
|
||||
|
||||
$versionUrl = "$($packageInfo.url)/Versions/$($shallowVersionInfo.id)"
|
||||
return (. $InvokeVsts $versionUrl -Verbose:$Verbose).dependencies
|
||||
}
|
||||
|
||||
function getActualPackageVersion($packageName, $packageVersion, $packageRegistry)
|
||||
{
|
||||
$availableVersions = ($packageRegistry | ? { $_.name -eq $packageName }).versions.version
|
||||
|
||||
if ($availableVersions -contains $packageVersion)
|
||||
{
|
||||
return $packageVersion
|
||||
}
|
||||
|
||||
$normalizedVersion = getNormalizedVersion $packageVersion
|
||||
if ($availableVersions -contains $normalizedVersion)
|
||||
{
|
||||
return $normalizedVersion
|
||||
}
|
||||
|
||||
Write-Error "Version $packageVersion or $normalizedVersion of $packageName is not in BigPark feed"
|
||||
}
|
||||
|
||||
function getNormalizedVersion($version)
|
||||
{
|
||||
$release,$prerelease = $version.split("-", 2)
|
||||
$parts = $release.split(".")
|
||||
while ($parts.length -gt 3 -and $parts[-1] -eq 0)
|
||||
{
|
||||
$parts = $parts[0..($parts.length-2)]
|
||||
}
|
||||
$release = $parts -join "."
|
||||
return "$release-$prerelease"
|
||||
}
|
||||
|
||||
main
|
|
@ -1,9 +0,0 @@
|
|||
Microsoft.Lift.Core.CPP
|
||||
Microsoft.Lift.Core.CPP.symbols
|
||||
Microsoft.Lift.Core.CX
|
||||
Microsoft.Lift.Core.CX.symbols
|
||||
Microsoft.Lift.Engine.CPP
|
||||
Microsoft.Lift.Engine.CX
|
||||
Microsoft.Lift.Loader.CPP
|
||||
Microsoft.Lift.Loader.CX
|
||||
Microsoft.Lift.Loader.CS
|
|
@ -1,42 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Create NuGet access token file from plaintext PAT.
|
||||
|
||||
.DESCRIPTION
|
||||
macOS credentials for NuGet do not work in the same way as
|
||||
Windows due to OS support differences. We create a file
|
||||
~/.nuget/pat.txt to hold the required personal access token
|
||||
to be used by NuGet.
|
||||
|
||||
This file should be encrypted but currently is not, again due
|
||||
to OS support issues.
|
||||
|
||||
.PARAMETER AccessToken
|
||||
Takes a plaintext PersonalAccessToken and writes it out to PATFilename.
|
||||
Note: macOS Powershell does not implement required functionality to
|
||||
encrypt the PAT so is stored in plaintext.
|
||||
|
||||
.PARAMETER PATFilename
|
||||
The filename to write the credentials (access token) to. Default is
|
||||
~/.nuget/pat.txt
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[string]$AccessToken,
|
||||
[string]$PATFilename = '~/.nuget/pat.txt'
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# create pat directory if it doesn't exist
|
||||
$parentDir = Split-Path -Parent $PATFilename
|
||||
New-Item $parentDir -type directory -force | Out-Null
|
||||
|
||||
# write token to file
|
||||
$AccessToken | Out-File $PATFilename
|
||||
Write-Host "Wrote access token to $PATFilename"
|
|
@ -1,10 +0,0 @@
|
|||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$searchLocations = $GitLocations + @("git", "${env:ProgramFiles(x86)}\Git\bin\git.exe", "${env:ProgramFiles}\Git\bin\git.exe", "${env:ProgramW6432}\Git\bin\git.exe")
|
||||
$git = ($searchLocations | ? { Get-Command $_ -ErrorAction SilentlyContinue } | Select -First 1)
|
||||
if (! $git)
|
||||
{
|
||||
Write-Error "Unable to find git"
|
||||
}
|
||||
|
||||
return $git
|
|
@ -1,23 +0,0 @@
|
|||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
$AppxFilePath
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
[Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem') | Out-Null
|
||||
|
||||
$APPX_MANIFEST = "AppxManifest.xml"
|
||||
function main
|
||||
{
|
||||
$file = [IO.Compression.ZipFile]::OpenRead($AppxFilePath).Entries | Where-Object { $_.FullName -eq $APPX_MANIFEST }
|
||||
if (! $file)
|
||||
{
|
||||
Write-Error "Appx $AppxFilePath does not contain a $APPX_MANIFEST"
|
||||
}
|
||||
|
||||
$reader = New-Object IO.StreamReader($file.Open())
|
||||
return [xml]($reader.ReadToEnd())
|
||||
}
|
||||
|
||||
main
|
|
@ -1,137 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Download a VSTS build artifact.
|
||||
|
||||
.PARAMETER BuildId
|
||||
The unique ID (NOT build number) of the build containing the artifact we want to download.
|
||||
|
||||
.PARAMETER ArtifactName
|
||||
The name of the artifact we want to download.
|
||||
|
||||
.PARAMETER ItemPath
|
||||
Supplying this parameter allows downloading of sub folder or file of an artifact. The item path starts from the root of the artifact folder
|
||||
|
||||
.PARAMETER OutPath
|
||||
The local filesystem path we'll extract the artifact to.
|
||||
|
||||
.PARAMETER TeamCollectionUri
|
||||
The uri of the collection, e.g. https://microsoft.visualstudio.com/.
|
||||
Is set to the current collection if invoked through a build.
|
||||
|
||||
.PARAMETER TeamProject
|
||||
The name of the project, e.g. Apps.
|
||||
Is set to the current project if invoked through a build.
|
||||
|
||||
.PARAMETER PatPath
|
||||
The path to a PAT token for making VSTS REST API calls.
|
||||
|
||||
.PARAMETER MaxTries
|
||||
The maximum number of times we'll try downloading the artifact before giving up.
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$BuildId,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$ArtifactName,
|
||||
[Parameter()]
|
||||
[String]$ItemPath,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$OutPath,
|
||||
[Parameter()]
|
||||
[String]$TeamCollectionUri = $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI,
|
||||
[Parameter()]
|
||||
[String]$TeamProject = $env:SYSTEM_TEAMPROJECT,
|
||||
[Parameter()]
|
||||
[String]$PatPath = $env:VSTS_PAT_PATH,
|
||||
[Parameter()]
|
||||
[Int]$MaxTries = 10
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
$Verbose = [bool]$PSBoundParameters["Verbose"]
|
||||
$GetAuthString = Join-Path $PSScriptRoot "Get-VstsRestAuthString.ps1"
|
||||
$InvokeVsts = Join-Path $PSScriptRoot "Invoke-VstsRestMethod.ps1"
|
||||
$InvokeWithRetries = Join-Path $PSScriptRoot "Invoke-CommandWithRetries.ps1"
|
||||
|
||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||
|
||||
function main
|
||||
{
|
||||
$tempFile = [IO.Path]::GetTempFileName()
|
||||
try
|
||||
{
|
||||
$downloadUrl = getDownloadUrl
|
||||
downloadArtifact $downloadUrl $tempFile
|
||||
|
||||
Write-Verbose "Extracting $tempFile to $OutPath"
|
||||
[IO.Compression.ZipFile]::ExtractToDirectory($tempFile, $OutPath)
|
||||
|
||||
# If $ItemPath is defined then move the subfolder $ItemPath into the root of $OutPath
|
||||
# If $ItemPath is not defined then retain the full paths for backward compatibility.
|
||||
if($ItemPath)
|
||||
{
|
||||
$toMove = "$OutPath/$ArtifactName/$ItemPath"
|
||||
Move-Item $toMove $OutPath -Force
|
||||
Remove-Item "$OutPath/$ArtifactName" -Force -Recurse
|
||||
}
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
Remove-Item $tempFile -Force
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function getDownloadUrl
|
||||
{
|
||||
|
||||
$uri = "$TeamCollectionUri`DefaultCollection/$TeamProject/_apis/build/builds/$BuildId/artifacts"
|
||||
$artifacts = . $InvokeVsts -Uri $uri -ApiVersion "2.0" -PatPath $PatPath -Verbose:$Verbose
|
||||
$artifact = $artifacts.value | Where-Object { $_.name -eq $ArtifactName }
|
||||
if (! $artifact)
|
||||
{
|
||||
Write-Error "No artifact with name $ArtifactName"
|
||||
}
|
||||
|
||||
$downloadUrl = $artifact.resource.downloadUrl
|
||||
if (! $downloadUrl)
|
||||
{
|
||||
Write-Error "Artifact $ArtifactName doesn't have a download URL. Is it a UNC drop?"
|
||||
}
|
||||
|
||||
# VSTS Artifact API does not explicitly support downloading sub folders or files, this generates the link VSTS would provide through the artifacts page
|
||||
if($ItemPath)
|
||||
{
|
||||
$artifactItemPath = [uri]::EscapeDataString($ItemPath)
|
||||
|
||||
$artifactId = ($artifact.resource.data -split "/")[1]
|
||||
return "${TeamCollectionUri}_apis/resources/Containers/${artifactId}?itemPath=${ArtifactName}%2F${artifactItemPath}&%24format=zip"
|
||||
}
|
||||
|
||||
return $downloadUrl
|
||||
}
|
||||
|
||||
function downloadArtifact($downloadUrl, $outFile)
|
||||
{
|
||||
# Using WebClient because Invoke-WebRequest is WAAAY too slow.
|
||||
# TODO: Port Invoke-VstsRestMethod to use WebClient, and then use Invoke-VstsRestMethod here.
|
||||
Write-Verbose "Downloading ${ArtifactName}: $downloadUrl => $outFile"
|
||||
$client = New-Object System.Net.WebClient
|
||||
$client.Headers.Add("Authorization", (. $GetAuthString -PatPath $PatPath -Verbose:$Verbose))
|
||||
. $InvokeWithRetries -MaxTries $MaxTries -IsErrorRetriable ${function:isErrorRetriable} -Verbose:$Verbose -Command {
|
||||
$client.DownloadFile($downloadUrl, $outFile)
|
||||
}
|
||||
}
|
||||
|
||||
function isErrorRetriable([Management.Automation.ErrorRecord]$err)
|
||||
{
|
||||
$statusCode = $err.Exception.Response.StatusCode
|
||||
return $statusCode -and ([int]$statusCode -ge 500)
|
||||
}
|
||||
|
||||
main
|
|
@ -1,56 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Get the auth string needed to make a VSTS REST call.
|
||||
|
||||
.PARAMETER PatPath
|
||||
Should only be used when called locally. The path to a file containing an encrypted PAT token. You can also provide a PatPath by setting the environment variable VSTS_PAT_PATH.
|
||||
|
||||
Can set up this file by doing the following:
|
||||
* Create a PAT token here: https://microsoft.visualstudio.com/_details/security/tokens
|
||||
* Run the following in PowerShell:
|
||||
$pat = (Get-Credential).password # (set password to your PAT; username doesn't matter)
|
||||
Set-Content "c:\creds\microsoftPat" ($pat | ConvertFrom-SecureString)
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter()]
|
||||
[String]$PatPath = $env:VSTS_PAT_PATH
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
$PatDocUrl = "https://microsoft.sharepoint.com/:o:/r/teams/segcentral/_layouts/15/WopiFrame.aspx?sourcedoc=%7B817af5db-69b2-413b-a333-4acfb9a5c0bf%7D"
|
||||
|
||||
function main
|
||||
{
|
||||
if ($env:SYSTEM_ACCESSTOKEN)
|
||||
{
|
||||
return "Bearer $env:SYSTEM_ACCESSTOKEN"
|
||||
}
|
||||
|
||||
if ($PatPath)
|
||||
{
|
||||
$encodedPat = getEncodedPat
|
||||
return "Basic $encodedPat"
|
||||
}
|
||||
|
||||
Write-Error @"
|
||||
No credentials available to invoke VSTS methods.
|
||||
If this script was called from a VSTS build definition, ensure 'Allow Scripts to Access OAuth Token' is checked.
|
||||
To get this script working locally, follow the instructions here: $PatDocUrl
|
||||
"@
|
||||
}
|
||||
|
||||
# Decrypt a secure string, and then convert to base64 (expected by auth headers)
|
||||
# Taken from https://github.com/DarqueWarrior/team/blob/master/src/team.psm1
|
||||
function getEncodedPat
|
||||
{
|
||||
[SecureString]$encryptedPat = Get-Content $PatPath | ConvertTo-SecureString
|
||||
$credential = New-Object System.Management.Automation.PSCredential "foo",$encryptedPat
|
||||
$decryptedPat = $credential.GetNetworkCredential().Password
|
||||
return [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$decryptedPat"))
|
||||
}
|
||||
|
||||
main
|
|
@ -1,57 +0,0 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Gets nuget.exe location.
|
||||
|
||||
.DESCRIPTION
|
||||
Looks for nuget.exe in multiple program file locations.
|
||||
|
||||
.PARAMETER NuGetLocations
|
||||
Additional locations in which to search for nuget.exe
|
||||
|
||||
.PARAMETER MinVerNumber
|
||||
Minimum version number that the nuget command must be
|
||||
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
|
||||
Param(
|
||||
[Parameter()]
|
||||
[string[]]$NuGetLocations,
|
||||
[Parameter()]
|
||||
[string]$MinVerNumber = "4.0.0.0"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
function main
|
||||
{
|
||||
$searchLocations = $NuGetLocations + @(
|
||||
"nuget",
|
||||
"/usr/local/bin/nuget",
|
||||
"/Library/Frameworks/Mono.framework/Versions/Current/Commands/nuget"
|
||||
)
|
||||
|
||||
return ($searchLocations | Where-Object { NugetCommandIsValid $_ } | Select -First 1)
|
||||
}
|
||||
|
||||
function NugetCommandIsValid($nuget)
|
||||
{
|
||||
if (!(Get-Command $nuget -ErrorAction SilentlyContinue))
|
||||
{
|
||||
return $false
|
||||
}
|
||||
|
||||
$nugetVersionString = . $nuget "help" | Select -First 1
|
||||
|
||||
if ($nugetVersionString -match ".+((\d+)\.(\d+)\.(\d+)\.(\d+))")
|
||||
{
|
||||
$versionString = $matches[1]
|
||||
Write-Verbose "Nuget found at $nuget with version number $versionString. Comparing to minimum version $minVerNum"
|
||||
|
||||
return ([Version]$versionString -ge [Version]$minVerNum)
|
||||
}
|
||||
|
||||
Write-Error "Nuget command provided at path $nuget does not have `"nuget help`" command that lists a version number."
|
||||
}
|
||||
|
||||
main
|
|
@ -1,70 +0,0 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Installs all passed-in appx files.
|
||||
|
||||
.PARAMETER AppxFiles
|
||||
The list of appx files to install.
|
||||
|
||||
.PARAMETER DeviceIp
|
||||
If passed in, we'll use WinAppDeploy to install the files onto the device at this IP.
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String[]]$AppxFiles,
|
||||
[Parameter()]
|
||||
[String]$DeviceIp
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$Verbose = [bool]$PSBoundParameters["Verbose"]
|
||||
|
||||
$WinAppDeploy = "$PSScriptRoot/WinAppDeploy.ps1"
|
||||
|
||||
function main
|
||||
{
|
||||
if ($DeviceIp)
|
||||
{
|
||||
foreach ($appxFile in $appxFiles)
|
||||
{
|
||||
installAppxFile $appxFile
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$AppxFiles | Foreach-Object { Add-AppxPackage -Path $_ -Verbose:$Verbose -ErrorAction Ignore }
|
||||
}
|
||||
}
|
||||
|
||||
function installAppxFile($appxFile)
|
||||
{
|
||||
while ($true)
|
||||
{
|
||||
try
|
||||
{
|
||||
. $WinAppDeploy -DeviceIp $DeviceIp -Command install -AdditionalArgs @("-file", $appxFile) | Write-Verbose
|
||||
return
|
||||
}
|
||||
catch
|
||||
{
|
||||
$errorMessage = $_.exception.message
|
||||
if ($errorMessage -match "A higher version .+ of this package is already installed")
|
||||
{
|
||||
Write-Host "Not installing $appxFile because a higher version is already installed."
|
||||
return
|
||||
}
|
||||
|
||||
if ($errorMessage -notmatch "The process cannot access the file because it is being used by another process")
|
||||
{
|
||||
throw
|
||||
}
|
||||
|
||||
Write-Host "Cannot install $appxFile because the phone is trying to use an old version. Sleeping and trying again."
|
||||
Start-Sleep -Seconds 10
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
main
|
|
@ -1,139 +0,0 @@
|
|||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter()]
|
||||
[String]$Platform,
|
||||
[Parameter()]
|
||||
[String]$Configuration,
|
||||
[Parameter()]
|
||||
[String]$ApiLevel,
|
||||
[Parameter()]
|
||||
[String]$ReportPath,
|
||||
[Parameter()]
|
||||
[Object]$Tests
|
||||
)
|
||||
|
||||
$DEST_PATH="/data/local/tmp"
|
||||
|
||||
function main()
|
||||
{
|
||||
$abi = findAbi
|
||||
$AVD_NAME="AndroidAVD_$($abi)_$($Configuration)"
|
||||
$ROOT_PATH = "$PSScriptRoot\..\.."
|
||||
return (runTests $abi)
|
||||
}
|
||||
|
||||
function findAbi()
|
||||
{
|
||||
$abi = "x86"
|
||||
if ($Platform -eq "arm32")
|
||||
{
|
||||
$abi = "armeabi-v7a"
|
||||
}
|
||||
elseif ($Platform -eq "arm64")
|
||||
{
|
||||
$abi = "arm64-v8a"
|
||||
}
|
||||
elseif ($Platform -eq "x86_64")
|
||||
{
|
||||
$abi = "x86_64"
|
||||
}
|
||||
return $abi
|
||||
}
|
||||
|
||||
function runTests($abi)
|
||||
{
|
||||
$testResult = @()
|
||||
launchAvd $abi
|
||||
foreach ($test in $Tests)
|
||||
{
|
||||
$testDir = $test.Name
|
||||
$testName = $test.Name
|
||||
$outputFilename = "$($testName).$($Configuration).android_$($abi)-GoogleTest.xml"
|
||||
if (Test-Path $ReportPath\$outputFilename)
|
||||
{
|
||||
Remove-Item -Path $ReportPath\$outputFilename
|
||||
}
|
||||
pushTest $testDir $testName
|
||||
$lines = runTest $testDir $testName $outputFilename
|
||||
$testResult += [PSObject]@{ testBinaryName=$testName; testSucceeded=$true; output=$lines}
|
||||
}
|
||||
cleanAndDeleteEmulator
|
||||
return $testResult
|
||||
}
|
||||
|
||||
function launchAvd($abi)
|
||||
{
|
||||
cleanAndDeleteEmulator
|
||||
Write-Verbose "launching avd"
|
||||
$package = "system-images;android-$ApiLevel;google_apis;$abi"
|
||||
echo no | avdmanager create avd -n $AVD_NAME -k $package -f | Write-Host
|
||||
Write-Verbose "avd $($AVD_NAME) created"
|
||||
start powershell "emulator -port 5554 -partition-size 900 -avd $AVD_NAME -no-audio -verbose -no-snapshot -wipe-data"
|
||||
Write-Verbose "adb emulator-5554 waiting for device"
|
||||
adb -s emulator-5554 wait-for-device | Write-Host
|
||||
Write-Verbose "emulator-5554 booting"
|
||||
$state = adb -s emulator-5554 shell getprop sys.boot_completed
|
||||
$timeout = New-TimeSpan -Minutes 2
|
||||
$customTimer = [diagnostics.stopwatch]::StartNew()
|
||||
while (($customTimer.elapsed -lt $timeout) -and ($state -ne 1))
|
||||
{
|
||||
if ($state -like "*error*")
|
||||
{
|
||||
cleanAndDeleteEmulator
|
||||
Write-Error "$($state), unable to start emulator"
|
||||
}
|
||||
Start-Sleep -Seconds 2
|
||||
$state = adb -s emulator-5554 shell getprop sys.boot_completed
|
||||
}
|
||||
$customTimer.Stop()
|
||||
if ($state -ne 1)
|
||||
{
|
||||
cleanAndDeleteEmulator
|
||||
Write-Error "2 minutes timeout. Emulator state: $($state). Unable to start emulator within 2 minutes"
|
||||
}
|
||||
Write-Verbose "emulator-5554 boot completed."
|
||||
}
|
||||
|
||||
function pushTest($testDir, $testName)
|
||||
{
|
||||
Write-Verbose "pushing test $testName"
|
||||
adb -s emulator-5554 shell rm -rf $DEST_PATH/* | Write-Host
|
||||
adb -s emulator-5554 push $ROOT_PATH\Built\Out\android_$abi\$Configuration\$testDir $DEST_PATH/ | Write-Host
|
||||
adb -s emulator-5554 shell chmod 777 $DEST_PATH/$testDir/$testName | Write-Host
|
||||
}
|
||||
|
||||
function runTest($testDir, $testName, $outputFilename)
|
||||
{
|
||||
Write-Verbose "running test $testName"
|
||||
adb -s emulator-5554 shell "cd $DEST_PATH/$testDir; ./$testName --gtest_output=xml:$outputFilename" | Tee-Object -Variable outputLog | Write-Host
|
||||
Write-Verbose "finished running $testName"
|
||||
adb -s emulator-5554 pull $DEST_PATH/$testDir/$outputFilename $ReportPath | Write-Host
|
||||
return $outputLog
|
||||
}
|
||||
|
||||
function cleanAndDeleteEmulator()
|
||||
{
|
||||
Write-Verbose "cleaning and deleting emulator-5554"
|
||||
$deviceList = adb devices
|
||||
if ($deviceList -like "*emulator-5554*")
|
||||
{
|
||||
adb -s emulator-5554 shell rm -rf $DEST_PATH/* | Write-Host
|
||||
adb -s emulator-5554 shell wipe data | Write-Host
|
||||
adb -s emulator-5554 emu kill | Write-Host
|
||||
}
|
||||
$avdList = avdmanager list avd
|
||||
if ($avdList -like "*$($AVD_NAME)*")
|
||||
{
|
||||
avdmanager delete avd -n $AVD_NAME | Write-Host
|
||||
}
|
||||
Write-Verbose "cleaning and deleting emulator-5554 completed."
|
||||
}
|
||||
|
||||
function resolveString($string, $abi)
|
||||
{
|
||||
$string = $string -replace "<abi>", $abi
|
||||
$string = $string -replace "<configuration>", $Configuration
|
||||
return $string
|
||||
}
|
||||
|
||||
main
|
|
@ -1,84 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Retry a generic ScriptBlock with incremental backoff.
|
||||
|
||||
.DESCRIPTION
|
||||
Invokes the passed-in $Command. If we hit an exception, we call into $IsErrorRetriable.
|
||||
If it returns false, we just re-throw the exception. If it retruns true, we retry
|
||||
with incremental backoff, first sleeping $InitialSleepSeconds and then doubling
|
||||
that number on every retry up to $MaxSleepSeconds.
|
||||
|
||||
.PARAMETER Command
|
||||
The ScriptBlock to run.
|
||||
|
||||
.PARAMETER IsErrorRetriable
|
||||
A ScriptBlock that takes an ErrorRecord on the command-line (the exception is
|
||||
available at $errorRecord.Exception). Return $true if we want to retry this error.
|
||||
|
||||
.PARAMETER MaxTries
|
||||
The maximum number of times we'll try $Command before failing.
|
||||
|
||||
.PARAMETER InitialSleepSeconds
|
||||
The number of seconds we'll sleep the first time we hit a retriable exception.
|
||||
|
||||
.PARAMETER MaxSleepSeconds
|
||||
We double InitialSleepSeconds every time we want to retry, up to MaxSleepSeconds.
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[ScriptBlock]$Command,
|
||||
[Parameter(Mandatory)]
|
||||
[ScriptBlock]$IsErrorRetriable,
|
||||
[Parameter()]
|
||||
[Int]$MaxTries = 10,
|
||||
[Parameter()]
|
||||
[Int]$InitialSleepSeconds = 5,
|
||||
[Parameter()]
|
||||
[Int]$MaxSleepSeconds = 300
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
|
||||
function main
|
||||
{
|
||||
$currentTry = 1
|
||||
|
||||
while ($true)
|
||||
{
|
||||
try
|
||||
{
|
||||
return Invoke-Command $Command
|
||||
}
|
||||
catch
|
||||
{
|
||||
$err = $_
|
||||
if ((-not (retriable $err)) -or ($currentTry -ge $MaxTries))
|
||||
{
|
||||
throw $err
|
||||
}
|
||||
|
||||
Write-Warning "Caught retriable error ($currentTry of $MaxTries): $err"
|
||||
sleepBeforeRetrying $currentTry
|
||||
$currentTry += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function retriable($err)
|
||||
{
|
||||
return Invoke-Command -ArgumentList @($err) -ScriptBlock $IsErrorRetriable
|
||||
}
|
||||
|
||||
function sleepBeforeRetrying($currentTry)
|
||||
{
|
||||
$multiplier = [math]::pow(2, $currentTry-1)
|
||||
$seconds = [math]::min($MaxSleepSeconds, $InitialSleepSeconds * $multiplier)
|
||||
Write-Verbose "Sleeping for $seconds seconds"
|
||||
Start-Sleep -Seconds $seconds
|
||||
}
|
||||
|
||||
main
|
|
@ -1,745 +0,0 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Invokes a configured set of tests.
|
||||
|
||||
.DESCRIPTION
|
||||
This script is mostly for running tests from VSTS, but can also be used to run
|
||||
tests locally. It uses a passed-in configuration file to determine the set of
|
||||
tests it will run. It currently handles running .dll and .appx tests through
|
||||
VSTest on Windows, and GoogleTest executables on Windows, MacOS and Android.
|
||||
|
||||
.PARAMETER ConfigFile
|
||||
A .json file with a list of tests to run. For sample format
|
||||
see: Build/Scripts/Tests.*.json
|
||||
|
||||
.PARAMETER Platform
|
||||
The platform these tests were built for. Valid values are: arm, x64, x86, win32. Valid values for Android are: x86, x86_64, arm32, arm64.
|
||||
|
||||
.PARAMETER Configuration
|
||||
The configuration these tests were built for. Valid values are: release, debug
|
||||
|
||||
.PARAMETER iOSSimulatorType
|
||||
This value must be a valid simulator device type, that can be called when prefixed
|
||||
with com.appleCoreSimulator.SimDeviceType (e.g. iPhone-7-Plus)
|
||||
|
||||
.PARAMETER iOSSimulatorRuntime
|
||||
This must be a valid iOS Simulator Runtime, and must be a valid command
|
||||
when suffixed with com.apple.CoreSimulator.SimRuntime (e.g. iOS-11-2)
|
||||
|
||||
.PARAMETER ReportPath
|
||||
The directory we will drop all of our test reports.
|
||||
|
||||
.PARAMETER VSTestVersion
|
||||
The version of Visual Studio we'll use when running VSTest tests. Valid values are: 14.0, 15.0
|
||||
|
||||
.PARAMETER TestNames
|
||||
A list of test names to run. If not provided, we'll use the config file to determine which tests to run.
|
||||
|
||||
.PARAMETER Tags
|
||||
A comma-separated list of test tags we want to run. Every test in the passed-in config file has one
|
||||
or more tags (if a test has no provided tags it will have the 'default' tag).
|
||||
If a test has at least one of the passed-in tags we run it.
|
||||
|
||||
.PARAMETER JustRunEverything
|
||||
If set, we'll run every configured test regardless of whether or not it's configured to run for
|
||||
this reason/platform/configuration.
|
||||
|
||||
.PARAMETER DryRun
|
||||
If set, we won't run tests - we'll just print what we would run.
|
||||
|
||||
.PARAMETER BuildReason
|
||||
DEPRECATED - DON'T USE. Retained for now so this PR doesn't break existing build definitions.
|
||||
|
||||
.PARAMETER AndroidApiLevel
|
||||
This must be a valid android api level. For example: "21", etc.
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$ConfigFile,
|
||||
[Parameter()]
|
||||
[String]$Platform,
|
||||
[Parameter()]
|
||||
[String]$Configuration,
|
||||
[Parameter()]
|
||||
[String]$iOSSimulatorType = "iPhone-8",
|
||||
[Parameter()]
|
||||
[String]$iOSSimulatorRuntime = "iOS-11-3",
|
||||
[Parameter()]
|
||||
[String]$ReportPath,
|
||||
[Parameter()]
|
||||
[String]$VsTestVersion = "15.0",
|
||||
[Parameter()]
|
||||
[String[]]$TestNames,
|
||||
[Parameter()]
|
||||
[String]$Tags = "default",
|
||||
[Parameter()]
|
||||
[String]$AppxDependencyPath,
|
||||
[Parameter()]
|
||||
[Switch]$JustRunEverything,
|
||||
[Parameter()]
|
||||
[Switch]$DryRun,
|
||||
[Parameter()]
|
||||
[Switch]$BuildReason,
|
||||
[Parameter()]
|
||||
[String]$AndroidApiLevel = "21"
|
||||
)
|
||||
|
||||
$CurrentPath = Get-Location
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$Verbose = [bool]$PSBoundParameters["Verbose"]
|
||||
|
||||
$RunSimulatorTest = (Join-Path $PSScriptRoot "Invoke-iOSSimulatorTest.ps1")
|
||||
$RunAndroidEmulatorTest = (Join-Path $PSScriptRoot "Invoke-AndroidEmulatorTest.ps1")
|
||||
$UninstallAppx = (Join-Path $PSScriptRoot "Uninstall-AppxFiles.ps1")
|
||||
$InstallAppx = (Join-Path $PSScriptRoot "Install-AppxFiles.ps1")
|
||||
|
||||
if ($BuildReason)
|
||||
{
|
||||
Write-Warning "Build reason $BuildReason was provided, but this parameter is no longer being used."
|
||||
}
|
||||
|
||||
$TestReportExtensions = @{
|
||||
"AppxCpp" = "trx"
|
||||
"AppxCSharp" = "trx"
|
||||
"Dll" = "trx"
|
||||
"GoogleTest" = "xml"
|
||||
}
|
||||
$TestReportTypes = @{
|
||||
"AppxCpp" = "VSTest"
|
||||
"AppxCSharp" = "VSTest"
|
||||
"Dll" = "VSTest"
|
||||
"GoogleTest" = "JUnit"
|
||||
}
|
||||
|
||||
$VsTestPaths = @{
|
||||
'14.0' = 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe'
|
||||
'15.0' = 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe'
|
||||
}
|
||||
$VsTestPath = $VsTestPaths[$VsTestVersion]
|
||||
if (! $VsTestPath)
|
||||
{
|
||||
Write-Error "No vstest path defined for version $VsTestVersion"
|
||||
}
|
||||
|
||||
function main
|
||||
{
|
||||
if ($ReportPath -and -not (Test-Path $ReportPath))
|
||||
{
|
||||
New-Item -Type Directory $ReportPath | Out-Null
|
||||
}
|
||||
|
||||
$config = Get-Content $ConfigFile | ConvertFrom-Json
|
||||
$testsToRun = getTestsToRun $config
|
||||
|
||||
# We can run all non-appx tests in parallel, but we must run appx tests one at a time
|
||||
$appxTests = $testsToRun | Where-Object { $_.Framework -match "Appx" }
|
||||
$iOSSimulatorTests = $testsToRun | Where-Object { $_.Framework -match "iOSSimulator" }
|
||||
$androidEmulatorTests = $testsToRun | Where-Object { $_.Framework -match "androidEmulator" }
|
||||
$nonAppxTests = $testsToRun | Where-Object { $_.Framework -notmatch "Appx" -and $_.Framework -notmatch "iOSSimulator" -and $_.Framework -notmatch "androidEmulator"}
|
||||
|
||||
$testResults = @()
|
||||
|
||||
# First, start all non-appx tests in parallel
|
||||
$nonAppxJobs = $nonAppxTests | Foreach-Object { runTest $_ $config }
|
||||
Write-Verbose "Running $($nonAppxJobs.Count) tests in the background."
|
||||
|
||||
# If there are existing appx tests or dependencies installed on the system they can prevent us from installing new appx tests.
|
||||
if ($appxTests -and $AppxDependencyPath)
|
||||
{
|
||||
removeAllExistingAppxTests $appxTests $config
|
||||
reinstallAllAppxDependencies
|
||||
}
|
||||
|
||||
# Then, run appx tests one at a time
|
||||
foreach ($test in $appxTests)
|
||||
{
|
||||
$testResults += runTest $test $config | Receive-Job -Wait -AutoRemoveJob -ErrorAction Continue
|
||||
}
|
||||
|
||||
# Simulator tests need to be run one at a time
|
||||
$testResults += runiOSSimulatorTests $iOSSimulatorTests
|
||||
|
||||
$testResults += runAndroidEmulatorTests $androidEmulatorTests
|
||||
|
||||
# Then, wait for all non-appx tests to complete (they're probably already all completed)
|
||||
Write-Verbose "All child jobs: $(Get-Job | Format-Table Id,Name,State | Out-String)"
|
||||
foreach ($job in $nonAppxJobs)
|
||||
{
|
||||
Write-Verbose "Waiting for job: $($job | Format-Table Id,Name,State | Out-String)"
|
||||
$testResults += $job | Receive-Job -Wait -AutoRemoveJob
|
||||
}
|
||||
|
||||
publishTestReports
|
||||
|
||||
# Then, fail if any test failed
|
||||
if ($testResults -contains $false)
|
||||
{
|
||||
Write-Host "##vso[task.logissue type=error]Hit at least one test failure. Search for [TEST FAILED] or [TEST BINARY FAILED] to in the log to find where we failed."
|
||||
exit 1
|
||||
}
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
function getTestsToRun($config)
|
||||
{
|
||||
foreach ($test in $config.tests)
|
||||
{
|
||||
if (isTestApplicable $test)
|
||||
{
|
||||
Write-Verbose "Running $test"
|
||||
Write-Output $test
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function isTestApplicable($test)
|
||||
{
|
||||
if ($JustRunEverything)
|
||||
{
|
||||
return $true
|
||||
}
|
||||
|
||||
# If -TestNames was provided, trust that the user knows what they're doing
|
||||
if ($TestNames)
|
||||
{
|
||||
return ($TestNames -contains $test.Name)
|
||||
}
|
||||
|
||||
if (($test.Framework -notmatch "Appx") -and ((getTestPlatform) -eq "ARM"))
|
||||
{
|
||||
Write-Verbose "Not running $($test.Framework) test $($test.Name) on ARM"
|
||||
return $false
|
||||
}
|
||||
|
||||
if ($test.Platforms -and -not ($test.Platforms -contains $Platform))
|
||||
{
|
||||
Write-Verbose "Not running $($test.Name) because we aren't on one of: $($test.Platforms)"
|
||||
return $false
|
||||
}
|
||||
|
||||
if ($test.Configurations -and -not ($test.Configurations -contains $Configuration))
|
||||
{
|
||||
Write-Verbose "Not running $($test.Name) because we aren't on one of: $($test.Configurations)"
|
||||
return $false
|
||||
}
|
||||
|
||||
if ($test.Tags)
|
||||
{
|
||||
$testTags = $test.Tags
|
||||
}
|
||||
else
|
||||
{
|
||||
$testTags = "default"
|
||||
}
|
||||
|
||||
$providedTags = $Tags -split ","
|
||||
if (! ($testTags | Where-Object { $providedTags -contains $_ }))
|
||||
{
|
||||
Write-Verbose "Not running $($test.Name) because it has tags [$($testTags -join ",")] but we're only running tests with tags [$($providedTags -join ",")]"
|
||||
return $false
|
||||
}
|
||||
|
||||
return $true
|
||||
}
|
||||
|
||||
# Launch each simulator type one at a time, and gracefully clean up after tests
|
||||
function runiOSSimulatorTests($simulatorTests)
|
||||
{
|
||||
if (!$simulatorTests)
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
$testBinaries = $simulatorTests | ForEach-Object { findTestBinary $_ $config}
|
||||
|
||||
# iOSSimulatorTest script returns a list of PSObjects [testSucceeded; output; testBinaryName;], one object for each test run
|
||||
$testResults = . $RunSimulatorTest -DeviceType $iOSSimulatorType -DeviceRuntime $iOSSimulatorRuntime -TestBinaryPaths $testBinaries -ReportPath $ReportPath -Verbose:$Verbose
|
||||
|
||||
foreach($object in $testResults)
|
||||
{
|
||||
$testBinaryName = $object.testBinaryName
|
||||
foreach ($line in $object.output)
|
||||
{
|
||||
Write-Host $line
|
||||
if ($line -match "\[\s*FAILED\s*\]\s*(.+)$")
|
||||
{
|
||||
$testName = $matches[1]
|
||||
Write-Host "##vso[task.logissue type=error][TEST FAILED] $testBinaryName::$testName"
|
||||
|
||||
# this edits the actual $testResults object
|
||||
$object.testSucceeded = $false
|
||||
}
|
||||
}
|
||||
if ($object.output -notcontains "Global test environment tear-down")
|
||||
{
|
||||
Write-Host "##vso[task.logissue type=error][TEST FAILED] $testBinaryName exited unexpectedly or crashed"
|
||||
$object.testSucceeded = $false
|
||||
}
|
||||
|
||||
if ($object.testSucceeded)
|
||||
{
|
||||
Write-Verbose "[TEST BINARY PASSED] $testBinaryName"
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "##vso[task.logissue type=error][TEST BINARY FAILED] $testBinaryName"
|
||||
}
|
||||
}
|
||||
return $testResults.testSucceeded
|
||||
}
|
||||
|
||||
function runAndroidEmulatorTests($emulatorTests)
|
||||
{
|
||||
if (!$emulatorTests)
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
$testResults = . $RunAndroidEmulatorTest -Platform $Platform -Configuration $Configuration -Tests $emulatorTests -ApiLevel $AndroidApiLevel -ReportPath $ReportPath
|
||||
|
||||
foreach ($object in $testResults)
|
||||
{
|
||||
$testBinaryName = $object.testBinaryName
|
||||
foreach ($line in $object.output)
|
||||
{
|
||||
if ($line -match "\[\s*FAILED\s*\]\s*(.+)$")
|
||||
{
|
||||
$testName = $matches[1]
|
||||
Write-Host "##vso[task.logissue type=error][TEST FAILED] $testBinaryName::$testName"
|
||||
|
||||
# this edits the actual $testResults object
|
||||
$object.testSucceeded = $false
|
||||
}
|
||||
}
|
||||
|
||||
if ("$($object.output)" -notlike "*Global test environment tear-down*")
|
||||
{
|
||||
Write-Host "##vso[task.logissue type=error][TEST FAILED] $testBinaryName exited unexpectedly or crashed"
|
||||
$object.testSucceeded = $false
|
||||
}
|
||||
|
||||
if ($object.testSucceeded)
|
||||
{
|
||||
Write-Verbose "[TEST BINARY PASSED] $testBinaryName"
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "##vso[task.logissue type=error][TEST BINARY FAILED] $testBinaryName"
|
||||
}
|
||||
}
|
||||
return $testResults.testSucceeded
|
||||
}
|
||||
|
||||
function runTest($test, $config)
|
||||
{
|
||||
if ($test.framework -eq "GoogleTest")
|
||||
{
|
||||
return runGoogleTest $test $config
|
||||
}
|
||||
if ($test.framework -match "Appx")
|
||||
{
|
||||
return runAppxTest $test $config
|
||||
}
|
||||
if ($test.framework -eq "Dll")
|
||||
{
|
||||
return runDllTest $test $config
|
||||
}
|
||||
|
||||
Write-Error "Don't know how to run $($test.framework)"
|
||||
}
|
||||
|
||||
function runGoogleTest($test, $config)
|
||||
{
|
||||
$testBinary = findTestBinary $test $config
|
||||
$testReportPath = getTestReportPath $test
|
||||
|
||||
$arguments = @()
|
||||
if ($testReportPath)
|
||||
{
|
||||
$arguments += "--gtest_output=xml:$testReportPath"
|
||||
}
|
||||
|
||||
if ($test.Filter)
|
||||
{
|
||||
$arguments += "--gtest_filter=$($test.Filter)"
|
||||
}
|
||||
|
||||
if ($test.AdditionalArguments)
|
||||
{
|
||||
$arguments += $test.AdditionalArguments
|
||||
}
|
||||
|
||||
return Start-Job -Verbose:$Verbose -ArgumentList @($testBinary, $arguments, $DryRun) {
|
||||
Param($testBinary, $arguments, $DryRun)
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$testBinaryName = Split-Path -Leaf $testBinary
|
||||
|
||||
Write-Verbose "Running from $($testBinary.Directory)"
|
||||
Set-Location $testBinary.Directory
|
||||
|
||||
Write-Verbose "Running: $testBinary $arguments"
|
||||
|
||||
if ($DryRun)
|
||||
{
|
||||
return $true
|
||||
}
|
||||
|
||||
$ErrorActionPreference = "Continue" # Don't fail immediately if the test writes to stderr
|
||||
&$testBinary $arguments 2>&1 | Foreach-Object {
|
||||
# Parse the log and print errors to the error stream, so we get failure messages in email.
|
||||
$line = [String]$_
|
||||
Write-Host $line
|
||||
|
||||
if ($line -match "\[\s*FAILED\s*\]\s*(.+)$")
|
||||
{
|
||||
$testName = $matches[1]
|
||||
Write-Host "##vso[task.logissue type=error][TEST FAILED] $testBinaryName::$testName"
|
||||
}
|
||||
}
|
||||
|
||||
# TODO: We currently ignore stderr because some tests are printing to stderr due to an issue
|
||||
# where we don't properly clean up devices on Metal. Once we fix those issues, we should start
|
||||
# failing on stderr (check $? or $error)
|
||||
$testSuccess = $lastexitcode -eq 0
|
||||
if ($testSuccess)
|
||||
{
|
||||
Write-Verbose "[TEST BINARY PASSED] $testBinaryName"
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "##vso[task.logissue type=error][TEST BINARY FAILED] $testBinaryName"
|
||||
}
|
||||
return $testSuccess
|
||||
}
|
||||
}
|
||||
|
||||
function runAppxTest($test, $config)
|
||||
{
|
||||
$testBinary = findTestBinary $test $config @"
|
||||
Visual Studio doesn't build appx packages by default; consider building on the command-line with something like:
|
||||
&"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" Build\Canvas3d.sln /p:platform="$Platform" /p:configuration="$Configuration" /p:VisualStudioVersion="$VsTestVersion"
|
||||
"@
|
||||
|
||||
# There's a silly bug in VSTest right now: it tries to install all .appx packages in the dependencies folder except ARM
|
||||
# tests, but Visual Studio recently started deploying ARM64 tests as well. VSTest does try to install these, but fails
|
||||
# because of course we're not running on an ARM64 device.
|
||||
Remove-Item (Join-Path $testBinary.Directory.FullName "Dependencies/ARM64") -Recurse -Force -ErrorAction Ignore
|
||||
|
||||
_runVsTest $test $config @("/InIsolation")
|
||||
}
|
||||
|
||||
function runDllTest($test, $config)
|
||||
{
|
||||
_runVsTest $test $config @("/InIsolation", "/EnableCodeCoverage")
|
||||
}
|
||||
|
||||
function _runVsTest($test, $config, $arguments)
|
||||
{
|
||||
$testPlatform = getTestPlatform
|
||||
$settingsFile = findAppxSettingsFile $config
|
||||
|
||||
$testBinary = findTestBinary $test $config
|
||||
$testBinaryName = Split-Path -Leaf $testBinary
|
||||
$testReportPath = getTestReportPath $test
|
||||
|
||||
$arguments += @("/Platform:$testPlatform", $testBinary)
|
||||
if ($settingsFile)
|
||||
{
|
||||
$arguments += "/Settings:$settingsFile"
|
||||
}
|
||||
|
||||
$frameworkFilter = getFilterForFramework $test.framework
|
||||
$configuredFilter = $test.filter
|
||||
if ($frameworkFilter -and $configuredFilter)
|
||||
{
|
||||
$filter = "($frameworkFilter)&($configuredFilter)"
|
||||
}
|
||||
elseif ($frameworkFilter)
|
||||
{
|
||||
$filter = $frameworkFilter
|
||||
}
|
||||
elseif ($configuredFilter)
|
||||
{
|
||||
$filter = $configuredFilter
|
||||
}
|
||||
|
||||
if ($filter)
|
||||
{
|
||||
$arguments += "/TestCaseFilter:$filter"
|
||||
}
|
||||
|
||||
return Start-Job -ArgumentList @($VsTestPath, $arguments, $testReportPath, $testBinaryName, $DryRun) {
|
||||
Param($VsTestPath, $arguments, $testReportPath, $testBinaryName, $DryRun)
|
||||
$ErrorActionPreference = "Stop"
|
||||
$VerbosePreference = "Continue"
|
||||
|
||||
if ($testReportPath)
|
||||
{
|
||||
$arguments += "/logger:trx"
|
||||
|
||||
# VSTest doesn't allow you to specify your test filename yet. Once we're
|
||||
# using 15.5+ we'll be able to specify a filename with /logger:trx;LogFile[Name]=<filename>
|
||||
# For now, just make sure our PWD is in a temporary directory and move it afterwards
|
||||
$tempPath = Join-Path (Split-Path $testReportPath) ([System.IO.Path]::GetRandomFileName())
|
||||
New-Item -ItemType Directory -Path $tempPath | Out-Null
|
||||
Write-Verbose "Running from $tempPath to ensure test results are dropped in the right location."
|
||||
Set-Location $tempPath
|
||||
}
|
||||
|
||||
$ErrorActionPreference = "Continue"
|
||||
Write-Verbose "Running: $VsTestPath $arguments"
|
||||
if ($DryRun)
|
||||
{
|
||||
return $true
|
||||
}
|
||||
&$VsTestPath $arguments 2>&1 | ForEach-Object {
|
||||
# Parse the log and print errors to the error stream, so we get failure messages in email.
|
||||
$line = [String]$_
|
||||
Write-Host $line
|
||||
|
||||
if ($line -match "^(Passed|Failed)\s+(\S+)$")
|
||||
{
|
||||
$result,$testName = $matches[1..2]
|
||||
if ($result -eq "Failed")
|
||||
{
|
||||
Write-Host "##vso[task.logissue type=error][TEST FAILED] $testBinaryName::$testName"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($line.StartsWith("Error: The active Test Run was aborted"))
|
||||
{
|
||||
$err = "[TEST FAILED] $testBinaryName crashed"
|
||||
if ($testName)
|
||||
{
|
||||
$err += ". Last test that ran without crashing was $testName"
|
||||
}
|
||||
Write-Host "##vso[task.logissue type=error]$err"
|
||||
}
|
||||
}
|
||||
|
||||
$testSuccess = $lastexitcode -eq 0
|
||||
if ($testSuccess)
|
||||
{
|
||||
Write-Verbose "[TEST BINARY PASSED] $testBinaryName"
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "##vso[task.logissue type=error][TEST BINARY FAILED] $testBinaryName"
|
||||
}
|
||||
|
||||
# We can get rid of this once we move to a version of VSTest that allows us to specify
|
||||
# test filenames.
|
||||
if ($tempPath)
|
||||
{
|
||||
$tempFile = Get-ChildItem $tempPath -Recurse -File
|
||||
if ($tempFile.Count -eq 0)
|
||||
{
|
||||
Write-Warning "Test $testBinaryName didn't generate a .trx file"
|
||||
}
|
||||
elseif ($tempFile.Count -gt 1)
|
||||
{
|
||||
Write-Warning "Test $testBinaryName generated too many .trx files"
|
||||
}
|
||||
else
|
||||
{
|
||||
Move-Item $tempFile[0].FullName $testReportPath | Out-Null
|
||||
}
|
||||
}
|
||||
|
||||
return $testSuccess
|
||||
}
|
||||
}
|
||||
|
||||
function getFilterForFramework($framework)
|
||||
{
|
||||
# Tests built in CppUnitTestFramework allow you to filter on Owner, FullyQualifiedName, ClassName
|
||||
# Tests built in CSharp allow you to filter on TestCategory, Priority, FullyQualifiedName, Name, ClassName
|
||||
# We only have a standard for filtering out CppUnitTestFramework tests right now
|
||||
if ($framework -ne "AppxCpp")
|
||||
{
|
||||
return $null
|
||||
}
|
||||
|
||||
$ignorePlatformFilter = "Ignore" + (Get-Culture).TextInfo.ToTitleCase($Platform.ToLower())
|
||||
$ignoreConfigurationFilter = "Ignore" + (Get-Culture).TextInfo.ToTitleCase($Configuration.ToLower())
|
||||
return "Owner!=$ignorePlatformFilter&Owner!=$ignoreConfigurationFilter"
|
||||
}
|
||||
|
||||
function removeAllExistingAppxTests($appxTests, $config)
|
||||
{
|
||||
$appxFiles = $appxTests | Foreach-Object { findTestBinary $_ $config }
|
||||
if ($Platform -eq "arm")
|
||||
{
|
||||
$DeviceIp = "127.0.0.1"
|
||||
}
|
||||
. $UninstallAppx -AppxFiles $appxFiles -DeviceIp $DeviceIp -Verbose:$Verbose
|
||||
}
|
||||
|
||||
function reinstallAllAppxDependencies
|
||||
{
|
||||
if (! $AppxDependencyPath)
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
if ($Platform -eq "arm")
|
||||
{
|
||||
$DeviceIp = "127.0.0.1"
|
||||
}
|
||||
|
||||
$appxFiles = (Get-ChildItem $AppxDependencyPath -File -Recurse).FullName
|
||||
. $UninstallAppx -AppxFiles $appxFiles -DeviceIp $DeviceIp -Verbose:$Verbose
|
||||
. $InstallAppx -AppxFiles $appxFiles -DeviceIp $DeviceIp -Verbose:$Verbose
|
||||
}
|
||||
|
||||
function findTestBinary($test, $config, $extraFailureMessage)
|
||||
{
|
||||
$path = Join-Path (getRootPath $config) (resolveString $test.Path)
|
||||
$binary = Get-Item $path
|
||||
if (! $binary)
|
||||
{
|
||||
Write-Host "##vso[task.logissue type=error]No test binary at $path. $extraFailureMessage"
|
||||
}
|
||||
if ($binary.Count -ne 1)
|
||||
{
|
||||
Write-Host "##vso[task.logissue type=error]Multiple test binaries at $path"
|
||||
}
|
||||
|
||||
# On mac, make sure the test binary artifact is executable and not just a document
|
||||
$Runtime = [System.Runtime.InteropServices.RuntimeInformation]
|
||||
$OSPlatform = [System.Runtime.InteropServices.OSPlatform]
|
||||
if ($Runtime::IsOSPlatform($OSPlatform::OSX) -and $test.framework -ne "iOSSimulator")
|
||||
{
|
||||
chmod a+x $binary
|
||||
}
|
||||
|
||||
return $binary
|
||||
}
|
||||
|
||||
function findAppxSettingsFile($config)
|
||||
{
|
||||
if ($Platform -eq "arm")
|
||||
{
|
||||
$testSetting = "appxSettingsArm"
|
||||
}
|
||||
else
|
||||
{
|
||||
$testSetting = "appxSettings"
|
||||
}
|
||||
|
||||
if ($config.$testSetting)
|
||||
{
|
||||
return Join-Path (getRootPath $config) $config.$testSetting
|
||||
}
|
||||
|
||||
return $null
|
||||
}
|
||||
|
||||
function getTestReportPath($test)
|
||||
{
|
||||
if (! $ReportPath)
|
||||
{
|
||||
return $null
|
||||
}
|
||||
|
||||
if (! [System.IO.Path]::IsPathRooted($ReportPath))
|
||||
{
|
||||
$ReportPath = Join-Path $CurrentPath $ReportPath
|
||||
}
|
||||
|
||||
$extension = $TestReportExtensions[$test.Framework]
|
||||
if (! $extension)
|
||||
{
|
||||
Write-Error "No report extension defined for $($test.Framework)"
|
||||
}
|
||||
|
||||
$testFileName = $test.Name
|
||||
if ($Configuration)
|
||||
{
|
||||
$testFileName += ".$Configuration"
|
||||
}
|
||||
if ($Platform)
|
||||
{
|
||||
$testFileName += ".$Platform"
|
||||
}
|
||||
|
||||
$testFileName += "-" + $test.Framework + ".$extension"
|
||||
return (Join-Path $ReportPath $testFileName)
|
||||
}
|
||||
|
||||
function publishTestReports
|
||||
{
|
||||
if (! $ReportPath)
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
foreach ($reportFile in (Get-ChildItem -File $ReportPath))
|
||||
{
|
||||
publishTestReport $reportFile
|
||||
}
|
||||
}
|
||||
|
||||
function publishTestReport($reportFile)
|
||||
{
|
||||
if ($reportFile.BaseName -notmatch "^(.+)-(.+)$")
|
||||
{
|
||||
Write-Warning "Don't know how to handle report file $($reportFile.Fullname)"
|
||||
return
|
||||
}
|
||||
|
||||
$runTitle = $matches[1]
|
||||
$framework = $matches[2]
|
||||
$reportType = $TestReportTypes[$framework]
|
||||
|
||||
if (! $reportType)
|
||||
{
|
||||
Write-Warning "No report type defined for framework $framework"
|
||||
return
|
||||
}
|
||||
|
||||
$params = "type=$reportType;runTitle=$runTitle;publishRunAttachments=true;resultFiles=$($reportFile.FullName);"
|
||||
if (getTestPlatform)
|
||||
{
|
||||
$params += "platform=$(getTestPlatform);"
|
||||
}
|
||||
if ($Configuration)
|
||||
{
|
||||
$params += "configuration=$Configuration"
|
||||
}
|
||||
|
||||
Write-Host "##vso[results.publish $params]"
|
||||
}
|
||||
|
||||
function getTestPlatform
|
||||
{
|
||||
if ($Platform -eq "win32")
|
||||
{
|
||||
return "x86"
|
||||
}
|
||||
return $Platform
|
||||
}
|
||||
|
||||
function resolveString($string)
|
||||
{
|
||||
$string = $string -replace "<platform>",$Platform
|
||||
$string = $string -replace "<configuration>",$Configuration
|
||||
return $string
|
||||
}
|
||||
|
||||
function getRootPath($config)
|
||||
{
|
||||
$root = (Get-Item $ConfigFile).Directory.FullName
|
||||
if ($config.relativeRoot)
|
||||
{
|
||||
return Resolve-Path (Join-Path $root $config.relativeRoot)
|
||||
}
|
||||
return $root
|
||||
}
|
||||
|
||||
main
|
|
@ -1,118 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Makes a VSTS RESTful API call.
|
||||
|
||||
.DESCRIPTION
|
||||
This method is mostly just a wrapper around Invoke-RestMethod. It sets up some
|
||||
VSTS-specific defaults and automatically sets up authentication if invoked from
|
||||
a build definition that has 'Allow Scripts to Access OAuth Token' checked.
|
||||
|
||||
.PARAMETER Uri
|
||||
The full URL of the RESTful call we're making.
|
||||
|
||||
.PARAMETER Method
|
||||
The HTTP method to use in this call.
|
||||
|
||||
.PARAMETER Body
|
||||
Data we'll include in our request. If it isn't a string we'll convert to json before sending it.
|
||||
|
||||
.PARAMETER ApiVersion
|
||||
The version of the RESTful method we're using. See: https://www.visualstudio.com/en-us/docs/integrate/get-started/rest/basics#versions
|
||||
|
||||
.PARAMETER PatPath
|
||||
Should only be used when called locally. The path to a file containing an encrypted PAT token. You can also provide a PatPath by setting the environment variable VSTS_PAT_PATH.
|
||||
|
||||
Instructions for setting this up locally are here: https://microsoft.sharepoint.com/:o:/r/teams/segcentral/_layouts/15/WopiFrame.aspx?sourcedoc=%7B817af5db-69b2-413b-a333-4acfb9a5c0bf%7D
|
||||
|
||||
.PARAMETER FullResponse
|
||||
By default, we return the response body as a JSON object. If FullResponse is set, we return the full Invoke-WebRequest response.
|
||||
|
||||
.PARAMETER MaxTries
|
||||
We retry with incremental backoff if VSTS returns a 500. MaxTries is maximum number of times we'll retry before giving up.
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$Uri,
|
||||
[Parameter()]
|
||||
[String]$Method = "Default",
|
||||
[Parameter()]
|
||||
$Body,
|
||||
[Parameter()]
|
||||
[String]$ApiVersion,
|
||||
[Parameter()]
|
||||
[String]$PatPath = $env:VSTS_PAT_PATH,
|
||||
[Parameter()]
|
||||
[Switch]$FullResponse,
|
||||
[Parameter()]
|
||||
[Int]$MaxTries = 10
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
$Verbose = [bool]$PSBoundParameters["Verbose"]
|
||||
$GetAuthString = Join-Path $PSScriptRoot "Get-VstsRestAuthString.ps1"
|
||||
$InvokeWithRetries = Join-Path $PSScriptRoot "Invoke-CommandWithRetries.ps1"
|
||||
|
||||
$PatDocUrl = "https://microsoft.sharepoint.com/:o:/r/teams/segcentral/_layouts/15/WopiFrame.aspx?sourcedoc=%7B817af5db-69b2-413b-a333-4acfb9a5c0bf%7D"
|
||||
|
||||
function main
|
||||
{
|
||||
$headers = @{
|
||||
"Accept" = getAcceptString
|
||||
"Authorization" = . $GetAuthString -PatPath $PatPath -Verbose:$Verbose
|
||||
}
|
||||
|
||||
if ($Body -ne $null -and $Body.GetType().Name -ne "String")
|
||||
{
|
||||
$Body = $Body | ConvertTo-Json -Depth 100 -Compress
|
||||
Write-Verbose "Request body:`n$Body"
|
||||
}
|
||||
|
||||
|
||||
$resp = . $InvokeWithRetries -MaxTries $MaxTries -IsErrorRetriable ${function:isErrorRetriable} -Verbose:$Verbose -Command {
|
||||
Invoke-WebRequest -Uri $Uri -Method $Method -Body $Body -ContentType "application/json" -Headers $headers -UseBasicParsing -Verbose:$Verbose
|
||||
}
|
||||
|
||||
if ($resp.StatusCode -eq 203)
|
||||
{
|
||||
Write-Error @"
|
||||
Got a redirect to a sign-in page; this usually happens when authentication fails.
|
||||
Follow the instructions here to cache a valid PAT token: $PatDocUrl
|
||||
To see what you're using as a PAT token, run:
|
||||
[PSCredential]::new("foo", (Get-Content `$env:VSTS_PAT_PATH | ConvertTo-SecureString)).GetNetworkCredential().Password
|
||||
"@
|
||||
}
|
||||
|
||||
$resp | Add-Member -MemberType NoteProperty -Name "Content" -Value ($resp.Content | ConvertFrom-Json) -Force
|
||||
|
||||
if ($FullResponse)
|
||||
{
|
||||
return $resp
|
||||
}
|
||||
else
|
||||
{
|
||||
return $resp.Content
|
||||
}
|
||||
}
|
||||
|
||||
function getAcceptString
|
||||
{
|
||||
$acceptString = "application/json"
|
||||
if ($ApiVersion)
|
||||
{
|
||||
$acceptString += ";api-version=$ApiVersion"
|
||||
}
|
||||
|
||||
return $acceptString
|
||||
}
|
||||
|
||||
function isErrorRetriable([Management.Automation.ErrorRecord]$err)
|
||||
{
|
||||
$statusCode = $err.Exception.Response.StatusCode
|
||||
return $statusCode -and ([int]$statusCode -ge 500)
|
||||
}
|
||||
|
||||
main
|
|
@ -1,176 +0,0 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Run WACK tests against a single appx package.
|
||||
|
||||
.DESCRIPTION
|
||||
Makes the necessary calls to appcert.exe to run WACK tests against
|
||||
an appx package. Parses the resulting report to fail if any tests
|
||||
failed that we don't want to ignore.
|
||||
|
||||
.PARAMETER PackageToTest
|
||||
The path to the .appx or .appxbundle package we want to run WACK
|
||||
tests against.
|
||||
|
||||
.PARAMETER ReportDirectory
|
||||
A directory where we will drop WACK test results. We'll also try to
|
||||
convert results to an .html file, which we'll drop in the same
|
||||
directory. Right now we just drop a wackreport.xml file in the report
|
||||
directory, and if that file already exists this script will fail.
|
||||
|
||||
.PARAMETER ConfigFile
|
||||
A .json file containing a list of tests we want to ignore.
|
||||
#>
|
||||
#Requires -RunAsAdministrator
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$PackageToTest,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$ReportDirectory,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$ConfigFile
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$AppCert = Join-Path ${Env:ProgramFiles(x86)} "Windows Kits/10/App Certification Kit/appcert.exe"
|
||||
|
||||
function main
|
||||
{
|
||||
$config = Get-Content $ConfigFile | ConvertFrom-Json
|
||||
|
||||
$reportFile = Join-Path $ReportDirectory "wackreport.xml"
|
||||
$packageFile = (Get-Item $PackageToTest).FullName
|
||||
|
||||
resetWackState
|
||||
runWackTest $reportFile $packageFile
|
||||
processWackReport $reportFile $config
|
||||
}
|
||||
|
||||
function resetWackState
|
||||
{
|
||||
runAppCert "reset" | Out-Null
|
||||
}
|
||||
|
||||
function runWackTest($reportFile, $packageFile)
|
||||
{
|
||||
$exitCode = runAppCert @("test", "-appxpackagepath", $packageFile, "-reportoutputpath", $reportFile)
|
||||
handleWackExit $exitCode
|
||||
}
|
||||
|
||||
function runAppCert($wackArgs)
|
||||
{
|
||||
Write-Verbose "Running: AppCert.exe $wackArgs"
|
||||
|
||||
$procInfo = New-Object System.Diagnostics.ProcessStartInfo
|
||||
$procInfo.CreateNoWindow = $true
|
||||
$procInfo.UseShellExecute = $false
|
||||
$procInfo.RedirectStandardOutput = $true
|
||||
$procInfo.RedirectStandardError = $true
|
||||
$procInfo.FileName = $AppCert
|
||||
$procInfo.Arguments = $wackArgs
|
||||
|
||||
$proc = New-Object System.Diagnostics.Process
|
||||
$proc.StartInfo = $procInfo
|
||||
$proc.Start() | Out-Null
|
||||
$proc.StandardOutput.ReadToEnd() | Write-Host
|
||||
$proc.WaitForExit() | Out-Null
|
||||
[int]$exitCode = $proc.ExitCode
|
||||
Write-Verbose "AppCert.exe exit code: $exitCode"
|
||||
return $exitCode
|
||||
}
|
||||
|
||||
function processWackReport($reportFile, $config)
|
||||
{
|
||||
uploadFile $reportFile
|
||||
$htmlFile = convertReportToHtml $reportFile
|
||||
if ($htmlFile)
|
||||
{
|
||||
uploadFile $htmlFile
|
||||
}
|
||||
failOnReportErrors $reportFile $config
|
||||
}
|
||||
|
||||
function uploadFile($file)
|
||||
{
|
||||
Write-Verbose "Uploading $file to WACK artifact folder."
|
||||
# If we're running under VSTS this will upload the report as an attachment
|
||||
Write-Host "##vso[artifact.upload artifactname=WACK]$file"
|
||||
}
|
||||
|
||||
function convertReportToHtml($reportFile)
|
||||
{
|
||||
[xml]$xml = Get-Content $reportFile
|
||||
if (! ($xml."xml-stylesheet" -match "href='(.+)'"))
|
||||
{
|
||||
Write-Warning "No stylesheet available to convert report to html."
|
||||
return
|
||||
}
|
||||
$xslFile = $matches[1]
|
||||
$htmlFile = "$reportFile.html"
|
||||
|
||||
Write-Verbose "Converting WACK report to HTML at $htmlFile"
|
||||
$xsl = New-Object System.Xml.Xsl.XslCompiledTransform
|
||||
$xslSettings = New-Object System.Xml.Xsl.XsltSettings
|
||||
$xslSettings.EnableDocumentFunction = $true
|
||||
|
||||
$xsl.Load($xslFile, $xslSettings, (New-Object System.Xml.XmlUrlResolver)) | Out-Null
|
||||
$xsl.Transform($reportFile, $htmlFile) | Out-Null
|
||||
return $htmlFile
|
||||
}
|
||||
|
||||
function failOnReportErrors($reportFile, $config)
|
||||
{
|
||||
[xml]$xml = Get-Content $reportFile
|
||||
$failedTests = $xml.REPORT.REQUIREMENTS.REQUIREMENT.TEST | Where-Object { $_.RESULT."#cdata-section" -ne "PASS" }
|
||||
|
||||
$notIgnored = @()
|
||||
foreach ($test in $failedTests)
|
||||
{
|
||||
$ignoreConfig = $config.testsToIgnore | Where-Object { $_.id -eq $test.INDEX }
|
||||
if ($ignoreConfig)
|
||||
{
|
||||
Write-Verbose "Test '$($test.NAME)' failed, but we are ignoring it because $($ignoreConfig.ignoreReason)"
|
||||
}
|
||||
else
|
||||
{
|
||||
$notIgnored += @($test)
|
||||
}
|
||||
}
|
||||
|
||||
if ($notIgnored)
|
||||
{
|
||||
$messages = $notIgnored | Foreach-Object { "$($_.NAME): $($_.DESCRIPTION) $($_.MESSAGES.MESSAGE.TEXT -join '. ')" }
|
||||
Write-Error "Failed WACK tests. See attached report for more details.`n$($messages -join "`n")"
|
||||
}
|
||||
}
|
||||
|
||||
# Running 'appcert' without any parameters provides a decoding of exit codes
|
||||
function handleWackExit($exitCode)
|
||||
{
|
||||
if ($exitCode -eq -1)
|
||||
{
|
||||
Write-Error "Invalid command line error occurred."
|
||||
}
|
||||
if ($exitCode -eq -2)
|
||||
{
|
||||
Write-Error "Infrastructure error occurred."
|
||||
}
|
||||
if ($exitCode -eq -3)
|
||||
{
|
||||
Write-Error "User initiated error occurred."
|
||||
}
|
||||
if ($exitCode -eq -4)
|
||||
{
|
||||
Write-Error "App installation error occurred."
|
||||
}
|
||||
if ($exitCode -eq -5)
|
||||
{
|
||||
Write-Error "App unpackaging error occurred."
|
||||
}
|
||||
if ($exitCode -lt 0)
|
||||
{
|
||||
Write-Error "Unknown error occurred, exit code $exitCode."
|
||||
}
|
||||
}
|
||||
|
||||
main
|
|
@ -1,224 +0,0 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Invokes a list of tests on the iOS Simulator. This returns a list PSObjects containing test success result and test output.
|
||||
|
||||
.DESCRIPTION
|
||||
Runs a list of test binaries locally on a specific iOS Simulator device and runtime. This script
|
||||
sets up the iOS Simulator at the beginning and cleanly handles shutting it down after test execution.
|
||||
It returns a list of PSObjects, each containing the following:
|
||||
testBinaryName: name of the test binary
|
||||
testSucceeded: boolean result of this test, true if it passed
|
||||
output: the output of this test
|
||||
|
||||
.PARAMETER DeviceType
|
||||
This value must be a valid simulator device type, that can be called when prefixed
|
||||
with com.appleCoreSimulator.SimDeviceType (e.g. iPhone-7-Plus)
|
||||
See the list by running 'xcrun simctl list runtimes'
|
||||
|
||||
.PARAMETER DeviceRuntime
|
||||
This must be a valid iOS Simulator Runtime, and must be a valid command
|
||||
when suffixed with com.apple.CoreSimulator.SimRuntime (e.g. iOS-11-2)
|
||||
See the list by running 'xcrun simctl list devicetypes'
|
||||
|
||||
.PARAMETER TestBinaryPaths
|
||||
A list of test binaries to install and run on the iOS Simulator
|
||||
|
||||
.PARAMETER ReportPath
|
||||
The directory we will drop all of our test reports.
|
||||
|
||||
.PARAMETER TestTimeoutSeconds
|
||||
Test timeout, in seconds, for a single test.
|
||||
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$DeviceType,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$DeviceRuntime,
|
||||
[Parameter(Mandatory)]
|
||||
[String[]]$TestBinaryPaths,
|
||||
[Parameter()]
|
||||
[String]$ReportPath = $env:BUILD_BINARIESDIRECTORY,
|
||||
[Parameter()]
|
||||
[Int]$TestTimeoutSeconds = 0
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
function main
|
||||
{
|
||||
$deviceUDID = launchSimulator
|
||||
$testResults = @()
|
||||
try
|
||||
{
|
||||
foreach ($test in $TestBinaryPaths)
|
||||
{
|
||||
$testResults += runiOSSimulatorTest $test
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
shutdownSimulator $deviceUDID
|
||||
}
|
||||
return $testResults
|
||||
}
|
||||
|
||||
# Shut down all simulators that may be on. Some of them might be in broken or weird states,
|
||||
# so make a new instance ourselves each time. After testing or if exception is hit, we will
|
||||
# clean up and delete the simulator in the function shutdownSimulator
|
||||
function launchSimulator
|
||||
{
|
||||
$xcodePath = getXcodePath
|
||||
$simulatorPath = [io.path]::combine($xcodePath, "Applications", "Simulator.app")
|
||||
|
||||
Write-Verbose "Launching Simulator App: open $simulatorPath"
|
||||
. open $simulatorPath
|
||||
|
||||
$simDevice = "com.apple.CoreSimulator.SimDeviceType.$DeviceType"
|
||||
$simRuntime = "com.apple.CoreSimulator.SimRuntime.$DeviceRuntime"
|
||||
|
||||
. xcrun simctl shutdown all | Out-Null
|
||||
|
||||
Write-Host "Creating a simulator: xcrun simctl create BigParkiOS $simDevice $simRuntime"
|
||||
$simulatorUDID = . xcrun simctl create BigParkiOS $simDevice $simRuntime
|
||||
|
||||
if (!$simulatorUDID)
|
||||
{
|
||||
Write-Error "Error creating simulator $DeviceType, $DeviceRuntime. Please ensure this simulator is installed on the machine by viewing all simulators with 'xcrun simctl list'"
|
||||
}
|
||||
|
||||
. xcrun simctl boot $simulatorUDID | Out-Null
|
||||
|
||||
return $simulatorUDID
|
||||
}
|
||||
|
||||
# Each XCode version automatically includes SDKs for specific iOS runtimes. Try to use
|
||||
# this corresponding version of XCode for a runtime, otherwise default to the active XCode version
|
||||
function getXcodePath()
|
||||
{
|
||||
if ($DeviceRuntime -match "11-2")
|
||||
{
|
||||
Write-Verbose "Using Xcode 9.2 to run Simulator with runtime $DeviceRuntime"
|
||||
$xcodePath = "/Applications/Xcode_9.2.app/Contents/Developer"
|
||||
}
|
||||
elseif ($DeviceRuntime -match "11-3")
|
||||
{
|
||||
Write-Verbose "Using Xcode 9.3 to run Simulator with runtime $DeviceRuntime"
|
||||
$xcodePath = "/Applications/Xcode_9.3.app/Contents/Developer"
|
||||
}
|
||||
if (!$xcodePath -or -not (Test-Path $xcodePath))
|
||||
{
|
||||
Write-Verbose "Xcode developer path $xcodePath does not exist"
|
||||
$xcodePath = . xcode-select -p
|
||||
Write-Verbose "Using active Xcode developer directory instead: $xcodePath"
|
||||
}
|
||||
if (!$xcodePath -or -not (Test-Path $xcodePath))
|
||||
{
|
||||
Write-Error "No Xcode path exists. Check that Xcode is installed and that 'xcode-select -p' returns a path"
|
||||
}
|
||||
return $xcodePath
|
||||
}
|
||||
|
||||
function shutdownSimulator($deviceUDID)
|
||||
{
|
||||
Write-Verbose "Deleting $DeviceType Simulator ($deviceUDID)"
|
||||
. xcrun simctl shutdown $deviceUDID | Out-Null
|
||||
. xcrun simctl erase $deviceUDID | Out-Null
|
||||
. xcrun simctl delete $deviceUDID | Out-Null
|
||||
|
||||
$deviceStillPresent = . xcrun simctl list | grep $deviceUDID
|
||||
if ($deviceStillPresent)
|
||||
{
|
||||
Write-Error "$DeviceType Simulator ($deviceUDID) could not be deleted!" -ErrorAction Continue
|
||||
}
|
||||
}
|
||||
|
||||
# Wrap the call to launch the iOS app in a timeout job in case it doesn't return
|
||||
# in the unexpected case something goes wrong with the simulator or the test hangs
|
||||
function runiOSSimulatorTest($testBinary)
|
||||
{
|
||||
$testBinaryName = Split-Path -Leaf $testBinary
|
||||
|
||||
Write-Verbose "Installing iOS Simulator test $testBinaryName"
|
||||
. xcrun simctl install booted $testBinary | Out-Null
|
||||
|
||||
Write-Verbose "Running iOS Simulator test $testBinaryName"
|
||||
$appBundleName = . "/usr/libexec/PlistBuddy" -c "print CFBundleIdentifier" "$testBinary/Info.plist"
|
||||
|
||||
$outputFileName = (Join-Path $ReportPath "$testBinaryName.txt")
|
||||
|
||||
# xcrun simctl launch --stdout to a file is an alternative solution to --console,
|
||||
# Using --console will print to stdout and block until it completes. However, --stdout
|
||||
# is non-blocking, so we need to wait for the app process to finish before reading output.
|
||||
$output = . xcrun simctl launch --stdout="$outputFileName" booted "$appBundleName"
|
||||
|
||||
# output is in the form: <appbundlename>: <pid>
|
||||
Write-Verbose "app bundle name and pid are $output"
|
||||
$appPid = $output.Split()[-1]
|
||||
|
||||
$testOutput = getTestOutput $appPid $outputFileName
|
||||
|
||||
Write-Verbose "iOS Simulator test $testBinaryName completed run"
|
||||
Write-Verbose "Test output located at $outputFileName"
|
||||
|
||||
# TODO: implement return code parsing so we can actually determine if the test succeeded or not (e.g. crashed)
|
||||
$resultObject = [PSObject]@{ testBinaryName=$testBinaryName; testSucceeded=$true; output=$testOutput}
|
||||
|
||||
return $resultObject
|
||||
}
|
||||
|
||||
# get test output written to $outputFileName after $appPid finishes running
|
||||
function getTestOutput($appPid, $outputFileName)
|
||||
{
|
||||
waitForProcess $appPid
|
||||
waitForOutputWriteToFinish $outputFileName
|
||||
|
||||
return (Get-Content $outputFileName)
|
||||
}
|
||||
|
||||
function waitForProcess($appPid)
|
||||
{
|
||||
$psResult = . ps -p $appPid
|
||||
while ($psResult.Count > 1)
|
||||
{
|
||||
Start-Sleep 5
|
||||
$psResult = . ps -p $appPid
|
||||
}
|
||||
}
|
||||
|
||||
# The output file is empty immediately after because the output text hasn't yet been populated
|
||||
# Keep checking the contents of the file to make sure the test has been fully written before actually returning it
|
||||
# In the case that the test crashed or doesn't finish writing output, we will error out after the timeout
|
||||
|
||||
# TODO: look into better ways of telling when writing to the file is complete.
|
||||
# e.g. Check if the process or parent has a file handler open with lsof, watch out for intermittent writes though
|
||||
function waitForOutputWriteToFinish($outputFileName)
|
||||
{
|
||||
if (-not (Test-Path $outputFileName))
|
||||
{
|
||||
Write-Error "There is no output file for $testBinaryName - expecting it at $outputFileName"
|
||||
}
|
||||
|
||||
# wait for the file contents to be written for 2 minutes before returning what we have
|
||||
$fileWriteTimeout = 120
|
||||
|
||||
Write-Verbose "Waiting for process to finish writing to output file ..."
|
||||
$startTime = Get-Date
|
||||
|
||||
while (($(Get-Date) - $startTime).TotalSeconds -lt $fileWriteTimeout)
|
||||
{
|
||||
$output = (Get-Content $outputFileName)
|
||||
foreach ($line in $output)
|
||||
{
|
||||
if ($line -match "Global test environment tear-down")
|
||||
{
|
||||
Start-Sleep 5
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
Write-Warning "Test process completed but did not reach global tear-down state - it may have crashed or hit an unexpected error. Timed out while writing to output file for $fileWriteTimeout sec".
|
||||
}
|
||||
|
||||
main
|
|
@ -1,20 +0,0 @@
|
|||
# This is simple enough to be an inline script, but we can't currently pass in arguments
|
||||
# to inline scripts using the cross-platform PowerShell task.
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$Path,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$Contents
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
function main
|
||||
{
|
||||
$directory = Split-Path $Path
|
||||
New-Item $directory -ErrorAction Ignore -Type Directory
|
||||
$Contents | Out-File -Encoding ascii $Path
|
||||
}
|
||||
|
||||
main
|
|
@ -1,19 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<solution>
|
||||
<add key="disableSourceControlIntegration" value="true" />
|
||||
</solution>
|
||||
<packageSources>
|
||||
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
|
||||
</packageSources>
|
||||
<packageRestore>
|
||||
<!-- Allow NuGet to download missing packages -->
|
||||
<add key="enabled" value="True" />
|
||||
|
||||
<!-- Automatically check for missing packages during build in Visual Studio -->
|
||||
<add key="automatic" value="True" />
|
||||
</packageRestore>
|
||||
<disabledPackageSources>
|
||||
<add key="myget-dotnet-core" value="true" />
|
||||
</disabledPackageSources>
|
||||
</configuration>
|
|
@ -1,93 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Helper module for using NuGet on MacOS.
|
||||
|
||||
.DESCRIPTION
|
||||
Provides common abd useful functions to be used by the scripts.
|
||||
#>
|
||||
|
||||
# ------------
|
||||
|
||||
# Write out a NuGet config file with packageSourceCredentials added in
|
||||
function Install-NuGetConfig
|
||||
{
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$NuGetConfigSource,
|
||||
[Parameter()]
|
||||
[String]$NuGetConfigDest = [io.path]::GetTempFileName(),
|
||||
[Parameter()]
|
||||
[String]$AccessToken,
|
||||
[Parameter()]
|
||||
[String]$PATFilename
|
||||
)
|
||||
|
||||
Copy-Item $NuGetConfigSource $NugetConfigDest | Out-Null
|
||||
|
||||
return $NugetConfigDest
|
||||
}
|
||||
|
||||
# Obtain personal access token from commandline or pat.txt
|
||||
function getAccessToken($AccessToken, $PATFilename)
|
||||
{
|
||||
if (-not [String]::IsNullOrEmpty($AccessToken))
|
||||
{
|
||||
Write-Verbose "Using commandline-supplied access token"
|
||||
return $AccessToken
|
||||
}
|
||||
|
||||
if (Test-Path $PATFilename)
|
||||
{
|
||||
Write-Verbose "Using access token from file $PATFilename"
|
||||
return Get-Content $PATFilename
|
||||
}
|
||||
|
||||
Write-Verbose "Continuing without an access token"
|
||||
return $null
|
||||
}
|
||||
|
||||
function Start-NuGet
|
||||
{
|
||||
$nugetCommandLocations = @(
|
||||
"nuget",
|
||||
"/usr/local/bin/nuget",
|
||||
"/Library/Frameworks/Mono.framework/Versions/Current/Commands/nuget"
|
||||
)
|
||||
|
||||
$nugetCommand = $nugetCommandLocations | Where-Object { NugetCommandIsValid $_ } | Select -First 1
|
||||
Write-Verbose "Using nuget at: $nugetCommand"
|
||||
|
||||
if (-not $nugetCommand)
|
||||
{
|
||||
Write-Error "NuGet not found."
|
||||
}
|
||||
|
||||
Write-Verbose "Arguments = $args"
|
||||
Start-Process -FilePath $nugetCommand -Wait -Args $args
|
||||
}
|
||||
|
||||
function NugetCommandIsValid($nuget, $minVerNumber = "4.0.0.0")
|
||||
{
|
||||
if (!(Get-Command $nuget -ErrorAction SilentlyContinue))
|
||||
{
|
||||
return $false
|
||||
}
|
||||
|
||||
$nugetVersionString = . $nuget "help" | Select -First 1
|
||||
|
||||
if ($nugetVersionString -match ".+((\d+)\.(\d+)\.(\d+)\.(\d+))")
|
||||
{
|
||||
$versionString = $matches[1]
|
||||
Write-Verbose "Nuget found at $nuget with version number $versionString. Comparing to minimum version $minVerNum"
|
||||
|
||||
return ([Version]$versionString -ge [Version]$minVerNum)
|
||||
}
|
||||
|
||||
Write-Error "Nuget command provided at path $nuget does not have `"nuget help`" command that lists a version number."
|
||||
}
|
||||
|
||||
Export-ModuleMember -function Install-NuGetConfig
|
||||
Export-ModuleMember -function Start-NuGet
|
|
@ -1,37 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Push a NuGet package to a feed.
|
||||
|
||||
.DESCRIPTION
|
||||
This script pushes the nuget package to the feed. It takes care of necessary authentication.
|
||||
|
||||
.PARAMETER Source
|
||||
The name of the NuGet source
|
||||
|
||||
.PARAMETER Packages
|
||||
The packages to push
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$Source,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$Packages
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
|
||||
function main
|
||||
{
|
||||
$allPackages = Get-Item $Packages
|
||||
foreach($currentPackage in $allPackages)
|
||||
{
|
||||
dotnet nuget push "$currentPackage" --source "$Source" --api-key VSTS
|
||||
}
|
||||
}
|
||||
|
||||
main
|
|
@ -1,147 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Restore NuGet packages and generate XCode config for search paths.
|
||||
|
||||
.DESCRIPTION
|
||||
This script recursively searches for packages.config files in the
|
||||
filesystem, runs NuGet to restore the packages in them one by one,
|
||||
then writes out an XCode config file that sets search paths properly.
|
||||
|
||||
.PARAMETER XCodeConfigFile
|
||||
The path to the XCode config file we'll create.
|
||||
|
||||
.PARAMETER PackagesDirectory
|
||||
The directory where NuGet packages will be restored to.
|
||||
|
||||
.PARAMETER PackagesConfigRoot
|
||||
The root directory where the recursive search for packages.config files
|
||||
will begin.
|
||||
|
||||
.PARAMETER NuGetConfigSource
|
||||
The path to the Nuget.Config file we'll use as a starting point for creating
|
||||
our nuget.config file with credentials attached.
|
||||
|
||||
.PARAMETER AccessToken
|
||||
Clear text PersonalAccessToken to use for credentials.
|
||||
|
||||
.PARAMETER PATFilename
|
||||
File containing PersonalAccessToken, default ~/.nuget/pat.txt
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
Param (
|
||||
[Parameter(Mandatory)]
|
||||
[String]$XCodeConfigFile,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$PackagesDirectory,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$PackagesConfigRoot,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$NugetConfigSource,
|
||||
[Parameter()]
|
||||
[String]$AccessToken,
|
||||
[Parameter()]
|
||||
[string]$PATFilename = '~/.nuget/pat.txt'
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
|
||||
Import-Module (Join-Path $PSScriptRoot "NuGetHelper.psm1") -Force
|
||||
|
||||
function main
|
||||
{
|
||||
$temporaryNugetConfig = Install-NuGetConfig -AccessToken $AccessToken -PATFilename $PATFilename -NuGetConfigSource $NugetConfigSource
|
||||
|
||||
try
|
||||
{
|
||||
nugetRestore $temporaryNugetConfig
|
||||
}
|
||||
finally
|
||||
{
|
||||
Remove-Item -Path $temporaryNugetConfig -ErrorAction "SilentlyContinue"
|
||||
}
|
||||
|
||||
createCmakeListsFile
|
||||
}
|
||||
|
||||
# NuGet restore on all package.config files under $PackagesConfigRoot
|
||||
function nugetRestore($nugetConfigPath)
|
||||
{
|
||||
foreach ($configFile in getPackageConfigFiles)
|
||||
{
|
||||
Start-NuGet restore $configFile -ConfigFile $nugetConfigPath -OutputDirectory $PackagesDirectory -DisableParallelProcessing
|
||||
}
|
||||
}
|
||||
|
||||
# Parse packages.config file and save search path keys for later
|
||||
function parsePackagesXml($packagesFile, $xcodeConfigs)
|
||||
{
|
||||
# Read in config as XML
|
||||
[xml]$xml = Get-Content $packagesFile
|
||||
|
||||
# Add config keys uniquely
|
||||
foreach ($package in $xml.packages.package)
|
||||
{
|
||||
$id = $package.id
|
||||
$idup = $id.ToUpper() -replace '\.','_'
|
||||
$key = "NUGET_$idup"
|
||||
|
||||
if (!$xcodeConfigs.ContainsKey($key))
|
||||
{
|
||||
$version = $package.version
|
||||
$val = Join-Path -Path $PackagesDirectory -ChildPath "$id"
|
||||
$xcodeConfigs.Add($key, $val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getPackageConfigFiles
|
||||
{
|
||||
return (Get-ChildItem $PackagesConfigRoot -Recurse packages.config).FullName
|
||||
}
|
||||
|
||||
function createCmakeListsFile
|
||||
{
|
||||
$cmakeListsFile = Join-Path $PackagesDirectory "CMakeLists.txt"
|
||||
printCmakeListsFile | Out-File $cmakeListsFile -Force -Encoding ASCII
|
||||
}
|
||||
|
||||
function getNormalizedVersion($version)
|
||||
{
|
||||
$release,$prerelease = $version.split("-", 2)
|
||||
$parts = $release.split(".")
|
||||
while ($parts.length -gt 3 -and $parts[-1] -eq 0)
|
||||
{
|
||||
$parts = $parts[0..($parts.length-2)]
|
||||
}
|
||||
$release = $parts -join "."
|
||||
|
||||
return $release, $prerelease -ne $null -join "-"
|
||||
}
|
||||
|
||||
function printCmakeListsFile
|
||||
{
|
||||
foreach ($configFile in getPackageConfigFiles)
|
||||
{
|
||||
[xml]$config = Get-Content $configFile
|
||||
foreach ($package in $config.SelectNodes("/packages/package"))
|
||||
{
|
||||
$version = getNormalizedVersion $package.getAttribute("version")
|
||||
$name = $package.getAttribute("id")
|
||||
$path = Join-Path $PackagesDirectory ($name + "." + $version) | Resolve-Path
|
||||
# Convert Windows style path with "\" to Unix style path using "/" as delimiter, otherwise CMake complains on Windows host
|
||||
$path = $path -replace "\\", "/"
|
||||
|
||||
Write-Verbose "list(APPEND CMAKE_MODULE_PATH `"$path`")"
|
||||
Write-Output "list(APPEND CMAKE_MODULE_PATH `"$path`")"
|
||||
}
|
||||
}
|
||||
|
||||
# Pass back the new CMAKE_MODULE_PATH to the parent scope
|
||||
Write-Output "set(CMAKE_MODULE_PATH `${CMAKE_MODULE_PATH} PARENT_SCOPE)"
|
||||
}
|
||||
|
||||
Main
|
|
@ -1,223 +0,0 @@
|
|||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$ConfigFile,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$PublishPath,
|
||||
[Parameter()]
|
||||
[String]$Platform,
|
||||
[Parameter()]
|
||||
[String]$Configuration
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$ExtensionsToIgnore = @(".pdb")
|
||||
$Git = . (Join-Path $PSScriptRoot "Find-Git.ps1")
|
||||
|
||||
function main
|
||||
{
|
||||
if (! (Test-Path $PublishPath))
|
||||
{
|
||||
New-Item -Type Directory $PublishPath | Out-Null
|
||||
}
|
||||
$config = Get-Content $ConfigFile | ConvertFrom-Json
|
||||
|
||||
# git operations and `Resolve-Path -Relative` require us to be in the root
|
||||
# of the repo we're publishing from
|
||||
Push-Location (getRootPath $config)
|
||||
try
|
||||
{
|
||||
publishTestDependencies
|
||||
$gitFiles = getGitFiles
|
||||
|
||||
$testsToPublish = $config.Tests | Where-Object { shouldPublishTest $_ }
|
||||
$postCommands = $testsToPublish | Foreach-Object { publishTest $_ $config $gitFiles }
|
||||
$postCommands | Out-File "$PublishPath/PostPublish.ps1" -Encoding ascii
|
||||
}
|
||||
finally
|
||||
{
|
||||
Pop-Location
|
||||
}
|
||||
}
|
||||
|
||||
# Find all appx dependencies available under a Dependencies\ folder, and copy
|
||||
# to a single 'stage' folder that can be used as the dependencies folder for
|
||||
# a vstest run.
|
||||
# We do it this way rather than copying test dependencies beside each test for a
|
||||
# couple reasons:
|
||||
# * Most tests have the same set of dependencies, so we minimize copying
|
||||
# duplicates.
|
||||
# * Different tests copy dependencies under different folder patterns.
|
||||
function publishTestDependencies
|
||||
{
|
||||
$testPlatform = getTestPlatform
|
||||
$destFolder = "$PublishPath/Dependencies/$testPlatform"
|
||||
New-Item -Type Directory -ErrorAction Ignore -Path $destFolder | Out-Null
|
||||
foreach ($dependencyFolder in Get-ChildItem -Directory -Recurse -Filter Dependencies)
|
||||
{
|
||||
foreach ($dependencyAppx in (Get-Item "$($dependencyFolder.FullName)/$testPlatform/*.appx"))
|
||||
{
|
||||
Write-Verbose "Copying $($dependencyAppx.FullName) to $destFolder"
|
||||
Copy-Item -ErrorAction Ignore $dependencyAppx.FullName $destFolder | Out-Null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# We want to publish tests that we may want to run manually (e.g. publish nightly tests for CI builds)
|
||||
# but don't waste time publishing tests we don't ever run (e.g. don't publish .dll ARM tests).
|
||||
function shouldPublishTest($test)
|
||||
{
|
||||
if (($Platform -eq "ARM") -and ($test.Framework -notmatch "Appx"))
|
||||
{
|
||||
return $false
|
||||
}
|
||||
|
||||
if ($test.Platforms -and !($test.Platforms -contains $Platform))
|
||||
{
|
||||
return $false
|
||||
}
|
||||
|
||||
if ($test.Configurations -and !($test.Configurations -contains $Configuration))
|
||||
{
|
||||
return $false
|
||||
}
|
||||
|
||||
return $true
|
||||
}
|
||||
|
||||
function publishTest($test, $config, $gitFiles)
|
||||
{
|
||||
foreach ($file in (getFilesToPublish $test $config))
|
||||
{
|
||||
$checkedInFile = findCheckedInCopyOfFile $file $gitFiles
|
||||
if ($checkedInFile)
|
||||
{
|
||||
Write-Output (getPublishCommandForCheckedInFile $checkedInFile $file)
|
||||
}
|
||||
else
|
||||
{
|
||||
$dest = Join-Path $PublishPath (Resolve-Path $file.FullName -Relative)
|
||||
Write-Verbose "Copy from $($file.FullName) to $dest"
|
||||
New-Item -Type Directory -ErrorAction Ignore (Split-Path -Parent $dest) | Out-Null
|
||||
Copy-Item $file.FullName $dest -Force | Out-Null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getFilesToPublish($test, $config)
|
||||
{
|
||||
$testBinary = findTestBinary $test $config
|
||||
if ($test.Framework -match "Appx")
|
||||
{
|
||||
return $testBinary
|
||||
}
|
||||
|
||||
$testDirectory = (Get-Item $testBinary).Directory
|
||||
$files = Get-ChildItem $testDirectory -Recurse -File
|
||||
return $files | Where-Object { shouldPublishFile $_ $test.AlwaysPublishFiles }
|
||||
}
|
||||
|
||||
function shouldPublishFile($file, $alwaysPublishFiles)
|
||||
{
|
||||
$fileFullName = $file.FullName.Replace("\", "/")
|
||||
|
||||
foreach ($alwaysPublishRegex in $alwaysPublishFiles)
|
||||
{
|
||||
if ($fileFullName -match $alwaysPublishRegex)
|
||||
{
|
||||
Write-Verbose "Publishing $fileFullName because it matches AlwaysPublishFiles regex $alwaysPublishRegex"
|
||||
return $true
|
||||
}
|
||||
}
|
||||
|
||||
if ($ExtensionsToIgnore -contains $file.Extension)
|
||||
{
|
||||
Write-Verbose "Not publishing $fileFullName because if its extension."
|
||||
return $false
|
||||
}
|
||||
|
||||
return $true
|
||||
}
|
||||
|
||||
# Find a file that's checked-in that has the exact same contents as this file.
|
||||
# As an optimization we only consider files that have the same name as this file.
|
||||
function findCheckedInCopyOfFile($file, $gitFiles)
|
||||
{
|
||||
# Assume if the file length is the same this is the file we want to use
|
||||
# If we really wanted we could use 'git hash-object', but this would take quite a bit longer
|
||||
return $gitFiles[$file.Name] | Where-Object { $file.Length -eq $_.Length } | Select-Object -First 1
|
||||
}
|
||||
|
||||
function getPublishCommandForCheckedInFile($checkedInFile, $destFile)
|
||||
{
|
||||
$source = Resolve-Path $checkedInFile.FullName -Relative
|
||||
$dest = Resolve-Path $destFile.FullName -Relative
|
||||
$destDir = Split-Path -Parent $dest
|
||||
Write-Verbose "Adding post-publish command to copy from $source to $dest"
|
||||
Write-Output "New-Item -Type Directory `"`$PSScriptRoot/$destDir`" -ErrorAction Ignore | Out-Null"
|
||||
Write-Output "Copy-Item `"`$PSScriptRoot/$source`" `"`$PSScriptRoot/$dest`" -Force -ErrorAction Stop"
|
||||
}
|
||||
|
||||
# Assumes we're already in the root directory
|
||||
function findTestBinary($test, $config)
|
||||
{
|
||||
$path = resolveString $test.Path
|
||||
$binary = Get-Item $path
|
||||
if (! $binary)
|
||||
{
|
||||
Write-Error "No test binary at $path"
|
||||
}
|
||||
if ($binary.Count -ne 1)
|
||||
{
|
||||
Write-Error "Multiple test binaries at $path"
|
||||
}
|
||||
|
||||
return $binary
|
||||
}
|
||||
|
||||
function resolveString($string)
|
||||
{
|
||||
$string = $string -replace "<platform>",$Platform
|
||||
$string = $string -replace "<configuration>",$Configuration
|
||||
return $string
|
||||
}
|
||||
|
||||
# Builds an index of filenames to a list of checked-in files with that name
|
||||
# Assumes we're already in the root directory
|
||||
function getGitFiles
|
||||
{
|
||||
$gitFiles = @{}
|
||||
foreach ($relativePath in (&$git ls-files))
|
||||
{
|
||||
$file = Get-Item $relativePath -Force
|
||||
if (! $gitFiles[$file.Name])
|
||||
{
|
||||
$gitFiles[$file.Name] = @()
|
||||
}
|
||||
$gitFiles[$file.Name] += @($file)
|
||||
}
|
||||
|
||||
return $gitFiles
|
||||
}
|
||||
|
||||
function getRootPath($config)
|
||||
{
|
||||
$root = (Get-Item $ConfigFile).Directory.FullName
|
||||
if ($config.relativeRoot)
|
||||
{
|
||||
return Resolve-Path (Join-Path $root $config.relativeRoot)
|
||||
}
|
||||
return $root
|
||||
}
|
||||
|
||||
function getTestPlatform
|
||||
{
|
||||
if ($Platform -eq "win32")
|
||||
{
|
||||
return "x86"
|
||||
}
|
||||
return $Platform
|
||||
}
|
||||
|
||||
main
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/bash
|
||||
# parameter is the file and path
|
||||
echo "$1 ${@:2}"
|
||||
powershell -NoProfile -ExecutionPolicy unrestricted -Command ". '$1' ${@:2}; exit $LASTEXITCODE"
|
|
@ -1,138 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<# .SYNOPSIS
|
||||
Cross-platform XESSerializeForPostbuild script. Checks if this build is the last running build, and then sets XESSERIALPOSTBUILDREADY to true.
|
||||
|
||||
.DESCRIPTION
|
||||
In-house implementation of XESSerializeForPostbuild step
|
||||
|
||||
.PARAMETER SerializeTaskName
|
||||
The name of this serialize task step in VSTS to query for.
|
||||
|
||||
.PARAMETER BuildId
|
||||
The id number of the build. By default, is set to env:BUILD_BUILDID
|
||||
|
||||
.PARAMETER AgentName
|
||||
The name of the agent that is registered with the pool. By default, set to env:AGENT_NAME
|
||||
|
||||
.PARAMETER TeamCollectionUri
|
||||
The uri of the collection, e.g. https://microsoft.visualstudio.com/. By default, is set to env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI
|
||||
|
||||
.PARAMETER TeamProject
|
||||
The name of the project, e.g. Apps. By default, is set to env:SYSTEM_TEAMPROJECT
|
||||
|
||||
.PARAMETER PatPath
|
||||
The path to a PAT token for making VSTS REST API calls.
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter()]
|
||||
[string]$SerializeTaskName = $env:TASK_DISPLAYNAME,
|
||||
[Parameter()]
|
||||
[string]$AgentName = $env:AGENT_NAME,
|
||||
[Parameter()]
|
||||
[string]$BuildId = $env:BUILD_BUILDID,
|
||||
[Parameter()]
|
||||
[string]$TeamCollectionUri = $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI,
|
||||
[Parameter()]
|
||||
[string]$TeamProject = $env:SYSTEM_TEAMPROJECT,
|
||||
[Parameter()]
|
||||
[string]$PatPath
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
$RestScript = [io.path]::combine($PSScriptRoot, "Invoke-VstsRestMethod.ps1")
|
||||
|
||||
function main
|
||||
{
|
||||
Write-Host @"
|
||||
Agent name: $AgentName
|
||||
Build id: $BuildId
|
||||
TeamcollectionUri: $TeamCollectionUri
|
||||
TeamProject: $TeamProject
|
||||
Serialize Task Name: $SerializeTaskName
|
||||
"@
|
||||
|
||||
if (isLastBuild)
|
||||
{
|
||||
# Set the serialize for postbuild env variable to true
|
||||
Write-Host @"
|
||||
This is the last build. Setting 'XESSERIALPOSTBUILDREADY' to true.
|
||||
##vso[task.setvariable variable=XESSERIALPOSTBUILDREADY]true
|
||||
"@
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "Not the last build. Moving on."
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
function isLastBuild
|
||||
{
|
||||
$buildInfo = getBuildInfo
|
||||
while (!(hasSerializeTaskDataInitialized $buildInfo))
|
||||
{
|
||||
Write-Host "Current machine does not have a start time yet for $SerializeTaskName. Waiting 10 seconds..."
|
||||
Start-Sleep -s 10 #poll every 10 seconds
|
||||
$buildInfo = getBuildInfo
|
||||
}
|
||||
|
||||
$serializeTaskList = getSerializeTasksFromBuildInfo $buildInfo
|
||||
$jobList = getJobsFromBuildInfo $buildInfo
|
||||
|
||||
$numberOfSerializeTasks = $serializeTaskList.Count
|
||||
$numberOfJobs = $jobList.Count
|
||||
|
||||
if ($numberOfSerializeTasks -lt $numberOfJobs)
|
||||
{
|
||||
Write-Host "Not all jobs initialized yet - only $numberOfSerializeTasks of $numberOfJobs"
|
||||
return $false
|
||||
}
|
||||
|
||||
$nullTaskList = $serializeTaskList | Where-Object {!$_.startTime} | Sort-Object workerName
|
||||
$sortedTaskList = $serializeTaskList | Where-Object {$_.startTime -ne $null} | Sort-Object startTime
|
||||
|
||||
Write-Verbose "null task list: $($nullTaskList | Out-String)"
|
||||
Write-Verbose "sorted task list: $($sortedTaskList | Out-String)"
|
||||
|
||||
return ($sortedTaskList[-1].workerName -eq $AgentName -and !$nullTaskList)
|
||||
}
|
||||
|
||||
function getBuildInfo
|
||||
{
|
||||
$uri = "$TeamCollectionUri`DefaultCollection/$TeamProject/_apis/build/builds/$BuildId/timeline?api-version=2.0"
|
||||
$buildInfo = . $RestScript -Uri $uri -PatPath $PatPath
|
||||
|
||||
Write-Verbose "result: $($buildInfo.records | Out-String)"
|
||||
return $buildInfo
|
||||
}
|
||||
|
||||
# There can only be one currently-running serialize task for this agent
|
||||
function hasSerializeTaskDataInitialized($buildInfo)
|
||||
{
|
||||
$serializeTaskList = getSerializeTasksFromBuildInfo $buildInfo
|
||||
foreach ($task in $serializeTaskList)
|
||||
{
|
||||
if ($task.workerName -match $AgentName -and $task.state -match "inProgress")
|
||||
{
|
||||
return ($task.startTime -ne $null)
|
||||
}
|
||||
}
|
||||
return $false
|
||||
}
|
||||
|
||||
function getSerializeTasksFromBuildInfo($buildInfo)
|
||||
{
|
||||
return $buildInfo.records | Where-Object {$_.type -match "Task" -and $_.name -match $SerializeTaskName}
|
||||
}
|
||||
|
||||
function getJobsFromBuildInfo($buildInfo)
|
||||
{
|
||||
return $buildInfo.records | Where-Object {$_.type -match "Job"}
|
||||
}
|
||||
|
||||
Main
|
|
@ -1,184 +0,0 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Summarizes test failures by analyzing the output .trx and .xml files.
|
||||
|
||||
.DESCRIPTION
|
||||
Provides
|
||||
|
||||
.PARAMETER ReportPath
|
||||
The folder to recursively search for .trx and .xml files
|
||||
|
||||
.INPUTS
|
||||
Example format of GoogleTest .xml files are:
|
||||
|
||||
<testsuites tests="268" failures="17" disabled="0" errors="0" timestamp="2018-03-01T15:09:46" time="22.15" name="AllTests">
|
||||
<testsuite name="SpectreIfStreamTest" tests="10" failures="8" disabled="0" errors="0" time="0.074">
|
||||
<testcase name="SpectreIfStreamTest_ReadWriteAccess__none" status="run" time="0" classname="SpectreIfStreamTest" />
|
||||
<testcase name="SpectreIfStreamTest_PositionAndLength__none" status="run" time="0.001" classname="SpectreIfStreamTest">
|
||||
<failure message="C:\BA\74\s\CoreUtils\Shared\TestUtils\cpp\Inc\TestUtils/BigparkUnitTest.h:219
 hit exception"></failure>
|
||||
...
|
||||
</testcase>
|
||||
...
|
||||
</testsuite>
|
||||
...
|
||||
</testsuites>
|
||||
|
||||
-----
|
||||
Example format of VSTest .trx files are:
|
||||
|
||||
<TestRun id="<guid>" name="bpbeibld@BP-SEGBUILD-20 2018-03-01 15:09:56" runUser="NORTHAMERICA\bpbeibld" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
|
||||
<Results>
|
||||
<UnitTestResult testName="InitialiseLoader_Default" computerName="BP-SEGBUILD-20" duration="00:00:00.0119040" outcome="Passed"/>
|
||||
<UnitTestResult testName="Loader_ConvertAsync" computerName="BP-SEGBUILD-20" duration="00:00:00.1728856" outcome="Failed">
|
||||
<Output>
|
||||
<ErrorInfo>
|
||||
<Message>Test method Lift.Spectre.Loader.Test.LoaderCSTests.Loader_ConvertAsync threw exception blah</Message>
|
||||
<StackTrace> at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) </StackTrace>
|
||||
</ErrorInfo>
|
||||
</Output>
|
||||
</UnitTestResult>
|
||||
...
|
||||
</Results>
|
||||
<TestDefinitions>
|
||||
<UnitTest name="InitialiseLoader_Default">
|
||||
<TestMethod className="Lift.Spectre.Loader.Test.LoaderCSTests"/>
|
||||
</UnitTest>
|
||||
...
|
||||
</TestDefinitions>
|
||||
<ResultSummary outcome="Failed">
|
||||
<Counters total="31" executed="31" passed="15" failed="16" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" />
|
||||
</ResultSummary>
|
||||
</TestRun>
|
||||
|
||||
Copyright (C) 2017 Microsoft.
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$ReportPath
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
function main()
|
||||
{
|
||||
Write-Host @"
|
||||
Note: to view errors in the Run Tests build task, search its log for [TEST FAILED] or [TEST BINARY FAILED] to in the log to find where we failed."
|
||||
This task is a summary of the erors hit."
|
||||
|
||||
Analyzing .xml and .trx files in $ReportPath
|
||||
"@
|
||||
|
||||
writeErrorsFromXmlFiles
|
||||
|
||||
# Make sure this task fails, but without extra write-error fluff
|
||||
exit 1
|
||||
}
|
||||
|
||||
function writeErrorsFromXmlFiles()
|
||||
{
|
||||
$gtestXmlPaths = Get-ChildItem -path $ReportPath -Include *.xml -Recurse | % { $_.FullName }
|
||||
$vstestTrxPaths = Get-ChildItem -path $ReportPath -Include *.trx -Recurse | % { $_.FullName }
|
||||
|
||||
foreach ($xmlPath in $gtestXmlPaths)
|
||||
{
|
||||
writeErrorsFromGTestXmlFile $xmlPath
|
||||
}
|
||||
foreach ($trxPath in $vstestTrxPaths)
|
||||
{
|
||||
writeErrorsFromTrxFile $trxPath
|
||||
}
|
||||
}
|
||||
|
||||
function writeErrorsFromGTestXmlFile($xmlPath)
|
||||
{
|
||||
Write-Verbose $xmlPath
|
||||
$testSuites = ([xml](Get-Content -LiteralPath $xmlPath)).testsuites.testsuite
|
||||
$failedTestSuites = $testSuites | Where-Object { $_.failures -gt 0 }
|
||||
$fullErrorMessage = @()
|
||||
|
||||
foreach ($testSuite in $failedTestSuites)
|
||||
{
|
||||
$failedTestCases = $testSuite.testcase | Where-Object { $_.failure -ne $null }
|
||||
$fullErrorMessage += @"
|
||||
|
||||
-----
|
||||
$($testSuite.name) (GoogleTest) contained $($testSuite.failures) failure(s) of $($testSuite.tests) tests
|
||||
"@
|
||||
|
||||
foreach ($testCase in $failedTestCases)
|
||||
{
|
||||
$fullErrorMessage += @"
|
||||
|
||||
$($testCase.name) in class $($testCase.classname) failed, duration $($testCase.time)
|
||||
"@
|
||||
$failures = $testCase.failure | Select-Object -Unique
|
||||
$failures | ForEach-Object {
|
||||
$errorMessage = $_.message -replace "`n", "`n`t"
|
||||
$fullErrorMessage += "
|
||||
|
||||
Error Message:
|
||||
$errorMessage
|
||||
"
|
||||
}
|
||||
}
|
||||
}
|
||||
writeMultilineMessage $fullErrorMessage
|
||||
}
|
||||
|
||||
function writeErrorsFromTrxFile($trxPath)
|
||||
{
|
||||
Write-Verbose $trxPath
|
||||
$testRun = ([xml](Get-Content -LiteralPath $trxPath)).TestRun
|
||||
$fullErrorMessage += @()
|
||||
|
||||
if ($testRun.ResultSummary.outcome -ne "Failed")
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
$testSuite = $testRun.TestDefinitions.UnitTest.TestMethod[0].className
|
||||
$buildMachine = $testRun.Results.UnitTestResult[0].computerName
|
||||
$totalNumTests = $testRun.ResultSummary.Counters.total
|
||||
$totalFailedTests = $testRun.ResultSummary.Counters.failed
|
||||
$fullErrorMessage += @"
|
||||
|
||||
-----
|
||||
$testSuite (vsTest) contained $totalFailedTests failure(s) of $totalNumTests tests, on build machine $buildMachine
|
||||
"@
|
||||
|
||||
$failedTestCases = $testRun.Results.UnitTestResult | Where-Object { $_.outcome -eq "Failed" }
|
||||
|
||||
foreach ($testCase in $failedTestCases)
|
||||
{
|
||||
$testCaseName = $testCase.testName
|
||||
$testCaseDuration = $testCase.duration
|
||||
$fullErrorMessage += @"
|
||||
|
||||
$testCaseName failed, duration: $testCaseDuration
|
||||
"@
|
||||
|
||||
$errorMessage = $testCase.Output.ErrorInfo.Message -replace "`n", "`n`t"
|
||||
$stackTrace = $testCase.Output.ErrorInfo.StackTrace -replace "`n", "`n`t"
|
||||
|
||||
$fullErrorMessage += @"
|
||||
|
||||
Error Message:
|
||||
$errorMessage
|
||||
Stack Trace:
|
||||
$stackTrace
|
||||
"@
|
||||
|
||||
}
|
||||
writeMultilineMessage $fullErrorMessage
|
||||
}
|
||||
|
||||
function writeMultilineMessage([string]$message)
|
||||
{
|
||||
foreach ($line in $message.Split("`n"))
|
||||
{
|
||||
Write-Host $line
|
||||
}
|
||||
}
|
||||
|
||||
main
|
|
@ -1,124 +0,0 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Uninstalls all passed-in appx files, removing packages that take these on as dependencies if necessary.
|
||||
|
||||
.PARAMETER AppxFiles
|
||||
The list of appx files to uninstall.
|
||||
|
||||
.PARAMETER DeviceIp
|
||||
If passed in, we'll use WinAppDeploy to remove the files on the device at this IP.
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String[]]$AppxFiles,
|
||||
[Parameter()]
|
||||
[String]$DeviceIp
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$Verbose = [bool]$PSBoundParameters["Verbose"]
|
||||
|
||||
$GetAppxDetailsFromFile = "$PSScriptRoot/Get-AppxDetailsFromFile.ps1"
|
||||
$WinAppDeploy = "$PSScriptRoot/WinAppDeploy.ps1"
|
||||
|
||||
function main
|
||||
{
|
||||
$appxPackageNames = $AppxFiles | Foreach-Object { (. $GetAppxDetailsFromFile $_).Package.Identity.Name }
|
||||
if ($DeviceIp)
|
||||
{
|
||||
removeDevicePackagesWithNames $appxPackageNames
|
||||
}
|
||||
else
|
||||
{
|
||||
getAllAppxPackages | Where-Object { $appxPackageNames -contains $_.Name } | Remove-AppxPackage -Verbose:$Verbose -ErrorAction Ignore | Write-Verbose
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function removeDevicePackagesWithNames($names)
|
||||
{
|
||||
$installedPackages = . $WinAppDeploy -DeviceIp $DeviceIp -Command list
|
||||
foreach ($name in $names)
|
||||
{
|
||||
$installedPackages = removeDevicePackageWithName $name $installedPackages
|
||||
}
|
||||
}
|
||||
|
||||
function removeDevicePackageWithName($name, $installedPackages)
|
||||
{
|
||||
if ($name -eq "Microsoft.VCLibs.140.00")
|
||||
{
|
||||
Write-Verbose "The system depends on $name so we can't uninstall it. If a test relies on a different version of this package we're out of luck."
|
||||
return $installedPackages
|
||||
}
|
||||
|
||||
$package = $installedPackages | Where-Object { $_.StartsWith("${name}_") }
|
||||
if (! $package)
|
||||
{
|
||||
Write-Verbose "Package $name is not installed."
|
||||
return $installedPackages
|
||||
}
|
||||
if ($package.Count -gt 1)
|
||||
{
|
||||
Write-Error "Multiple [$name] packages installed: [$package]"
|
||||
}
|
||||
|
||||
# We'll be removing this so remove it from the list of packages we have installed
|
||||
$installedPackages = $installedPackages | Where-Object { $_ -ne $package }
|
||||
|
||||
try
|
||||
{
|
||||
tryRemoveDevicePackage $package
|
||||
}
|
||||
catch
|
||||
{
|
||||
# If other packages have this package as a dependency the uninstall will fail.
|
||||
# In that case remove those packages. Windows will then automatically uninstall this package.
|
||||
$namesWithDependencies = extractPackageNamesWithDependenciesFromErrorMessage $_.exception.message
|
||||
if (! $namesWithDependencies)
|
||||
{
|
||||
throw
|
||||
}
|
||||
|
||||
foreach ($nameWithDependency in $namesWithDependencies)
|
||||
{
|
||||
$installedPackages = removeDevicePackageWithName $nameWithDependency $installedPackages
|
||||
}
|
||||
}
|
||||
|
||||
return $installedPackages
|
||||
}
|
||||
|
||||
function extractPackageNamesWithDependenciesFromErrorMessage($errorMessage)
|
||||
{
|
||||
if ($errorMessage -match "package\(s\)\s+(.+?)\s+currently depends on the framework")
|
||||
{
|
||||
return $matches[1] -split "\s+"
|
||||
}
|
||||
|
||||
return @()
|
||||
}
|
||||
|
||||
function tryRemoveDevicePackage($package)
|
||||
{
|
||||
. $WinAppDeploy -DeviceIp $DeviceIp -Command uninstall -AdditionalArgs @("-package", $package) | Write-Verbose
|
||||
}
|
||||
|
||||
# We can only get appx packages installed for other users if we're admin. Try
|
||||
# that first, but if it fails we're probably still ok so fall back to just
|
||||
# uninstalling packages we have access to.
|
||||
function getAllAppxPackages
|
||||
{
|
||||
try
|
||||
{
|
||||
return Get-AppxPackage -AllUsers
|
||||
}
|
||||
catch
|
||||
{
|
||||
return Get-AppxPackage
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
main
|
|
@ -1,175 +0,0 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Updates all projects to use the passed-in nuget package closure.
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[Hashtable]$NuGetPackageClosure,
|
||||
[Parameter()]
|
||||
[String]$SourceDirectory,
|
||||
[Parameter()]
|
||||
[String]$ExcludeFolders = "Build\packages"
|
||||
)
|
||||
|
||||
if (! $SourceDirectory) {
|
||||
$SourceDirectory = (Get-Item $PSScriptRoot).Parent.Parent.FullName
|
||||
}
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
|
||||
function main
|
||||
{
|
||||
updatePackagesConfigVersions
|
||||
updateVcxprojVersions
|
||||
updateProjectJsonVersions
|
||||
updateCsprojVersions
|
||||
}
|
||||
|
||||
function updatePackagesConfigVersions
|
||||
{
|
||||
Write-Verbose "Updating the version for packages.config files"
|
||||
|
||||
foreach ($file in (getFiles "packages.config"))
|
||||
{
|
||||
Write-Verbose $file
|
||||
|
||||
[xml]$xml = Get-Content $file
|
||||
|
||||
foreach ($package in $xml.packages.package)
|
||||
{
|
||||
$newVersion = $NuGetPackageClosure[$package.id]
|
||||
if ($newVersion)
|
||||
{
|
||||
if ($newVersion -eq $package.version)
|
||||
{
|
||||
Write-Verbose "$($package.id) is already at desired package version $newVersion"
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Verbose "Updating $($package.id) from $($package.version) to $newVersion"
|
||||
$package.version = $newVersion
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Verbose "No version provided for $($package.id), so just using the checked-in version."
|
||||
}
|
||||
}
|
||||
$xml.Save($file)
|
||||
}
|
||||
}
|
||||
|
||||
function updateVcxprojVersions
|
||||
{
|
||||
Write-Verbose "Updating the version for vcxproj files"
|
||||
|
||||
foreach ($file in (getFiles "*.vcxproj"))
|
||||
{
|
||||
Write-Verbose $file
|
||||
|
||||
[xml]$xml = Get-Content $file
|
||||
$attributes = $xml.SelectNodes("//*[local-name()='Import' or local-name()='Error']/attribute::*[local-name()='Text' or local-name()='Condition' or local-name()='Project']")
|
||||
|
||||
foreach ($attribute in $attributes)
|
||||
{
|
||||
foreach ($package in $NuGetPackageClosure.Keys)
|
||||
{
|
||||
$attribute.Value = updateProjectVersionNumber $attribute.Value $package $NuGetPackageClosure[$package]
|
||||
}
|
||||
}
|
||||
|
||||
$xml.Save($file)
|
||||
}
|
||||
}
|
||||
|
||||
function updateCsprojVersions
|
||||
{
|
||||
Write-Verbose "Updating the version for csproj files"
|
||||
|
||||
foreach ($file in (getFiles "*.csproj"))
|
||||
{
|
||||
Write-Verbose $file
|
||||
|
||||
[xml]$xml = Get-Content $file
|
||||
|
||||
$nodes = $xml.SelectNodes("//*[local-name()='HintPath' or local-name()='Reference/HintPath']")
|
||||
$attributes = $xml.SelectNodes("//*[local-name()='Import' or local-name()='Error' or local-name()='Reference/HintPath']/attribute::*[local-name()='Text' or local-name()='Condition' or local-name()='Project']")
|
||||
|
||||
foreach ($attribute in $attributes)
|
||||
{
|
||||
foreach ($package in $NuGetPackageClosure.Keys)
|
||||
{
|
||||
$attribute.Value = updateProjectVersionNumber $attribute.Value $package $NuGetPackageClosure[$package]
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($node in $nodes)
|
||||
{
|
||||
foreach ($package in $NuGetPackageClosure.Keys)
|
||||
{
|
||||
$node.'#text' = updateProjectVersionNumber $node.'#text' $package $NuGetPackageClosure[$package]
|
||||
}
|
||||
}
|
||||
|
||||
$xml.Save($file)
|
||||
}
|
||||
}
|
||||
|
||||
function updateProjectJsonVersions
|
||||
{
|
||||
Write-Verbose "Updating the version for project.json files"
|
||||
|
||||
foreach ($file in (getFiles "project.json"))
|
||||
{
|
||||
Write-Verbose $file
|
||||
|
||||
$json = Get-Content $file | ConvertFrom-Json
|
||||
|
||||
foreach ($package in $NuGetPackageClosure.Keys)
|
||||
{
|
||||
if ($json.dependencies.$package)
|
||||
{
|
||||
$json.dependencies.$package = $NuGetPackageClosure[$package]
|
||||
}
|
||||
}
|
||||
|
||||
$json | ConvertTo-Json -Depth 100 | Out-File $file -Force -Encoding ascii
|
||||
}
|
||||
}
|
||||
|
||||
# .csproj, vcxproj, etc. files contain text lines pointing to nuget packages
|
||||
# use regex replace to have these point to the updated nuget packages
|
||||
function updateProjectVersionNumber($string, $packageName, $newVersion)
|
||||
{
|
||||
$escapedPackage = [Regex]::Escape($packageName)
|
||||
$newString = $string -replace "\\$escapedPackage\.(\d+\.[0-9a-z\.\-]+)\\", "\$packageName.$newVersion\"
|
||||
if ($newString -ne $string)
|
||||
{
|
||||
Write-Verbose "Replacing $packageName version:`n$string`n$newString"
|
||||
}
|
||||
return $newString
|
||||
}
|
||||
|
||||
function getFiles($searchPattern)
|
||||
{
|
||||
$files = Get-ChildItem $SourceDirectory -Recurse -Include $searchPattern
|
||||
$fileNames = $files | Foreach-Object { $_.FullName }
|
||||
return $fileNames | Where-Object { ! (shouldIgnoreFile $_) }
|
||||
}
|
||||
|
||||
function shouldIgnoreFile($fileName)
|
||||
{
|
||||
foreach ($excludeFolder in ($ExcludeFolders.Split(";") | Where-Object { $_ }))
|
||||
{
|
||||
if ($fileName.Contains($excludeFolder))
|
||||
{
|
||||
Write-Verbose "Ignoring $fileName due to exclusion folder $ignore"
|
||||
return $true
|
||||
}
|
||||
}
|
||||
|
||||
return $false
|
||||
}
|
||||
|
||||
main
|
|
@ -1,29 +0,0 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Runs WinAppDeployCmd to deploy to a specific device.
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory)]
|
||||
[String]$DeviceIp,
|
||||
[Parameter(Mandatory)]
|
||||
[String]$Command,
|
||||
[Parameter()]
|
||||
[String[]]$AdditionalArgs = @()
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$WinAppDeployCmd = "C:\Program Files (x86)\Windows Kits\10\bin\x86\WinAppDeployCmd.exe"
|
||||
|
||||
function main
|
||||
{
|
||||
$allArgs = @($Command, "-ip", $DeviceIp) + $AdditionalArgs
|
||||
Write-Verbose "$WinAppDeployCmd $allArgs"
|
||||
&$WinAppDeployCmd $allArgs | Tee-Object -Variable deployOutput
|
||||
if (! $?)
|
||||
{
|
||||
Write-Error "Error running [$WinAppDeployCmd $allArgs]: $($deployOutput -join "`n")"
|
||||
}
|
||||
}
|
||||
|
||||
main
|
145
androidbuild.ps1
145
androidbuild.ps1
|
@ -1,145 +0,0 @@
|
|||
<#
|
||||
/**************************************************************
|
||||
* *
|
||||
# Copyright (c) Microsoft Corporation. All rights reserved. *
|
||||
# Licensed under the MIT License. *
|
||||
* *
|
||||
**************************************************************/
|
||||
.SYNOPSIS
|
||||
Invokes CMake to build GLTFSDK for android targets.
|
||||
This should be run after every git pull or clean and should be safe to run any time.
|
||||
|
||||
.DESCRIPTION
|
||||
It first creates ninja files as native build target. Then invokes ninja to kick off
|
||||
actual build process.
|
||||
Assumes, CMake, ninja and Android-ndk are available.
|
||||
|
||||
.EXAMPLE
|
||||
androidbuild.ps1 -arm64
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[switch]$Clean,
|
||||
[switch]$Rebuild,
|
||||
[switch]$NoUnitTests,
|
||||
[switch]$arm64,
|
||||
[switch]$arm32,
|
||||
[switch]$x86,
|
||||
[switch]$x86_64,
|
||||
[switch]$NoDebug
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
if($NoDebug) {$BuildType = "Release"} else { $BuildType = "Debug"}
|
||||
|
||||
function GenerateNinjaFiles()
|
||||
{
|
||||
$AndroidABI = findABI
|
||||
$BuildDirName = getBuildDirName
|
||||
Write-Host "Generating Android ninja files for $AndroidABI"
|
||||
New-Item -Path "$PSScriptRoot\Built\Int" -Name $BuildDirName -ItemType Directory -Force | Out-Null
|
||||
Push-Location "$PSScriptRoot\Built\Int\$BuildDirName" | Out-Null
|
||||
|
||||
try
|
||||
{
|
||||
if (Test-Path Env:ANDROID_HOME)
|
||||
{
|
||||
$AndroidNDKRoot = "$Env:ANDROID_HOME\ndk-bundle"
|
||||
}
|
||||
else
|
||||
{
|
||||
$Appdata = [Environment]::GetFolderPath('ApplicationData')
|
||||
$AndroidNDKRoot = "$Appdata\..\Local\Android\Sdk\ndk-bundle"
|
||||
}
|
||||
|
||||
$AndroidToolChain = "$AndroidNDKRoot\build\cmake\android.toolchain.cmake"
|
||||
$AndroidPlatform = "android-19"
|
||||
|
||||
if ($NoUnitTests)
|
||||
{
|
||||
$ENABLE_UNIT_TESTS = "OFF"
|
||||
}
|
||||
else
|
||||
{
|
||||
$ENABLE_UNIT_TESTS = "ON"
|
||||
}
|
||||
|
||||
cmake ..\..\.. -DANDROID_ABI="$AndroidABI" -DANDROID_PLATFORM="$AndroidPlatform" -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=intermediates -DCMAKE_BUILD_TYPE="$BuildType" -DANDROID_NDK="$AndroidNDKRoot" -DCMAKE_TOOLCHAIN_FILE="$AndroidToolChain" -DCMAKE_CXX_FLAGS=-fexceptions -DANDROID_STL=c++_static -GNinja -DANDROID_OS_PLATFORM=ANDROID -DENABLE_UNIT_TESTS="$ENABLE_UNIT_TESTS" | Write-Host
|
||||
}
|
||||
finally
|
||||
{
|
||||
Pop-Location | Out-Null
|
||||
}
|
||||
}
|
||||
|
||||
function BuildTarget()
|
||||
{
|
||||
$BuildDirName = getBuildDirName
|
||||
Push-Location "$PSScriptRoot\Built\Int\$BuildDirName" | Out-Null
|
||||
try
|
||||
{
|
||||
cmake --build . --target install --config "$BuildType"
|
||||
}
|
||||
finally
|
||||
{
|
||||
Pop-Location | Out-Null
|
||||
}
|
||||
}
|
||||
|
||||
function cleanAllTargets()
|
||||
{
|
||||
Remove-Item "$PSScriptRoot\Built" -Recurse -Force -ErrorAction Ignore | Write-Host
|
||||
}
|
||||
|
||||
function cleanTarget()
|
||||
{
|
||||
# Delete both compilation and installation directories.
|
||||
$BuildDirName = getBuildDirName
|
||||
Remove-Item "$PSScriptRoot\Built\Int\$BuildDirName" -Recurse -Force -ErrorAction Ignore | Write-Host
|
||||
Remove-Item "$PSScriptRoot\Built\Out\$BuildDirName\$BuildType" -Recurse -Force -ErrorAction Ignore | Write-Host
|
||||
}
|
||||
|
||||
function findABI()
|
||||
{
|
||||
$ABI = "x86"
|
||||
if($arm32)
|
||||
{
|
||||
$ABI = "armeabi-v7a"
|
||||
}
|
||||
elseif($arm64)
|
||||
{
|
||||
$ABI = "arm64-v8a"
|
||||
}
|
||||
elseif($x86_64)
|
||||
{
|
||||
$abi = "x86_64"
|
||||
}
|
||||
return $ABI
|
||||
}
|
||||
|
||||
function getBuildDirName()
|
||||
{
|
||||
$AndroidABI = findABI
|
||||
$BuildDirName = "android_$AndroidABI"
|
||||
return $BuildDirName
|
||||
}
|
||||
|
||||
function Main()
|
||||
{
|
||||
if($Clean)
|
||||
{
|
||||
cleanTarget
|
||||
}
|
||||
else
|
||||
{
|
||||
if($Rebuild)
|
||||
{
|
||||
cleanTarget
|
||||
}
|
||||
GenerateNinjaFiles
|
||||
BuildTarget
|
||||
}
|
||||
}
|
||||
|
||||
Main
|
130
macbuild.ps1
130
macbuild.ps1
|
@ -1,130 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Build the macOS projects from the command line.
|
||||
|
||||
.DESCRIPTION
|
||||
Builds the xcode projects generated by macinit.ps1
|
||||
|
||||
.PARAMETER NoNuGet
|
||||
Disable build of NuGet packages
|
||||
|
||||
.EXAMPLE
|
||||
macbuild.ps1
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[switch]$NoNuGet,
|
||||
[switch]$NoMacOS,
|
||||
[switch]$NoIOS,
|
||||
[switch]$NoSimulator,
|
||||
[switch]$NoDebug,
|
||||
[switch]$NoRelease
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
|
||||
function BuildMacOS()
|
||||
{
|
||||
Write-Host "Build macOS"
|
||||
Push-Location "$PSScriptRoot/Built/Int/cmake_macos"
|
||||
try
|
||||
{
|
||||
if (!$NoDebug)
|
||||
{
|
||||
cmake --build . --target install --config Debug
|
||||
}
|
||||
|
||||
if (!$NoRelease)
|
||||
{
|
||||
cmake --build . --target install --config Release
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
Pop-Location
|
||||
}
|
||||
}
|
||||
|
||||
function BuildIOS()
|
||||
{
|
||||
Write-Host "Build iOS"
|
||||
Push-Location "$PSScriptRoot/Built/Int/cmake_ios"
|
||||
try
|
||||
{
|
||||
if (!$NoDebug)
|
||||
{
|
||||
cmake --build . --target install --config Debug
|
||||
}
|
||||
|
||||
if (!$NoRelease)
|
||||
{
|
||||
cmake --build . --target install --config Release
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
Pop-Location
|
||||
}
|
||||
}
|
||||
|
||||
function BuildIOSSimulator()
|
||||
{
|
||||
Write-Host "Build iOS Simulator"
|
||||
Push-Location "$PSScriptRoot/Built/Int/cmake_ios_simulator"
|
||||
try
|
||||
{
|
||||
if (!$NoDebug)
|
||||
{
|
||||
cmake --build . --target install --config Debug
|
||||
}
|
||||
|
||||
if (!$NoRelease)
|
||||
{
|
||||
cmake --build . --target install --config Release
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
Pop-Location
|
||||
}
|
||||
}
|
||||
|
||||
function BuildMacOSNuGet()
|
||||
{
|
||||
nuget pack $PSScriptRoot/GLTFSDK/GLTFSDK.macOS.CPP.nuspec -OutputDirectory $PSScriptRoot/Built/Out/NuGet
|
||||
}
|
||||
|
||||
function BuildIOSNuGet()
|
||||
{
|
||||
nuget pack $PSScriptRoot/GLTFSDK/GLTFSDK.iOS.CPP.nuspec -OutputDirectory $PSScriptRoot/Built/Out/NuGet
|
||||
}
|
||||
|
||||
function Main()
|
||||
{
|
||||
if (!$NoMacOS)
|
||||
{
|
||||
BuildMacOS
|
||||
}
|
||||
|
||||
if (!$NoIOS)
|
||||
{
|
||||
BuildIOS
|
||||
}
|
||||
|
||||
if (!$NoSimulator)
|
||||
{
|
||||
BuildIOSSimulator
|
||||
}
|
||||
|
||||
if (!$NoNuGet)
|
||||
{
|
||||
BuildMacOSNuGet
|
||||
BuildIOSNuGet
|
||||
}
|
||||
}
|
||||
|
||||
Main
|
119
macinit.ps1
119
macinit.ps1
|
@ -1,119 +0,0 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Setup the xcode workspace for building on MacOS.
|
||||
This should be run after every git pull or clean and should be safe to run any time.
|
||||
|
||||
.DESCRIPTION
|
||||
Fetches NuGet packages and updates any configuration required for the xcode workspace to load and build.
|
||||
Could go so far as to update or generate the xcode projects if needed.
|
||||
|
||||
.EXAMPLE
|
||||
macosini.ps1
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[switch]$Clean,
|
||||
[switch]$NoMacOS,
|
||||
[switch]$NoIOS,
|
||||
[switch]$NoSimulator,
|
||||
[switch]$NoUnitTests
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "stop"
|
||||
|
||||
if ($NoUnitTests) {$ENABLE_UNIT_TESTS = "OFF"} else {$ENABLE_UNIT_TESTS = "ON"}
|
||||
|
||||
function CleanFiles()
|
||||
{
|
||||
Remove-Item "$PSScriptRoot/Build/packages" -Recurse -Force -ErrorAction Ignore | Write-Host
|
||||
Remove-Item "$PSScriptRoot/Built" -Recurse -Force -ErrorAction Ignore | Write-Host
|
||||
}
|
||||
|
||||
function RestoreNuGet()
|
||||
{
|
||||
Write-Host "Restoring NuGet packages"
|
||||
&"$PSScriptRoot/XPlatScripts/NuGet.macOS/NuGetRestore.ps1" -XCodeConfigFile "$PSScriptRoot/Built/Int/XCode.xcconfig" -PackagesDirectory "$PSScriptRoot/Build/packages" -PackagesConfigRoot "$PSScriptRoot/Build/macOSPackageRoot" -NugetConfigSource "$PSScriptRoot/NuGet.Config"
|
||||
}
|
||||
|
||||
function GenerateSpectreVersion()
|
||||
{
|
||||
Write-Host "Generating SpectreVersionInternal.h"
|
||||
&"$PSScriptRoot/Build/Scripts/VersionGeneratorAndModifier.ps1" -sourceDirectory $PSScriptRoot -Exclude "$PSScriptRoot/Build/packages;$PSScriptRoot/Build/NuGet/FBX" -ModifyCoAppPackages false -ModifyNuGetPackages false -ModifyWindowsStoreApps false -WriteVersionHeader true
|
||||
}
|
||||
|
||||
function GenerateProjectsMacOS()
|
||||
{
|
||||
Write-Host "Generate MacOS Projects"
|
||||
New-Item -Path "$PSScriptRoot/Built/Int" -Name cmake_macos -ItemType Directory -Force | Out-Null
|
||||
Push-Location "$PSScriptRoot/Built/Int/cmake_macos" | Out-Null
|
||||
try
|
||||
{
|
||||
cmake -G Xcode ../../.. -DENABLE_UNIT_TESTS="$ENABLE_UNIT_TESTS" | Write-Host
|
||||
}
|
||||
finally
|
||||
{
|
||||
Pop-Location | Out-Null
|
||||
}
|
||||
}
|
||||
|
||||
function GenerateProjectsIOS()
|
||||
{
|
||||
Write-Host "Generate iOS Projects"
|
||||
New-Item -Path "$PSScriptRoot/Built/Int" -Name cmake_ios -ItemType Directory -Force | Out-Null
|
||||
Push-Location "$PSScriptRoot/Built/Int/cmake_ios" | Out-Null
|
||||
try
|
||||
{
|
||||
cmake -G Xcode ../../.. -DCMAKE_TOOLCHAIN_FILE="$PSScriptRoot/Build/CMake/ios.toolchain.cmake" -DIOS_PLATFORM=OS -DIOS_DEPLOYMENT_TARGET="9.0" -DENABLE_UNIT_TESTS="$ENABLE_UNIT_TESTS" | Write-Host
|
||||
}
|
||||
finally
|
||||
{
|
||||
Pop-Location | Out-Null
|
||||
}
|
||||
}
|
||||
|
||||
function GenerateProjectsIOSSimulator()
|
||||
{
|
||||
Write-Host "Generate iOS Simulator Projects"
|
||||
New-Item -Path "$PSScriptRoot/Built/Int" -Name cmake_ios_simulator -ItemType Directory -Force | Out-Null
|
||||
Push-Location "$PSScriptRoot/Built/Int/cmake_ios_simulator" | Out-Null
|
||||
try
|
||||
{
|
||||
cmake -G Xcode ../../.. -DCMAKE_TOOLCHAIN_FILE="$PSScriptRoot/Build/CMake/ios.toolchain.cmake" -DIOS_PLATFORM=SIMULATOR64 -DIOS_DEPLOYMENT_TARGET="9.0" -DENABLE_UNIT_TESTS="$ENABLE_UNIT_TESTS" | Write-Host
|
||||
}
|
||||
finally
|
||||
{
|
||||
Pop-Location | Out-Null
|
||||
}
|
||||
}
|
||||
|
||||
function Main()
|
||||
{
|
||||
if ($Clean)
|
||||
{
|
||||
CleanFiles
|
||||
}
|
||||
RestoreNuGet
|
||||
GenerateSpectreVersion
|
||||
|
||||
if (!$NoMacOS)
|
||||
{
|
||||
GenerateProjectsMacOS
|
||||
}
|
||||
|
||||
if (!$NoIOS)
|
||||
{
|
||||
GenerateProjectsIOS
|
||||
}
|
||||
|
||||
if (!$NoSimulator)
|
||||
{
|
||||
GenerateProjectsIOSSimulator
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Main
|
Загрузка…
Ссылка в новой задаче