forked from Green-Sky/tomato
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
124 lines
3.9 KiB
Bash
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
|