Skip to content

Latest commit

 

History

History
270 lines (206 loc) · 8.69 KB

BUILD.md

File metadata and controls

270 lines (206 loc) · 8.69 KB

Build

Following are barebone compilation instructions. They probably won't work but #utox on freenode can probably help you out.

If you're looking for it to "just work" you're going to want these instructions.

Instructions

Unix Like

Linux

Before compiling make sure you have all of the dependencies installed.

The easy way out is:

git clone --recursive git://github.com/uTox/uTox.git
cd uTox/
mkdir build
cd build
cmake ..
make
make install

To build the binary with debug symbols (e.g. for debugging with gdb) you should append the -DCMAKE_BUILD_TYPE=Debug option to the cmake .. command above.

In that case you want to set the env variable ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer for the address sanitizer (ASAN) to show nicer stack traces. See http://clang.llvm.org/docs/AddressSanitizer.html#symbolizing-the-reports for more details.

or if you built toxcore statically:

git clone --recursive git://github.com/uTox/uTox.git
cd uTox/
mkdir build
cd build
cmake -DTOXCORE_STATIC=ON ..
make
make install

For the build to pass you need to install the following from sources: filteraudio libtoxcore

For base emoji ids support you need: base_emoji

Ubuntu

Tested on Ubuntu 18.04

sudo apt-get install build-essential libtool autotools-dev automake checkinstall check git yasm libopus-dev libvpx-dev pkg-config libfontconfig1-dev libdbus-1-dev libv4l-dev libxrender-dev libopenal-dev libxext-dev cmake

git clone git://github.com/jedisct1/libsodium.git
cd libsodium
git checkout tags/1.0.3
./autogen.sh
./configure && make check
sudo checkinstall
cd ..


git clone git://github.com/irungentoo/filter_audio.git
cd filter_audio
make
sudo checkinstall
cd ..


git clone git://github.com/TokTok/c-toxcore.git
cd c-toxcore
cmake .
make
sudo checkinstall
cd ..

sudo ldconfig

git clone --recursive git://github.com/uTox/uTox.git
cd uTox/
mkdir build
cd build
cmake ..
make
sudo checkinstall

Have fun!

If you're looking for a good IDE, Netbeans is very easy to set up for uTox. In fact, you can just create a new project from the existing sources and everything should work fine.

OpenBSD

First install the dependencies:

doas pkg_add openal cmake libv4l toxcore git check

Optionally install D-Bus and GTK+3:

doas pkg_add dbus gtk+3

Now compile uTox:

git clone --recursive git://github.com/uTox/uTox.git
cd uTox/
mkdir build
cd build
cmake ..
make -j `sysctl -n hw.ncpu`
make test
doas make install

FreeBSD and DragonFlyBSD

Install the dependencies:

sudo pkg install libv4l v4l_compat openal-soft toxcore git check

Optionally install D-Bus, GTK+3 and filteraudio:

sudo pkg install dbus libfilteraudio gtk3

Now compile uTox:

git clone --recursive git://github.com/uTox/uTox.git
cd uTox/
mkdir build
cd build
cmake ..
make
make test
sudo make install

NetBSD

Install the dependencies:

sudo pkgin install openal-soft cmake libv4l toxcore git check

Optionally install D-Bus and GTK+3:

sudo pkgin install dbus gtk3

Now compile uTox:

git clone --recursive git://github.com/uTox/uTox.git
cd uTox/
mkdir build
cd build
cmake ..
make
make test
sudo make install

Windows

You will need a working Cygwin environment or Unix desktop to compile windows.

Before compiling please make sure you have all of the dependencies. Dependencies can be downloaded from here. Make sure you grab the right bit version.

Cygwin setup

  • Download Cygwin (x86/x64)
  • Search and select exactly these packages in Devel category:
    • mingw64-i686-gcc-core (x86) / mingw64-x86_64-gcc-core (x64)
    • make
    • cmake
    • gdb

In case of Cygwin all following commands should be executed in Cygwin Terminal.

cd /cygdrive/c
mkdir projects
cd projects/
git clone --recursive git://github.com/uTox/uTox.git
cd uTox/
mkdir libs
cd libs/
mkdir windows-x64
cd ../uTox/
mkdir build
cd build

Download .zip files and place them into windows-x64 folder. Extract here with your archiver and merge when it'll ask for replacement:

And go back to terminal (make sure you're still in build folder):

  • For 32 bit:

    cmake -DCMAKE_TOOLCHAIN_FILE="../cmake/toolchain-win32.cmake" -DTOXCORE_STATIC=ON ..
    make
  • For 64 bit:

    cmake -DCMAKE_TOOLCHAIN_FILE="../cmake/toolchain-win64.cmake" -DTOXCORE_STATIC=ON ..
    make

macOS

brew tap tox/tox
brew install --HEAD utox

For details see COCOA.md.

Android

Requires Android SDK+NDK

From uTox root folder, using prebuilt static toxcore + freetype libraries (includes in ../include and libs in ../lib), resulting apk is ./tmp/tmp2.apk:

Setup:

mkdir ./tmp
mkdir ./tmp/java
mkdir ./tmp/libs
mkdir ./tmp/libs/armeabi
keytool -genkey -v -keystore ./tmp/debug.keystore -alias $ALIAS -keyalg RSA -keysize 2048 -validity 20000

Compile + Pack APK

arm-linux-androideabi-gcc --sysroot=$NDK_PATH/platforms/android-9/arch-arm/ -I../include/freetype2/ -I../include/ ./*.c ./png/png.c -llog -landroid -lEGL -lGLESv2 -lOpenSLES ../lib/libtoxcore.a ../lib/libtoxav.a ../lib/libsodium.a ../lib/libopus.a ../lib/libvpx.a ../lib/libfreetype.a -lm -lz -ldl -shared -o ./tmp/libs/armeabi/libn.so
/aapt package -f -M ./android/AndroidManifest.xml -S ./android/res -I $SDK_PATH/platforms/android-10/android.jar -F ./tmp/tmp1.apk -J ./tmp/java
javac -d ./tmp/java ./tmp/java/R.java
dx --dex --output=./tmp/classes.dex ./tmp/java
java -classpath $SDK_PATH/tools/lib/sdklib.jar com.android.sdklib.build.ApkBuilderMain ./tmp/tmp2.apk -u -z ./tmp/tmp1.apk -f ./tmp/classes.dex -nf ./tmp/libs
jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore ./tmp/debug.keystore -storepass $PASSWORD ./tmp/tmp2.apk $ALIAS

Come to think of it, this section is woefully out of date. The android build script in tools/ is likely to be more helpful at this point. Or come to #utox on Freenode and ask for grayhatter. If you're interested in working on android. He'll get you a build environment set up!