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:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
msbuild wintun.proj [/t:<target>] [/p:Configuration=<configuration>] [/p:Platform=<platform>]
 | 
			
		||||
msbuild wintun.proj [/t:<target>]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 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.
 | 
			
		||||
 | 
			
		||||
  - `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
 | 
			
		||||
-------------------------- | --------------------
 | 
			
		||||
@ -65,14 +65,6 @@ AMD64 Release              | `amd64\Release\wintun`
 | 
			
		||||
ARM64 Debug                | `arm64\Debug\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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										77
									
								
								wintun.proj
									
									
									
									
									
								
							
							
						
						
									
										77
									
								
								wintun.proj
									
									
									
									
									
								
							@ -11,31 +11,15 @@
 | 
			
		||||
  <!--
 | 
			
		||||
    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.vcxproj.user" Condition="exists('wintun.vcxproj.user')"/>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Condition="'$(Platform)' == 'x86'">
 | 
			
		||||
    <MSBuildPlatform>Win32</MSBuildPlatform>
 | 
			
		||||
    <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="Build" DependsOnTargets="Driver-x86;Driver-amd64;Driver-arm64"/>
 | 
			
		||||
  <Target Name="MSM" DependsOnTargets="MSM-x86;MSM-amd64"/>
 | 
			
		||||
  <Target Name="Clean">
 | 
			
		||||
    <RemoveDir Directories="$(OutputDir)"/>
 | 
			
		||||
    <RemoveDir Directories="x86\Release\"/>
 | 
			
		||||
    <RemoveDir Directories="amd64\Release\"/>
 | 
			
		||||
    <RemoveDir Directories="arm64\Release\"/>
 | 
			
		||||
    <RemoveDir Directories="$(SDVDir)"/>
 | 
			
		||||
    <RemoveDir Directories="$(DistributionDir)"/>
 | 
			
		||||
    <Delete Files="smvbuild.log;smvstats.txt;wintun.DVL.XML"/>
 | 
			
		||||
@ -46,24 +30,40 @@
 | 
			
		||||
    Driver Building
 | 
			
		||||
    Note: Use explicit Inputs/Outputs as WindowsDriver.Common.targets triggers driver re-packaging and signing on every invocation.
 | 
			
		||||
  -->
 | 
			
		||||
  <Target Name="Driver"
 | 
			
		||||
    Outputs="$(OutputDir)wintun\wintun.sys;$(OutputDir)wintun\wintun.inf;$(OutputDir)wintun\wintun.cat"
 | 
			
		||||
  <Target Name="Driver-x86"
 | 
			
		||||
    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">
 | 
			
		||||
    <MSBuild
 | 
			
		||||
      Projects="wintun.vcxproj"
 | 
			
		||||
      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>
 | 
			
		||||
 | 
			
		||||
  <!--
 | 
			
		||||
    Static Driver Verifier
 | 
			
		||||
  -->
 | 
			
		||||
  <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
 | 
			
		||||
      Projects="wintun.vcxproj"
 | 
			
		||||
      Targets="sdv"
 | 
			
		||||
      Properties="Inputs=/check:*;Configuration=$(Configuration);Platform=$(MSBuildPlatform)"/>
 | 
			
		||||
      Properties="Inputs=/check:*;Configuration=Release;Platform=x64"/>
 | 
			
		||||
  </Target>
 | 
			
		||||
 | 
			
		||||
  <!--
 | 
			
		||||
@ -72,29 +72,30 @@
 | 
			
		||||
  <Target Name="DVL"
 | 
			
		||||
    DependsOnTargets="SDV"
 | 
			
		||||
    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
 | 
			
		||||
      Projects="wintun.vcxproj"
 | 
			
		||||
      Targets="dvl"
 | 
			
		||||
      Properties="Configuration=$(Configuration);Platform=$(MSBuildPlatform)"/>
 | 
			
		||||
      Properties="Configuration=Release;Platform=x64"/>
 | 
			
		||||
  </Target>
 | 
			
		||||
 | 
			
		||||
  <!--
 | 
			
		||||
    MSM Building
 | 
			
		||||
  -->
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <MSMDir>$(DistributionDir)</MSMDir>
 | 
			
		||||
    <MSMName>wintun-$(WintunPlatform)-$(WintunVersionStr)</MSMName>
 | 
			
		||||
    <MSMExt>.msm</MSMExt>
 | 
			
		||||
    <MSMFileName>$(MSMName)$(MSMExt)</MSMFileName>
 | 
			
		||||
    <MSMPath>$(MSMDir)$(MSMFileName)</MSMPath>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <Target Name="MSM"
 | 
			
		||||
  <Target Name="MSM-x86"
 | 
			
		||||
    DependsOnTargets="Build"
 | 
			
		||||
    Outputs="$(MSMPath)">
 | 
			
		||||
    Outputs="$(DistributionDir)wintun-x86-$(WintunVersionStr).msm">
 | 
			
		||||
    <MSBuild
 | 
			
		||||
      Projects="wintun.wixproj"
 | 
			
		||||
      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>
 | 
			
		||||
</Project>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user