You need Visual Studio C++ 2017 (with Windows XP support for C++).
First you need to compile all 3rd-party libraries.
Precompiled libraries and everything else that are needed to build the program also avaliable here:
https://drive.google.com/file/d/1_LJhmeySUFwvI7CXPuFgB84bDYPr5tiR/view?usp=sharing
You don't need to follow the instructions below if you use it, but you must use the same compiler (VC++ 2017 for now).
Build SQLite:
- Download amalgamation from https://www.sqlite.org/download.html
- Unzip all files to Winyl/src/sqlite3/sqlite3/src
- Build Winyl/src/sqlite3/sqlite3.sln
Build TagLib:
- Download https://github.com/taglib/taglib
- Configure Visual Studio projects with CMake (CMake GUI is the easiest way) with ENABLE_STATIC_RUNTIME only option
- Patch file taglib/mpeg/id3v2/id3v2tag.cpp: in function downgradeFrames replace all String::Latin1 to String::UTF16 (must be 5 replacements)
- In Visual studio in tag project properties change Platform Toolset to v141_xp
- Build only tag project, other projects aren't needed
- Copy all .h and .tcc files to Winyl/src/taglib (cmdline: for /r "taglib-master\taglib" %f in (.h;.tcc) do copy "%f" "Winyl\Winyl\src\taglib")
- x86: Copy Release and Debug folders with .lib and .pdb files to Winyl/src/taglib
- x64: Reconfigure Win64 Visual Studio projects with CMake and build it
- x64: Copy Release and Debug folders with .lib and .pdb files to Winyl/src/taglib/x64
Build zlib (can be skipped, needed only for PackSkin utility):
- Download zlib https://zlib.net
- Open contrib/vstudio/vc14/zlibvc.sln
- Open zlibstat ReleaseWithoutAsm project properties
- Change Platform Toolset to v141_xp
- Change C/C++ -> Code Generation -> Runtime Library -> Set /MT
- Change C/C++ -> General -> Debug Information Format -> Set None
- Build zlibstat ReleaseWithoutAsm
- x86: Copy zlibstat.lib to Winyl/src/zlib
- x64: Copy zlibstat.lib to Winyl/src/zlib/x64
- Copy zlib.h, zconf.h, ioapi.h, zip.h, unzip.h to Winyl/src/zlib
- Build PackSkin utility Winyl/PackSkin/PackSkin.sln
pugixml:
- Download pugixml https://pugixml.org
- Unzip it to Winyl/src/pugixml
- Uncomment the following lines in pugiconfig.hpp
#define PUGIXML_NO_XPATH
#define PUGIXML_NO_STL
#define PUGIXML_NO_EXCEPTIONS
#define PUGIXML_HEADER_ONLY
#define PUGIXML_HAS_LONG_LONG
BASS:
- Download from http://www.un4seen.com
bass24.zip
bassmix24.zip
bass_fx24.zip
basswasapi24.zip
bassasio13.zip
bass_aac24.zip
bass_ape24.zip
bass_mpc24.zip
bass_spx24.zip
bass_tta24.zip
bassalac24.zip
bassflac24.zip
bassopus24.zip
basswm24.zip
basswv24.zip - Unzip .h files to Winyl/src/bass
- x86: Unzip .lib files to Winyl/src/bass (for bass_fx use .lib file from safeseh folder)
- x64: Unzip x64 .lib files to Winyl/src/bass/x64
That is all if you only need to compile the release version, build it with Winyl.sln.
To run under the debugger or create packages you need Winyl/data folder.
The data folder structure:
File.ico
License.txt
Portable.dat
Equalizer/Presets.xml
Language/*
Skin/*
x86/bass.dll
x86/bass_fx.dll
x86/bassasio.dll
x86/bassmix.dll
x86/basswasapi.dll
x86/Bass/bass_aac.dll
x86/Bass/bass_ape.dll
x86/Bass/bass_mpc.dll
x86/Bass/bass_spx.dll
x86/Bass/bass_tta.dll
x86/Bass/bassalac.dll
x86/Bass/bassflac.dll
x86/Bass/bassopus.dll
x86/Bass/basswma.dll
x86/Bass/basswv.dll
x64/(the same as above but dlls are x64)
Creating packages:
- Copy the data folder somewhere
- Remove Profile subfolder
- Copy Winyl.exe to the data folder
- Move dlls from x86/x64 to the data folder and delete x86 and x64 folders
- Copy PackSkin.exe to data\Skin folder
- Pack all skins with PackSkin utility and delete unpacked skins
- Rename the data folder to 'Winyl'
- Portable version: zip the folder
- Setup version: run Inno Setup script
- Repeat all for x64 version