diff options
author | Jan Tattermusch <jtattermusch@google.com> | 2015-09-28 17:20:03 -0700 |
---|---|---|
committer | Jan Tattermusch <jtattermusch@google.com> | 2015-09-30 10:10:22 -0700 |
commit | 18e2202fb568d8488e1e63eb6f9bd22baca012b3 (patch) | |
tree | b18f2fe876d566e42786f02eb04779b35a5258e5 /vsprojects/coapp/zlib | |
parent | 556a4badac4e7c4f2a6ddf1dfb86a83c83fc191e (diff) |
customize the coapp scripts for zlib
Diffstat (limited to 'vsprojects/coapp/zlib')
-rw-r--r-- | vsprojects/coapp/zlib/README.md | 35 | ||||
-rw-r--r-- | vsprojects/coapp/zlib/buildall.bat | 51 | ||||
-rw-r--r-- | vsprojects/coapp/zlib/grpc.dependencies.zlib.autopkg | 102 | ||||
-rw-r--r-- | vsprojects/coapp/zlib/managed_targets/grpc.dependencies.zlib.redist.props | 13 | ||||
-rw-r--r-- | vsprojects/coapp/zlib/managed_targets/grpc.dependencies.zlib.redist.targets | 14 | ||||
-rw-r--r-- | vsprojects/coapp/zlib/version.inc | 1 | ||||
-rw-r--r-- | vsprojects/coapp/zlib/zlib.sln | 26 | ||||
-rw-r--r-- | vsprojects/coapp/zlib/zlib.vcxproj | 147 |
8 files changed, 389 insertions, 0 deletions
diff --git a/vsprojects/coapp/zlib/README.md b/vsprojects/coapp/zlib/README.md new file mode 100644 index 0000000000..c81a57a48b --- /dev/null +++ b/vsprojects/coapp/zlib/README.md @@ -0,0 +1,35 @@ +Zlib Native Nuget package +------------------------- + +Uses [CoApp](http://coapp.org/) project to build the zlib package. + +Prerequisites +------------- +Multiple versions of VS installed to be able to build all the targets: +* Visual Studio 2013 +* Visual Studio 2010 (you might need SP1 to prevent LNK1123 error) + +CoApp toolkit: http://downloads.coapp.org/files/CoApp.Tools.Powershell.msi + +More details on installation: http://coapp.org/tutorials/installation.html + +Building +-------- + +Build all flavors of zlib library using the provided batch file. +``` +buildall.bat +``` + +Then, create NuGet package using powershell (you'll need the CoApp toolkit installed): +``` +[THIS_DIRECTORY]> Write-NuGetPackage grpc.dependencies.zlib.autopkg +``` + +This will create three NuGet packages: +* the main dev package +* the redistributable package that contains just the binaries and no headers +* the symbols package (debug symbols) + +Later, you can push the package to NuGet.org repo. +Attention: before pusing the resulting nuget package to public nuget repo, you have to be 100% sure it works correctly - there’s no way how to delete or update an already existing package.
\ No newline at end of file diff --git a/vsprojects/coapp/zlib/buildall.bat b/vsprojects/coapp/zlib/buildall.bat new file mode 100644 index 0000000000..a71e56f4ae --- /dev/null +++ b/vsprojects/coapp/zlib/buildall.bat @@ -0,0 +1,51 @@ +@echo off +setlocal + +setlocal +call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" amd64 +call :build x64 Release v120 || goto :eof +call :build x64 Debug v120 || goto :eof +endlocal + +setlocal +call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86 +call :build Win32 Release v120 || goto :eof +call :build Win32 Debug v120 || goto :eof +endlocal + +REM setlocal +REM call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" amd64 +REM call :build x64 Release v110 || goto :eof +REM call :build x64 Debug v110 || goto :eof +REM endlocal + +REM setlocal +REM call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86 +REM call :build Win32 Release v110 || goto :eof +REM call :build Win32 Debug v110 || goto :eof +REM endlocal + +REM setlocal +REM call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64 +REM call :build x64 Release v100 || goto :eof +REM call :build x64 Debug v100 || goto :eof +REM endlocal + +setlocal +call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 +call :build Win32 Release v100 || goto :eof +call :build Win32 Debug v100 || goto :eof +endlocal + +goto :eof + +:build +msbuild /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=Dynamic /P:CallingConvention=cdecl .\zlib.sln || goto :eof +msbuild /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=Dynamic /P:CallingConvention=stdcall .\zlib.sln || goto :eof +msbuild /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=Static /P:CallingConvention=cdecl .\zlib.sln || goto :eof +msbuild /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=Static /P:CallingConvention=stdcall .\zlib.sln || goto :eof +msbuild /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=ltcg /P:CallingConvention=cdecl .\zlib.sln || goto :eof +msbuild /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=ltcg /P:CallingConvention=stdcall .\zlib.sln || goto :eof +goto :eof + + diff --git a/vsprojects/coapp/zlib/grpc.dependencies.zlib.autopkg b/vsprojects/coapp/zlib/grpc.dependencies.zlib.autopkg new file mode 100644 index 0000000000..01390b9434 --- /dev/null +++ b/vsprojects/coapp/zlib/grpc.dependencies.zlib.autopkg @@ -0,0 +1,102 @@ +@import @"version.inc"; + +configurations { +}; + +#define { + package-id = "grpc.dependencies.zlib"; +} + +nuget { + // the nuspec file metadata. Gets created/updated on build + nuspec { + id = ${package-id}; + version : ${package-version}; + title: gRPC Native Dependency: ZLib compression library; + authors: {Jean-loup Gailly, Mark Adler, Garrett Serack, Tim Rogers}; + owners: {Jan Tattermusch}; + licenseUrl: "http://zlib.net/zlib-license.html"; + projectUrl: "http://github.com/jtattermusch/zlib"; + iconUrl: "http://zlib.net/images/zlib3d-b1.png"; + requireLicenseAcceptance:false; + summary:A zlib library; + description: @"A native zlib library. + zlib homepage: http://zlib.net"; + releaseNotes: "Release of zlib 1.2.8 libraries."; + copyright: Copyright 2013; + tags: { zlib, native, CoApp }; + + }; + + // the files that go into the content folders + // (inserted into the nuspec file) + files { + // .targets file that are applied when redist package is installed from a managed project. + managed_build: { + #output { + package = redist; + }; + #destination = "\build\portable-net45"; + "managed_targets\${package-id}.redist.props"; + "managed_targets\${package-id}.redist.targets"; + }; + + include: { ..\..\..\third_party\zlib\zlib.h, ..\..\..\third_party\zlib\zconf.h }; + + docs: { ..\..\..\third_party\zlib\doc\**\* }; + + source += { + "..\..\..\third_party\zlib\adler32.c", + "..\..\..\third_party\zlib\compress.c", + "..\..\..\third_party\zlib\crc32.c", + "..\..\..\third_party\zlib\deflate.c", + "..\..\..\third_party\zlib\gzclose.c", + "..\..\..\third_party\zlib\gzlib.c", + "..\..\..\third_party\zlib\gzread.c", + "..\..\..\third_party\zlib\gzwrite.c", + "..\..\..\third_party\zlib\infback.c", + "..\..\..\third_party\zlib\inffast.c", + "..\..\..\third_party\zlib\inflate.c", + "..\..\..\third_party\zlib\inftrees.c", + "..\..\..\third_party\zlib\trees.c", + "..\..\..\third_party\zlib\uncompr.c", + "..\..\..\third_party\zlib\zutil.c", + "..\..\..\third_party\zlib\crc32.h", + "..\..\..\third_party\zlib\deflate.h", + "..\..\..\third_party\zlib\gzguts.h", + "..\..\..\third_party\zlib\inffast.h", + "..\..\..\third_party\zlib\inffixed.h", + "..\..\..\third_party\zlib\inflate.h", + "..\..\..\third_party\zlib\inftrees.h", + "..\..\..\third_party\zlib\trees.h", + "..\..\..\third_party\zlib\zconf.h", + "..\..\..\third_party\zlib\zlib.h", + "..\..\..\third_party\zlib\zutil.h", + "..\..\..\third_party\zlib\contrib\masmx64\inffas8664.c", + }; + ("v100,v120", "Win32,x64", "Release,Debug", "Dynamic", "cdecl,stdcall", "MultiByte") => { + [${0},${1},${2},${3},${4}] { + lib: { .\output\${0}\${1}\${2}\${3}\${4}\${5}\*.lib }; + bin: { .\output\${0}\${1}\${2}\${3}\${4}\${5}\*.dll }; + symbols: { .\output\${0}\${1}\${2}\${3}\${4}\${5}\*.pdb }; + }; + }; + ("v100,v120", "Win32,x64", "Release,Debug", "Static,ltcg", "cdecl,stdcall", "MultiByte") => { + [${0},${1},${2},${3},${4}] { + lib: { .\output\${0}\${1}\${2}\${3}\${4}\${5}\*.lib }; + }; + }; + + }; + + // the VC++ .targets file that gets generated and inserted into the ${d_content} folder + targets { + Defines += HAS_ZLIB; + [dynamic] + Defines += ZLIB_DLL; + [stdcall] + Defines += ZLIB_WINAPI; + + }; +} + diff --git a/vsprojects/coapp/zlib/managed_targets/grpc.dependencies.zlib.redist.props b/vsprojects/coapp/zlib/managed_targets/grpc.dependencies.zlib.redist.props new file mode 100644 index 0000000000..bcb37de0f7 --- /dev/null +++ b/vsprojects/coapp/zlib/managed_targets/grpc.dependencies.zlib.redist.props @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <!-- Whether or not copy native dependencies to output directory after building --> + <CopyNativeDependencies Condition=" '$(CopyNativeDependencies)' == '' ">true</CopyNativeDependencies> + + <!-- Set defaults for native dependencies if not already set. Properties can be overriden in the project files. --> + <NativeDependenciesToolset Condition=" '$(NativeDependenciesToolset)' == '' ">v120</NativeDependenciesToolset> + <NativeDependenciesPlatform Condition=" '$(NativeDependenciesPlatform)' == '' ">Win32</NativeDependenciesPlatform> + <NativeDependenciesConfiguration Condition=" '$(NativeDependenciesConfiguration)' == '' ">Debug</NativeDependenciesConfiguration> + <ZlibCallingConvention Condition=" '$(ZlibCallingConvention)' == '' ">cdecl</ZlibCallingConvention> + </PropertyGroup> +</Project>
\ No newline at end of file diff --git a/vsprojects/coapp/zlib/managed_targets/grpc.dependencies.zlib.redist.targets b/vsprojects/coapp/zlib/managed_targets/grpc.dependencies.zlib.redist.targets new file mode 100644 index 0000000000..f00d97dc36 --- /dev/null +++ b/vsprojects/coapp/zlib/managed_targets/grpc.dependencies.zlib.redist.targets @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Choose> + <!-- Under older versions of Monodevelop, Choose is not supported and is just ignored, which gives us the desired effect. --> + <When Condition=" '$(OS)' != 'Unix' "> + <ItemGroup Condition=" '$(CopyNativeDependencies)' == 'true' "> + <Content Include="$(MSBuildThisFileDirectory)..\..\build\native\bin\$(NativeDependenciesToolset)\$(NativeDependenciesPlatform)\$(NativeDependenciesConfiguration)\dynamic\$(ZlibCallingConvention)\zlib.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + </ItemGroup> + </When> + <Otherwise /> + </Choose> +</Project>
\ No newline at end of file diff --git a/vsprojects/coapp/zlib/version.inc b/vsprojects/coapp/zlib/version.inc new file mode 100644 index 0000000000..1f893a4951 --- /dev/null +++ b/vsprojects/coapp/zlib/version.inc @@ -0,0 +1 @@ +#define { package-version : 1.2.8.9; } diff --git a/vsprojects/coapp/zlib/zlib.sln b/vsprojects/coapp/zlib/zlib.sln new file mode 100644 index 0000000000..7c38e6e121 --- /dev/null +++ b/vsprojects/coapp/zlib/zlib.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcxproj", "{63BED288-E8C3-4345-B84D-2E64598DCF3A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {63BED288-E8C3-4345-B84D-2E64598DCF3A}.Debug|Win32.ActiveCfg = Debug|Win32 + {63BED288-E8C3-4345-B84D-2E64598DCF3A}.Debug|Win32.Build.0 = Debug|Win32 + {63BED288-E8C3-4345-B84D-2E64598DCF3A}.Release|Win32.ActiveCfg = Release|Win32 + {63BED288-E8C3-4345-B84D-2E64598DCF3A}.Release|Win32.Build.0 = Release|Win32 + {63BED288-E8C3-4345-B84D-2E64598DCF3A}.Debug|x64.ActiveCfg = Debug|x64 + {63BED288-E8C3-4345-B84D-2E64598DCF3A}.Debug|x64.Build.0 = Debug|x64 + {63BED288-E8C3-4345-B84D-2E64598DCF3A}.Release|x64.ActiveCfg = Release|x64 + {63BED288-E8C3-4345-B84D-2E64598DCF3A}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vsprojects/coapp/zlib/zlib.vcxproj b/vsprojects/coapp/zlib/zlib.vcxproj new file mode 100644 index 0000000000..56df39a248 --- /dev/null +++ b/vsprojects/coapp/zlib/zlib.vcxproj @@ -0,0 +1,147 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="PreBuildCmds;PreBuildTargets;Build;PostBuildCmds;PostBuildTargets" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Label="CoApp" > + <CoAppEtcDirectory>$(registry:HKEY_LOCAL_MACHINE\Software\Outercurve\CoApp.Powershell\etc)</CoAppEtcDirectory> + + <!-- Set to true to make visual studio use PTK when building.--> + <UsePTKFromVisualStudio>false</UsePTKFromVisualStudio> + </PropertyGroup> + + <PropertyGroup Label="Configuration" > + <!-- This lets Visual Studio see this as a VC12 project by default --> + <PlatformToolset Condition="'$(PlatformToolset)' == ''">v120</PlatformToolset> + </PropertyGroup> + + <Import Condition="Exists('$(CoAppEtcDirectory)\common-variables.vcxproj')" Project="$(CoAppEtcDirectory)\common-variables.vcxproj" /> + + <PropertyGroup Label="CustomSettings" /> + + <PropertyGroup Label="Globals"> + <ProjectGuid>{63BED288-E8C3-4345-B84D-2E64598DCF3A}</ProjectGuid> + <RootNamespace>$(MSBuildProjectName)</RootNamespace> + + <OutNameSuffix Condition="$(IS_CDECL) AND $(IS_DYNAMIC)">1</OutNameSuffix> + + <!-- set to Application or DynamicLibrary (DynamicLibrary can get altered to StaticLibrary by PTK --> + <ConfigurationType>DynamicLibrary</ConfigurationType> + + <!-- Common Compiler Defines (semicolon delimited) --> + <Defines>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;</Defines> + <Defines Condition="$(IS_STDCALL)">$(Defines);ZLIB_WINAPI;</Defines> + <Defines Condition="$(IS_DYNAMIC)">$(Defines);ZLIB_DLL;</Defines> + <Defines Condition="'$(AppContainer)' == 'App'">$(Defines);IOWIN32_USING_WINRT_API=1;</Defines> + <Defines Condition="'$(AppContainer)' != 'App'">$(Defines);IOWIN32_USING_WINRT_API=0;</Defines> + <Defines Condition="'$(UseASM)' == 'ASM'">$(Defines);ASMV;ASMINF;</Defines> + <Defines Condition="$(IS_X64)">$(Defines);WIN64;</Defines> + + <!-- Additional Include folders (semicolon delimited) --> + <IncludeDirectories>..\..\..\third_party\zlib;</IncludeDirectories> + + <!-- Additional Library folders (semicolon delimited) --> + <LibraryDirectories></LibraryDirectories> + + <!-- Libraries to Link with --> + <Libraries></Libraries> + + <!-- Batch script to run before Build--> + <PreBuild></PreBuild> + + <!-- Batch script to run after Build--> + <PostBuild></PostBuild> + + <!-- Batch script to run before Link step--> + <PreLink></PreLink> + + <!-- Batch script to run after Link--> + <PostLink></PostLink> + + <!-- Batch script to run before Lib step--> + <PreLib></PreLib> + + <!-- Batch script to run after Lib--> + <PostLib></PostLib> + + <!-- Targets to run before Build (semcolon delimited)--> + <PreBuildTargets></PreBuildTargets> + + <!-- Targets to run before Build (semcolon delimited)--> + <PostBuildTargets></PostBuildTargets> + + <!-- for Dynamic libs, you can specify the Module .DEF file path --> + <ModuleDefinitionFile></ModuleDefinitionFile> + </PropertyGroup> + + <Import Condition="Exists('$(CoAppEtcDirectory)\common-header.vcxproj')" Project="$(CoAppEtcDirectory)\common-header.vcxproj" /> + <Import Condition="'$(UseASM)' == 'ASM'" Project="$(VCTargetsPath)\BuildCustomizations\masm.props" /> + + <PropertyGroup> + <OutDir>$(ProjectRootDir)Output/$(PlatformToolset)/$(Platform)/$(Configuration)/$(UsesConfigurationType)/$(CallingConvention)/$(CharacterSet)/$(AppContainer)/$(UseASM)/</OutDir> + <IntDir>$(ProjectRootDir)Intermediate/$(TargetName)/$(PlatformToolset)/$(Platform)/$(Configuration)/$(UsesConfigurationType)/$(CallingConvention)/$(CharacterSet)/$(AppContainer)/$(UseASM)/</IntDir> + </PropertyGroup> + + <ItemDefinitionGroup> + <ClCompile> + <SDLCheck>true</SDLCheck> + </ClCompile> + <Link> + <BaseAddress>0x5A4C0000</BaseAddress> + </Link> + </ItemDefinitionGroup> + + <ItemGroup Condition="'$(UseASM)' == 'ASM'"> + <MASM Include="..\..\..\third_party\zlib\contrib\masmx64\gvmat64.asm" Condition="$(IS_X64)"> + <AssembledCodeListingFile>$(IntDir)gvmat64.lst</AssembledCodeListingFile> + <MASMBeforeTargets>Build</MASMBeforeTargets> + <ObjectFileName>$(IntDir)gvmat64.obj</ObjectFileName> + </MASM> + <MASM Include="..\..\..\third_party\zlib\contrib\masmx64\inffasx64.asm" Condition="$(IS_X64)"> + <AssembledCodeListingFile>$(IntDir)inffasx64.lst</AssembledCodeListingFile> + <MASMBeforeTargets>Build</MASMBeforeTargets> + <ObjectFileName>$(IntDir)inffasx64.obj</ObjectFileName> + </MASM> + <MASM Include="..\..\..\third_party\zlib\contrib\masmx86\inffas32.asm" Condition="$(IS_X86) AND $(IS_STDCALL)"> + <AssembledCodeListingFile>$(IntDir)inffas32.lst</AssembledCodeListingFile> + <MASMBeforeTargets>Build</MASMBeforeTargets> + <UseSafeExceptionHandlers>true</UseSafeExceptionHandlers> + <AdditionalOptions>/coff %(AdditionalOptions)</AdditionalOptions> + <ObjectFileName>$(IntDir)inffas32.obj</ObjectFileName> + </MASM> + <MASM Include="..\..\..\third_party\zlib\contrib\masmx86\match686.asm" Condition="$(IS_X86) AND $(IS_STDCALL)"> + <AssembledCodeListingFile>$(IntDir)match686.lst</AssembledCodeListingFile> + <MASMBeforeTargets>Build</MASMBeforeTargets> + <UseSafeExceptionHandlers>true</UseSafeExceptionHandlers> + <AdditionalOptions>/coff %(AdditionalOptions)</AdditionalOptions> + <ObjectFileName>$(IntDir)match686.obj</ObjectFileName> + </MASM> + </ItemGroup> + + <ItemGroup Label="C Source Files"> + <!-- Include the source files to compile here --> + <!-- <ClCompile Include="..\src\foo.c" /> --> + <ClCompile Include="..\..\..\third_party\zlib\adler32.c" /> + <ClCompile Include="..\..\..\third_party\zlib\compress.c" /> + <ClCompile Include="..\..\..\third_party\zlib\crc32.c" /> + <ClCompile Include="..\..\..\third_party\zlib\deflate.c" /> + <ClCompile Include="..\..\..\third_party\zlib\gzclose.c" /> + <ClCompile Include="..\..\..\third_party\zlib\gzlib.c" /> + <ClCompile Include="..\..\..\third_party\zlib\gzread.c" /> + <ClCompile Include="..\..\..\third_party\zlib\gzwrite.c" /> + <ClCompile Include="..\..\..\third_party\zlib\infback.c" /> + <ClCompile Include="..\..\..\third_party\zlib\contrib\masmx64\inffas8664.c" Condition="$(IS_X64)" /> + <ClCompile Include="..\..\..\third_party\zlib\inffast.c" /> + <ClCompile Include="..\..\..\third_party\zlib\inflate.c" /> + <ClCompile Include="..\..\..\third_party\zlib\inftrees.c" /> + <ClCompile Include="..\..\..\third_party\zlib\trees.c" /> + <ClCompile Include="..\..\..\third_party\zlib\uncompr.c" /> + <ClCompile Include="..\..\..\third_party\zlib\zutil.c" /> + </ItemGroup> + + <ItemGroup Label="Resource Files"> + <!-- Include the source files to compile here --> + <!-- <ResourceCompile Include="..\src\foo.rc" /> --> + <ResourceCompile Include="..\..\..\third_party\zlib\win32\zlib1.rc" /> + </ItemGroup> + + <Import Condition="'$(UseASM)' == 'ASM'" Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" /> + <Import Condition="Exists('$(CoAppEtcDirectory)\common-footer.vcxproj')" Project="$(CoAppEtcDirectory)\common-footer.vcxproj" /> +</Project> |