Building the TeamTalk server and DLL binaries requires that the user is familiar with CMake. CMake is a build system that is able to build TeamTalk binaries and generate project files for various IDEs.
The following secions explain how to build TeamTalk binaries using CMake:
- Install TeamTalk Toolchain Dependencies
- Install the tools required to build TeamTalk on the host build platform:
- Build TeamTalk Binaries
- Invoke CMake to start building the TeamTalk binaries on the host build platform:
- Toolchain Toggles for TeamTalk Build Targets
- Choose if a tool required by TeamTalk should be built by CMake or use
the tool already installed on the host build machine. E.g. use OPUS
installed by
apt install libopus-devinstead of manually building OPUS.
- Choose if a tool required by TeamTalk should be built by CMake or use
the tool already installed on the host build machine. E.g. use OPUS
installed by
- Feature Toggles for TeamTalk Build Targets
- Choose what features should be compiled into the TeamTalk binaries. E.g. disable Speex in the TeamTalk DLL.
- Toggles for TeamTalk Build Targets
- Toggle what TeamTalk binaries should be built by CMake. E.g. avoid building TeamTalk server.
TeamTalk depends on many external libraries, e.g. OpenSSL and OPUS, and these libraries require a certain set of tools to be installed on the build host in order to compile.
The following sections explain what tools to install on the build host depending on the platform.
Tools for building TeamTalk dependencies on Windows must be installed manually.
- Install ActivePerl or
Strawberry Perl on Windows
- Place
perl.exein environment variable %PATH%.- OpenSSL and ACE Framework uses Perl
- Place
- Install MSYS2 in
C:/MSYS64(recommended)- Run
pacman -S base-devel pkg-configto install build tools - FFmpeg and LibVPX requires MSYS2 or Cygwin
- Run
- Alternatively, install Cygwin in
C:/cygwin64- Install
makepackage during Cygwin setup - Cygwin is supported but MSYS2 is preferred
- Install
- Install NASM
- Install to default location (
C:/Program Files/NASM) or add to PATH - LibVPX requires NASM
- NASM will be auto-downloaded if not found during CMake configuration
- Install to default location (
A Makefile is available for Ubuntu 22 and 24 to install all the dependencies required to build TeamTalk binaries.
-
To install build dependencies for Ubuntu 22 run the following in TEAMTALK_ROOT:
sudo make -C Build depend-ubuntu22sudois required becauseapt installis called.
-
To install build dependencies for Ubuntu 24 run the following in TEAMTALK_ROOT:
sudo make -C Build depend-ubuntu24sudois required becauseapt installis called.
Building for Android platform is supported on Ubuntu 24.
- To install build dependencies for Android on Ubuntu 24 run the
following in TEAMTALK_ROOT:
sudo make -C Build depend-ubuntu24-androidsudois required becauseapt installis called.
- Download Android NDK r29 and
unzip it. Make environment variable
ANDROID_NDK_HOMEpoint to the unzipped location.
Build for macOS platform is supported by using Homebrew.
- To install build dependencies for macOS run the following in
TEAMTALK_ROOT:
make -C Build depend-mac
Build for iOS platform is supported by using Homebrew on macOS.
- To install build dependencies for iOS on macOS run the following in
TEAMTALK_ROOT:
make -C Build depend-mac
Now that all required tool dependencies have been installed it is possible to build the TeamTalk binaries. Again depending on the platform there's different ways of doing this.
Building TeamTalk for Windows is supported by Visual Studio 2022.
To build TeamTalk for Windows first start x64 Native Tools Command
Prompt for VS 2022. Use Git to clone
TeamTalk5 repository into
C:\TeamTalk5.
Use CMake to generate a valid build configuration in C:\builddir
that will install binaries into C:\installdir:
cmake -DCMAKE_INSTALL_PREFIX=C:/installdir -S C:/TeamTalk5 -B C:/builddir -A x64
Given that CMake managed to create a valid build configuration now start the build process:
cmake --build C:/builddir --config Release --target install
To get a Visual Studio solution file for building TeamTalk from Visual Studio 2022 run CMake like this:
cmake -G "Visual Studio 17 2022" -S C:/TeamTalk5 -B C:/builddir -A x64
Note that WebRTC dependency will create a folder in C:\webrtc where
it downloads its repository.
When both FEATURE_FFMPEG and FEATURE_MEDIAFOUNDATION are enabled,
FFmpeg is tried first and Media Foundation is used as fallback.
Run the following command in TEAMTALK_ROOT:
make -C Build ubuntu22
This will cause make to call CMake to generate a valid build
configuration and afterwards build the binaries.
Run the following command in TEAMTALK_ROOT:
make -C Build android-all
This will build TeamTalk binaries for architectures armeabi-v7a, arm64-v8a, x86 and x64.
Run the following command in TEAMTALK_ROOT:
make -C Build mac
This will cause make to call CMake to generate a valid build
configuration and afterwards build the binaries.
Run the following command in TEAMTALK_ROOT:
make -C Build ios-all
This will build TeamTalk binaries for architectures armv7, arm64, i386 and x64.
CMake is able to build all TeamTalk's dependencies as so-called
ExternalProjects. All dependencies in TeamTalk's toolchain
can be activated using the CMake options prefixed TOOLCHAIN_.
To e.g. have TeamTalk avoid building OPUS and instead use OPUS already installed on the host machine, call CMake like this:
cmake -DTOOLCHAIN_OPUS=OFF -S TeamTalk5 -B builddir
The following toolchain toggles are available:
TOOLCHAIN_BUILD_PREFIX- Build toolchain dependencies in the specified directory
TOOLCHAIN_INSTALL_PREFIX- Install dependencies in the specified directory
TOOLCHAIN_BUILD_EXTERNALPROJECTS- When
ONbuilds all TeamTalk's dependencies and installs them intoTOOLCHAIN_INSTALL_PREFIX - When
OFFwill make TeamTalk binaries build using the libraries installed inTOOLCHAIN_INSTALL_PREFIX. This is useful to avoid building the dependencies again after a new checkout or switching branch.
- When
TOOLCHAIN_OPENSSL- When
ONbuilds OpenSSL - When
OFFuses OpenSSL installed on hostOFFis only supported on Linux distributions and is recommended, since linking different versions of OpenSSL can cause problems.
- When
TOOLCHAIN_ACE- When
ONbuilds ACE Framework - When
OFFuses ACE Framework installed on hostOFFis only supported on Linux distributions
- Build ACE on Windows requires ActivePerl or Strawberry Perl
- Place
perl.exein %PATH%.
- Place
- When
TOOLCHAIN_MINIUPNPC- When
ONbuilds miniupnpc - When
OFFuses miniupnpc installed on hostOFFis only supported on Linux distributions
- When
TOOLCHAIN_TINYXML2- When
ONbuilds TinyXML2 - When
OFFuses TinyXML2 installed on hostOFFis only supported on Linux distributions
- When
TOOLCHAIN_ZLIB- When
ONbuilds ZLib - When
OFFuses ZLib installed on hostOFFis recommended on Linux, Android, iOSOFFis only supported on Linux distributions
- When
TOOLCHAIN_CATCH2- When
ONenables Catch2 for unit tests - When
OFFignore Catch2 unit tests
- When
TOOLCHAIN_LIBVPX- When
ONenables LibVPX - When
OFFuses LibVPX installed on hostOFFis only supported on Linux distributions
- Building LibVPX on Windows requires MSYS2 or Cygwin
- MSYS2 (recommended): Install in
C:/MSYS64and runpacman -S base-devel - Cygwin (alternative): Install in
C:/cygwin64withmakepackage
- MSYS2 (recommended): Install in
- Building LibVPX on Windows requires NASM, https://www.nasm.us/
- Install to default location (
C:/Program Files/NASM) or add to PATH - NASM will be auto-downloaded if not found
- Install to default location (
- When
TOOLCHAIN_FFMPEG- When
ONbuilds FFmpeg - When
OFFuses FFmpeg installed on host.OFFis only supported on Linux distributions
- When
TOOLCHAIN_OGG- When
ONbuilds OGG - When
OFFuses OGG installed on host.OFFis only supported on Linux distributions
- When
TOOLCHAIN_OPUS- When
ONbuilds OPUS - When
OFFuses OPUS installed on host.OFFis only supported on Linux distributions
- When
TOOLCHAIN_PORTAUDIO- When
ONbuilds PortAudio - When
OFFuses PortAudio installed on host.OFFis only supported on Linux distributions
- When
TOOLCHAIN_SPEEX- When
ONbuilds Speex - When
OFFuses Speex installed on host.OFFis only supported on Linux distributions
- When
TOOLCHAIN_SPEEXDSP- When
ONbuilds SpeexDSP - When
OFFuses SpeexDSP installed on host.OFFis only supported on Linux distributions
- When
What features to build into the TeamTalk binaries are controlled by
CMake options prefixed by FEATURE_.
To e.g. have TeamTalk built without OPUS support invoke CMake like this:
cmake -DFEATURE_OPUS=OFF -S TeamTalk5 -B builddir
The following feature toggles are available:
FEATURE_OPUS- OPUS audio codec
- Supported platforms: macOS, iOS, Android, Ubuntu/Linux, Raspbian, Windows
- Toolchain mapping:
TOOLCHAIN_OPUS
FEATURE_OPUSTOOLS- OPUS .ogg file support
- Supported platforms: macOS, iOS, Android, Ubuntu/Linux, Raspbian, Windows
FEATURE_SPEEX- Speex audio codec
- Supported platforms: macOS, iOS, Android, Ubuntu/Linux, Raspbian, Windows
- Toolchain mapping:
TOOLCHAIN_SPEEX
FEATURE_SPEEXDSP- SpeexDSP for audio processing (resampler, denoiser, AGC)
- Supported platforms: macOS, iOS, Android, Ubuntu/Linux, Raspbian, Windows
- Toolchain mapping:
TOOLCHAIN_SPEEXDSP
FEATURE_FFMPEG- FFmpeg for streaming and audio resampling
- Supported platforms: macOS, iOS, Android, Ubuntu/Linux, Raspbian, Windows
- Toolchain mapping:
TOOLCHAIN_FFMPEG - Building FFmpeg on Windows requires MSYS2
- Install in
C:/MSYS64and runpacman -S base-devel
- Install in
FEATURE_V4L2- Video for Linux 2 for video capture support
- Supported platforms: Ubuntu/Linux, Raspbian
FEATURE_AVF- Audio Video Foundation for video capture support
- Supported platforms: macOS
FEATURE_WEBRTC- WebRTC for audio processing
- Supported platforms: macOS, iOS, Android, Ubuntu/Linux, Windows
FEATURE_MSDMO- Microsoft DirectX Media Object for audio resampling
- Supported platforms: Windows
FEATURE_MEDIAFOUNDATION- Microsoft Media Foundation for audio and video streaming
- Supported platforms: Windows
FEATURE_LIBVPX- libvpx (VP8) video codec
- Supported platforms: macOS, iOS, Android, Ubuntu/Linux, Raspbian, Windows
- Toolchain mapping:
TOOLCHAIN_LIBVPX
FEATURE_OGG- OGG file format
- Supported platforms: macOS, iOS, Android, Ubuntu/Linux, Raspbian, Windows
- Toolchain mapping:
TOOLCHAIN_OGG
FEATURE_PORTAUDIO- PortAudio sound system
- Supported platforms: macOS, Ubuntu/Linux, Raspbian, Windows
- Toolchain mapping:
TOOLCHAIN_PORTAUDIO
FEATURE_OPENSLES- OpenSL ES sound system
- Supported platforms: Android
FEATURE_AUDIOUNIT- AudioUnit sound system
- Supported platforms: iOS
Which TeamTalk binaries to build are controlled by CMake options
prefixed by BUILD_TEAMTALK_.
Most interesting are:
BUILD_TEAMTALK_LIBRARY_DLL- TeamTalk 5 shared library
- Builds binary
TEAMTALK_ROOT/Library/TeamTalk_DLL/TeamTalk5.dllorlibTeamTalk5.so
BUILD_TEAMTALK_LIBRARY_DLLPRO- TeamTalk 5 Pro shared library
- Builds binary
TEAMTALK_ROOT/Library/TeamTalk_DLL/TeamTalk5Pro.dllorlibTeamTalk5Pro.so
BUILD_TEAMTALK_LIBRARY_LIB- TeamTalk 5 static library used for iOS and Android
- Builds binary
TEAMTALK_ROOT/Library/TeamTalk_DLL/libTeamTalk5.a
BUILD_TEAMTALK_LIBRARY_LIBPRO- TeamTalk 5 Pro static library used for iOS and Android
- Builds binary
TEAMTALK_ROOT/Library/TeamTalk_DLL/libTeamTalk5Pro.a
BUILD_TEAMTALK_SERVER_SRVEXE- TeamTalk 5 console/daemon server
- Builds binary
TEAMTALK_ROOT/Server/tt5srv.exeortt5srv
BUILD_TEAMTALK_SERVER_SRVEXEPRO- TeamTalk 5 Pro console/daemon server
- Builds binary
TEAMTALK_ROOT/Server/tt5prosrv.exeortt5prosrv
BUILD_TEAMTALK_SERVER_SVCEXE- TeamTalk 5 NT service server
- Builds binary
TEAMTALK_ROOT/Server/tt5svc.exe
BUILD_TEAMTALK_SERVER_SVCEXEPRO- TeamTalk 5 NT service server
- Builds binary
TEAMTALK_ROOT/Server/tt5prosvc.exe