138 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
Building via qmake
 | 
						|
==================
 | 
						|
 | 
						|
**NB** These are outdated, please refer to [Building using GYP/CMake][cmake] instructions.
 | 
						|
 | 
						|
The following commands assume the following environment variables are set:
 | 
						|
 | 
						|
 * `$srcdir`: The directory into which the source has been downloaded and
 | 
						|
   unpacked.
 | 
						|
 * `_qtver`: The Qt version being used (eg: `5.6.2`).
 | 
						|
 * `$pkgdir`: The directory into which installable files are places. This is
 | 
						|
   `/` for local installations, or can be different directory when preparing a
 | 
						|
   redistributable package.
 | 
						|
 | 
						|
Either set them accordingly, or replace them in the below commands as desired.
 | 
						|
 | 
						|
The following sources should be downloaded and unpacked into `$srcdir`:
 | 
						|
 | 
						|
  * This repository (either `master` or a specific tag).
 | 
						|
  * `git clone git://code.qt.io/qt/qt5.git`
 | 
						|
  * `git clone git+https://chromium.googlesource.com/breakpad/breakpad breakpad`
 | 
						|
  * `git clone git+https://chromium.googlesource.com/linux-syscall-support breakpad-lss`
 | 
						|
  * telegramdesktop.desktop (The intention is to include this file inside the
 | 
						|
    source package at some point):
 | 
						|
    `https://aur.archlinux.org/cgit/aur.git/plain/telegramdesktop.desktop?h=telegram-desktop`
 | 
						|
  * tg.protocol: `https://aur.archlinux.org/cgit/aur.git/plain/tg.protocol?h=telegram-desktop`
 | 
						|
 | 
						|
Preparation
 | 
						|
-----------
 | 
						|
 | 
						|
    cd "$srcdir/tdesktop"
 | 
						|
 | 
						|
    mkdir -p "$srcdir/Libraries"
 | 
						|
 | 
						|
    local qt_patch_file="$srcdir/tdesktop/Telegram/Patches/qtbase_${_qtver//./_}.diff"
 | 
						|
    local qt_dir="$srcdir/Libraries/qt${_qtver//./_}"
 | 
						|
    if [ "$qt_patch_file" -nt "$qt_dir" ]; then
 | 
						|
      rm -rf "$qt_dir"
 | 
						|
      git clone git://code.qt.io/qt/qt5.git
 | 
						|
      cd "$qt_dir"
 | 
						|
      git checkout 5.6
 | 
						|
      perl init-repository --module-subset=qtbase,qtimageformats
 | 
						|
      git checkout v$_qtver
 | 
						|
      cd qtimageformats
 | 
						|
      git checkout v$_qtver
 | 
						|
      cd ../qtbase
 | 
						|
      git checkout v$_qtver
 | 
						|
      git apply "$qt_patch_file"
 | 
						|
    fi
 | 
						|
 | 
						|
    if [ ! -h "$srcdir/Libraries/breakpad" ]; then
 | 
						|
      ln -s "$srcdir/breakpad" "$srcdir/Libraries/breakpad"
 | 
						|
      ln -s "$srcdir/breakpad-lss" "$srcdir/Libraries/breakpad/src/third_party/lss"
 | 
						|
    fi
 | 
						|
 | 
						|
    sed -i 's/CUSTOM_API_ID//g' "$srcdir/tdesktop/Telegram/Telegram.pro"
 | 
						|
 | 
						|
    (
 | 
						|
      echo "DEFINES += TDESKTOP_DISABLE_AUTOUPDATE"
 | 
						|
      echo "DEFINES += TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
 | 
						|
    ) >> "$srcdir/tdesktop/Telegram/Telegram.pro"
 | 
						|
 | 
						|
Building
 | 
						|
--------
 | 
						|
 | 
						|
 | 
						|
    # Build patched Qt
 | 
						|
    cd "$qtdir"
 | 
						|
    ./configure -prefix "$srcdir/qt" -release -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 -nomake examples -nomake tests
 | 
						|
    make module-qtbase module-qtimageformats
 | 
						|
    make module-qtbase-install_subtargets module-qtimageformats-install_subtargets
 | 
						|
 | 
						|
    export PATH="$srcdir/qt/bin:$PATH"
 | 
						|
 | 
						|
    # Build breakpad
 | 
						|
    cd "$srcdir/Libraries/breakpad"
 | 
						|
    ./configure
 | 
						|
    make
 | 
						|
 | 
						|
    # Build codegen_style
 | 
						|
    mkdir -p "$srcdir/tdesktop/Linux/obj/codegen_style/Debug"
 | 
						|
    cd "$srcdir/tdesktop/Linux/obj/codegen_style/Debug"
 | 
						|
    qmake CONFIG+=debug ../../../../Telegram/build/qmake/codegen_style/codegen_style.pro
 | 
						|
    make
 | 
						|
 | 
						|
    # Build codegen_numbers
 | 
						|
    mkdir -p "$srcdir/tdesktop/Linux/obj/codegen_numbers/Debug"
 | 
						|
    cd "$srcdir/tdesktop/Linux/obj/codegen_numbers/Debug"
 | 
						|
    qmake CONFIG+=debug ../../../../Telegram/build/qmake/codegen_numbers/codegen_numbers.pro
 | 
						|
    make
 | 
						|
 | 
						|
    # Build MetaLang
 | 
						|
    mkdir -p "$srcdir/tdesktop/Linux/DebugIntermediateLang"
 | 
						|
    cd "$srcdir/tdesktop/Linux/DebugIntermediateLang"
 | 
						|
    qmake CONFIG+=debug "../../Telegram/MetaLang.pro"
 | 
						|
    make
 | 
						|
 | 
						|
    # Build Telegram Desktop
 | 
						|
    mkdir -p "$srcdir/tdesktop/Linux/ReleaseIntermediate"
 | 
						|
    cd "$srcdir/tdesktop/Linux/ReleaseIntermediate"
 | 
						|
 | 
						|
    qmake CONFIG+=release "../../Telegram/Telegram.pro"
 | 
						|
    make
 | 
						|
 | 
						|
Installation
 | 
						|
------------
 | 
						|
 | 
						|
 | 
						|
    install -dm755 "$pkgdir/usr/bin"
 | 
						|
    install -m755 "$srcdir/tdesktop/Linux/Release/Telegram" "$pkgdir/usr/bin/telegram-desktop"
 | 
						|
 | 
						|
    install -d "$pkgdir/usr/share/applications"
 | 
						|
    install -m644 "$srcdir/telegramdesktop.desktop" "$pkgdir/usr/share/applications/telegramdesktop.desktop"
 | 
						|
 | 
						|
    install -d "$pkgdir/usr/share/kde4/services"
 | 
						|
    install -m644 "$srcdir/tg.protocol" "$pkgdir/usr/share/kde4/services/tg.protocol"
 | 
						|
 | 
						|
    local icon_size icon_dir
 | 
						|
    for icon_size in 16 32 48 64 128 256 512; do
 | 
						|
      icon_dir="$pkgdir/usr/share/icons/hicolor/${icon_size}x${icon_size}/apps"
 | 
						|
 | 
						|
      install -d "$icon_dir"
 | 
						|
      install -m644 "$srcdir/tdesktop/Telegram/SourceFiles/art/icon${icon_size}.png" "$icon_dir/telegram-desktop.png"
 | 
						|
    done
 | 
						|
 | 
						|
Notes
 | 
						|
-----
 | 
						|
 | 
						|
These instructions are based on the [ArchLinux package][arch-package] for
 | 
						|
telegram-desktop.
 | 
						|
 | 
						|
In case these instructions are at some point out of date, the above may serve
 | 
						|
as an update reference.
 | 
						|
 | 
						|
[arch-package]: https://aur.archlinux.org/packages/telegram-desktop/
 | 
						|
[cmake]: building-cmake.md
 |