| … | … | @@ -7,6 +7,19 @@ cd "$(dirname "$0")" |
| 7 | 7 | |
| 8 | 8 | KB=/storage/projects/code/hypercore-kb/holepunchto/repos |
| 9 | 9 | PEER=.. |
| 10 | |
| 11 | # ⛔ A PLAIN BUILD DOES NOT LOAD ON EVERY FLEET MACHINE, and there was no way to |
| 12 | # ask for one that does. Measured: a g++ build here needs GLIBC_2.38; ashatron |
| 13 | # has 2.35. ../tools/zig-cxx targets glibc 2.28, which is the documented answer |
| 14 | # in daemon/build.sh and had no equivalent here. |
| 15 | # |
| 16 | # CC=../tools/zig-cc CXX=../tools/zig-cxx OBJ=/tmp/swarmd-obj-zig ./build.sh |
| 17 | # |
| 18 | # ⚠ USE A SEPARATE OBJ DIR. Mixing toolchains in one cache links objects built |
| 19 | # against different libcs, which is the half-updated-cache failure wearing a new |
| 20 | # hat. |
| 21 | CC=${CC:-gcc} |
| 22 | CXX=${CXX:-g++} |
| 10 | 23 | INC="-Isrc -Ischema -Iclient -I$PEER/src -I$PEER/liboverlay/include -I$PEER/thirdparty/libudx/include -I$KB/tier5/libcompact/include -I$KB/tier4/libutf/include -I$KB/tier4/librpc/include" |
| 11 | 24 | OBJ=${OBJ:-/tmp/swarmd-obj} |
| 12 | 25 | mkdir -p "$OBJ" |
| … | … | @@ -18,32 +31,32 @@ echo "Building libcompact / libutf / librpc..." |
| 18 | 31 | CLIBS="" |
| 19 | 32 | for c in "$KB"/tier5/libcompact/src/*.c; do |
| 20 | 33 | o="$OBJ/compact_$(basename "$c" .c).o" |
| 21 | | gcc -std=c99 -O2 -I"$KB/tier5/libcompact/include" -I"$KB/tier4/libutf/include" -c -o "$o" "$c" 2>/dev/null |
| 34 | "$CC" -std=c99 -O2 -I"$KB/tier5/libcompact/include" -I"$KB/tier4/libutf/include" -c -o "$o" "$c" 2>/dev/null |
| 22 | 35 | CLIBS="$CLIBS $o" |
| 23 | 36 | done |
| 24 | 37 | for c in "$KB"/tier4/libutf/src/*.c "$KB"/tier4/libutf/src/*/*.c; do |
| 25 | 38 | [ -f "$c" ] || continue |
| 26 | 39 | o="$OBJ/utf_$(echo "$c" | md5sum | cut -c1-8).o" |
| 27 | | gcc -std=c99 -O2 -I"$KB/tier4/libutf/include" -c -o "$o" "$c" 2>/dev/null || continue |
| 40 | "$CC" -std=c99 -O2 -I"$KB/tier4/libutf/include" -c -o "$o" "$c" 2>/dev/null || continue |
| 28 | 41 | CLIBS="$CLIBS $o" |
| 29 | 42 | done |
| 30 | 43 | for c in "$KB"/tier4/librpc/src/*.c; do |
| 31 | 44 | o="$OBJ/rpc_$(basename "$c" .c).o" |
| 32 | | gcc -std=c99 -O2 -I"$KB/tier4/librpc/include" -I"$KB/tier5/libcompact/include" -I"$KB/tier4/libutf/include" -c -o "$o" "$c" 2>/dev/null || continue |
| 45 | "$CC" -std=c99 -O2 -I"$KB/tier4/librpc/include" -I"$KB/tier5/libcompact/include" -I"$KB/tier4/libutf/include" -c -o "$o" "$c" 2>/dev/null || continue |
| 33 | 46 | CLIBS="$CLIBS $o" |
| 34 | 47 | done |
| 35 | 48 | |
| 36 | 49 | echo "Building generated wire..." |
| 37 | | gcc -std=c99 -O2 $INC -c -o "$OBJ/swarmd_schema.o" schema/swarmd_schema.c |
| 38 | | gcc -std=c99 -O2 $INC -c -o "$OBJ/swarmd_hrpc.o" schema/swarmd_hrpc.c |
| 50 | "$CC" -std=c99 -O2 $INC -c -o "$OBJ/swarmd_schema.o" schema/swarmd_schema.c |
| 51 | "$CC" -std=c99 -O2 $INC -c -o "$OBJ/swarmd_hrpc.o" schema/swarmd_hrpc.c |
| 39 | 52 | |
| 40 | 53 | echo "Building the client library..." |
| 41 | | g++ -std=c++17 -O2 $INC -c -o "$OBJ/client.o" client/client.cpp |
| 54 | "$CXX" -std=c++17 -O2 $INC -c -o "$OBJ/client.o" client/client.cpp |
| 42 | 55 | |
| 43 | 56 | echo "Building daemon sources..." |
| 44 | | g++ -std=c++17 -O2 $INC -c -o "$OBJ/uds_server.o" src/uds_server.cpp |
| 45 | | g++ -std=c++17 -O2 $INC -c -o "$OBJ/control.o" src/control.cpp |
| 46 | | g++ -std=c++17 -O2 $INC -c -o "$OBJ/content.o" src/content.cpp |
| 57 | "$CXX" -std=c++17 -O2 $INC -c -o "$OBJ/uds_server.o" src/uds_server.cpp |
| 58 | "$CXX" -std=c++17 -O2 $INC -c -o "$OBJ/control.o" src/control.cpp |
| 59 | "$CXX" -std=c++17 -O2 $INC -c -o "$OBJ/content.o" src/content.cpp |
| 47 | 60 | |
| 48 | 61 | # The transport. Reuses hyperswarm-peer's object cache when test/build_tests.sh |
| 49 | 62 | # has populated it; otherwise builds what swarmd needs. |
| … | … | @@ -60,7 +73,7 @@ PEERNEW=$(ls -t "$PEER"/src/*.h "$PEER"/src/*.cpp | head -1) |
| 60 | 73 | for n in $PEERSRC; do |
| 61 | 74 | o="$OBJ/peer_$n.o" |
| 62 | 75 | if [ ! -f "$o" ] || [ "$PEERNEW" -nt "$o" ]; then |
| 63 | | g++ -std=c++17 -O2 -D_GNU_SOURCE -I$PEER/src -I$PEER/thirdparty/libudx/include \ |
| 76 | "$CXX" -std=c++17 -O2 -D_GNU_SOURCE -I$PEER/src -I$PEER/thirdparty/libudx/include \ |
| 64 | 77 | -I$KB/tier5/libcompact/include -I$KB/tier4/libutf/include \ |
| 65 | 78 | -c -o "$o" "$PEER/src/$n.cpp" |
| 66 | 79 | fi |
| … | … | @@ -78,40 +91,40 @@ for c in "$PEER"/thirdparty/libudx/src/*.c; do |
| 78 | 91 | done |
| 79 | 92 | |
| 80 | 93 | echo "Building daemon..." |
| 81 | | g++ -std=c++17 -O2 $INC -c -o "$OBJ/daemon.o" src/daemon.cpp |
| 82 | | g++ -std=c++17 -O2 $INC -o swarmd src/main.cpp \ |
| 94 | "$CXX" -std=c++17 -O2 $INC -c -o "$OBJ/daemon.o" src/daemon.cpp |
| 95 | "$CXX" -std=c++17 -O2 $INC -o swarmd src/main.cpp \ |
| 83 | 96 | "$OBJ/daemon.o" "$OBJ/uds_server.o" "$OBJ/control.o" "$OBJ/content.o" \ |
| 84 | 97 | "$OBJ/swarmd_schema.o" "$OBJ/swarmd_hrpc.o" $CLIBS $TLIBS \ |
| 85 | 98 | -lsodium -luv -lpthread |
| 86 | 99 | |
| 87 | 100 | echo "Building gates..." |
| 88 | | g++ -std=c++17 -O2 $INC -o test/test_uds_backpressure \ |
| 101 | "$CXX" -std=c++17 -O2 $INC -o test/test_uds_backpressure \ |
| 89 | 102 | test/test_uds_backpressure.cpp "$OBJ/uds_server.o" |
| 90 | 103 | |
| 91 | | g++ -std=c++17 -O2 $INC -o test/test_control \ |
| 104 | "$CXX" -std=c++17 -O2 $INC -o test/test_control \ |
| 92 | 105 | test/test_control.cpp "$OBJ/uds_server.o" "$OBJ/control.o" \ |
| 93 | 106 | "$OBJ/swarmd_schema.o" "$OBJ/swarmd_hrpc.o" $CLIBS |
| 94 | 107 | |
| 95 | 108 | # Drives the REAL Daemon (transport and all), so it links what swarmd links. |
| 96 | | g++ -std=c++17 -O2 $INC -o test/test_send_truth \ |
| 109 | "$CXX" -std=c++17 -O2 $INC -o test/test_send_truth \ |
| 97 | 110 | test/test_send_truth.cpp "$OBJ/daemon.o" "$OBJ/uds_server.o" "$OBJ/control.o" \ |
| 98 | 111 | "$OBJ/content.o" \ |
| 99 | 112 | "$OBJ/swarmd_schema.o" "$OBJ/swarmd_hrpc.o" $CLIBS $TLIBS \ |
| 100 | 113 | -lsodium -luv -lpthread |
| 101 | 114 | |
| 102 | | g++ -std=c++17 -O2 $INC -o test/test_client \ |
| 115 | "$CXX" -std=c++17 -O2 $INC -o test/test_client \ |
| 103 | 116 | test/test_client.cpp "$OBJ/client.o" "$OBJ/daemon.o" "$OBJ/uds_server.o" \ |
| 104 | 117 | "$OBJ/control.o" "$OBJ/content.o" \ |
| 105 | 118 | "$OBJ/swarmd_schema.o" "$OBJ/swarmd_hrpc.o" $CLIBS $TLIBS \ |
| 106 | 119 | -lsodium -luv -lpthread |
| 107 | 120 | |
| 108 | 121 | echo "Building tools..." |
| 109 | | g++ -std=c++17 -O2 $INC -o tools/swarmd-probe tools/swarmd_probe.cpp \ |
| 122 | "$CXX" -std=c++17 -O2 $INC -o tools/swarmd-probe tools/swarmd_probe.cpp \ |
| 110 | 123 | "$OBJ/client.o" "$OBJ/swarmd_schema.o" "$OBJ/swarmd_hrpc.o" $CLIBS |
| 111 | 124 | |
| 112 | 125 | # swarmd-session: session-daemon's socket, swarmd's insides. Links the daemon |
| 113 | 126 | # too, because it runs one. |
| 114 | | g++ -std=c++17 -O2 $INC -o tools/swarmd-session tools/session_shim.cpp \ |
| 127 | "$CXX" -std=c++17 -O2 $INC -o tools/swarmd-session tools/session_shim.cpp \ |
| 115 | 128 | "$OBJ/client.o" "$OBJ/daemon.o" "$OBJ/uds_server.o" "$OBJ/control.o" \ |
| 116 | 129 | "$OBJ/content.o" "$OBJ/swarmd_schema.o" "$OBJ/swarmd_hrpc.o" $CLIBS $TLIBS \ |
| 117 | 130 | -lsodium -luv -lpthread |