Added Ubuntu 16.04 build instructions
This commit is contained in:
		
							parent
							
								
									2ad5c1e184
								
							
						
					
					
						commit
						746212fb1c
					
				
					 2 changed files with 292 additions and 1 deletions
				
			
		|  | @ -4,7 +4,9 @@ | |||
| 
 | ||||
| Original README with build instructions and licenses could be found in [Telegram Desktop repository][telegram_desktop_readme]. | ||||
| 
 | ||||
| There will be builds of Kotatogram for Windows, and possibly Linux. No autoupdates for now. | ||||
| Also there is [updated instruction on how to build app in Ubuntu 16.04][docs_ubuntu_16]. | ||||
| 
 | ||||
| There will be builds of Kotatogram for Windows and Linux 64-bit. No autoupdates for now. | ||||
| 
 | ||||
| Expect a lot of breaking changes. | ||||
| 
 | ||||
|  | @ -26,3 +28,4 @@ Expect a lot of breaking changes. | |||
| [//]: # (LINKS) | ||||
| [telegram_desktop]: https://desktop.telegram.org | ||||
| [telegram_desktop_readme]: https://github.com/telegramdesktop/tdesktop/blob/dev/README.md | ||||
| [docs_ubuntu_16]: https://github.com/kotatogram/kotatogram-desktop/blob/dev/docs/building-cmake-ktg.md | ||||
							
								
								
									
										288
									
								
								docs/building-cmake-ktg.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										288
									
								
								docs/building-cmake-ktg.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,288 @@ | |||
| ## Build instructions for GYP/CMake under Ubuntu 16.04 | ||||
| 
 | ||||
| The process is almost the same as with 14.04, but with one change: you need to use OpenSSL 1.0.2 instead of 1.0.1. | ||||
| 
 | ||||
| ### Prepare folder | ||||
| 
 | ||||
| Choose an empty folder for the future build, for example **/home/user/TBuild**. It will be named ***BuildPath*** in the rest of this document. | ||||
| 
 | ||||
| ### Obtain your API credentials | ||||
| 
 | ||||
| You will require **api_id** and **api_hash** to access the Telegram API servers. To learn how to obtain them [click here][api_credentials]. | ||||
| 
 | ||||
| ### Install software and required packages | ||||
| 
 | ||||
| You will need GCC 8.1 and CMake 3.2 installed. To install them and all the required dependencies run | ||||
| 
 | ||||
|     sudo apt-get install software-properties-common -y && \ | ||||
|     sudo apt-get install git libexif-dev liblzma-dev libz-dev libssl-dev libappindicator-dev libicu-dev libdee-dev libdrm-dev dh-autoreconf autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-xfixes0-dev libxcb-keysyms1-dev libxcb-icccm4-dev libxcb-render-util0-dev libxcb-util0-dev libxrender-dev libasound-dev libpulse-dev libxcb-sync0-dev libxcb-randr0-dev libx11-xcb-dev libffi-dev libncurses5-dev pkg-config texi2html zlib1g-dev yasm cmake xutils-dev bison python-xcbgen chrpath -y && \ | ||||
| 
 | ||||
|     sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \ | ||||
|     sudo add-apt-repository ppa:george-edison55/cmake-3.x -y && \ | ||||
|     sudo apt-get update && \ | ||||
|     sudo apt-get install gcc-8 g++-8 cmake -y && \ | ||||
|     sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 60 && \ | ||||
|     sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 60 && \ | ||||
|     sudo update-alternatives --config gcc && \ | ||||
|     sudo add-apt-repository --remove ppa:ubuntu-toolchain-r/test -y && \ | ||||
|     sudo add-apt-repository --remove ppa:george-edison55/cmake-3.x -y | ||||
| 
 | ||||
| You can set the multithreaded make parameter by running | ||||
| 
 | ||||
|     MAKE_THREADS_CNT=-j8 | ||||
| 
 | ||||
| ### Clone source code and prepare libraries | ||||
| 
 | ||||
| Go to ***BuildPath*** and run | ||||
| 
 | ||||
|     git clone --recursive https://github.com/kotatogram/kotatogram-desktop.git tdesktop | ||||
| 
 | ||||
|     mkdir Libraries | ||||
|     cd Libraries | ||||
| 
 | ||||
|     git clone --branch 0.5.0 https://github.com/ericniebler/range-v3 | ||||
| 
 | ||||
|     git clone https://github.com/telegramdesktop/zlib.git | ||||
|     cd zlib | ||||
|     ./configure | ||||
|     make $MAKE_THREADS_CNT | ||||
|     sudo make install | ||||
|     cd .. | ||||
| 
 | ||||
|     git clone https://github.com/xiph/opus | ||||
|     cd opus | ||||
|     git checkout v1.3 | ||||
|     ./autogen.sh | ||||
|     ./configure | ||||
|     make $MAKE_THREADS_CNT | ||||
|     sudo make install | ||||
|     cd .. | ||||
| 
 | ||||
|     git clone https://github.com/01org/libva.git | ||||
|     cd libva | ||||
|     ./autogen.sh --enable-static | ||||
|     make $MAKE_THREADS_CNT | ||||
|     sudo make install | ||||
|     cd .. | ||||
| 
 | ||||
|     git clone git://anongit.freedesktop.org/vdpau/libvdpau | ||||
|     cd libvdpau | ||||
|     git checkout libvdpau-1.2 | ||||
|     ./autogen.sh --enable-static | ||||
|     make $MAKE_THREADS_CNT | ||||
|     sudo make install | ||||
|     cd .. | ||||
| 
 | ||||
|     git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg | ||||
|     cd ffmpeg | ||||
|     git checkout release/3.4 | ||||
| 
 | ||||
|     ./configure --prefix=/usr/local \ | ||||
|     --enable-protocol=file --enable-libopus \ | ||||
|     --disable-programs \ | ||||
|     --disable-doc \ | ||||
|     --disable-network \ | ||||
|     --disable-everything \ | ||||
|     --enable-hwaccel=h264_vaapi \ | ||||
|     --enable-hwaccel=h264_vdpau \ | ||||
|     --enable-hwaccel=mpeg4_vaapi \ | ||||
|     --enable-hwaccel=mpeg4_vdpau \ | ||||
|     --enable-decoder=aac \ | ||||
|     --enable-decoder=aac_at \ | ||||
|     --enable-decoder=aac_fixed \ | ||||
|     --enable-decoder=aac_latm \ | ||||
|     --enable-decoder=aasc \ | ||||
|     --enable-decoder=alac \ | ||||
|     --enable-decoder=alac_at \ | ||||
|     --enable-decoder=flac \ | ||||
|     --enable-decoder=gif \ | ||||
|     --enable-decoder=h264 \ | ||||
|     --enable-decoder=h264_vdpau \ | ||||
|     --enable-decoder=hevc \ | ||||
|     --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=mpeg4 \ | ||||
|     --enable-decoder=mpeg4_vdpau \ | ||||
|     --enable-decoder=msmpeg4v2 \ | ||||
|     --enable-decoder=msmpeg4v3 \ | ||||
|     --enable-decoder=opus \ | ||||
|     --enable-decoder=pcm_alaw \ | ||||
|     --enable-decoder=pcm_alaw_at \ | ||||
|     --enable-decoder=pcm_f32be \ | ||||
|     --enable-decoder=pcm_f32le \ | ||||
|     --enable-decoder=pcm_f64be \ | ||||
|     --enable-decoder=pcm_f64le \ | ||||
|     --enable-decoder=pcm_lxf \ | ||||
|     --enable-decoder=pcm_mulaw \ | ||||
|     --enable-decoder=pcm_mulaw_at \ | ||||
|     --enable-decoder=pcm_s16be \ | ||||
|     --enable-decoder=pcm_s16be_planar \ | ||||
|     --enable-decoder=pcm_s16le \ | ||||
|     --enable-decoder=pcm_s16le_planar \ | ||||
|     --enable-decoder=pcm_s24be \ | ||||
|     --enable-decoder=pcm_s24daud \ | ||||
|     --enable-decoder=pcm_s24le \ | ||||
|     --enable-decoder=pcm_s24le_planar \ | ||||
|     --enable-decoder=pcm_s32be \ | ||||
|     --enable-decoder=pcm_s32le \ | ||||
|     --enable-decoder=pcm_s32le_planar \ | ||||
|     --enable-decoder=pcm_s64be \ | ||||
|     --enable-decoder=pcm_s64le \ | ||||
|     --enable-decoder=pcm_s8 \ | ||||
|     --enable-decoder=pcm_s8_planar \ | ||||
|     --enable-decoder=pcm_u16be \ | ||||
|     --enable-decoder=pcm_u16le \ | ||||
|     --enable-decoder=pcm_u24be \ | ||||
|     --enable-decoder=pcm_u24le \ | ||||
|     --enable-decoder=pcm_u32be \ | ||||
|     --enable-decoder=pcm_u32le \ | ||||
|     --enable-decoder=pcm_u8 \ | ||||
|     --enable-decoder=pcm_zork \ | ||||
|     --enable-decoder=vorbis \ | ||||
|     --enable-decoder=wavpack \ | ||||
|     --enable-decoder=wmalossless \ | ||||
|     --enable-decoder=wmapro \ | ||||
|     --enable-decoder=wmav1 \ | ||||
|     --enable-decoder=wmav2 \ | ||||
|     --enable-decoder=wmavoice \ | ||||
|     --enable-encoder=libopus \ | ||||
|     --enable-parser=aac \ | ||||
|     --enable-parser=aac_latm \ | ||||
|     --enable-parser=flac \ | ||||
|     --enable-parser=h264 \ | ||||
|     --enable-parser=hevc \ | ||||
|     --enable-parser=mpeg4video \ | ||||
|     --enable-parser=mpegaudio \ | ||||
|     --enable-parser=opus \ | ||||
|     --enable-parser=vorbis \ | ||||
|     --enable-demuxer=aac \ | ||||
|     --enable-demuxer=flac \ | ||||
|     --enable-demuxer=gif \ | ||||
|     --enable-demuxer=h264 \ | ||||
|     --enable-demuxer=hevc \ | ||||
|     --enable-demuxer=m4v \ | ||||
|     --enable-demuxer=mov \ | ||||
|     --enable-demuxer=mp3 \ | ||||
|     --enable-demuxer=ogg \ | ||||
|     --enable-demuxer=wav \ | ||||
|     --enable-muxer=ogg \ | ||||
|     --enable-muxer=opus | ||||
| 
 | ||||
|     make $MAKE_THREADS_CNT | ||||
|     sudo make install | ||||
|     cd .. | ||||
| 
 | ||||
|     git clone https://git.assembla.com/portaudio.git | ||||
|     cd portaudio | ||||
|     git checkout 396fe4b669 | ||||
|     ./configure | ||||
|     make $MAKE_THREADS_CNT | ||||
|     sudo make install | ||||
|     cd .. | ||||
| 
 | ||||
|     git clone git://repo.or.cz/openal-soft.git | ||||
|     cd openal-soft | ||||
|     git checkout openal-soft-1.19.1 | ||||
|     cd build | ||||
|     if [ `uname -p` == "i686" ]; then | ||||
|     cmake -D LIBTYPE:STRING=STATIC -D ALSOFT_UTILS:BOOL=OFF .. | ||||
|     else | ||||
|     cmake -D LIBTYPE:STRING=STATIC .. | ||||
|     fi | ||||
|     make $MAKE_THREADS_CNT | ||||
|     sudo make install | ||||
|     cd ../.. | ||||
| 
 | ||||
|     git clone https://github.com/openssl/openssl | ||||
|     cd openssl | ||||
|     git checkout OpenSSL_1_0_2-stable | ||||
|     ./config | ||||
|     make $MAKE_THREADS_CNT | ||||
|     sudo make install | ||||
|     cd .. | ||||
| 
 | ||||
|     git clone https://github.com/xkbcommon/libxkbcommon.git | ||||
|     cd libxkbcommon | ||||
|     git checkout xkbcommon-0.8.4 | ||||
|     ./autogen.sh --disable-x11 | ||||
|     make $MAKE_THREADS_CNT | ||||
|     sudo make install | ||||
|     cd .. | ||||
| 
 | ||||
|     git clone git://code.qt.io/qt/qt5.git qt5_6_2 | ||||
|     cd qt5_6_2 | ||||
|     perl init-repository --module-subset=qtbase,qtimageformats | ||||
|     git checkout v5.6.2 | ||||
|     cd qtimageformats && git checkout v5.6.2 && cd .. | ||||
|     cd qtbase && git checkout v5.6.2 && cd .. | ||||
|     cd qtbase && git apply ../../../tdesktop/Telegram/Patches/qtbase_5_6_2.diff && cd .. | ||||
|     cd qtbase/src/plugins/platforminputcontexts | ||||
|     git clone https://github.com/telegramdesktop/fcitx.git | ||||
|     git clone https://github.com/telegramdesktop/hime.git | ||||
|     git clone https://github.com/telegramdesktop/nimf.git | ||||
|     cd ../../../.. | ||||
| 
 | ||||
|     ./configure -prefix "/usr/local/tdesktop/Qt-5.6.2" -release -force-debug-info -opensource -confirm-license -qt-zlib -qt-libpng -qt-libjpeg -qt-freetype -qt-harfbuzz -qt-pcre -qt-xcb -qt-xkbcommon-x11 -no-opengl -no-gtkstyle -static -openssl-linked -nomake examples -nomake tests | ||||
| 
 | ||||
|     make $MAKE_THREADS_CNT | ||||
|     sudo make install | ||||
|     cd .. | ||||
| 
 | ||||
|     git clone https://chromium.googlesource.com/external/gyp | ||||
|     cd gyp | ||||
|     git checkout 702ac58e47 | ||||
|     git apply ../../tdesktop/Telegram/Patches/gyp.diff | ||||
|     cd .. | ||||
| 
 | ||||
|     git clone https://chromium.googlesource.com/breakpad/breakpad | ||||
|     cd breakpad | ||||
|     git checkout bc8fb886 | ||||
|     git clone https://chromium.googlesource.com/linux-syscall-support src/third_party/lss | ||||
|     cd src/third_party/lss | ||||
|     git checkout a91633d1 | ||||
|     cd ../../.. | ||||
|     ./configure | ||||
|     make $MAKE_THREADS_CNT | ||||
|     sudo make install | ||||
|     cd src/tools | ||||
|     ../../../gyp/gyp  --depth=. --generator-output=.. -Goutput_dir=../out tools.gyp --format=cmake | ||||
|     cd ../../out/Default | ||||
|     cmake . | ||||
|     make $MAKE_THREADS_CNT dump_syms | ||||
|     cd ../../.. | ||||
| 
 | ||||
| ### Building the project | ||||
| 
 | ||||
| Before refreshing, you can set build defines (skip this step if you don't need to disable anything): | ||||
|      | ||||
|     export TDESKTOP_BUILD_DEFINES=TDESKTOP_DISABLE_CRASH_REPORTS,TDESKTOP_DISABLE_AUTOUPDATE | ||||
| 
 | ||||
| Go to ***BuildPath*/tdesktop/Telegram** and run (using [your **api_id** and **api_hash**](#obtain-your-api-credentials)) | ||||
| 
 | ||||
|     gyp/refresh.sh --api-id YOUR_API_ID --api-hash YOUR_API_HASH | ||||
| 
 | ||||
| To make Debug version go to ***BuildPath*/tdesktop/out/Debug** and run | ||||
| 
 | ||||
|     make $MAKE_THREADS_CNT | ||||
| 
 | ||||
| P.S. It may be bad idea to make app in multiple threads. In case of errors try omit `$MAKE_THREADS_CNT` parameter. | ||||
| 
 | ||||
| To make Release version go to ***BuildPath*/tdesktop/out/Release** and run | ||||
| 
 | ||||
|     make $MAKE_THREADS_CNT | ||||
| 
 | ||||
| Since binary file will be big, don't forget to run this in ***BuildPath*/tdesktop/out/Release** if you will publish the app: | ||||
| 
 | ||||
|     strip --strip-all Telegram | ||||
| 
 | ||||
| You can debug your builds from Qt Creator, just open **CMakeLists.txt** from ***BuildPath*/tdesktop/out/Debug** and launch with debug. | ||||
| 
 | ||||
| [api_credentials]: api_credentials.md | ||||
		Loading…
	
	Add table
		
		Reference in a new issue