mirror of
https://github.com/nefarius/ViGEmBus.git
synced 2025-08-10 00:52:17 +00:00
Merge branch 'master' into feature/api/vigem_target_x360_get_user_index
This commit is contained in:
29
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
29
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior (example):
|
||||
1. Start program '...'
|
||||
2. Click on '....'
|
||||
3. Plug in device '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**System details (please complete the following information):**
|
||||
- OS: [e.g. Windows 10 1803]
|
||||
- Feeder software: [e.g. VDX, DS4Windows, ...]
|
||||
- Driver Version: [e.g. 1.14.3.0]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
17
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
17
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
7
.github/ISSUE_TEMPLATE/you-need-support.md
vendored
Normal file
7
.github/ISSUE_TEMPLATE/you-need-support.md
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
name: You need support
|
||||
about: This is the wrong place to ask for support
|
||||
|
||||
---
|
||||
|
||||
**Please don't abuse the issue tracker as a helpdesk!** We have a Discord server (linked in the README) where you can ask the lovely like-minded folks for assistance. Thank you for your compliance :smiley:
|
||||
1
.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
vendored
Normal file
1
.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
vendored
Normal file
@@ -0,0 +1 @@
|
||||
# TBD :smiley:
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -26,3 +26,4 @@
|
||||
/.vs/config
|
||||
/sys/RCa21300
|
||||
/sys/RCb21300
|
||||
/build/*.dotsettings
|
||||
|
||||
57
README.md
57
README.md
@@ -6,18 +6,63 @@ Windows kernel-mode driver emulating well-known USB game controllers.
|
||||
)](https://ci.appveyor.com/project/nefarius/indicium-supra) [](https://discord.gg/QTJpBX5) [](https://vigem.org/) [](<https://paypal.me/NefariusMaximus>) [](<https://www.patreon.com/nefarius>) [](https://github.com/nefarius) [](https://twitter.com/nefariusmaximus)
|
||||
|
||||
## About
|
||||
Currently supports emulation of the following USB gamepads:
|
||||
**Disclaimer:** this project is for software developers. To make it do something useful you'll also need a [feeder application](<https://docs.vigem.org/#!vigem-feeder.md>).
|
||||
|
||||
The `ViGEmBus` driver and `ViGEmClient` libraries represent the core of the Virtual Gamepad Emulation Framework (or `ViGEm` , for short). `ViGEm` aims for a 100% accurate [emulation](<https://en.wikipedia.org/wiki/Emulator>) of well-known gaming peripherals as pure software-based devices at kernel level. As it mimics "the real thing" games and other processes require no additional modification whatsoever to detect `ViGEm`-based devices (no Proxy-DLLs or API-Hooking) and simply work out of the box. While the (now obsolete) [Scarlett.Crush Productions Virtual Bus Driver](<https://github.com/nefarius/ScpVBus>) is the spiritual father of this project, `ViGEm` has been designed and written from the ground up utilizing Microsoft's [Kernel-Mode Driver Framework](https://en.wikipedia.org/wiki/Kernel-Mode_Driver_Framework).
|
||||
|
||||
### Emulated devices
|
||||
Currently supports emulation of the following USB Gamepads:
|
||||
- [Microsoft Xbox 360 Controller](https://en.wikipedia.org/wiki/Xbox_360_controller)
|
||||
- [Sony DualShock 4 Controller](https://en.wikipedia.org/wiki/DualShock#DualShock_4)
|
||||
- [Microsoft Xbox One Controller](https://en.wikipedia.org/wiki/Xbox_One_Controller)
|
||||
- Experimental; not ready for stable release yet
|
||||
|
||||
## Necessary preparations for Windows 7
|
||||
## Use cases
|
||||
A few examples of the most common use cases for `ViGEm` are:
|
||||
* You have an unsupported input device you'd like to use within games without modifying said game.
|
||||
* You want the freedom to use a different controller of your choice in [PS4 Remote Play](<https://remoteplay.dl.playstation.net/remoteplay/>).
|
||||
* You encountered a game not compatible with [x360ce](<https://www.x360ce.com/>).
|
||||
* You want to extend the reach of your input device (like send traffic to a different machine over a network).
|
||||
* You want to test/benchmark your game and need a replay mechanism for your user inputs.
|
||||
* You want to work around player slot assignment order issues in `XInput`.
|
||||
|
||||
## Supported Systems
|
||||
The driver is built for Windows 7/8/8.1/10 (x86 and amd64).
|
||||
|
||||
## How to build
|
||||
|
||||
### Prerequisites
|
||||
- Visual Studio **2017** ([Community Edition](https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=Community&rel=15) is just fine)
|
||||
- [WDK for Windows 10, version 1803](https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit)
|
||||
|
||||
You can either build directly within Visual Studio or in PowerShell by running the build script:
|
||||
|
||||
```
|
||||
.\build.ps1 -configuration release
|
||||
```
|
||||
|
||||
Do bear in mind that you'll need to sign the driver to use it without [test mode](<https://technet.microsoft.com/en-us/ff553484(v=vs.96)>).
|
||||
|
||||
## Installation
|
||||
To grab the latest signed binaries for use or redistribution [follow the installation instructions](<https://docs.vigem.org/#!vigem-bus-driver-installation.md>).
|
||||
|
||||
### Necessary preparations for Windows 7
|
||||
Before installing the bus driver on Windows 7 (x86 or x64) the following 3rd party software has to be installed:
|
||||
* [Xbox 360 Accessories Software 1.2](https://www.microsoft.com/accessories/en-us/products/gaming/xbox-360-controller-for-windows/52a-00004#techspecs-connect) (contains the missing device drivers)
|
||||
* [Microsoft Security Advisory 3033929 Update](https://technet.microsoft.com/en-us/library/security/3033929) has to be installed to support the drivers signature. Download links:
|
||||
* [Security Update for Windows 7 (KB3033929)](https://www.microsoft.com/en-us/download/details.aspx?id=46078)
|
||||
* [Security Update for Windows 7 for x64-based Systems (KB3033929)](https://www.microsoft.com/en-us/download/details.aspx?id=46148)
|
||||
|
||||
## Installation
|
||||
[Follow the installation instructions](https://github.com/nefarius/ViGEm/wiki/Driver-Installation).
|
||||
## Sponsors
|
||||
- [3dRudder](https://www.3drudder.com/)
|
||||
- [Wohlfeil.IT e.U.](https://wohlfeil.it/)
|
||||
- [Parsec](https://parsecgaming.com/)
|
||||
- [Rainway, Inc](https://rainway.io/)
|
||||
|
||||
## Known users of ViGEm
|
||||
- [3dRudder](https://www.3drudder.com/)
|
||||
- [Parsec](https://parsecgaming.com/)
|
||||
- [GloSC](https://github.com/Alia5/GloSC)
|
||||
- [UCR](https://github.com/Snoothy/UCR)
|
||||
- [InputMapper](https://inputmapper.com/)
|
||||
- [Oculus VR, LLC.](https://www.oculus.com/)
|
||||
- [Rainway, Inc](https://rainway.io/)
|
||||
- [WiimoteHook](https://forum.cemu.info/showthread.php/140-WiimoteHook-Nintendo-Wii-Remote-with-Motion-Rumble-and-Nunchuk-support)
|
||||
|
||||
100
ViGEmBus.sln
100
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
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
version: 1.16.{build}.0
|
||||
image: Previous Visual Studio 2017
|
||||
image: Visual Studio 2017
|
||||
build_script:
|
||||
- ps: .\build.ps1 -configuration release
|
||||
after_build:
|
||||
- ps: |
|
||||
Invoke-WebRequest "https://github.com/pavel-a/ddverpatch/files/1215010/verpatch-1.0.15.1-x86-codeplex.zip" -OutFile verpatch-1.0.15.1-x86-codeplex.zip
|
||||
Invoke-WebRequest "https://downloads.vigem.org/other/pavel-a/ddverpatch/verpatch-1.0.15.1-x86-codeplex.zip" -OutFile verpatch-1.0.15.1-x86-codeplex.zip
|
||||
Expand-Archive verpatch-1.0.15.1-x86-codeplex.zip -DestinationPath .
|
||||
.\verpatch.exe .\artifacts\x64\ViGEmBus.sys "$env:APPVEYOR_BUILD_VERSION"
|
||||
.\verpatch.exe .\artifacts\x64\ViGEmBus.sys /pv "$env:APPVEYOR_BUILD_VERSION"
|
||||
@@ -16,4 +16,6 @@ artifacts:
|
||||
name: ViGEmBus_unsigned_x86_amd64
|
||||
deploy:
|
||||
- provider: Environment
|
||||
name: BUILDBOT
|
||||
name: BUILDBOT
|
||||
on:
|
||||
appveyor_repo_tag: true
|
||||
63
build.ps1
63
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 }
|
||||
|
||||
62
build.sh
62
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[@]}
|
||||
|
||||
@@ -1,128 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{6DAE6010-3A66-4191-B462-60E82A0D0445}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<RootNamespace></RootNamespace>
|
||||
<AssemblyName>.build</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<TargetFrameworkProfile />
|
||||
<NoWarn>CS0649;CS0169</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="AutoMapper, Version=6.0.2.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\AutoMapper.6.0.2\lib\net45\AutoMapper.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Colorful.Console, Version=1.0.7.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\Colorful.Console.1.0.7\lib\net461\Colorful.Console.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Glob, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\Glob.0.3.2\lib\net46\Glob.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="JetBrains.Annotations, Version=10.4.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\JetBrains.Annotations.10.4.0\lib\net\JetBrains.Annotations.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json.Bson, Version=1.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\Newtonsoft.Json.Bson.1.0.1\lib\net45\Newtonsoft.Json.Bson.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NuGet.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\NuGet.Client.4.0.0\lib\net45\NuGet.Client.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NuGet.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\NuGet.Common.4.0.0\lib\net45\NuGet.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NuGet.ContentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\NuGet.ContentModel.4.0.0\lib\net45\NuGet.ContentModel.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NuGet.Frameworks, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\NuGet.Frameworks.4.0.0\lib\net45\NuGet.Frameworks.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NuGet.Packaging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\NuGet.Packaging.4.0.0\lib\net45\NuGet.Packaging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NuGet.Packaging.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\NuGet.Packaging.Core.4.0.0\lib\net45\NuGet.Packaging.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NuGet.Packaging.Core.Types, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\NuGet.Packaging.Core.Types.4.0.0\lib\net45\NuGet.Packaging.Core.Types.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NuGet.Repositories, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\NuGet.Repositories.4.0.0\lib\net45\NuGet.Repositories.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NuGet.RuntimeModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\NuGet.RuntimeModel.4.0.0\lib\net45\NuGet.RuntimeModel.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NuGet.Versioning, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\NuGet.Versioning.4.0.0\lib\net45\NuGet.Versioning.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Nuke.Common, Version=0.1.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\Nuke.Common.0.1.458\lib\net461\Nuke.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Nuke.Core, Version=0.1.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\Nuke.Core.0.1.458\lib\net461\Nuke.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Octokit, Version=0.24.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\Octokit.0.24.0\lib\net45\Octokit.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Diagnostics.Process, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\System.Diagnostics.Process.4.3.0\lib\net461\System.Diagnostics.Process.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Runtime.Serialization.Formatters, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\System.Runtime.Serialization.Formatters.4.3.0\lib\net46\System.Runtime.Serialization.Formatters.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization.Primitives, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\System.Runtime.Serialization.Primitives.4.3.0\lib\net46\System.Runtime.Serialization.Primitives.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\System.ValueTuple.4.3.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="YamlDotNet, Version=4.2.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\ViGEm\packages\YamlDotNet.4.2.1\lib\net35\YamlDotNet.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Build.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
154
build/Build.cs
154
build/Build.cs
@@ -1,89 +1,111 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.IO;
|
||||
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<Build>(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")
|
||||
);
|
||||
#region Ugly hack, fix me!
|
||||
EnsureExistingDirectory(Path.Combine(ArtifactsDirectory, @"x64"));
|
||||
EnsureExistingDirectory(Path.Combine(ArtifactsDirectory, @"x86"));
|
||||
|
||||
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\x64\ViGEmBus.inf"),
|
||||
Path.Combine(ArtifactsDirectory, @"ViGEmBus.inf")
|
||||
);
|
||||
|
||||
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
|
||||
});
|
||||
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());
|
||||
});
|
||||
}
|
||||
|
||||
34
build/_build.csproj
Normal file
34
build/_build.csproj
Normal file
@@ -0,0 +1,34 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<RootNamespace></RootNamespace>
|
||||
<IsPackable>False</IsPackable>
|
||||
<NoWarn>CS0649;CS0169</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Nuke.Common" Version="0.6.2" />
|
||||
<PackageReference Include="GitVersion.CommandLine" Version="3.6.5" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<NukeMetadata Include="**\*.json" Exclude="bin\**;obj\**" />
|
||||
<NukeExternalFiles Include="**\*.*.ext" Exclude="bin\**;obj\**" />
|
||||
<None Remove="*.csproj.DotSettings;*.ref.*.txt" />
|
||||
|
||||
<!-- Common build related files -->
|
||||
<None Include="..\build.ps1" />
|
||||
<None Include="..\build.sh" />
|
||||
<None Include="..\.nuke" />
|
||||
<None Include="..\global.json" Condition="Exists('..\global.json')" />
|
||||
<None Include="..\nuget.config" Condition="Exists('..\nuget.config')" />
|
||||
<None Include="..\Jenkinsfile" Condition="Exists('..\Jenkinsfile')" />
|
||||
<None Include="..\appveyor.yml" Condition="Exists('..\appveyor.yml')" />
|
||||
<None Include="..\.travis.yml" Condition="Exists('..\.travis.yml')" />
|
||||
<None Include="..\GitVersion.yml" Condition="Exists('..\GitVersion.yml')" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,28 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="AutoMapper" version="6.0.2" targetFramework="net461" />
|
||||
<package id="GitVersion.CommandLine" version="3.6.5" targetFramework="net461" />
|
||||
<package id="Colorful.Console" version="1.0.7" targetFramework="net461" />
|
||||
<package id="Glob" version="0.3.2" targetFramework="net461" />
|
||||
<package id="JetBrains.Annotations" version="10.4.0" targetFramework="net461" />
|
||||
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="net461" />
|
||||
<package id="Newtonsoft.Json.Bson" version="1.0.1" targetFramework="net461" />
|
||||
<package id="NuGet.Client" version="4.0.0" targetFramework="net461" />
|
||||
<package id="NuGet.Common" version="4.0.0" targetFramework="net461" />
|
||||
<package id="NuGet.ContentModel" version="4.0.0" targetFramework="net461" />
|
||||
<package id="NuGet.Frameworks" version="4.0.0" targetFramework="net461" />
|
||||
<package id="NuGet.Packaging" version="4.0.0" targetFramework="net461" />
|
||||
<package id="NuGet.Packaging.Core" version="4.0.0" targetFramework="net461" />
|
||||
<package id="NuGet.Packaging.Core.Types" version="4.0.0" targetFramework="net461" />
|
||||
<package id="NuGet.Repositories" version="4.0.0" targetFramework="net461" />
|
||||
<package id="NuGet.RuntimeModel" version="4.0.0" targetFramework="net461" />
|
||||
<package id="NuGet.Versioning" version="4.0.0" targetFramework="net461" />
|
||||
<package id="Nuke.Common" version="0.1.458" targetFramework="net461" />
|
||||
<package id="Nuke.Core" version="0.1.458" targetFramework="net461" />
|
||||
<package id="Octokit" version="0.24.0" targetFramework="net461" />
|
||||
<package id="System.Diagnostics.Process" version="4.3.0" targetFramework="net461" />
|
||||
<package id="System.Runtime.Serialization.Formatters" version="4.3.0" targetFramework="net461" />
|
||||
<package id="System.Runtime.Serialization.Primitives" version="4.3.0" targetFramework="net461" />
|
||||
<package id="System.ValueTuple" version="4.3.0" targetFramework="net461" />
|
||||
<package id="YamlDotNet" version="4.2.1" targetFramework="net461" />
|
||||
</packages>
|
||||
@@ -38,7 +38,12 @@
|
||||
<ProjectGuid>{7DB06674-1F4F-464B-8E1C-172E9587F9DC}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>ViGEmClient</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'==''">
|
||||
<!-- Latest Target Version property -->
|
||||
<LatestTargetPlatformVersion>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0'))</LatestTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion Condition="'$(WindowsTargetPlatformVersion)' == ''">$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
||||
<TargetPlatformVersion>$(WindowsTargetPlatformVersion)</TargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug (static)|Win32'" Label="Configuration">
|
||||
|
||||
Reference in New Issue
Block a user