diff options
author | Simon Rozman <simon@rozman.si> | 2020-11-04 15:39:27 +0100 |
---|---|---|
committer | Simon Rozman <simon@rozman.si> | 2020-11-04 16:44:01 +0100 |
commit | b8401ad25b5d6c37266e7fee59c0bc201b07f388 (patch) | |
tree | 912c65422cb7cc9953267da81177dff3e18e4828 /api | |
parent | api: rename GetVersion to GetRunningDriverVersion (diff) | |
download | wintun-b8401ad25b5d6c37266e7fee59c0bc201b07f388.tar.xz wintun-b8401ad25b5d6c37266e7fee59c0bc201b07f388.zip |
api: upgrade nci.lib and wintun-inf.h building
The additional build steps performed are now attached to the build
process using BeforeTargets/AfterTargets.
Signed-off-by: Simon Rozman <simon@rozman.si>
Diffstat (limited to 'api')
-rw-r--r-- | api/api.vcxproj | 24 | ||||
-rw-r--r-- | api/extract-driverver.js | 17 |
2 files changed, 32 insertions, 9 deletions
diff --git a/api/api.vcxproj b/api/api.vcxproj index f93551d..2501337 100644 --- a/api/api.vcxproj +++ b/api/api.vcxproj @@ -106,7 +106,7 @@ <PreprocessorDefinitions>_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions Condition="Exists('$(OutDir)whql\')">HAVE_WHQL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalOptions>/volatile:iso %(AdditionalOptions)</AdditionalOptions> - <AdditionalIncludeDirectories>..\$(Configuration)\$(WintunPlatform);..\$(Configuration);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> <ResourceCompile> <AdditionalIncludeDirectories>..\$(Configuration)\$(WintunPlatform);..\$(Configuration);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> @@ -116,12 +116,6 @@ <PreprocessorDefinitions Condition="'$(Platform)'=='ARM'">_M_ARM=7;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions Condition="'$(Platform)'=='ARM64'">_M_ARM64=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> </ResourceCompile> - <CustomBuildStep> - <Command>cl.exe /nologo /DGENERATE_LIB /Ob0 /c /Fo"$(IntDir)nci.obj" /Tc "$(ProjectDir)nci.h" -lib.exe /def:"$(ProjectDir)nci.def" /out:"$(IntDir)nci.lib" /machine:$(PlatformTarget) /nologo "$(IntDir)nci.obj"</Command> - <Outputs>$(IntDir)nci.lib</Outputs> - <Inputs>$(ProjectDir)nci.def;$(ProjectDir)nci.h</Inputs> - </CustomBuildStep> <Link> <DelayLoadDLLs>bcrypt.dll;iphlpapi.dll;nci.dll;newdev.dll;version.dll</DelayLoadDLLs> <AdditionalDependencies>Bcrypt.lib;Crypt32.lib;Cfgmgr32.lib;Iphlpapi.lib;$(IntDir)nci.lib;newdev.lib;ntdll.lib;Setupapi.lib;shlwapi.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies> @@ -191,11 +185,23 @@ lib.exe /def:"$(ProjectDir)nci.def" /out:"$(IntDir)nci.lib" /machine:$(PlatformT <Import Project="..\wintun.vcxproj.user" Condition="exists('..\wintun.vcxproj.user')" /> <PropertyGroup> <BuildDependsOn>$(BuildDependsOn);SignTarget</BuildDependsOn> - <CleanDependsOn>CleanSignTarget;$(CleanDependsOn)</CleanDependsOn> + <CleanDependsOn>CleanInfVersion;CleanNci;CleanSignTarget;$(CleanDependsOn)</CleanDependsOn> <SignTargetCommandLine Condition="$(SignMode)=='TestSign'">"$(SignToolPath)" sign /sha1 "$(TestCertificate)" /fd sha256 "$(TargetPath)"</SignTargetCommandLine> <SignTargetCommandLine Condition="$(SignMode)=='ProductionSign'">"$(SignToolPath)" sign /sha1 "$(ProductionCertificate)" /fd sha256 /tr "$(TimeStampServer)" /td sha256 "$(TargetPath)"</SignTargetCommandLine> - <CustomBuildBeforeTargets>Link</CustomBuildBeforeTargets> </PropertyGroup> + <Target Name="BuildInfVersion" BeforeTargets="ClCompile" Inputs="$(OutDir)wintun\wintun.inf" Outputs="$(IntDir)wintun-inf.h"> + <Exec Command="cscript.exe /nologo "extract-driverver.js" < "$(OutDir)wintun\wintun.inf" > "$(IntDir)wintun-inf.h"" /> + </Target> + <Target Name="CleanInfVersion"> + <Delete Files="$(IntDir)wintun-inf.h" /> + </Target> + <Target Name="BuildNci" BeforeTargets="Link" Inputs="$(ProjectDir)nci.def;$(ProjectDir)nci.h" Outputs="$(IntDir)nci.lib"> + <Exec Command="cl.exe /nologo /DGENERATE_LIB /Ob0 /c /Fo"$(IntDir)nci.obj" /Tc "nci.h"" /> + <Exec Command="lib.exe /def:"$(ProjectDir)nci.def" /out:"$(IntDir)nci.lib" /machine:$(PlatformTarget) /nologo "$(IntDir)nci.obj"" /> + </Target> + <Target Name="CleanNci"> + <Delete Files="$(IntDir)nci.obj;$(IntDir)nci.lib" /> + </Target> <Target Name="SignTarget" Condition="'$(SignTargetCommandLine)'!=''" Inputs="$(TargetPath)" Outputs="$(IntermediateOutputPath)$(TargetName).sign"> <Exec Command="$(SignTargetCommandLine)" /> <Touch Files="$(IntermediateOutputPath)$(TargetName).sign" AlwaysCreate="true" /> diff --git a/api/extract-driverver.js b/api/extract-driverver.js new file mode 100644 index 0000000..5ec83ef --- /dev/null +++ b/api/extract-driverver.js @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 + * + * Copyright (C) 2018-2020 WireGuard LLC. All Rights Reserved. + */ + +while (!WScript.StdIn.AtEndOfStream) { + var line = WScript.StdIn.ReadLine(); + if (line.substr(0, 12) != "DriverVer = ") + continue; + var val = line.substr(12).split(","); + var date = val[0].split("/"); + var ver = val[1].split("."); + var time = Date.UTC(date[2], date[0] - 1, date[1]).toString() + WScript.Echo("#define WINTUN_INF_FILETIME { (DWORD)((" + time + "0000ULL + 116444736000000000ULL) & 0xffffffffU), (DWORD)((" + time + "0000ULL + 116444736000000000ULL) >> 32) }") + WScript.Echo("#define WINTUN_INF_VERSION ((" + ver[0] + "ULL << 48) | (" + ver[1] + "ULL << 32) | (" + ver[2] + "ULL << 16) | (" + ver[3] + "ULL << 0))") + break; +} |