changeset 161:643bae02d652

Windows packaging work
author Chris Cannam
date Thu, 06 Feb 2020 14:25:59 +0000
parents 26c203b97e49
children 5e7b54a2591a
files .hgignore win32-build/License.rtf win32-build/build.cmd win32-build/main.bmp win32-build/pyin.pro win32-build/pyin.vcxproj win32-build/pyin.wxs win32-build/top.bmp win32-build/vamp-plugin.map win32-build/winicon.ico
diffstat 10 files changed, 376 insertions(+), 40 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Thu Feb 06 11:15:41 2020 +0000
+++ b/.hgignore	Thu Feb 06 14:25:59 2020 +0000
@@ -8,3 +8,8 @@
 test/regression/obtained-*
 *.orig
 *.bak
+win32-build/release
+win32-build/x64
+*.msi
+
+
Binary file win32-build/License.rtf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/win32-build/build.cmd	Thu Feb 06 14:25:59 2020 +0000
@@ -0,0 +1,88 @@
+
+rem  Run this from within the top-level project dir: win32-build\build.cmd
+
+rem  NB this nowadays only makes a 64-bit Windows build, not a 32-bit one!
+
+echo on
+
+set STARTPWD=%CD%
+
+set vcvarsall="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat"
+
+if not exist %vcvarsall% (
+@   echo "Could not find MSVC vars batch file"
+@   exit /b 2
+)
+
+set WIXDIR=C:\Program Files (x86)\WiX Toolset v3.11
+if not exist "%WIXDIR%\bin" (
+@   echo Could not find WiX Toolset
+@   exit /b 2
+)
+
+set NAME=Open Source Developer, Christopher Cannam
+
+set ORIGINALPATH=%PATH%
+set PATH=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%
+
+set ARG=%1
+shift
+if "%ARG%" == "sign" (
+@   echo NOTE: sign option specified, will attempt to codesign exe and msi
+@   echo NOTE: starting by codesigning an unrelated executable, so we know
+@   echo NOTE: whether it'll work before doing the entire build
+copy "%WIXDIR%\bin\light.exe" signtest.exe
+signtool sign /v /n "%NAME%" /t http://time.certum.pl /fd sha1 /a signtest.exe
+if errorlevel 1 exit /b %errorlevel%
+signtool verify /pa signtest.exe
+if errorlevel 1 exit /b %errorlevel%
+del signtest.exe
+@   echo NOTE: success
+) else (
+@   echo NOTE: sign option not specified, will not codesign anything
+)
+
+call %vcvarsall% amd64
+
+set PATH=%SMLNJDIR%\bin;%WIXDIR%\bin;%PATH%
+
+cd %STARTPWD%
+
+cd win32-build
+msbuild pyin.vcxproj /t:Rebuild /p:Configuration=Release
+if %errorlevel% neq 0 exit /b %errorlevel%
+
+cd %STARTPWD%
+
+call %vcvarsall% x86
+
+cd win32-build
+msbuild pyin.vcxproj /t:Rebuild /p:Configuration=Release
+if %errorlevel% neq 0 exit /b %errorlevel%
+
+if "%ARG%" == "sign" (
+@echo Signing plugins
+signtool sign /v /n "%NAME%" /t http://time.certum.pl /fd sha1 /a Release\pyin.dll
+signtool verify /pa Release\pyin.dll
+signtool sign /v /n "%NAME%" /t http://time.certum.pl /fd sha1 /a x64\Release\pyin.dll
+signtool verify /pa x64\Release\pyin.dll
+)
+
+del pyin.msi
+candle -v pyin.wxs
+light -ext WixUIExtension -v pyin.wixobj
+if %errorlevel% neq 0 exit /b %errorlevel%
+del pyin.wixobj
+del pyin.wixpdb
+
+if "%ARG%" == "sign" (
+@echo Signing package
+signtool sign /v /n "%NAME%" /t http://time.certum.pl /fd sha1 /a pyin.msi
+signtool verify /pa pyin.msi
+)
+
+set PATH=%ORIGINALPATH%
+
+cd %STARTPWD%
+@echo Done
+
Binary file win32-build/main.bmp has changed
--- a/win32-build/pyin.pro	Thu Feb 06 11:15:41 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-TEMPLATE = lib
-
-INCLUDEPATH += ../../sv-dependency-builds/win32-mingw/include ../../../boost_1_57_0
-LIBS += ../../sv-dependency-builds/win32-mingw/lib/libvamp-sdk.a -Wl,--version-script=../win32-build/vamp-plugin.map
-
-CONFIG -= qt
-CONFIG += plugin release warn_on
-
-TARGET = pyin
-
-SOURCES += \
-    ../YinUtil.cpp \
-    ../Yin.cpp \
-    ../SparseHMM.cpp \
-    ../MonoPitchHMM.cpp \
-    ../MonoNoteParameters.cpp \
-    ../MonoNoteHMM.cpp \
-    ../MonoNote.cpp \
-    ../libmain.cpp \
-    ../YinVamp.cpp \
-    ../PYinVamp.cpp \
-    ../LocalCandidatePYIN.cpp
-
-HEADERS += \
-    ../YinUtil.h \
-    ../Yin.h \
-    ../SparseHMM.h \
-    ../MonoPitchHMM.h \
-    ../MonoNoteParameters.h \
-    ../MonoNoteHMM.h \
-    ../MonoNote.h \
-    ../MeanFilter.h \
-    ../YinVamp.h \
-    ../PYinVamp.h \
-    ../LocalCandidatePYIN.h
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/win32-build/pyin.vcxproj	Thu Feb 06 14:25:59 2020 +0000
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E3D050ED-1FF6-3735-9954-36D5ED2E5027}</ProjectGuid>
+    <RootNamespace>pyin</RootNamespace>
+    <WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v142</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v142</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v142</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v142</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <TargetName>pyin</TargetName>
+  </PropertyGroup>
+
+  <ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|x64&apos;">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\vamp-plugin-sdk;/Libraries/boost_1_69_0;..\..\boost_1_69_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <DebugInformationFormat>None</DebugInformationFormat>
+      <DisableSpecificWarnings>4577;4467;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;NOMINMAX;_USE_MATH_DEFINES;HAVE_C99_VARARGS_MACROS;_HAS_STD_BYTE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <LinkDLL>true</LinkDLL>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <AdditionalOptions>/EXPORT:vampGetPluginDescriptor %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)\pyin.dll</OutputFile>
+    </Link>
+  </ItemDefinitionGroup>
+
+  <ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|x64&apos;">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\vamp-plugin-sdk;/Libraries/boost_1_69_0;..\..\boost_1_69_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <DisableSpecificWarnings>4577;4467;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;NOMINMAX;_USE_MATH_DEFINES;HAVE_C99_VARARGS_MACROS;_HAS_STD_BYTE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <LinkDLL>true</LinkDLL>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <AdditionalOptions>/EXPORT:vampGetPluginDescriptor %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)\pyin.dll</OutputFile>
+    </Link>
+  </ItemDefinitionGroup>
+
+  <ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|Win32&apos;">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\vamp-plugin-sdk;/Libraries/boost_1_69_0;..\..\boost_1_69_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <DebugInformationFormat>None</DebugInformationFormat>
+      <DisableSpecificWarnings>4577;4467;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;NOMINMAX;_USE_MATH_DEFINES;HAVE_C99_VARARGS_MACROS;_HAS_STD_BYTE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <LinkDLL>true</LinkDLL>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <AdditionalOptions>/EXPORT:vampGetPluginDescriptor %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)\pyin.dll</OutputFile>
+    </Link>
+  </ItemDefinitionGroup>
+
+  <ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|Win32&apos;">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\vamp-plugin-sdk;/Libraries/boost_1_69_0;..\..\boost_1_69_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <DisableSpecificWarnings>4577;4467;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;NOMINMAX;_USE_MATH_DEFINES;HAVE_C99_VARARGS_MACROS;_HAS_STD_BYTE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <LinkDLL>true</LinkDLL>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <AdditionalOptions>/EXPORT:vampGetPluginDescriptor %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)\pyin.dll</OutputFile>
+    </Link>
+  </ItemDefinitionGroup>
+
+  <ItemGroup>
+    <ClCompile Include="..\..\vamp-plugin-sdk\src\vamp-sdk\FFT.cpp" />
+    <ClCompile Include="..\LocalCandidatePYIN.cpp" />
+    <ClCompile Include="..\MonoNote.cpp" />
+    <ClCompile Include="..\MonoNoteHMM.cpp" />
+    <ClCompile Include="..\MonoNoteParameters.cpp" />
+    <ClCompile Include="..\MonoPitchHMM.cpp" />
+    <ClCompile Include="..\PYinVamp.cpp" />
+    <ClCompile Include="..\..\vamp-plugin-sdk\src\vamp-sdk\PluginAdapter.cpp" />
+    <ClCompile Include="..\..\vamp-plugin-sdk\src\vamp-sdk\RealTime.cpp" />
+    <ClCompile Include="..\SparseHMM.cpp" />
+    <ClCompile Include="..\Yin.cpp" />
+    <ClCompile Include="..\YinUtil.cpp" />
+    <ClCompile Include="..\YinVamp.cpp" />
+    <ClCompile Include="..\libmain.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="LocalCandidatePYIN.h" />
+    <ClInclude Include="MeanFilter.h" />
+    <ClInclude Include="MonoNote.h" />
+    <ClInclude Include="MonoNoteHMM.h" />
+    <ClInclude Include="MonoNoteParameters.h" />
+    <ClInclude Include="MonoPitchHMM.h" />
+    <ClInclude Include="PYinVamp.h" />
+    <ClInclude Include="SparseHMM.h" />
+    <ClInclude Include="Yin.h" />
+    <ClInclude Include="YinUtil.h" />
+    <ClInclude Include="YinVamp.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+</Project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/win32-build/pyin.wxs	Thu Feb 06 14:25:59 2020 +0000
@@ -0,0 +1,123 @@
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+
+  <Product
+      Name="pYIN" 
+      Id="*"
+      Language="1033"
+      Codepage="1252" 
+      Version="1.2"
+      UpgradeCode="3b77b120-609d-41d6-a181-ae612cace655"
+      Manufacturer="Queen Mary, University of London">
+    
+    <Package
+        Id="*"
+        Keywords="Installer"
+        Description="pYIN 64-bit Installer"
+        Comments="Copyright (c) 2020 Queen Mary, University of London"
+        Manufacturer="Queen Mary, University of London" 
+        InstallerVersion="200"
+        Languages="1033" 
+        Compressed="yes" 
+        Platform="x64"
+        SummaryCodepage="1252"/>
+
+    <MajorUpgrade DowngradeErrorMessage="A later version of pYIN is already installed. Setup will now exit."/>
+
+    <Media Id="1" Cabinet="PYIN.cab" EmbedCab="yes" DiskPrompt="CD-ROM #1"/>
+    <Property Id="DiskPrompt" Value="pYIN Installation [1]"/>
+
+    <Directory Id="TARGETDIR" Name="SourceDir">
+
+      <Directory Id="ProgramFiles64Folder" Name="PFiles64">
+        <Directory Id="VampPlugins" Name="Vamp Plugins">
+
+          <Component Win64="yes"
+              Id="Plugin64"
+              Guid="cbd4079a-6d13-4103-98f2-8c00b0307a4e">
+            <File
+                Id="README64"
+                Name="pyin-README.txt"
+                Source="..\README"/>
+            <File
+                Id="COPYING64"
+                Name="pyin-COPYING.txt"
+                Source="..\COPYING"/>
+            <File
+                Id="Cat64"
+                Name="pyin.cat"
+                Source="..\pyin.cat"/>
+            <File
+                Id="Turtle64"
+                Name="pyin.n3"
+                Source="..\pyin.n3"/>
+            <File
+                Id="PluginLibrary64"
+                Name="pyin.dll"
+                Source="x64\Release\pyin.dll"/>
+          </Component>
+
+	</Directory> <!-- vamp -->
+      </Directory> <!-- pfiles64 -->
+
+      <Directory Id="ProgramFilesFolder" Name="PFiles">
+        <Directory Id="Vamp32Plugins" Name="Vamp Plugins">
+        
+          <Component
+              Id="Plugin32"
+              Guid="229efe01-7741-43f0-a9d9-a11d8ec6ed21">
+            <File
+                Id="README32"
+                Name="pyin-README.txt"
+                Source="..\README"/>
+            <File
+                Id="COPYING32"
+                Name="pyin-COPYING.txt"
+                Source="..\COPYING"/>
+            <File
+                Id="Cat32"
+                Name="pyin.cat"
+                Source="..\pyin.cat"/>
+            <File
+                Id="Turtle32"
+                Name="pyin.n3"
+                Source="..\pyin.n3"/>
+            <File
+                Id="PluginLibrary32"
+                Name="pyin.dll"
+                Source="Release\pyin.dll"/>
+          </Component>
+          
+        </Directory>
+      </Directory>
+
+    </Directory>
+
+    <Feature 
+	Id="Complete"
+	Title="Required files"
+	Description="Installs the required files for pYIN."
+	AllowAdvertise="no"
+	Absent="disallow"
+	Level="1">
+      <ComponentRef Id="Plugin64"/>
+      <ComponentRef Id="Plugin32"/>
+    </Feature>
+
+    <UI>
+      <UIRef Id="WixUI_Minimal" />
+      <UIRef Id="WixUI_ErrorProgressText" />
+    </UI>
+
+    <Property Id="WIXUI_DONTVALIDATEPATH" Value="1" />
+    <Property Id="WixAppFolder" Value="WixPerMachineFolder" />
+    <WixVariable Id="WixUILicenseRtf" Value="License.rtf" />
+    
+    <Icon Id="winicon.ico" SourceFile="winicon.ico"/>
+    <Property Id="ARPPRODUCTICON" Value="winicon.ico" />
+
+    <WixVariable Id="WixUIBannerBmp" Value="top.bmp"/>
+    <WixVariable Id="WixUIDialogBmp" Value="main.bmp"/>
+
+  </Product>
+</Wix>
+
Binary file win32-build/top.bmp has changed
--- a/win32-build/vamp-plugin.map	Thu Feb 06 11:15:41 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-{
-    global: vampGetPluginDescriptor;
-    local: *;
-};
Binary file win32-build/winicon.ico has changed