2015-10-19 21:24:39 +00:00
##Build instructions for Visual Studio 2015
2014-06-25 20:15:34 +00:00
###Prepare folder
Choose a folder for the future build, for example **D:\TBuild\** . There you will have two folders, **Libraries** for third-party libs and **tdesktop** (or **tdesktop-master** ) for the app.
###Clone source code
By git – in [Git Bash ](http://git-scm.com/downloads ) go to ** /d/tbuild** and run
git clone https://github.com/telegramdesktop/tdesktop.git
or download in ZIP and extract to **D:\TBuild\** , rename **tdesktop-master** to **tdesktop** to have **D:\TBuild\tdesktop\Telegram.sln** solution
###Prepare libraries
2015-10-19 21:24:39 +00:00
####OpenSSL
Open **VS2015 x86 Native Tools Command Prompt.bat** (should be in ** \\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\Shortcuts\\** folder), go to **D:\\TBuild\\Libraries** and run
git clone https://github.com/openssl/openssl.git
cd openssl
git checkout OpenSSL_1_0_1-stable
git apply ./../../tdesktop/Telegram/_openssl_patch.diff
perl Configure VC-WIN32 --prefix=D:\TBuild\Libraries\openssl\Release
ms\do_ms
nmake -f ms\nt.mak
nmake -f ms\nt.mak install
cd ..
git clone https://github.com/openssl/openssl.git openssl_debug
cd openssl_debug
git checkout OpenSSL_1_0_1-stable
git apply ./../../tdesktop/Telegram/_openssl_patch.diff
perl Configure debug-VC-WIN32 --prefix=D:\TBuild\Libraries\openssl_debug\Debug
ms\do_ms
git apply ./../../tdesktop/Telegram/_openssl_debug_patch.diff
nmake -f ms\nt.mak
nmake -f ms\nt.mak install
2014-06-25 20:15:34 +00:00
2015-10-14 18:50:36 +00:00
http://slproweb.com/products/Win32OpenSSL.html > Download [**Win32 OpenSSL v1.0.1p** (19.8 Mb) ](http://slproweb.com/download/Win32OpenSSL-1_0_1p.exe )
2014-06-25 20:15:34 +00:00
Install to **D:\TBuild\Libraries\OpenSSL-Win32** , while installing **Copy OpenSSL DLLs to** choose **The OpenSSL binaries (/bin) directory**
####LZMA SDK 9.20
http://www.7-zip.org/sdk.html > Download [**LZMA SDK (C, C++, C#, Java)** 9.20 ](http://downloads.sourceforge.net/sevenzip/lzma920.tar.bz2 )
Extract to **D:\TBuild\Libraries**
#####Building library
2015-10-19 21:24:39 +00:00
* Open in VS2015 **D:\TBuild\Libraries\lzma\C\Util\LzmaLib\LzmaLib.dsw** > One-way upgrade – **OK**
2014-06-25 20:15:34 +00:00
* For **Debug** and **Release** configurations
* LzmaLib Properties > General > Configuration Type = **Static library (.lib)** – **OK**
* LzmaLib Properties > Librarian > General > Target Machine = **MachineX86 (/MACHINE:X86)** – **OK**
* Build Debug configuration
* Build Release configuration
####zlib 1.2.8
http://www.zlib.net/ > Download [**zlib source code, version 1.2.8, zipfile format** ](http://zlib.net/zlib128.zip )
2015-06-01 12:44:10 +00:00
Extract to **D:\\TBuild\\Libraries\\**
2014-06-25 20:15:34 +00:00
#####Building library
2015-10-19 21:24:39 +00:00
* Open in VS2015 **D:\TBuild\Libraries\zlib-1.2.8\contrib\vstudio\vc11\zlibvc.sln** > One-way upgrade – **OK**
2014-06-25 20:15:34 +00:00
* We are interested only in **zlibstat** project, but it depends on some custom pre-build step, so build all
* For **Debug** configuration
* zlibstat Properties > C/C++ > Code Generation > Runtime Library = **Multi-threaded Debug (/MTd)** – **OK**
* For **Release** configuration
* zlibstat Properties > C/C++ > Code Generation > Runtime Library = **Multi-threaded (/MT)** – **OK**
* Build Solution for Debug configuration – only **zlibstat** project builds successfully
* Build Solution for Release configuration – only **zlibstat** project builds successfully
####libexif 0.6.20
Get sources from https://github.com/telegramdesktop/libexif-0.6.20, by git – in [Git Bash ](http://git-scm.com/downloads ) go to ** /d/tbuild/libraries** and run
git clone https://github.com/telegramdesktop/libexif-0.6.20.git
or download in ZIP and extract to **D:\TBuild\Libraries\** , rename **libexif-0.6.20-master** to **libexif-0.6.20** to have **D:\TBuild\Libraries\libexif-0.6.20\win32\lib_exif.sln** solution
#####Building library
2015-10-19 21:24:39 +00:00
* Open in VS2015 **D:\TBuild\Libraries\libexif-0.6.20\win32\lib_exif.sln**
2014-06-25 20:15:34 +00:00
* Build Debug configuration
* Build Release configuration
2015-06-03 18:13:01 +00:00
####OpenAL Soft, slightly patched
2014-09-04 07:33:44 +00:00
2015-10-19 21:24:39 +00:00
Open **VS2015 x86 Native Tools Command Prompt.bat** (should be in ** \\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\Shortcuts\\** folder), go to **D:\\TBuild\\Libraries** and run
2014-09-04 07:33:44 +00:00
git clone git://repo.or.cz/openal-soft.git
2015-10-19 21:24:39 +00:00
git checkout 9b6b084d
2015-06-03 18:13:01 +00:00
git apply ./../../tdesktop/Telegram/_openal_patch.diff
2014-09-04 07:33:44 +00:00
#####Building library
* Install [CMake ](http://www.cmake.org/ )
2015-10-19 21:24:39 +00:00
* Open **VS2015 x86 Native Tools Command Prompt.bat** (should be in ** \\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\Shortcuts\\** folder) and go to **D:\TBuild\Libraries\openal-soft\build\**
* Run **cmake -G "Visual Studio 14 2015" -D LIBTYPE:STRING=STATIC ..**
* Open in VS2015 **D:\TBuild\Libraries\openal-soft\build\OpenAL.sln**
2014-09-04 07:33:44 +00:00
* For **Debug** configuration
* OpenAL32 Properties > C/C++ > Code Generation > Runtime Library = **Multi-threaded Debug (/MTd)** – **OK**
* common Properties > C/C++ > Code Generation > Runtime Library = **Multi-threaded Debug (/MTd)** – **OK**
* For **Release** configuration
* OpenAL32 Properties > C/C++ > Code Generation > Runtime Library = **Multi-threaded (/MT)** – **OK**
* common Properties > C/C++ > Code Generation > Runtime Library = **Multi-threaded (/MT)** – **OK**
2015-06-01 12:44:10 +00:00
####Opus codec
2014-09-04 07:33:44 +00:00
2015-06-01 12:44:10 +00:00
Get sources by git – in [Git Bash ](http://git-scm.com/downloads ) go to ** /d/tbuild/libraries** and run
2014-09-04 07:33:44 +00:00
2015-06-01 12:44:10 +00:00
git clone https://github.com/telegramdesktop/opus.git
to have **D:\TBuild\Libraries\opus\win32**
2014-09-04 07:33:44 +00:00
2015-06-01 12:44:10 +00:00
#####Building libraries
2015-10-19 21:24:39 +00:00
* Open in VS2015 **D:\TBuild\Libraries\opus\win32\VS2010\opus.sln**
2014-09-04 07:33:44 +00:00
* Build Debug configuration
2015-06-01 12:44:10 +00:00
* Build Release configuration (it will be required in **FFmpeg** build!)
2014-09-04 07:33:44 +00:00
2015-06-01 12:44:10 +00:00
####FFmpeg
2014-09-04 07:33:44 +00:00
2015-10-19 21:24:39 +00:00
Open **VS2015 x86 Native Tools Command Prompt.bat** (should be in ** \\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\Shortcuts\\** folder) and run
2014-09-04 07:33:44 +00:00
2015-10-19 21:24:39 +00:00
git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg
cd ffmpeg
git checkout release/2.8
2014-09-04 07:33:44 +00:00
2015-06-01 12:44:10 +00:00
http://msys2.github.io/ > Download [msys2-x86_64-20150512.exe ](http://sourceforge.net/projects/msys2/files/Base/x86_64/msys2-x86_64-20150512.exe/download ) and install to **D:\\msys64**
2014-09-04 07:33:44 +00:00
#####Building libraries
2015-10-19 21:24:39 +00:00
Download [yasm for Win64 ](http://www.tortall.net/projects/yasm/releases/yasm-1.3.0-win64.exe ) from http://yasm.tortall.net/Download.html, rename **yasm-1.3.0-win64.exe** to **yasm.exe** and place it to your Visual C++ **bin** directory, like ** \\Program Files (x86)\\Microsoft Visual Studio 14\\VC\\bin\\**
2015-06-01 20:24:09 +00:00
2015-10-19 21:24:39 +00:00
Open **VS2015 x86 Native Tools Command Prompt.bat** (should be in ** \\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\Shortcuts\\** folder), go to **D:\\msys64\\** and launch **msys2_shell.bat** , there run
2015-06-01 12:44:10 +00:00
2015-10-19 21:24:39 +00:00
PATH="/c/Program Files (x86)/Microsoft Visual Studio 14.0/VC/BIN:$PATH"
2015-06-01 12:49:53 +00:00
2015-10-19 21:24:39 +00:00
cd /d/TBuild/Libraries/ffmpeg
2015-10-13 06:52:11 +00:00
pacman -Sy
2015-06-01 12:52:44 +00:00
pacman -S msys/make
pacman -S mingw64/mingw-w64-x86_64-opus
2015-10-14 11:30:59 +00:00
pacman -S diffutils
2015-06-01 20:40:09 +00:00
pacman -S pkg-config
2015-06-01 12:49:53 +00:00
2015-06-01 20:24:09 +00:00
PKG_CONFIG_PATH="/mingw64/lib/pkgconfig:$PKG_CONFIG_PATH"
2015-07-17 19:17:37 +00:00
./configure --toolchain=msvc --disable-programs --disable-everything --enable-libopus --enable-decoder=aac --enable-decoder=aac_latm --enable-decoder=aasc --enable-decoder=mp1 --enable-decoder=mp1float --enable-decoder=mp2 --enable-decoder=mp2float --enable-decoder=mp3 --enable-decoder=mp3adu --enable-decoder=mp3adufloat --enable-decoder=mp3float --enable-decoder=mp3on4 --enable-decoder=mp3on4float --enable-decoder=wavpack --enable-decoder=opus --enable-decoder=vorbis --enable-decoder=wmalossless --enable-decoder=wmapro --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=wmavoice --enable-decoder=flac --enable-encoder=libopus --enable-parser=aac --enable-parser=aac_latm --enable-parser=mpegaudio --enable-parser=opus --enable-parser=vorbis --enable-parser=flac --enable-demuxer=aac --enable-demuxer=wav --enable-demuxer=mp3 --enable-demuxer=ogg --enable-demuxer=mov --enable-demuxer=flac --enable-muxer=ogg --enable-muxer=opus --extra-ldflags="-libpath:/d/TBuild/Libraries/opus/win32/VS2010/Win32/Release celt.lib silk_common.lib silk_float.lib"
2015-06-01 12:49:53 +00:00
2015-06-01 12:52:44 +00:00
make
make install
2014-09-04 07:33:44 +00:00
2015-10-19 21:24:39 +00:00
####Qt 5.5.1, slightly patched
2014-06-25 20:15:34 +00:00
* Install Python 3.3.2 from https://www.python.org/download/releases/3.3.2 > [**Windows x86 MSI Installer (3.3.2)** ](https://www.python.org/ftp/python/3.3.2/python-3.3.2.msi )
2015-10-19 21:24:39 +00:00
* Open **VS2015 x86 Native Tools Command Prompt.bat** (should be in ** \\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\Shortcuts\\** folder)
2014-06-25 20:15:34 +00:00
2015-10-19 21:24:39 +00:00
There go to Libraries directory
2014-06-25 20:15:34 +00:00
D:
2015-10-19 21:24:39 +00:00
cd TBuild\Libraries
and run
2014-06-25 20:15:34 +00:00
2015-10-19 21:24:39 +00:00
git clone https://code.qt.io/qt/qt5.git QtStatic
cd QtStatic
git checkout v5.5.1
perl init-repository --module-subset=qtbase,qtimageformats
2014-06-25 20:15:34 +00:00
2015-10-19 21:24:39 +00:00
#####Apply the patch
2014-06-25 20:15:34 +00:00
2015-10-19 21:24:39 +00:00
cd qtbase
git apply ../../../tdesktop/Telegram/_qtbase_5_5_1_patch.diff
cd ..
#####Building library
2014-06-25 20:15:34 +00:00
2015-10-19 21:24:39 +00:00
configure -debug-and-release -opensource -confirm-license -static -I "D:\TBuild\Libraries\OpenSSL-Win32\include" -L "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib" -l Gdi32 -no-opengl -openssl-linked OPENSSL_LIBS_DEBUG="D:\TBuild\Libraries\OpenSSL-Win32\lib\VC\static\ssleay32MTd.lib D:\TBuild\Libraries\OpenSSL-Win32\lib\VC\static\libeay32MTd.lib" OPENSSL_LIBS_RELEASE="D:\TBuild\Libraries\OpenSSL-Win32\lib\VC\static\ssleay32MT.lib D:\TBuild\Libraries\OpenSSL-Win32\lib\VC\static\libeay32MT.lib" -mp -nomake examples -nomake tests -platform win32-msvc2015
nmake
nmake install
2014-06-25 20:15:34 +00:00
building (**nmake** command) will take really long time.
2015-10-19 21:24:39 +00:00
####Qt5Package
2014-06-25 20:15:34 +00:00
2015-10-19 21:24:39 +00:00
https://visualstudiogallery.msdn.microsoft.com/c89ff880-8509-47a4-a262-e4fa07168408
2014-06-25 20:15:34 +00:00
2015-10-19 21:24:39 +00:00
Download, close all VS2015 instances and install for VS2015
2014-06-25 20:15:34 +00:00
###Building Telegram Desktop
2015-10-19 21:24:39 +00:00
* Launch VS2015 for configuring Qt5Package
2014-06-25 20:15:34 +00:00
* QT5 > Qt Options > Add
2015-10-19 21:24:39 +00:00
* Version name: **QtStatic.5.5.1**
2014-06-25 20:15:34 +00:00
* Path: **D:\TBuild\Libraries\QtStatic\qtbase**
2015-10-19 21:24:39 +00:00
* Default Qt/Win version: **QtStatic.5.5.1** – **OK**
2014-06-25 20:15:34 +00:00
* File > Open > Project/Solution > **D:\TBuild\tdesktop\Telegram.sln**
* Build \ Build Solution (Debug and Release configurations)