diff --git a/.nuke b/.nuke
index 1256cc3..4d60562 100644
Binary files a/.nuke and b/.nuke differ
diff --git a/ViGEmBus.sln b/ViGEmBus.sln
index a3b3627..e57c1c8 100644
--- a/ViGEmBus.sln
+++ b/ViGEmBus.sln
@@ -3,12 +3,12 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27130.2024
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = ".build", "build\.build.csproj", "{6DAE6010-3A66-4191-B462-60E82A0D0445}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ViGEmBus", "sys\ViGEmBus.vcxproj", "{040101B0-EE5C-4EF1-99EE-9F81C795C001}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ViGEmClient", "lib\ViGEmClient.vcxproj", "{7DB06674-1F4F-464B-8E1C-172E9587F9DC}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "build\_build.csproj", "{148E5E2E-2613-4EA5-AB8F-D93747E927E3}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug (dynamic)|ARM = Debug (dynamic)|ARM
@@ -37,54 +37,6 @@ Global
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (dynamic)|ARM.ActiveCfg = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (dynamic)|ARM.Build.0 = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (dynamic)|ARM64.ActiveCfg = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (dynamic)|ARM64.Build.0 = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (dynamic)|x64.ActiveCfg = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (dynamic)|x64.Build.0 = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (dynamic)|x86.ActiveCfg = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (dynamic)|x86.Build.0 = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (static)|ARM.ActiveCfg = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (static)|ARM.Build.0 = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (static)|ARM64.ActiveCfg = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (static)|ARM64.Build.0 = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (static)|x64.ActiveCfg = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (static)|x64.Build.0 = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (static)|x86.ActiveCfg = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug (static)|x86.Build.0 = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug|ARM.Build.0 = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug|ARM64.Build.0 = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug|x64.ActiveCfg = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug|x64.Build.0 = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug|x86.ActiveCfg = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Debug|x86.Build.0 = Debug|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (dynamic)|ARM.ActiveCfg = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (dynamic)|ARM.Build.0 = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (dynamic)|ARM64.ActiveCfg = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (dynamic)|ARM64.Build.0 = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (dynamic)|x64.ActiveCfg = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (dynamic)|x64.Build.0 = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (dynamic)|x86.ActiveCfg = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (dynamic)|x86.Build.0 = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (static)|ARM.ActiveCfg = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (static)|ARM.Build.0 = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (static)|ARM64.ActiveCfg = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (static)|ARM64.Build.0 = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (static)|x64.ActiveCfg = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (static)|x64.Build.0 = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (static)|x86.ActiveCfg = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release (static)|x86.Build.0 = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release|ARM.ActiveCfg = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release|ARM.Build.0 = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release|ARM64.ActiveCfg = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release|ARM64.Build.0 = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release|x64.ActiveCfg = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release|x64.Build.0 = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release|x86.ActiveCfg = Release|Any CPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}.Release|x86.Build.0 = Release|Any CPU
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug (dynamic)|ARM.ActiveCfg = Debug|ARM
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug (dynamic)|ARM.Build.0 = Debug|ARM
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug (dynamic)|ARM.Deploy.0 = Debug|ARM
@@ -197,6 +149,54 @@ Global
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release|x64.Build.0 = Release (static)|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release|x86.ActiveCfg = Release (static)|Win32
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release|x86.Build.0 = Release (static)|Win32
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (dynamic)|ARM.ActiveCfg = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (dynamic)|ARM.Build.0 = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (dynamic)|ARM64.ActiveCfg = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (dynamic)|ARM64.Build.0 = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (dynamic)|x64.ActiveCfg = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (dynamic)|x64.Build.0 = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (dynamic)|x86.ActiveCfg = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (dynamic)|x86.Build.0 = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (static)|ARM.ActiveCfg = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (static)|ARM.Build.0 = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (static)|ARM64.ActiveCfg = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (static)|ARM64.Build.0 = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (static)|x64.ActiveCfg = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (static)|x64.Build.0 = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (static)|x86.ActiveCfg = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug (static)|x86.Build.0 = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug|ARM.Build.0 = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug|x64.Build.0 = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Debug|x86.Build.0 = Debug|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (dynamic)|ARM.ActiveCfg = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (dynamic)|ARM.Build.0 = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (dynamic)|ARM64.ActiveCfg = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (dynamic)|ARM64.Build.0 = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (dynamic)|x64.ActiveCfg = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (dynamic)|x64.Build.0 = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (dynamic)|x86.ActiveCfg = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (dynamic)|x86.Build.0 = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (static)|ARM.ActiveCfg = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (static)|ARM.Build.0 = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (static)|ARM64.ActiveCfg = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (static)|ARM64.Build.0 = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (static)|x64.ActiveCfg = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (static)|x64.Build.0 = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (static)|x86.ActiveCfg = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release (static)|x86.Build.0 = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release|ARM.ActiveCfg = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release|ARM.Build.0 = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release|ARM64.Build.0 = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release|x64.ActiveCfg = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release|x64.Build.0 = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release|x86.ActiveCfg = Release|Any CPU
+ {148E5E2E-2613-4EA5-AB8F-D93747E927E3}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/build.ps1 b/build.ps1
index ec371c0..728f31b 100644
--- a/build.ps1
+++ b/build.ps1
@@ -1,10 +1,12 @@
[CmdletBinding()]
Param(
- [switch]$NoInit,
+ #[switch]$CustomParam,
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
[string[]]$BuildArguments
)
+Write-Output "Windows PowerShell $($Host.Version)"
+
Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { $host.SetShouldExit(1) }
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
@@ -12,41 +14,52 @@ $PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
# CONFIGURATION
###########################################################################
-$NuGetVersion = "latest"
-$SolutionDirectory = "$PSScriptRoot\..\ViGEm"
-$BuildProjectFile = "$PSScriptRoot\.\build\.build.csproj"
-$BuildExeFile = "$PSScriptRoot\.\build\bin\debug\.build.exe"
+$BuildProjectFile = "$PSScriptRoot\build\_build.csproj"
+$TempDirectory = "$PSScriptRoot\\.tmp"
-$TempDirectory = "$PSScriptRoot\.tmp"
+$DotNetGlobalFile = "$PSScriptRoot\\global.json"
+$DotNetInstallUrl = "https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/dotnet-install.ps1"
+$DotNetReleasesUrl = "https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json"
-$NuGetUrl = "https://dist.nuget.org/win-x86-commandline/$NuGetVersion/nuget.exe"
-$NuGetFile = "$TempDirectory\nuget.exe"
-$env:NUGET_EXE = $NuGetFile
+$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1
+$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
+$env:NUGET_XMLDOC_MODE = "skip"
###########################################################################
-# PREPARE BUILD
+# EXECUTION
###########################################################################
function ExecSafe([scriptblock] $cmd) {
& $cmd
- if ($LastExitCode -ne 0) { throw "The following call failed with exit code $LastExitCode. '$cmd'" }
+ if ($LASTEXITCODE) { exit $LASTEXITCODE }
}
-if (!$NoInit) {
+# If global.json exists, load expected version
+if (Test-Path $DotNetGlobalFile) {
+ $DotNetVersion = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json).sdk.version
+}
+
+# If dotnet is installed locally, and expected version is not set or installation matches the expected version
+if ((Get-Command "dotnet" -ErrorAction SilentlyContinue) -ne $null -and `
+ (!(Test-Path variable:DotNetVersion) -or $(& dotnet --version) -eq $DotNetVersion)) {
+ $env:DOTNET_EXE = (Get-Command "dotnet").Path
+}
+else {
+ $DotNetDirectory = "$TempDirectory\dotnet-win"
+ $env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe"
+
+ # If expected version is not set, get latest version
+ if (!(Test-Path variable:DotNetVersion)) {
+ $DotNetVersion = $(Invoke-WebRequest -UseBasicParsing $DotNetReleasesUrl | ConvertFrom-Json)[0]."version-sdk"
+ }
+
+ # Download and execute install script
+ $DotNetInstallFile = "$TempDirectory\dotnet-install.ps1"
md -force $TempDirectory > $null
-
- if (!(Test-Path $NuGetFile)) { (New-Object System.Net.WebClient).DownloadFile($NuGetUrl, $NuGetFile) }
- elseif ($NuGetVersion -eq "latest") { & $NuGetFile update -Self }
-
- ExecSafe { & $NuGetFile restore $BuildProjectFile -SolutionDirectory $SolutionDirectory }
- ExecSafe { & $NuGetFile install Nuke.MSBuildLocator -ExcludeVersion -OutputDirectory $TempDirectory -SolutionDirectory $SolutionDirectory }
+ (New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile)
+ ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath }
}
-$MSBuildFile = & "$TempDirectory\Nuke.MSBuildLocator\tools\Nuke.MSBuildLocator.exe"
-ExecSafe { & $MSBuildFile $BuildProjectFile }
+Write-Output "Microsoft (R) .NET Core SDK version $(& $env:DOTNET_EXE --version)"
-###########################################################################
-# EXECUTE BUILD
-###########################################################################
-
-ExecSafe { & $BuildExeFile $BuildArguments }
+ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile -- $BuildArguments }
diff --git a/build.sh b/build.sh
index c5d8219..7dfb86b 100644
--- a/build.sh
+++ b/build.sh
@@ -1,10 +1,12 @@
#!/usr/bin/env bash
-NOINIT=0
+echo $(bash --version 2>&1 | head -n 1)
+
+#CUSTOMPARAM=0
BUILD_ARGUMENTS=()
for i in "$@"; do
case $(echo $1 | awk '{print tolower($0)}') in
- -noinit) NOINIT=1;;
+ # -custom-param) CUSTOMPARAM=1;;
*) BUILD_ARGUMENTS+=("$1") ;;
esac
shift
@@ -17,34 +19,50 @@ SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
# CONFIGURATION
###########################################################################
-NUGET_VERSION="latest"
-SOLUTION_DIRECTORY="$SCRIPT_DIR/../ViGEm"
-BUILD_PROJECT_FILE="$SCRIPT_DIR/./build/.build.csproj"
-BUILD_EXE_FILE="$SCRIPT_DIR/./build/bin/Debug/.build.exe"
+BUILD_PROJECT_FILE="$SCRIPT_DIR/build/_build.csproj"
+TEMP_DIRECTORY="$SCRIPT_DIR//.tmp"
-TEMP_DIRECTORY="$SCRIPT_DIR/.tmp"
+DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json"
+DOTNET_INSTALL_URL="https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/dotnet-install.sh"
+DOTNET_RELEASES_URL="https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json"
-NUGET_URL="https://dist.nuget.org/win-x86-commandline/$NUGET_VERSION/nuget.exe"
-NUGET_FILE="$TEMP_DIRECTORY/nuget.exe"
-export NUGET_EXE="$NUGET_FILE"
+export DOTNET_CLI_TELEMETRY_OPTOUT=1
+export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
+export NUGET_XMLDOC_MODE="skip"
###########################################################################
-# PREPARE BUILD
+# EXECUTION
###########################################################################
-if ! ((NOINIT)); then
- mkdir -p "$TEMP_DIRECTORY"
+function FirstJsonValue {
+ perl -nle 'print $1 if m{"'$1'": "([^"\-]+)",?}' <<< ${@:2}
+}
- if [ ! -f "$NUGET_FILE" ]; then curl -Lsfo "$NUGET_FILE" $NUGET_URL;
- elif [ $NUGET_VERSION == "latest" ]; then mono "$NUGET_FILE" update -Self; fi
-
- mono "$NUGET_FILE" restore "$BUILD_PROJECT_FILE" -SolutionDirectory $SOLUTION_DIRECTORY
+# If global.json exists, load expected version
+if [ -f "$DOTNET_GLOBAL_FILE" ]; then
+ DOTNET_VERSION=$(FirstJsonValue "version" $(cat "$DOTNET_GLOBAL_FILE"))
fi
-msbuild "$BUILD_PROJECT_FILE"
+# If dotnet is installed locally, and expected version is not set or installation matches the expected version
+if [[ -x "$(command -v dotnet)" && (-z ${DOTNET_VERSION+x} || $(dotnet --version) == "$DOTNET_VERSION") ]]; then
+ export DOTNET_EXE="$(command -v dotnet)"
+else
+ DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix"
+ export DOTNET_EXE="$DOTNET_DIRECTORY/dotnet"
+
+ # If expected version is not set, get latest version
+ if [ -z ${DOTNET_VERSION+x} ]; then
+ DOTNET_VERSION=$(FirstJsonValue "version-sdk" $(curl -s "$DOTNET_RELEASES_URL"))
+ fi
+
+ # Download and execute install script
+ DOTNET_INSTALL_FILE="$TEMP_DIRECTORY/dotnet-install.sh"
+ mkdir -p "$TEMP_DIRECTORY"
+ curl -Lsfo "$DOTNET_INSTALL_FILE" "$DOTNET_INSTALL_URL"
+ chmod +x "$DOTNET_INSTALL_FILE"
+ "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --version "$DOTNET_VERSION" --no-path
+fi
-###########################################################################
-# EXECUTE BUILD
-###########################################################################
+echo "Microsoft (R) .NET Core SDK version $("$DOTNET_EXE" --version)"
-mono "$BUILD_EXE_FILE" ${BUILD_ARGUMENTS[@]}
+"$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" -- ${BUILD_ARGUMENTS[@]}
diff --git a/build/.build.csproj b/build/.build.csproj
deleted file mode 100644
index 6c96206..0000000
--- a/build/.build.csproj
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {6DAE6010-3A66-4191-B462-60E82A0D0445}
- Exe
-
- .build
- v4.6.1
- 512
- true
-
- CS0649;CS0169
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
- ..\..\ViGEm\packages\AutoMapper.6.0.2\lib\net45\AutoMapper.dll
-
-
- ..\..\ViGEm\packages\Colorful.Console.1.0.7\lib\net461\Colorful.Console.dll
-
-
- ..\..\ViGEm\packages\Glob.0.3.2\lib\net46\Glob.dll
-
-
- ..\..\ViGEm\packages\JetBrains.Annotations.10.4.0\lib\net\JetBrains.Annotations.dll
-
-
- ..\..\ViGEm\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll
-
-
- ..\..\ViGEm\packages\Newtonsoft.Json.Bson.1.0.1\lib\net45\Newtonsoft.Json.Bson.dll
-
-
- ..\..\ViGEm\packages\NuGet.Client.4.0.0\lib\net45\NuGet.Client.dll
-
-
- ..\..\ViGEm\packages\NuGet.Common.4.0.0\lib\net45\NuGet.Common.dll
-
-
- ..\..\ViGEm\packages\NuGet.ContentModel.4.0.0\lib\net45\NuGet.ContentModel.dll
-
-
- ..\..\ViGEm\packages\NuGet.Frameworks.4.0.0\lib\net45\NuGet.Frameworks.dll
-
-
- ..\..\ViGEm\packages\NuGet.Packaging.4.0.0\lib\net45\NuGet.Packaging.dll
-
-
- ..\..\ViGEm\packages\NuGet.Packaging.Core.4.0.0\lib\net45\NuGet.Packaging.Core.dll
-
-
- ..\..\ViGEm\packages\NuGet.Packaging.Core.Types.4.0.0\lib\net45\NuGet.Packaging.Core.Types.dll
-
-
- ..\..\ViGEm\packages\NuGet.Repositories.4.0.0\lib\net45\NuGet.Repositories.dll
-
-
- ..\..\ViGEm\packages\NuGet.RuntimeModel.4.0.0\lib\net45\NuGet.RuntimeModel.dll
-
-
- ..\..\ViGEm\packages\NuGet.Versioning.4.0.0\lib\net45\NuGet.Versioning.dll
-
-
- ..\..\ViGEm\packages\Nuke.Common.0.1.458\lib\net461\Nuke.Common.dll
-
-
- ..\..\ViGEm\packages\Nuke.Core.0.1.458\lib\net461\Nuke.Core.dll
-
-
- ..\..\ViGEm\packages\Octokit.0.24.0\lib\net45\Octokit.dll
-
-
-
-
- ..\..\ViGEm\packages\System.Diagnostics.Process.4.3.0\lib\net461\System.Diagnostics.Process.dll
-
-
-
-
-
- ..\..\ViGEm\packages\System.Runtime.Serialization.Formatters.4.3.0\lib\net46\System.Runtime.Serialization.Formatters.dll
-
-
- ..\..\ViGEm\packages\System.Runtime.Serialization.Primitives.4.3.0\lib\net46\System.Runtime.Serialization.Primitives.dll
-
-
- ..\..\ViGEm\packages\System.ValueTuple.4.3.0\lib\netstandard1.0\System.ValueTuple.dll
-
-
-
-
-
-
-
-
- ..\..\ViGEm\packages\YamlDotNet.4.2.1\lib\net35\YamlDotNet.dll
-
-
-
-
-
-
-
-
-
-
diff --git a/build/Build.cs b/build/Build.cs
index 9edb11d..ca58fe8 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -1,89 +1,74 @@
-using System;
-using System.IO;
+using System;
using System.Linq;
using Nuke.Common;
using Nuke.Common.Git;
-using Nuke.Common.Tools.GitVersion;
+using Nuke.Common.ProjectModel;
using Nuke.Common.Tools.MSBuild;
-using Nuke.Core;
+using static Nuke.Common.EnvironmentInfo;
+using static Nuke.Common.IO.FileSystemTasks;
+using static Nuke.Common.IO.PathConstruction;
using static Nuke.Common.Tools.MSBuild.MSBuildTasks;
-using static Nuke.Core.IO.FileSystemTasks;
-using static Nuke.Core.IO.PathConstruction;
-using static Nuke.Core.EnvironmentInfo;
class Build : NukeBuild
{
- // Console application entry. Also defines the default target.
public static int Main () => Execute(x => x.Compile);
- // Auto-injection fields:
+ [Solution] readonly Solution Solution;
+ [GitRepository] readonly GitRepository GitRepository;
- // [GitVersion] readonly GitVersion GitVersion;
- // Semantic versioning. Must have 'GitVersion.CommandLine' referenced.
-
- // [GitRepository] readonly GitRepository GitRepository;
- // Parses origin, branch name and head from git config.
-
- // [Parameter] readonly string MyGetApiKey;
- // Returns command-line arguments and environment variables.
+ AbsolutePath ArtifactsDirectory => RootDirectory / "artifacts";
Target Clean => _ => _
- .OnlyWhen(() => false) // Disabled for safety.
- .Executes(() =>
- {
- DeleteDirectories(GlobDirectories(SourceDirectory, "**/bin", "**/obj"));
- EnsureCleanDirectory(OutputDirectory);
- });
+ .Executes(() =>
+ {
+ EnsureCleanDirectory(ArtifactsDirectory);
+ });
Target Restore => _ => _
- .DependsOn(Clean)
- .Executes(() =>
- {
- MSBuild(s => DefaultMSBuildRestore.SetTargetPlatform(MSBuildTargetPlatform.x64));
- MSBuild(s => DefaultMSBuildRestore.SetTargetPlatform(MSBuildTargetPlatform.x86));
- });
+ .DependsOn(Clean)
+ .Executes(() =>
+ {
+ MSBuild(s => s
+ .SetTargetPath(SolutionFile)
+ .SetTargets("Restore")
+ .SetTargetPlatform(MSBuildTargetPlatform.x64));
+
+ MSBuild(s => s
+ .SetTargetPath(SolutionFile)
+ .SetTargets("Restore")
+ .SetTargetPlatform(MSBuildTargetPlatform.x86));
+ });
Target Compile => _ => _
- .DependsOn(Restore)
- .Executes(() =>
- {
- MSBuild(s => DefaultMSBuildCompile.SetTargetPlatform(MSBuildTargetPlatform.x64));
- MSBuild(s => DefaultMSBuildCompile.SetTargetPlatform(MSBuildTargetPlatform.x86));
+ .DependsOn(Restore)
+ .Executes(() =>
+ {
+ MSBuild(s => s
+ .SetTargetPath(SolutionFile)
+ .SetTargets("Rebuild")
+ .SetConfiguration(Configuration)
+ .SetMaxCpuCount(Environment.ProcessorCount)
+ .SetNodeReuse(IsLocalBuild)
+ .SetTargetPlatform(MSBuildTargetPlatform.x64));
- #region Ugly hack, fix me!
- EnsureExistingDirectory(Path.Combine(ArtifactsDirectory, @"x64"));
- EnsureExistingDirectory(Path.Combine(ArtifactsDirectory, @"x86"));
+ MSBuild(s => s
+ .SetTargetPath(SolutionFile)
+ .SetTargets("Rebuild")
+ .SetConfiguration(Configuration)
+ .SetMaxCpuCount(Environment.ProcessorCount)
+ .SetNodeReuse(IsLocalBuild)
+ .SetTargetPlatform(MSBuildTargetPlatform.x86));
+ });
- File.Copy(
- Path.Combine(WorkingDirectory, @"bin\x64\ViGEmBus.inf"),
- Path.Combine(ArtifactsDirectory, @"ViGEmBus.inf")
- );
-
- File.Copy(
- Path.Combine(WorkingDirectory, @"bin\x64\ViGEmBus.pdb"),
- Path.Combine(ArtifactsDirectory, @"x64\ViGEmBus.pdb")
- );
- File.Copy(
- Path.Combine(WorkingDirectory, @"bin\x64\ViGEmBus\ViGEmBus.sys"),
- Path.Combine(ArtifactsDirectory, @"x64\ViGEmBus.sys")
- );
- File.Copy(
- Path.Combine(WorkingDirectory, @"bin\x64\ViGEmBus\WdfCoinstaller01009.dll"),
- Path.Combine(ArtifactsDirectory, @"x64\WdfCoinstaller01009.dll")
- );
-
- File.Copy(
- Path.Combine(WorkingDirectory, @"bin\x86\ViGEmBus.pdb"),
- Path.Combine(ArtifactsDirectory, @"x86\ViGEmBus.pdb")
- );
- File.Copy(
- Path.Combine(WorkingDirectory, @"bin\x86\ViGEmBus\ViGEmBus.sys"),
- Path.Combine(ArtifactsDirectory, @"x86\ViGEmBus.sys")
- );
- File.Copy(
- Path.Combine(WorkingDirectory, @"bin\x86\ViGEmBus\WdfCoinstaller01009.dll"),
- Path.Combine(ArtifactsDirectory, @"x86\WdfCoinstaller01009.dll")
- );
- #endregion
- });
+ private Target Pack => _ => _
+ .DependsOn(Compile)
+ .Executes(() =>
+ {
+ MSBuild(s => s
+ .SetTargetPath(SolutionFile)
+ .SetTargets("Restore", "Pack")
+ .SetPackageOutputPath(ArtifactsDirectory)
+ .SetConfiguration(Configuration)
+ .EnableIncludeSymbols());
+ });
}
diff --git a/build/_build.csproj b/build/_build.csproj
new file mode 100644
index 0000000..3ce5270
--- /dev/null
+++ b/build/_build.csproj
@@ -0,0 +1,34 @@
+
+
+
+ Exe
+ netcoreapp2.0
+ false
+
+ False
+ CS0649;CS0169
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/packages.config b/build/packages.config
deleted file mode 100644
index 491a6ea..0000000
--- a/build/packages.config
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/lib/ViGEmClient.vcxproj b/lib/ViGEmClient.vcxproj
index 57fbbe5..3c9995f 100644
--- a/lib/ViGEmClient.vcxproj
+++ b/lib/ViGEmClient.vcxproj
@@ -38,7 +38,12 @@
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}
Win32Proj
ViGEmClient
- 10.0.16299.0
+
+
+
+ $([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0'))
+ $(LatestTargetPlatformVersion)
+ $(WindowsTargetPlatformVersion)