Enable multi-target build and dutil.nupkg
Rob Mensching committed
Sep 3, 2017 at 13:25 UTC
420ce71170489840376c8236da268a7747bb607b
9 files changed
+196
-27
appveyor.cmd
new
+13
@@ -0,0 +1,13 @@
1
+@setlocal
2
+@pushd %~dp0
3
+
4
+msbuild -p:Configuration=Release;Platform=x86;PlatformToolset=v140_xp
5
+msbuild -p:Configuration=Release;Platform=x64;PlatformToolset=v140_xp
6
+
7
+msbuild -p:Configuration=Release;Platform=x86;PlatformToolset=v141_xp
8
+msbuild -p:Configuration=Release;Platform=x64;PlatformToolset=v141_xp
9
+
10
+msbuild -p:Configuration=Release -t:PackNativeNuget src\dutil\dutil.vcxproj
11
+
12
+@popd
13
+@endlocal
\ No newline at end of file
appveyor.yml
+6
-3
@@ -2,15 +2,18 @@ image: Visual Studio 2017
2
3
version: 0.0.0.{build}
4
configuration: Release
5
-platform:
6
- - x86
7
- - x64
5
6
environment:
7
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
8
DOTNET_CLI_TELEMETRY_OPTOUT: 1
9
NUGET_XMLDOC_MODE: skip
10
11
+before_build:
12
+ - nuget restore
13
+
14
+build_script:
15
+ - appveyor.cmd
16
+
17
pull_requests:
18
do_not_increment_build_number: true
19
src/Cpp.Build.props
+93
-2
@@ -3,7 +3,98 @@
3
4
<Project>
5
<PropertyGroup>
6
- <IntDir>$(BaseIntermediateOutputPath)</IntDir>
7
- <OutDir>$(OutputPath)</OutDir>
6
+ <BaseOutputPath>$(OutputPath)</BaseOutputPath>
7
+ <IntDir>$(BaseIntermediateOutputPath)$(Platform)\</IntDir>
8
+ <OutDir>$(OutputPath)$(Platform)\</OutDir>
9
</PropertyGroup>
10
+
11
+ <ItemDefinitionGroup>
12
+ <ClCompile>
13
+ <DisableSpecificWarnings>$(DisableSpecificCompilerWarnings)</DisableSpecificWarnings>
14
+ <WarningLevel>Level4</WarningLevel>
15
+ <AdditionalIncludeDirectories>$(ProjectDir)inc;$(MSBuildProjectDirectory);$(IntDir);$(SqlCESdkIncludePath);$(ProjectAdditionalIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
16
+ <PreprocessorDefinitions>WIN32;_WINDOWS;_WIN32_MSI=500;_WIN32_WINNT=0x0501;$(ArmPreprocessorDefinitions);$(UnicodePreprocessorDefinitions);_CRT_STDIO_LEGACY_WIDE_SPECIFIERS;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
17
+ <PrecompiledHeader>Use</PrecompiledHeader>
18
+ <PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
19
+ <CallingConvention>StdCall</CallingConvention>
20
+ <TreatWarningAsError>true</TreatWarningAsError>
21
+ <ExceptionHandling>false</ExceptionHandling>
22
+ <AdditionalOptions>-YlprecompDefine</AdditionalOptions>
23
+ <AdditionalOptions Condition=" $(PlatformToolset.StartsWith('v14')) ">/Zc:threadSafeInit- %(AdditionalOptions)</AdditionalOptions>
24
+ <MultiProcessorCompilation Condition=" $(NUMBER_OF_PROCESSORS) > 4 ">true</MultiProcessorCompilation>
25
+ </ClCompile>
26
+ <ResourceCompile>
27
+ <PreprocessorDefinitions>$(ArmPreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
28
+ <AdditionalIncludeDirectories>$(ProjectAdditionalResourceIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
29
+ </ResourceCompile>
30
+ <Lib>
31
+ <AdditionalLibraryDirectories>$(OutDir);$(AdditionalMultiTargetLibraryPath);$(ProjectAdditionalLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
32
+ </Lib>
33
+ <Link>
34
+ <SubSystem>$(ProjectSubSystem)</SubSystem>
35
+ <ModuleDefinitionFile>$(ProjectModuleDefinitionFile)</ModuleDefinitionFile>
36
+ <NoEntryPoint>$(ResourceOnlyDll)</NoEntryPoint>
37
+ <GenerateDebugInformation>true</GenerateDebugInformation>
38
+ <AdditionalDependencies>$(ProjectAdditionalLinkLibraries);advapi32.lib;comdlg32.lib;user32.lib;oleaut32.lib;gdi32.lib;shell32.lib;ole32.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
39
+ <AdditionalLibraryDirectories>$(OutDir);$(AdditionalMultiTargetLibraryPath);$(ArmLibraryDirectories);$(ProjectAdditionalLinkLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
40
+ <AdditionalOptions Condition=" $(PlatformToolset.StartsWith('v14')) ">/IGNORE:4099 %(AdditionalOptions)</AdditionalOptions>
41
+ </Link>
42
+ </ItemDefinitionGroup>
43
+
44
+ <ItemDefinitionGroup Condition=" '$(Platform)'=='Win32' and '$(PlatformToolset)'!='v100'">
45
+ <ClCompile>
46
+ <EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
47
+ </ClCompile>
48
+ </ItemDefinitionGroup>
49
+ <ItemDefinitionGroup Condition=" '$(Platform)'=='arm' ">
50
+ <ClCompile>
51
+ <CallingConvention>CDecl</CallingConvention>
52
+ </ClCompile>
53
+ </ItemDefinitionGroup>
54
+ <ItemDefinitionGroup Condition=" '$(ConfigurationType)'=='StaticLibrary' ">
55
+ <ClCompile>
56
+ <DebugInformationFormat>OldStyle</DebugInformationFormat>
57
+ <OmitDefaultLibName>true</OmitDefaultLibName>
58
+ <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
59
+ </ClCompile>
60
+ </ItemDefinitionGroup>
61
+ <ItemDefinitionGroup Condition=" '$(Configuration)'=='Debug' ">
62
+ <ClCompile>
63
+ <Optimization>Disabled</Optimization>
64
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
65
+ <PreprocessorDefinitions>_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
66
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
67
+ </ClCompile>
68
+ </ItemDefinitionGroup>
69
+ <ItemDefinitionGroup Condition=" '$(Configuration)'=='Debug' and '$(CLRSupport)'=='true' ">
70
+ <ClCompile>
71
+ <BasicRuntimeChecks></BasicRuntimeChecks>
72
+ <RuntimeLibrary>MultiThreadedDebugDll</RuntimeLibrary>
73
+ </ClCompile>
74
+ </ItemDefinitionGroup>
75
+ <ItemDefinitionGroup Condition=" '$(Configuration)'=='Release' ">
76
+ <ClCompile>
77
+ <Optimization>MinSpace</Optimization>
78
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
79
+ <FunctionLevelLinking>true</FunctionLevelLinking>
80
+ <IntrinsicFunctions>true</IntrinsicFunctions>
81
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
82
+ </ClCompile>
83
+ <Link>
84
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
85
+ <OptimizeReferences>true</OptimizeReferences>
86
+ </Link>
87
+ </ItemDefinitionGroup>
88
+ <ItemDefinitionGroup Condition=" '$(Configuration)'=='Release' and '$(CLRSupport)'=='true' ">
89
+ <ClCompile>
90
+ <BasicRuntimeChecks></BasicRuntimeChecks>
91
+ <RuntimeLibrary>MultiThreadedDll</RuntimeLibrary>
92
+ </ClCompile>
93
+ </ItemDefinitionGroup>
94
+ <ItemDefinitionGroup Condition=" '$(CLRSupport)'=='true' ">
95
+ <Link>
96
+ <KeyFile>$(LinkKeyFile)</KeyFile>
97
+ <DelaySign>$(LinkDelaySign)</DelaySign>
98
+ </Link>
99
+ </ItemDefinitionGroup>
100
</Project>
src/NativeMultiTargeting.Build.props
new
+10
@@ -0,0 +1,10 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+<Project>
5
+ <!-- Overrides the standard Cpp.Build.props to include the PlatformToolset in the output path. -->
6
+ <PropertyGroup>
7
+ <IntDir>$(BaseIntermediateOutputPath)$(PlatformToolset)\$(PlatformTarget)\</IntDir>
8
+ <OutDir>$(OutputPath)$(PlatformToolset)\$(PlatformTarget)\</OutDir>
9
+ </PropertyGroup>
10
+</Project>
src/dutil/build/WixToolset.DUtil.props
new
+23
@@ -0,0 +1,23 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5
+ <ItemDefinitionGroup>
6
+ <ClCompile>
7
+ <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)native\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
8
+ </ClCompile>
9
+ <ResourceCompile>
10
+ <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)native\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
11
+ </ResourceCompile>
12
+ </ItemDefinitionGroup>
13
+ <ItemDefinitionGroup Condition=" $(PlatformToolset.ToLower().StartsWith('v140')) ">
14
+ <Link>
15
+ <AdditionalDependencies>$(MSBuildThisFileDirectory)native\lib\v140\$(PlatformTarget)\dutil.lib;%(AdditionalDependencies)</AdditionalDependencies>
16
+ </Link>
17
+ </ItemDefinitionGroup>
18
+ <ItemDefinitionGroup Condition=" $(PlatformToolset.ToLower().StartsWith('v141')) ">
19
+ <Link>
20
+ <AdditionalDependencies>$(MSBuildThisFileDirectory)native\lib\v141\$(PlatformTarget)\dutil.lib;%(AdditionalDependencies)</AdditionalDependencies>
21
+ </Link>
22
+ </ItemDefinitionGroup>
23
+</Project>
src/dutil/dutil.nuspec
new
+23
@@ -0,0 +1,23 @@
1
+<?xml version="1.0"?>
2
+<package >
3
+ <metadata>
4
+ <id>$id$</id>
5
+ <version>$version$</version>
6
+ <authors>$authors$</authors>
7
+ <owners>$authors$</owners>
8
+ <licenseUrl>https://github.com/wixtoolset/dutil/blob/master/LICENSE.TXT</licenseUrl>
9
+ <projectUrl>https://github.com/wixtoolset/dutil</projectUrl>
10
+ <requireLicenseAcceptance>false</requireLicenseAcceptance>
11
+ <description>$description$</description>
12
+ <copyright>$copyright$</copyright>
13
+ </metadata>
14
+
15
+ <files>
16
+ <file src="build\$id$.props" target="build\" />
17
+ <file src="inc\*" target="build\native\include" />
18
+ <file src="..\..\build\$configuration$\v140_xp\x64\dutil.lib" target="build\native\lib\v140\x64" />
19
+ <file src="..\..\build\$configuration$\v140_xp\x86\dutil.lib" target="build\native\lib\v140\x86" />
20
+ <file src="..\..\build\$configuration$\v141_xp\x64\dutil.lib" target="build\native\lib\v141\x64" />
21
+ <file src="..\..\build\$configuration$\v141_xp\x86\dutil.lib" target="build\native\lib\v141\x86" />
22
+ </files>
23
+</package>
src/dutil/dutil.vcxproj
+23
-22
@@ -19,22 +19,6 @@
19
<Configuration>Release</Configuration>
20
<Platform>x64</Platform>
21
</ProjectConfiguration>
22
- <ProjectConfiguration Include="Debug|Itanium">
23
- <Configuration>Debug</Configuration>
24
- <Platform>Itanium</Platform>
25
- </ProjectConfiguration>
26
- <ProjectConfiguration Include="Release|Itanium">
27
- <Configuration>Release</Configuration>
28
- <Platform>Itanium</Platform>
29
- </ProjectConfiguration>
30
- <ProjectConfiguration Include="Debug|ARM">
31
- <Configuration>Debug</Configuration>
32
- <Platform>ARM</Platform>
33
- </ProjectConfiguration>
34
- <ProjectConfiguration Include="Release|ARM">
35
- <Configuration>Release</Configuration>
36
- <Platform>ARM</Platform>
37
- </ProjectConfiguration>
22
</ItemGroup>
23
24
<PropertyGroup Label="Globals">
@@ -44,10 +28,11 @@
28
<MultiTargetLibrary>true</MultiTargetLibrary>
29
<PlatformToolset>v141_xp</PlatformToolset>
30
<CharacterSet>MultiByte</CharacterSet>
31
+ <Description>WiX Toolset native library foundation</Description>
32
</PropertyGroup>
33
34
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
50
-
35
+<!--
36
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
37
<UseDebugLibraries>true</UseDebugLibraries>
38
</PropertyGroup>
@@ -62,14 +47,17 @@
47
<UseDebugLibraries>false</UseDebugLibraries>
48
<WholeProgramOptimization>true</WholeProgramOptimization>
49
</PropertyGroup>
65
-
50
+ -->
51
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
52
<ImportGroup Label="ExtensionSettings">
53
</ImportGroup>
54
55
<ImportGroup Label="Shared">
56
+ <Import Project="..\..\packages\Nerdbank.GitVersioning.2.0.37-beta\build\Nerdbank.GitVersioning.targets" Condition="Exists('..\..\packages\Nerdbank.GitVersioning.2.0.37-beta\build\Nerdbank.GitVersioning.targets')" />
57
</ImportGroup>
58
59
+ <Import Project="..\NativeMultiTargeting.Build.props" />
60
+<!--
61
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
62
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
63
</ImportGroup>
@@ -145,6 +133,7 @@
133
<EnableCOMDATFolding>true</EnableCOMDATFolding>
134
<OptimizeReferences>true</OptimizeReferences>
135
<AdditionalDependencies>advapi32.lib;oleaut32.lib;shell32.lib;ole32.lib;version.lib;activeds.lib;adsiid.lib;crypt32.lib;msi.lib;netapi32.lib;Ws2_32.lib;cabinet.lib;shlwapi.lib;gdiplus.lib;wininet.lib;ESENT.lib;Userenv.lib;Wtsapi32.lib;Comctl32.lib;Msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
136
+ <GenerateDebugInformation>true</GenerateDebugInformation>
137
</Link>
138
</ItemDefinitionGroup>
139
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -164,8 +153,9 @@
153
<EnableCOMDATFolding>true</EnableCOMDATFolding>
154
<OptimizeReferences>true</OptimizeReferences>
155
<AdditionalDependencies>advapi32.lib;oleaut32.lib;shell32.lib;ole32.lib;version.lib;activeds.lib;adsiid.lib;crypt32.lib;msi.lib;netapi32.lib;Ws2_32.lib;cabinet.lib;shlwapi.lib;gdiplus.lib;wininet.lib;ESENT.lib;Userenv.lib;Wtsapi32.lib;Comctl32.lib;Msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
156
+ <GenerateDebugInformation>true</GenerateDebugInformation>
157
</Link>
168
- </ItemDefinitionGroup>
158
+ </ItemDefinitionGroup> -->
159
160
<ItemGroup>
161
<ClCompile Include="acl2util.cpp" />
@@ -186,8 +176,7 @@
176
<ClCompile Include="dlutil.cpp" />
177
<ClCompile Include="dutil.cpp">
178
<PrecompiledHeader>Create</PrecompiledHeader>
189
- <!-- turn off typedef warning in shlobj.h -->
190
- <DisableSpecificWarnings>4091</DisableSpecificWarnings>
179
+ <DisableSpecificWarnings>4091;4458</DisableSpecificWarnings>
180
</ClCompile>
181
<ClCompile Include="eseutil.cpp" />
182
<ClCompile Include="fileutil.cpp" />
@@ -293,8 +282,20 @@
282
</ItemGroup>
283
284
<ItemGroup>
285
+ <None Include="packages.config" />
286
<None Include="xsd\thmutil.xsd" />
287
</ItemGroup>
288
289
+ <Target Name="PackNativeNuget"
290
+ DependsOnTargets="GetBuildVersion">
291
+ <Exec Command='nuget pack dutil.nuspec -OutputDirectory $(BaseOutputPath) -Properties Configuration=$(Configuration);Id=WixToolset.DUtil;Version="$(BuildVersionSimple)";Authors="$(Authors)";Copyright="$(Copyright)";Description="$(Description)";Title="$(Title)"' />
292
+ </Target>
293
+
294
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
300
-</Project>
295
+ <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
296
+ <PropertyGroup>
297
+ <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
298
+ </PropertyGroup>
299
+ <Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.2.0.37-beta\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.2.0.37-beta\build\Nerdbank.GitVersioning.targets'))" />
300
+ </Target>
301
+</Project>
\ No newline at end of file
src/dutil/dutil.vcxproj.filters
+1
@@ -361,5 +361,6 @@
361
<None Include="xsd\thmutil.xsd">
362
<Filter>Header Files</Filter>
363
</None>
364
+ <None Include="packages.config" />
365
</ItemGroup>
366
</Project>
\ No newline at end of file
src/dutil/packages.config
new
+4
@@ -0,0 +1,4 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<packages>
3
+ <package id="Nerdbank.GitVersioning" version="2.0.37-beta" targetFramework="native" developmentDependency="true" />
4
+</packages>
\ No newline at end of file