Skip to content

Latest commit

 

History

History
124 lines (104 loc) · 3.91 KB

BUILD.md

File metadata and controls

124 lines (104 loc) · 3.91 KB

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:

  1. Download amalgamation from https://www.sqlite.org/download.html
  2. Unzip all files to Winyl/src/sqlite3/sqlite3/src
  3. Build Winyl/src/sqlite3/sqlite3.sln

Build TagLib:

  1. Download https://github.com/taglib/taglib
  2. Configure Visual Studio projects with CMake (CMake GUI is the easiest way) with ENABLE_STATIC_RUNTIME only option
  3. Patch file taglib/mpeg/id3v2/id3v2tag.cpp: in function downgradeFrames replace all String::Latin1 to String::UTF16 (must be 5 replacements)
  4. In Visual studio in tag project properties change Platform Toolset to v141_xp
  5. Build only tag project, other projects aren't needed
  6. 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")
  7. x86: Copy Release and Debug folders with .lib and .pdb files to Winyl/src/taglib
  8. x64: Reconfigure Win64 Visual Studio projects with CMake and build it
  9. 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):

  1. Download zlib https://zlib.net
  2. Open contrib/vstudio/vc14/zlibvc.sln
  3. Open zlibstat ReleaseWithoutAsm project properties
  4. Change Platform Toolset to v141_xp
  5. Change C/C++ -> Code Generation -> Runtime Library -> Set /MT
  6. Change C/C++ -> General -> Debug Information Format -> Set None
  7. Build zlibstat ReleaseWithoutAsm
  8. x86: Copy zlibstat.lib to Winyl/src/zlib
  9. x64: Copy zlibstat.lib to Winyl/src/zlib/x64
  10. Copy zlib.h, zconf.h, ioapi.h, zip.h, unzip.h to Winyl/src/zlib
  11. Build PackSkin utility Winyl/PackSkin/PackSkin.sln

pugixml:

  1. Download pugixml https://pugixml.org
  2. Unzip it to Winyl/src/pugixml
  3. 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:

  1. 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
  2. Unzip .h files to Winyl/src/bass
  3. x86: Unzip .lib files to Winyl/src/bass (for bass_fx use .lib file from safeseh folder)
  4. 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:

  1. Copy the data folder somewhere
  2. Remove Profile subfolder
  3. Copy Winyl.exe to the data folder
  4. Move dlls from x86/x64 to the data folder and delete x86 and x64 folders
  5. Copy PackSkin.exe to data\Skin folder
  6. Pack all skins with PackSkin utility and delete unpacked skins
  7. Rename the data folder to 'Winyl'
  8. Portable version: zip the folder
  9. Setup version: run Inno Setup script
  10. Repeat all for x64 version