mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-03-26 11:55:05 +00:00
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
|
@ -88,6 +88,11 @@ elif [ -d library -a -d include -a -d tests ]; then :; else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if ! [ -f crypto/Makefile ]; then
|
||||||
|
echo "Please initialize the crypto submodule" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
CONFIG_H='include/mbedtls/config.h'
|
CONFIG_H='include/mbedtls/config.h'
|
||||||
CONFIG_BAK="$CONFIG_H.bak"
|
CONFIG_BAK="$CONFIG_H.bak"
|
||||||
|
|
||||||
|
@ -154,6 +159,9 @@ cleanup()
|
||||||
fi
|
fi
|
||||||
|
|
||||||
command make clean
|
command make clean
|
||||||
|
cd crypto
|
||||||
|
command make clean
|
||||||
|
cd ..
|
||||||
|
|
||||||
# Remove CMake artefacts
|
# Remove CMake artefacts
|
||||||
find . -name .git -prune -o \
|
find . -name .git -prune -o \
|
||||||
|
@ -165,6 +173,11 @@ cleanup()
|
||||||
rm -f include/Makefile include/mbedtls/Makefile programs/*/Makefile
|
rm -f include/Makefile include/mbedtls/Makefile programs/*/Makefile
|
||||||
git update-index --no-skip-worktree Makefile library/Makefile programs/Makefile tests/Makefile
|
git update-index --no-skip-worktree Makefile library/Makefile programs/Makefile tests/Makefile
|
||||||
git checkout -- 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
|
if [ -f "$CONFIG_BAK" ]; then
|
||||||
mv "$CONFIG_BAK" "$CONFIG_H"
|
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"
|
msg "test: compat.sh ARIA + ChachaPoly"
|
||||||
if_build_succeeded env OPENSSL_CMD="$OPENSSL_NEXT" tests/compat.sh -e '^$' -f 'ARIA\|CHACHA'
|
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
|
msg "build: make, full config + DEPRECATED_WARNING, gcc -O" # ~ 30s
|
||||||
cleanup
|
cleanup
|
||||||
cp "$CONFIG_H" "$CONFIG_BAK"
|
cp "$CONFIG_H" "$CONFIG_BAK"
|
||||||
|
|
Loading…
Reference in a new issue