TeaWeb/setup.md

2.3 KiB

Environment setup

Basic system requirements

I used a clean debian jessi docker

apt-get install git wget gcc make python2.7 xz-utils php5 autoconf libtool zip

ATTENTION: Its important to have python2.7 as default python command.

Install java (Required for emscripten)

apt-get install software-properties-common
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer

Install cmake (For webassembly and emscripten)

wget https://cmake.org/files/v3.12/cmake-3.12.3.tar.gz
tar xvf cmake-*.tar.gz
cd cmake-*
./configure
make -j 4
make install

Install nodjs (Later for emscripten too)

wget https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-x64.tar.xz
tar xvf node-*.tar.xz
cd node-*
cp -R * /usr/local/

Install emscripten with fastcomp and llvm + clang

Fastcomp and CLang compiler

git clone https://github.com/kripken/emscripten-fastcomp
cd emscripten-fastcomp
git clone https://github.com/kripken/emscripten-fastcomp-clang tools/clang
mkdir build; cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="host;JSBackend" -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DCLANG_INCLUDE_TESTS=OFF
make -j 4
make install

Emscripten

git clone https://github.com/kripken/emscripten.git
cd emscripten
python emscripten.py
python emscripten.py #Execute it twice to detekt error
echo "PATH=\"$PATH:`pwd`\"" >> ~/.bashrc

Build TeaWeb

Clone and initialize project

git clone https://github.com/TeaSpeak/TeaWeb
git submodule update --init --recursive --remote --checkout

Build native libraries

Opus

Native loader

cd asm
./make_opus.sh

Javascript loader

npm run build-worker

Tommath

cd libraries/tommath
mkdir build; cd build
emcmake cmake ..
emmake make -j 4

Tomcrypt

ATTENTION: Do not create_build.sh!

cd libraries/tomcrypt
emmake make -f makefile CFLAGS="-DUSE_LTM -DLTM_DESC -I../tommath/" EXTRALIBS="$(pwd)/../tommath/build/libtommathStatic.a" test

Make js files

cd asm
mkdir build; cd build
emcmake cmake ..
emmake make -j 4

Now generate project structure

npm install --only=dev
./scripts/build_web_release.sh
./scripts/package_web_release.sh