fi
SKIP_TESTS_ARGUMENT=$3
-SKIP_TESTS=false
+RUN_CPP_TESTS=true
if [ ! -z "$SKIP_TESTS_ARGUMENT" ]; then
if [ "$SKIP_TESTS_ARGUMENT" != "skip-tests" ]; then
echo "To skip tests, usage must be: $0 path-to-rust-lightning allow-std skip-tests"
exit 1
else
- SKIP_TESTS=true
+ RUN_CPP_TESTS=false
fi
fi
sed -i '' 's/#include <stdlib.h>/#include "ldk_rust_types.h"/g' include/lightning.h
fi
-if $SKIP_TESTS; then
- echo "Skipping tests!"
- exit 0
-fi
-
# Build C++ class methods which call trait methods
echo "Updating C++ header, this may take some time, especially on macOS"
set +x # Echoing every command is very verbose here
set -x
mv include/lightningpp_new.hpp include/lightningpp.hpp
-# Finally, sanity-check the generated C and C++ bindings with demo apps:
-# Naively run the C demo app:
-gcc $LOCAL_CFLAGS -Wall -g -pthread demo.c target/debug/libldk.a -ldl -lm
-./a.out
+if $RUN_CPP_TESTS; then
+ # Finally, sanity-check the generated C and C++ bindings with demo apps:
+ # Naively run the C demo app:
+ gcc $LOCAL_CFLAGS -Wall -g -pthread demo.c target/debug/libldk.a -ldl -lm
+ ./a.out
-# And run the C++ demo app
-if [ "$2" = "true" ]; then
- g++ $LOCAL_CFLAGS -std=c++11 -Wall -g -pthread demo.cpp -Ltarget/debug/ -lldk -ldl
- LD_LIBRARY_PATH=target/debug/ ./a.out > /dev/null
-fi
+ # And run the C++ demo app
+ if [ "$2" = "true" ]; then
+ g++ $LOCAL_CFLAGS -std=c++11 -Wall -g -pthread demo.cpp -Ltarget/debug/ -lldk -ldl
+ LD_LIBRARY_PATH=target/debug/ ./a.out > /dev/null
+ fi
-# Finally, run the C++ demo app with our native networking library
-# in valgrind to test memory model correctness and lack of leaks.
-gcc $LOCAL_CFLAGS -fPIC -std=c99 -Wall -g -pthread -I../ldk-net ../ldk-net/ldk_net.c -c -o ldk_net.o
-if [ "$2" = "true" ]; then
- g++ $LOCAL_CFLAGS -std=c++11 -Wall -g -pthread -DREAL_NET -I../ldk-net ldk_net.o demo.cpp target/debug/libldk.a -ldl -lm
- if [ -x "`which valgrind`" -a "$(uname -m)" != "ppc64le" ]; then
- valgrind --error-exitcode=4 --memcheck:leak-check=full --show-leak-kinds=all ./a.out
- echo
- else
- echo "WARNING: Please install valgrind for more testing"
- ./a.out
- fi
-fi
+ # Finally, run the C++ demo app with our native networking library
+ # in valgrind to test memory model correctness and lack of leaks.
+ gcc $LOCAL_CFLAGS -fPIC -std=c99 -Wall -g -pthread -I../ldk-net ../ldk-net/ldk_net.c -c -o ldk_net.o
+ if [ "$2" = "true" ]; then
+ g++ $LOCAL_CFLAGS -std=c++11 -Wall -g -pthread -DREAL_NET -I../ldk-net ldk_net.o demo.cpp target/debug/libldk.a -ldl -lm
+ if [ -x "`which valgrind`" -a "$(uname -m)" != "ppc64le" ]; then
+ valgrind --error-exitcode=4 --memcheck:leak-check=full --show-leak-kinds=all ./a.out
+ echo
+ else
+ echo "WARNING: Please install valgrind for more testing"
+ ./a.out
+ fi
+ fi
-# Test a statically-linked C++ version, tracking the resulting binary size and runtime
-# across debug, LTO, and cross-language LTO builds (using the same compiler each time).
-if [ "$2" = "true" ]; then
- clang++ $LOCAL_CFLAGS -std=c++11 demo.cpp target/debug/libldk.a -ldl
- strip ./a.out
- time ./a.out
- echo " C++ Bin size and runtime w/o optimization:"
- ls -lha a.out
+ # Test a statically-linked C++ version, tracking the resulting binary size and runtime
+ # across debug, LTO, and cross-language LTO builds (using the same compiler each time).
+ if [ "$2" = "true" ]; then
+ clang++ $LOCAL_CFLAGS -std=c++11 demo.cpp target/debug/libldk.a -ldl
+ strip ./a.out
+ time ./a.out
+ echo " C++ Bin size and runtime w/o optimization:"
+ ls -lha a.out
+ fi
+
+else
+ echo "Skipping tests!"
fi
function REALLY_PIN_CC {
EXTRA_TARGETS=( $LDK_C_BINDINGS_EXTRA_TARGETS )
EXTRA_CCS=( $LDK_C_BINDINGS_EXTRA_TARGET_CCS )
+EXTRA_LINK_LTO=( $LDK_C_BINDINGS_EXTRA_TARGET_LINK_LTO )
if [ ${#EXTRA_TARGETS[@]} != ${#EXTRA_CCS[@]} ]; then
echo "LDK_C_BINDINGS_EXTRA_TARGETS and LDK_C_BINDINGS_EXTRA_TARGET_CCS didn't have the same number of elements!"
EXTRA_ENV_TARGET=$(echo "${EXTRA_TARGETS[$IDX]}" | sed 's/-/_/g')
export CFLAGS_$EXTRA_ENV_TARGET="$BASE_CFLAGS"
export CC_$EXTRA_ENV_TARGET=${EXTRA_CCS[$IDX]}
- RUSTFLAGS="$BASE_RUSTFLAGS -C embed-bitcode=yes -C lto -C linker=${EXTRA_CCS[$IDX]}" CARGO_PROFILE_RELEASE_LTO=true cargo build $CARGO_BUILD_ARGS -v --release --target "${EXTRA_TARGETS[$IDX]}"
+ EXTRA_RUSTFLAGS=""
+ case "$EXTRA_ENV_TARGET" in
+ "x86_64"*)
+ export CFLAGS_$EXTRA_ENV_TARGET="$BASE_CFLAGS -march=sandybridge -mtune=sandybridge"
+ EXTRA_RUSTFLAGS="-C target-cpu=sandybridge"
+ ;;
+ esac
+ [ "${EXTRA_LINK_LTO[$IDX]}" != "" ] && EXTRA_RUSTFLAGS="-C linker-plugin-lto"
+ RUSTFLAGS="$BASE_RUSTFLAGS -C embed-bitcode=yes -C lto -C linker=${EXTRA_CCS[$IDX]} $EXTRA_RUSTFLAGS" CARGO_PROFILE_RELEASE_LTO=true cargo build $CARGO_BUILD_ARGS -v --release --target "${EXTRA_TARGETS[$IDX]}"
done
if [ "$CLANGPP" != "" -a "$LLD" != "" ]; then