crypto: Test with crypto as a submodule
- Check that libmbedcrypto was not built at the top level. - Check that we've built libmbedcrypto with the correct files. Build libmbedcrypto with debug symbols and verify that files used are from the crypto submodule. - Check that config.h is handled properly. Enable a feature at the top level that the crypto library submodule has disabled in its config.h, and check that the library symboles indicate that the feature is present in libmbedcrypto. - Ensure basic functionality of the resulting build with a run of `make test` and `ssl-opt.sh`.
This commit is contained in:
parent
ffeb1b8ab6
commit
ed93bdc8aa
1 changed files with 50 additions and 0 deletions
|
@ -88,6 +88,11 @@ elif [ -d library -a -d include -a -d tests ]; then :; else
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if ! [ -f crypto/Makefile ]; then
|
||||
echo "Please initialize the crypto submodule" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CONFIG_H='include/mbedtls/config.h'
|
||||
CONFIG_BAK="$CONFIG_H.bak"
|
||||
|
||||
|
@ -154,6 +159,9 @@ cleanup()
|
|||
fi
|
||||
|
||||
command make clean
|
||||
cd crypto
|
||||
command make clean
|
||||
cd ..
|
||||
|
||||
# Remove CMake artefacts
|
||||
find . -name .git -prune -o \
|
||||
|
@ -165,6 +173,11 @@ cleanup()
|
|||
rm -f include/Makefile include/mbedtls/Makefile programs/*/Makefile
|
||||
git update-index --no-skip-worktree Makefile library/Makefile programs/Makefile tests/Makefile
|
||||
git checkout -- Makefile library/Makefile programs/Makefile tests/Makefile
|
||||
cd crypto
|
||||
rm -f include/Makefile include/mbedtls/Makefile programs/*/Makefile
|
||||
git update-index --no-skip-worktree Makefile library/Makefile programs/Makefile tests/Makefile
|
||||
git checkout -- Makefile library/Makefile programs/Makefile tests/Makefile
|
||||
cd ..
|
||||
|
||||
if [ -f "$CONFIG_BAK" ]; then
|
||||
mv "$CONFIG_BAK" "$CONFIG_H"
|
||||
|
@ -574,6 +587,43 @@ if_build_succeeded env OPENSSL_CMD="$OPENSSL_LEGACY" GNUTLS_CLI="$GNUTLS_LEGACY_
|
|||
msg "test: compat.sh ARIA + ChachaPoly"
|
||||
if_build_succeeded env OPENSSL_CMD="$OPENSSL_NEXT" tests/compat.sh -e '^$' -f 'ARIA\|CHACHA'
|
||||
|
||||
# USE_CRYPTO_SUBMODULE: check that the build works with CMake
|
||||
msg "build: cmake, full config + USE_CRYPTO_SUBMODULE, gcc+debug"
|
||||
cleanup
|
||||
cp "$CONFIG_H" "$CONFIG_BAK"
|
||||
scripts/config.pl full # enables md4 and submodule doesn't enable md4
|
||||
scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE # too slow for tests
|
||||
CC=gcc cmake -D USE_CRYPTO_SUBMODULE=1 -D CMAKE_BUILD_TYPE=Debug .
|
||||
make
|
||||
msg "test: top-level libmbedcrypto wasn't built (USE_CRYPTO_SUBMODULE, cmake)"
|
||||
if_build_succeeded not test -f library/libmbedcrypto.a
|
||||
msg "test: libmbedcrypto symbols are from crypto files (USE_CRYPTO_SUBMODULE, cmake)"
|
||||
if_build_succeeded objdump -g crypto/library/libmbedcrypto.a | grep -E 'crypto/library$' > /dev/null
|
||||
msg "test: libmbedcrypto uses top-level config (USE_CRYPTO_SUBMODULE, cmake)"
|
||||
if_build_succeeded objdump -g crypto/library/libmbedcrypto.a | grep 'md4.c' > /dev/null
|
||||
msg "test: main suites (USE_CRYPTO_SUBMODULE, cmake)"
|
||||
make test
|
||||
msg "test: ssl-opt.sh (USE_CRYPTO_SUBMODULE, cmake)"
|
||||
if_build_succeeded tests/ssl-opt.sh
|
||||
|
||||
# USE_CRYPTO_SUBMODULE: check that the build works with make
|
||||
msg "build: make, full config + USE_CRYPTO_SUBMODULE, gcc+debug"
|
||||
cleanup
|
||||
cp "$CONFIG_H" "$CONFIG_BAK"
|
||||
scripts/config.pl full # enables md4 and submodule doesn't enable md4
|
||||
scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE # too slow for tests
|
||||
make CC=gcc CFLAGS='-g' USE_CRYPTO_SUBMODULE=1
|
||||
msg "test: top-level libmbedcrypto wasn't built (USE_CRYPTO_SUBMODULE, make)"
|
||||
if_build_succeeded not test -f library/libmbedcrypto.a
|
||||
msg "test: libmbedcrypto symbols are from crypto files (USE_CRYPTO_SUBMODULE, make)"
|
||||
if_build_succeeded objdump -g crypto/library/libmbedcrypto.a | grep -E 'crypto/library$' > /dev/null
|
||||
msg "test: libmbedcrypto uses top-level config (USE_CRYPTO_SUBMODULE, make)"
|
||||
if_build_succeeded objdump -g crypto/library/libmbedcrypto.a | grep 'md4.c' > /dev/null
|
||||
msg "test: main suites (USE_CRYPTO_SUBMODULE, make)"
|
||||
make CC=gcc USE_CRYPTO_SUBMODULE=1 test
|
||||
msg "test: ssl-opt.sh (USE_CRYPTO_SUBMODULE, make)"
|
||||
if_build_succeeded tests/ssl-opt.sh
|
||||
|
||||
msg "build: make, full config + DEPRECATED_WARNING, gcc -O" # ~ 30s
|
||||
cleanup
|
||||
cp "$CONFIG_H" "$CONFIG_BAK"
|
||||
|
|
Loading…
Reference in a new issue