9ed2fa80d fix(toxav): remove extra copy of video frame on encode de30cf3ad docs: Add new file kinds, that should be useful to all clients. d5b5e879d fix(DHT): Correct node skipping logic timed out nodes. 30e71fe97 refactor: Generate event dispatch functions and add tox_events_dispatch. 8fdbb0b50 style: Format parameter lists in event handlers. d00dee12b refactor: Add warning logs when losing chat invites. b144e8db1 feat: Add a way to look up a file number by ID. 849281ea0 feat: Add a way to fetch groups by chat ID. a2c177396 refactor: Harden event system and improve type safety. 8f5caa656 refactor: Add MessagePack string support to bin_pack. 34e8d5ad5 chore: Add GitHub CodeQL workflow and local Docker runner. f7b068010 refactor: Add nullability annotations to event headers. 788abe651 refactor(toxav): Use system allocator for mutexes. 2e4b423eb refactor: Use specific typedefs for public API arrays. 2baf34775 docs(toxav): update idle iteration interval see 679444751876fa3882a717772918ebdc8f083354 2f87ac67b feat: Add Event Loop abstraction (Ev). f8dfc38d8 test: Fix data race in ToxScenario virtual_clock. 38313921e test(TCP): Add regression test for TCP priority queue integrity. f94a50d9a refactor(toxav): Replace mutable_mutex with dynamically allocated mutex. ad054511e refactor: Internalize DHT structs and add debug helpers. 8b467cc96 fix: Prevent potential integer overflow in group chat handshake. 4962bdbb8 test: Improve TCP simulation and add tests 5f0227093 refactor: Allow nullable data in group chat handlers. e97b18ea9 chore: Improve Windows Docker support. b14943bbd refactor: Move Logger out of Messenger into Tox. dd3136250 cleanup: Apply nullability qualifiers to C++ codebase. 1849f70fc refactor: Extract low-level networking code to net and os_network. 8fec75421 refactor: Delete tox_random, align on rng and os_random. a03ae8051 refactor: Delete tox_memory, align on mem and os_memory. 4c88fed2c refactor: Use `std::` prefixes more consistently in C++ code. 72452f2ae test: Add some more tests for onion and shared key cache. d5a51b09a cleanup: Use tox_attributes.h in tox_private.h and install it. b6f5b9fc5 test: Add some benchmarks for various high level things. 8a8d02785 test(support): Introduce threaded Tox runner and simulation barrier d68d1d095 perf(toxav): optimize audio and video intermediate buffers by keeping them around REVERT: c9cdae001 fix(toxav): remove extra copy of video frame on encode git-subtree-dir: external/toxcore/c-toxcore git-subtree-split: 9ed2fa80d582c714d6bdde6a7648220a92cddff8
148 lines
4.5 KiB
Bash
Executable File
148 lines
4.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# disable on Cygwin otherwise some builds fail
|
|
if [ "$CROSS_COMPILE" = "true" ]; then
|
|
set -e -x
|
|
fi
|
|
|
|
#=== Cross-Compile Dependencies ===
|
|
|
|
. ./check_sha256.sh
|
|
|
|
build() {
|
|
ARCH=${1}
|
|
|
|
echo "Building for $ARCH architecture"
|
|
|
|
# set some things
|
|
WINDOWS_TOOLCHAIN=$ARCH-w64-mingw32
|
|
|
|
# prefix that we will copy to the user
|
|
PREFIX_DIR="/root/prefix/$ARCH"
|
|
rm -rf "$PREFIX_DIR"
|
|
mkdir -p "$PREFIX_DIR"
|
|
|
|
export MAKEFLAGS=j"$(nproc)"
|
|
export CFLAGS="-O3 -D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -ftrivial-auto-var-init=zero -fPIE -pie -fstack-protector-strong -fstack-clash-protection -fcf-protection=full"
|
|
|
|
CURL_OPTIONS=(-L --connect-timeout 10)
|
|
|
|
cd /tmp
|
|
rm -rf /tmp/*
|
|
|
|
echo "
|
|
SET(CMAKE_SYSTEM_NAME Windows)
|
|
|
|
SET(CMAKE_C_COMPILER $WINDOWS_TOOLCHAIN-gcc)
|
|
SET(CMAKE_CXX_COMPILER $WINDOWS_TOOLCHAIN-g++)
|
|
SET(CMAKE_RC_COMPILER $WINDOWS_TOOLCHAIN-windres)
|
|
|
|
SET(CMAKE_FIND_ROOT_PATH /usr/$WINDOWS_TOOLCHAIN $DEP_PREFIX_DIR)
|
|
" >windows_toolchain.cmake
|
|
|
|
echo
|
|
echo "=== Building Sodium $VERSION_SODIUM $ARCH ==="
|
|
curl "${CURL_OPTIONS[@]}" -O "https://github.com/jedisct1/libsodium/releases/download/$VERSION_SODIUM-RELEASE/libsodium-$VERSION_SODIUM.tar.gz"
|
|
check_sha256 "018d79fe0a045cca07331d37bd0cb57b2e838c51bc48fd837a1472e50068bbea" "libsodium-$VERSION_SODIUM.tar.gz"
|
|
tar -xf "libsodium-$VERSION_SODIUM.tar.gz"
|
|
cd "libsodium-stable"
|
|
./configure \
|
|
--host="$WINDOWS_TOOLCHAIN" \
|
|
--prefix="$PREFIX_DIR" \
|
|
--disable-shared \
|
|
--enable-static
|
|
make
|
|
make install
|
|
cd ..
|
|
|
|
echo
|
|
echo "=== Building Opus $VERSION_OPUS $ARCH ==="
|
|
if [ "$ARCH" = "i686" ]; then
|
|
LIB_OPUS_CFLAGS=""
|
|
else
|
|
# This makes the build work with -fstack-clash-protection, as otherwise it crashes with:
|
|
# silk/float/encode_frame_FLP.c: In function 'silk_encode_frame_FLP':
|
|
# silk/float/encode_frame_FLP.c:379:1: internal compiler error: in i386_pe_seh_unwind_emit, at config/i386/winnt.cc:1274
|
|
# Should get patched in a future gcc version: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90458
|
|
LIB_OPUS_CFLAGS="-fno-asynchronous-unwind-tables"
|
|
fi
|
|
|
|
curl "${CURL_OPTIONS[@]}" -O "https://ftp.osuosl.org/pub/xiph/releases/opus/opus-$VERSION_OPUS.tar.gz"
|
|
check_sha256 "c9b32b4253be5ae63d1ff16eea06b94b5f0f2951b7a02aceef58e3a3ce49c51f" "opus-$VERSION_OPUS.tar.gz"
|
|
tar -xf "opus-$VERSION_OPUS.tar.gz"
|
|
cd "opus-$VERSION_OPUS"
|
|
CFLAGS="$CFLAGS $LIB_OPUS_CFLAGS" \
|
|
./configure \
|
|
--host="$WINDOWS_TOOLCHAIN" \
|
|
--prefix="$PREFIX_DIR" \
|
|
--disable-extra-programs \
|
|
--disable-doc \
|
|
--disable-shared \
|
|
--enable-static
|
|
make
|
|
make install
|
|
cd ..
|
|
|
|
echo
|
|
echo "=== Building VPX $VERSION_VPX $ARCH ==="
|
|
LIB_VPX_TARGET=""
|
|
if [ "$ARCH" = "i686" ]; then
|
|
LIB_VPX_TARGET=x86-win32-gcc
|
|
LIB_VPX_CFLAGS=""
|
|
else
|
|
LIB_VPX_TARGET=x86_64-win64-gcc
|
|
# There is a bug in gcc that breaks avx512 on 64-bit Windows https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412
|
|
# VPX fails to build due to it.
|
|
# This is a workaround as suggested in https://stackoverflow.com/questions/43152633
|
|
LIB_VPX_CFLAGS="-fno-asynchronous-unwind-tables"
|
|
fi
|
|
curl "${CURL_OPTIONS[@]}" "https://github.com/webmproject/libvpx/archive/v$VERSION_VPX.tar.gz" -o "libvpx-$VERSION_VPX.tar.gz"
|
|
check_sha256 "5f21d2db27071c8a46f1725928a10227ae45c5cd1cad3727e4aafbe476e321fa" "libvpx-$VERSION_VPX.tar.gz"
|
|
tar -xf "libvpx-$VERSION_VPX.tar.gz"
|
|
cd "libvpx-$VERSION_VPX"
|
|
CFLAGS="$CFLAGS $LIB_VPX_CFLAGS" \
|
|
CROSS="$WINDOWS_TOOLCHAIN"- \
|
|
./configure \
|
|
--target="$LIB_VPX_TARGET" \
|
|
--prefix="$PREFIX_DIR" \
|
|
--disable-examples \
|
|
--disable-unit-tests \
|
|
--disable-tools \
|
|
--disable-shared \
|
|
--enable-static
|
|
make
|
|
make install
|
|
cd ..
|
|
|
|
echo
|
|
echo "=== Building GTest $VERSION_GTEST $ARCH ==="
|
|
curl "${CURL_OPTIONS[@]}" "https://github.com/google/googletest/archive/refs/tags/v$VERSION_GTEST.tar.gz" -o "googletest-$VERSION_GTEST.tar.gz"
|
|
check_sha256 "65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c" "googletest-$VERSION_GTEST.tar.gz"
|
|
tar -xf "googletest-$VERSION_GTEST.tar.gz"
|
|
cd "googletest-$VERSION_GTEST"
|
|
cmake \
|
|
-DCMAKE_TOOLCHAIN_FILE=../windows_toolchain.cmake \
|
|
-DCMAKE_INSTALL_PREFIX="$PREFIX_DIR" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DBUILD_SHARED_LIBS=OFF \
|
|
-S . -B build
|
|
cmake --build build --target install --parallel "$(nproc)"
|
|
cd ..
|
|
|
|
rm -rf /tmp/*
|
|
}
|
|
|
|
if [ "$SUPPORT_ARCH_i686" = "true" ]; then
|
|
build i686
|
|
fi
|
|
|
|
if [ "$SUPPORT_ARCH_x86_64" = "true" ]; then
|
|
build x86_64
|
|
fi
|
|
|
|
tree /root
|
|
|
|
echo
|
|
echo "Built dependencies successfully!"
|
|
echo
|