Files
tomato/other/analysis/gen-file.sh
Green Sky 565efa4f39 Squashed 'external/toxcore/c-toxcore/' changes from 1828c5356..c9cdae001
c9cdae001 fix(toxav): remove extra copy of video frame on encode
4f6d4546b test: Improve the fake network library.
a2581e700 refactor(toxcore): generate `Friend_Request` and `Dht_Nodes_Response`
2aaa11770 refactor(toxcore): use Tox_Memory in generated events
5c367452b test(toxcore): fix incorrect mutex in tox_scenario_get_time
8f92e710f perf: Add a timed limit of number of cookie requests.
695b6417a test: Add some more simulated network support.
815ae9ce9 test(toxcore): fix thread-safety in scenario framework
6d85c754e test(toxcore): add unit tests for net_crypto
9c22e79cc test(support): add SimulatedEnvironment for deterministic testing
f34fcb195 chore: Update windows Dockerfile to debian stable (trixie).
ece0e8980 fix(group_moderation): allow validating unsorted sanction list signatures
a4fa754d7 refactor: rename struct Packet to struct Net_Packet
d6f330f85 cleanup: Fix some warnings from coverity.
e206bffa2 fix(group_chats): fix sync packets reverting topics
0e4715598 test: Add new scenario testing framework.
668291f44 refactor(toxcore): decouple Network_Funcs from sockaddr via IP_Port
fc4396cef fix: potential division by zero in toxav and unsafe hex parsing
8e8b352ab refactor: Add nullable annotations to struct members.
7740bb421 refactor: decouple net_crypto from DHT
1936d4296 test: add benchmark for toxav audio and video
46bfdc2df fix: correct printf format specifiers for unsigned integers
REVERT: 1828c5356 fix(toxav): remove extra copy of video frame on encode

git-subtree-dir: external/toxcore/c-toxcore
git-subtree-split: c9cdae001341e701fca980c9bb9febfeb95d2902
2026-01-11 14:42:31 +01:00

124 lines
3.9 KiB
Bash

#!/bin/bash
CPPFLAGS="-DMIN_LOGGER_LEVEL=LOGGER_LEVEL_TRACE"
CPPFLAGS+=("-DCMP_NO_FLOAT=1")
CPPFLAGS+=("-isystem" "/usr/include/opus")
CPPFLAGS+=("-Iauto_tests")
CPPFLAGS+=("-Iauto_tests/scenarios")
CPPFLAGS+=("-Iauto_tests/scenarios/framework")
CPPFLAGS+=("-Iother")
CPPFLAGS+=("-Iother/bootstrap_daemon/src")
CPPFLAGS+=("-Iother/fun")
CPPFLAGS+=("-Itesting")
CPPFLAGS+=("-Itesting/fuzzing")
CPPFLAGS+=("-Itesting/support")
CPPFLAGS+=("-Itesting/support/doubles")
CPPFLAGS+=("-Itesting/support/public")
CPPFLAGS+=("-Itoxcore")
CPPFLAGS+=("-Itoxcore/events")
CPPFLAGS+=("-Itoxav")
CPPFLAGS+=("-Itoxencryptsave")
CPPFLAGS+=("-Ithird_party/cmp")
LDFLAGS=("-lopus" "-lsodium" "-lvpx" "-lpthread" "-lconfig" "-lgmock" "-lgtest" "-lbenchmark")
LDFLAGS+=("-fuse-ld=gold")
LDFLAGS+=("-Wl,--detect-odr-violations")
LDFLAGS+=("-Wl,--warn-common")
LDFLAGS+=("-Wl,--warn-execstack")
LDFLAGS+=("-Wl,-z,noexecstack")
LDFLAGS+=("-Wl,-z,now")
put() {
if [ "$SKIP_LINES" = "" ]; then
echo "#line 1 \"$1\"" >>amalgamation.cc
fi
grep -v '^BENCHMARK_MAIN' "$1" >>amalgamation.cc
}
putmain() {
NS=$(echo "${1//[^a-zA-Z0-9_]/_}" | sed -e 's/^__*//')
echo "namespace $NS {" >>amalgamation.cc
if [ "$SKIP_LINES" = "" ]; then
echo "#line 1 \"$1\"" >>amalgamation.cc
fi
sed -e 's/^int main(/static &/' "$1" >>amalgamation.cc
echo "} // namespace $NS" >>amalgamation.cc
}
callmain() {
NS=$(echo "${1//[^a-zA-Z0-9_]/_}" | sed -e 's/^__*//')
echo " call($NS::main, argc, argv);" >>amalgamation.cc
}
: >amalgamation.cc
# Include all C and C++ code
FIND_QUERY="find . '-(' -name '*.c' -or -name '*.cc' '-)'"
HEADER_QUERY="find . '-(' -name '*.h' -or -name '*.hh' '-)'"
COMMON_EXCLUDES=""
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -wholename './_build/*'"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -wholename './other/docker/*'"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -wholename './super_donators/*'"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -wholename './testing/fuzzing/*'"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -wholename './third_party/cmp/examples/*'"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -wholename './third_party/cmp/test/*'"
# File name excludes
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name amalgamation.cc"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name av_test.c"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name cracker.c"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name version_test.c"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name '*_fuzz_test.cc'"
if [ "$SKIP_BENCHMARK" == 1 ]; then
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name '*_bench.cc'"
fi
if [ "$SKIP_GTEST" == 1 ]; then
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name '*_test.cc'"
fi
FIND_QUERY="$FIND_QUERY $COMMON_EXCLUDES"
HEADER_QUERY="$HEADER_QUERY $COMMON_EXCLUDES"
readarray -t FILES <<<"$(eval "$FIND_QUERY")"
readarray -t HEADERS <<<"$(eval "$HEADER_QUERY")"
INCLUDES=$(for i in "${FILES[@]}" "${HEADERS[@]}"; do
grep -o '#include <[^>]*>' "$i" |
grep -E -v '<win|<ws|<iphlp|<libc|<mach/|<crypto_|<randombytes|<u.h>|<sys/filio|<stropts.h>|<linux'
done | sort -u)
echo "$INCLUDES" | grep "<memory>" >>amalgamation.cc
echo "$INCLUDES" | grep -v "<memory>" >>amalgamation.cc
put auto_tests/check_compat.h
echo 'namespace {' >>amalgamation.cc
for i in "${FILES[@]}"; do
if ! grep -q '^int main(' "$i"; then
put "$i"
fi
done
for i in "${FILES[@]}"; do
if grep -q '^int main(' "$i"; then
putmain "$i"
fi
done
echo "static void call(int m(), int argc, char **argv) { m(); }" >>amalgamation.cc
echo "static void call(int m(int, char **), int argc, char **argv) { m(argc, argv); }" >>amalgamation.cc
echo "static void call(int m(int, const char *const *), int argc, char **argv) { m(argc, argv); }" >>amalgamation.cc
echo '} // namespace' >>amalgamation.cc
echo "int main(int argc, char **argv) {" >>amalgamation.cc
for i in "${FILES[@]}"; do
if grep -q '^int main(' "$i"; then
callmain "$i"
fi
done
echo " return 0;" >>amalgamation.cc
echo "}" >>amalgamation.cc