Extend MSBuild project to build all supported platforms at once
Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
parent
daba4f4c7d
commit
56424d52f7
20
README.md
20
README.md
@ -37,24 +37,24 @@ If you already have `wintun.vcxproj.user` file, just add the `<PropertyGroup>` s
|
|||||||
Open _Developer Command Prompt for VS 2017_ and use the `msbuild` command:
|
Open _Developer Command Prompt for VS 2017_ and use the `msbuild` command:
|
||||||
|
|
||||||
```
|
```
|
||||||
msbuild wintun.proj [/t:<target>] [/p:Configuration=<configuration>] [/p:Platform=<platform>]
|
msbuild wintun.proj [/t:<target>]
|
||||||
```
|
```
|
||||||
|
|
||||||
### Targets
|
### Targets
|
||||||
|
|
||||||
- `Build`: Builds the driver. This is the default target.
|
- `Build`: Builds the driver release configurations of all supported platforms. This is the default target.
|
||||||
|
|
||||||
- `Clean`: Deletes all intermediate and output files.
|
- `Clean`: Deletes all intermediate and output files.
|
||||||
|
|
||||||
- `Rebuild`: Alias for `Clean` followed by `Build`.
|
- `Rebuild`: Alias for `Clean` followed by `Build`.
|
||||||
|
|
||||||
- `SDV`: Runs Static Driver Verifier, which includes a clean driver build, only for release configurations.
|
- `SDV`: Runs Static Driver Verifier, which includes a clean driver build, only for AMD64 release configuration.
|
||||||
|
|
||||||
- `DVL`: Runs the `SDV`, and creates a Driver Verification Log, only for release configurations.
|
- `DVL`: Runs the `SDV`, and creates a Driver Verification Log, only for AMD64 release configurations.
|
||||||
|
|
||||||
- `MSM`: Builds Microsoft Installer Merge Module in `<output folder>\wintun-<platform>-<version>.msm`.
|
- `MSM`: Builds Microsoft Installer Merge Modules in `<output folder>\wintun-<platform>-<version>.msm`.
|
||||||
|
|
||||||
The driver output folder is:
|
The driver output folders are:
|
||||||
|
|
||||||
Platform and Configuration | Folder
|
Platform and Configuration | Folder
|
||||||
-------------------------- | --------------------
|
-------------------------- | --------------------
|
||||||
@ -65,14 +65,6 @@ AMD64 Release | `amd64\Release\wintun`
|
|||||||
ARM64 Debug | `arm64\Debug\wintun`
|
ARM64 Debug | `arm64\Debug\wintun`
|
||||||
ARM64 Release | `arm64\Release\wintun`
|
ARM64 Release | `arm64\Release\wintun`
|
||||||
|
|
||||||
### Properties
|
|
||||||
|
|
||||||
Properties may be defined as environment variables, or specified on the `msbuild` command line.
|
|
||||||
|
|
||||||
- `Configuration`: Specifies configuration to build or clean. May be `Debug` or `Release` (default).
|
|
||||||
|
|
||||||
- `Platform`: Specifies driver platform to build. May be `x86` or `amd64` (default), or `arm64`.
|
|
||||||
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
77
wintun.proj
77
wintun.proj
@ -11,31 +11,15 @@
|
|||||||
<!--
|
<!--
|
||||||
General Properties
|
General Properties
|
||||||
-->
|
-->
|
||||||
<PropertyGroup>
|
|
||||||
<Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
|
|
||||||
<Platform Condition="'$(Platform)' == ''">amd64</Platform>
|
|
||||||
<OutputDir>$(Platform)\$(Configuration)\</OutputDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<Import Project="wintun.props"/>
|
<Import Project="wintun.props"/>
|
||||||
<Import Project="wintun.vcxproj.user" Condition="exists('wintun.vcxproj.user')"/>
|
<Import Project="wintun.vcxproj.user" Condition="exists('wintun.vcxproj.user')"/>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Platform)' == 'x86'">
|
<Target Name="Build" DependsOnTargets="Driver-x86;Driver-amd64;Driver-arm64"/>
|
||||||
<MSBuildPlatform>Win32</MSBuildPlatform>
|
<Target Name="MSM" DependsOnTargets="MSM-x86;MSM-amd64"/>
|
||||||
<WiXPlatform>x86</WiXPlatform>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Platform)' == 'amd64'">
|
|
||||||
<MSBuildPlatform>x64</MSBuildPlatform>
|
|
||||||
<WiXPlatform>x64</WiXPlatform>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Platform)' == 'arm64'">
|
|
||||||
<MSBuildPlatform>ARM64</MSBuildPlatform>
|
|
||||||
<WiXPlatform>arm64</WiXPlatform> <!-- TODO: Follow WiX ARM64 support. -->
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<Target Name="Build" DependsOnTargets="Driver"/>
|
|
||||||
<Target Name="Clean">
|
<Target Name="Clean">
|
||||||
<RemoveDir Directories="$(OutputDir)"/>
|
<RemoveDir Directories="x86\Release\"/>
|
||||||
|
<RemoveDir Directories="amd64\Release\"/>
|
||||||
|
<RemoveDir Directories="arm64\Release\"/>
|
||||||
<RemoveDir Directories="$(SDVDir)"/>
|
<RemoveDir Directories="$(SDVDir)"/>
|
||||||
<RemoveDir Directories="$(DistributionDir)"/>
|
<RemoveDir Directories="$(DistributionDir)"/>
|
||||||
<Delete Files="smvbuild.log;smvstats.txt;wintun.DVL.XML"/>
|
<Delete Files="smvbuild.log;smvstats.txt;wintun.DVL.XML"/>
|
||||||
@ -46,24 +30,40 @@
|
|||||||
Driver Building
|
Driver Building
|
||||||
Note: Use explicit Inputs/Outputs as WindowsDriver.Common.targets triggers driver re-packaging and signing on every invocation.
|
Note: Use explicit Inputs/Outputs as WindowsDriver.Common.targets triggers driver re-packaging and signing on every invocation.
|
||||||
-->
|
-->
|
||||||
<Target Name="Driver"
|
<Target Name="Driver-x86"
|
||||||
Outputs="$(OutputDir)wintun\wintun.sys;$(OutputDir)wintun\wintun.inf;$(OutputDir)wintun\wintun.cat"
|
Outputs="x86\Release\wintun\wintun.sys;x86\Release\wintun\wintun.inf;x86\Release\wintun\wintun.cat"
|
||||||
Inputs="wintun.c;wintun.inf;wintun.props;wintun.rc;wintun.vcxproj">
|
Inputs="wintun.c;wintun.inf;wintun.props;wintun.rc;wintun.vcxproj">
|
||||||
<MSBuild
|
<MSBuild
|
||||||
Projects="wintun.vcxproj"
|
Projects="wintun.vcxproj"
|
||||||
Targets="Build"
|
Targets="Build"
|
||||||
Properties="Configuration=$(Configuration);Platform=$(MSBuildPlatform)"/>
|
Properties="Configuration=Release;Platform=Win32"/>
|
||||||
|
</Target>
|
||||||
|
<Target Name="Driver-amd64"
|
||||||
|
Outputs="amd64\Release\wintun\wintun.sys;amd64\Release\wintun\wintun.inf;amd64\Release\wintun\wintun.cat"
|
||||||
|
Inputs="wintun.c;wintun.inf;wintun.props;wintun.rc;wintun.vcxproj">
|
||||||
|
<MSBuild
|
||||||
|
Projects="wintun.vcxproj"
|
||||||
|
Targets="Build"
|
||||||
|
Properties="Configuration=Release;Platform=x64"/>
|
||||||
|
</Target>
|
||||||
|
<Target Name="Driver-arm64"
|
||||||
|
Outputs="arm64\Release\wintun\wintun.sys;arm64\Release\wintun\wintun.inf;arm64\Release\wintun\wintun.cat"
|
||||||
|
Inputs="wintun.c;wintun.inf;wintun.props;wintun.rc;wintun.vcxproj">
|
||||||
|
<MSBuild
|
||||||
|
Projects="wintun.vcxproj"
|
||||||
|
Targets="Build"
|
||||||
|
Properties="Configuration=Release;Platform=ARM64"/>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Static Driver Verifier
|
Static Driver Verifier
|
||||||
-->
|
-->
|
||||||
<Target Name="SDV"
|
<Target Name="SDV"
|
||||||
Outputs="$(SDVDir)SDV.DVL.xml;$(OutputDir)vc.nativecodeanalysis.all.xml">
|
Outputs="$(SDVDir)SDV.DVL.xml;amd64\Release\vc.nativecodeanalysis.all.xml">
|
||||||
<MSBuild
|
<MSBuild
|
||||||
Projects="wintun.vcxproj"
|
Projects="wintun.vcxproj"
|
||||||
Targets="sdv"
|
Targets="sdv"
|
||||||
Properties="Inputs=/check:*;Configuration=$(Configuration);Platform=$(MSBuildPlatform)"/>
|
Properties="Inputs=/check:*;Configuration=Release;Platform=x64"/>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
@ -72,29 +72,30 @@
|
|||||||
<Target Name="DVL"
|
<Target Name="DVL"
|
||||||
DependsOnTargets="SDV"
|
DependsOnTargets="SDV"
|
||||||
Outputs="wintun.DVL.XML"
|
Outputs="wintun.DVL.XML"
|
||||||
Inputs="$(SDVDir)SDV.DVL.xml;$(OutputDir)vc.nativecodeanalysis.all.xml">
|
Inputs="$(SDVDir)SDV.DVL.xml;amd64\Release\vc.nativecodeanalysis.all.xml">
|
||||||
<MSBuild
|
<MSBuild
|
||||||
Projects="wintun.vcxproj"
|
Projects="wintun.vcxproj"
|
||||||
Targets="dvl"
|
Targets="dvl"
|
||||||
Properties="Configuration=$(Configuration);Platform=$(MSBuildPlatform)"/>
|
Properties="Configuration=Release;Platform=x64"/>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
MSM Building
|
MSM Building
|
||||||
-->
|
-->
|
||||||
<PropertyGroup>
|
<Target Name="MSM-x86"
|
||||||
<MSMDir>$(DistributionDir)</MSMDir>
|
|
||||||
<MSMName>wintun-$(WintunPlatform)-$(WintunVersionStr)</MSMName>
|
|
||||||
<MSMExt>.msm</MSMExt>
|
|
||||||
<MSMFileName>$(MSMName)$(MSMExt)</MSMFileName>
|
|
||||||
<MSMPath>$(MSMDir)$(MSMFileName)</MSMPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Target Name="MSM"
|
|
||||||
DependsOnTargets="Build"
|
DependsOnTargets="Build"
|
||||||
Outputs="$(MSMPath)">
|
Outputs="$(DistributionDir)wintun-x86-$(WintunVersionStr).msm">
|
||||||
<MSBuild
|
<MSBuild
|
||||||
Projects="wintun.wixproj"
|
Projects="wintun.wixproj"
|
||||||
Targets="Build"
|
Targets="Build"
|
||||||
Properties="Configuration=$(Configuration);Platform=$(WiXPlatform)"/>
|
Properties="Configuration=Release;Platform=x86"/>
|
||||||
|
</Target>
|
||||||
|
<Target Name="MSM-amd64"
|
||||||
|
DependsOnTargets="Build"
|
||||||
|
Outputs="$(DistributionDir)wintun-amd64-$(WintunVersionStr).msm">
|
||||||
|
<MSBuild
|
||||||
|
Projects="wintun.wixproj"
|
||||||
|
Targets="Build"
|
||||||
|
Properties="Configuration=Release;Platform=x64"/>
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
Loading…
Reference in New Issue
Block a user