tdesktop/docs/building-xcode-old.md
John Preston b2f1177661 Remove 'git checkout 5.*' before 'init-repository'.
Something has changed in Qt libraries remote layout so now the perl
init-repository script from the old Qt version doesn't work anymore.

We init the submodules using script from the latest Qt version and
after that we checkout the desired version by tag in all submodules.
2017-04-06 11:19:00 +03:00

10 KiB
Raw Blame History

Build instructions for Xcode 7.2.1

NB These are outdated, please refer to Building using Xcode instructions.

Prepare folder

Choose a folder for the future build, for example /Users/user/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 Terminal go to /Users/user/TBuild and run

git clone --recursive https://github.com/telegramdesktop/tdesktop.git

then go to /Users/user/TBuild/tdesktop and run

git checkout dev

Prepare latest cmake

Download the latest sources and unpack to /Users/user/TBuild/Libraries/macold

./bootstrap
make -j4
sudo make install

Prepare libraries

In your build Terminal run

MACOSX_DEPLOYMENT_TARGET=10.6

to set minimal supported OS version to 10.6 for future console builds.

custom build of libc++

From /Users/user/TBuild/Libraries/macold run

svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx
svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi

cd ../../
mkdir libcxxabi
cd libcxxabi

cmake -G "Unix Makefiles" -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.6 -DCMAKE_BUILD_TYPE:STRING=Release -DLIBCXX_ENABLE_SHARED:BOOL=NO -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/macold -DLLVM_PATH=../llvm -DLIBCXXABI_LIBCXX_PATH=../llvm/projects/libcxx ../llvm/projects/libcxxabi/
make -j4
sudo make install

cd ../
mkdir libcxx
cd libcxx

cmake -G "Unix Makefiles" -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.6 -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/macold -DLIBCXX_ENABLE_SHARED:BOOL=NO -DLIBCXX_CXX_ABI:STRING=libstdc++ -DLIBCXX_CXX_ABI_INCLUDE_PATHS="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1/" -DLLVM_PATH=../llvm/ ../llvm/projects/libcxx/
make -j4
sudo make install

zlib 1.2.8

http://www.zlib.net/ > Download zlib source code, version 1.2.8

Extract to /Users/user/TBuild/Libraries/macold

Building library

In Terminal go to /Users/user/TBuild/Libraries/zlib-1.2.8 and run:

prefix=/usr/local/macold CFLAGS="-mmacosx-version-min=10.6" LDFLAGS="-mmacosx-version-min=10.6" ./configure
make
sudo make install

OpenSSL 1.0.1g

http://www.openssl.org/source/ > Download openssl-1.0.1h.tar.gz (4.3 Mb)

Extract openssl-1.0.1h.tar.gz to /Users/user/TBuild/Libraries/macold/openssl-1.0.1h

./Configure --install_prefix=/usr/local/macold darwin64-x86_64-cc -static -mmacosx-version-min=10.6
make build_crypto build_ssl -j4

liblzma

http://tukaani.org/xz/ > Download xz-5.0.5.tar.gz

Extract to /Users/user/TBuild/Libraries

Building library

In Terminal go to /Users/user/TBuild/Libraries/xz-5.0.5 and there run

./configure
make
sudo make install

libexif 0.6.20

Get sources from https://github.com/telegramdesktop/libexif-0.6.20, by git in Terminal go to /Users/user/TBuild/Libraries/macold and run

git clone https://github.com/telegramdesktop/libexif-0.6.20.git
Building library

In Terminal go to /Users/user/TBuild/Libraries/macold/libexif-0.6.20 and there run

CFLAGS="-mmacosx-version-min=10.6" CPPFLAGS="-mmacosx-version-min=10.6 -nostdinc++" LDFLAGS="-mmacosx-version-min=10.6" ./configure --prefix=/usr/local/macold
make -j4
sudo make install

OpenAL Soft

Get sources by git in Terminal go to /Users/user/TBuild/Libraries/macold and run

git clone git://repo.or.cz/openal-soft.git

to have /Users/user/TBuild/Libraries/macold/openal-soft/CMakeLists.txt

Building library

In Terminal go to /Users/user/TBuild/Libraries/openal-soft/build and there run

cmake -DLIBTYPE:STRING=STATIC -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.6 -DCMAKE_INSTALL_PREFIX:STRING=/usr/local/macold ..
make
sudo make install

Opus codec

Download sources opus-1.1.tar.gz from http://www.opus-codec.org/downloads/, extract to /Users/user/TBuild/Libraries and rename to have /Users/user/TBuild/Libraries/opus/configure

Building libraries

Download pkg-config 0.28 from http://pkg-config.freedesktop.org, extract it to /Users/user/TBuild/Libraries

In Terminal go to /Users/user/TBuild/Libraries/pkg-config-0.28 and run

./configure --with-internal-glib
make
sudo make install

then go to /Users/user/TBuild/Libraries/opus and there run

./configure
make
sudo make install

FFmpeg

In Terminal go to /Users/user/TBuild/Libraries/macold and run:

git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg
cd ffmpeg
git checkout release/3.2
Building libraries

Download libiconv-1.14 from http://www.gnu.org/software/libiconv/#downloading, extract it to /Users/user/TBuild/Libraries/macold

In Termianl go to /Users/user/TBuild/Libraries/macold/libiconv-1.14 and run

CFLAGS="-mmacosx-version-min=10.6" CPPFLAGS="-mmacosx-version-min=10.6 -nostdinc++" LDFLAGS="-mmacosx-version-min=10.6" ./configure --enable-static --prefix=/usr/local/macold
make -j4
sudo make install

Then in Terminal go to /Users/user/TBuild/Libraries/macold/ffmpeg and run

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew install automake fdk-aac git lame libass libtool libvorbis libvpx opus sdl shtool texi2html theora wget x264 xvid yasm

CFLAGS=`freetype-config --cflags`
LDFLAGS=`freetype-config --libs`
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/X11/lib/pkgconfig

./configure --prefix=/usr/local/macold --disable-programs --disable-doc --disable-everything --enable-protocol=file --enable-libopus --enable-decoder=aac --enable-decoder=aac_latm --enable-decoder=aasc --enable-decoder=flac --enable-decoder=gif --enable-decoder=h264 --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=msmpeg4v2 --enable-decoder=msmpeg4v3 --enable-decoder=opus --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=mpeg4video --enable-parser=mpegaudio --enable-parser=opus --enable-parser=vorbis --enable-demuxer=aac --enable-demuxer=flac --enable-demuxer=gif --enable-demuxer=h264 --enable-demuxer=mov --enable-demuxer=mp3 --enable-demuxer=ogg --enable-demuxer=wav --enable-muxer=ogg --enable-muxer=opus --extra-cflags="-mmacosx-version-min=10.6" --extra-cxxflags="-mmacosx-version-min=10.6 -nostdinc++" --extra-ldflags="-mmacosx-version-min=10.6"

make
sudo make install

Qt 5.3.2, slightly patched

Get the source code

In Terminal go to /Users/user/TBuild/Libraries and run:

git clone git://code.qt.io/qt/qt5.git qt5_3_2
cd qt5_3_2
perl init-repository --module-subset=qtbase,qtimageformats
git checkout v5.3.2
cd qtimageformats && git checkout v5.3.2 && cd ..
cd qtbase && git checkout v5.3.2 && cd ..
Apply the patch

From /Users/user/TBuild/Libraries/macold/qt5_3_2/qtbase, run:

git apply ../../../../tdesktop/Telegram/Patches/macold/qtbase_5_3_2.diff

From /Users/user/TBuild/Libraries/macold/qt5_3_2/qtimageformats, run:

git apply ../../../../tdesktop/Telegram/Patches/macold/qtimageformats_5_3_2.diff
Building library

Go to /Users/user/TBuild/Libraries/macold/qt5_3_2 and run:

OPENSSL_LIBS="/Users/user/TBuild/Libraries/macold/openssl-1.0.1h/libssl.a /Users/user/TBuild/Libraries/macold/openssl-1.0.1h/libcrypto.a" ./configure -prefix "/usr/local/macold/Qt-5.3.2" -debug-and-release -force-debug-info -opensource -confirm-license -static -opengl desktop -openssl-linked -I "/Users/user/TBuild/Libraries/macold/openssl-1.0.1h/include" -nomake examples -nomake tests -platform macx-g++
make -j4
sudo make -j4 install

building (make command) will take really long time.

Google Crashpad

Install gyp

.. the same as modern ..

Build crashpad

In Terminal go to /Users/user/TBuild/Libraries/macold and run:

git clone https://chromium.googlesource.com/crashpad/crashpad.git
cd crashpad
git checkout feb3aa3923
git apply ../../../tdesktop/Telegram/Patches/macold/crashpad.diff
cd third_party/mini_chromium
git clone https://chromium.googlesource.com/chromium/mini_chromium
cd mini_chromium
git checkout 7c5b0c1ab4
git apply ../../../../../../tdesktop/Telegram/Patches/macold/mini_chromium.diff
cd ../../gtest
git clone https://chromium.googlesource.com/external/github.com/google/googletest gtest
cd gtest
git checkout d62d6c6556
cd ../../../

build/gyp_crashpad.py -Dmac_deployment_target=10.6
ninja -C out/Debug
ninja -C out/Release

Prepare GYP

.. the same as modern ..

Building Telegram Desktop

  • Launch Xcode, all projects will be taken from /Users/user/TBuild/tdesktop/Telegram
  • Open MetaEmoji.xcodeproj and build for Debug (Release optionally)
  • Open MetaLang.xcodeproj and build for Debug (Release optionally)
  • Open Telegram.xcodeproj and build for Debug
  • Build Updater target as well, it is required for Telegram relaunch
  • Release Telegram build will require removing CUSTOM_API_ID definition in Telegram target settings (Apple LLVM 6.1 - Custom Compiler Flags > Other C / C++ Flags > Release)