mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-04-16 08:42:50 +00:00
Extract build-components into a separate file.
Signed-off-by: David Horstmann <david.horstmann@arm.com> Signed-off-by: Thomas Daubney <thomas.daubney@arm.com> Signed-off-by: Minos Galanakis <minos.galanakis@arm.com>
This commit is contained in:
parent
85c78f5559
commit
5357defbf3
@ -9,4 +9,200 @@
|
|||||||
#### Build System Testing
|
#### Build System Testing
|
||||||
################################################################
|
################################################################
|
||||||
|
|
||||||
|
component_test_make_shared () {
|
||||||
|
msg "build/test: make shared" # ~ 40s
|
||||||
|
make SHARED=1 all check
|
||||||
|
ldd programs/util/strerror | grep libmbedcrypto
|
||||||
|
programs/test/dlopen_demo.sh
|
||||||
|
}
|
||||||
|
|
||||||
|
component_test_cmake_shared () {
|
||||||
|
msg "build/test: cmake shared" # ~ 2min
|
||||||
|
cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On .
|
||||||
|
make
|
||||||
|
ldd programs/util/strerror | grep libmbedcrypto
|
||||||
|
make test
|
||||||
|
programs/test/dlopen_demo.sh
|
||||||
|
}
|
||||||
|
|
||||||
|
support_test_cmake_out_of_source () {
|
||||||
|
distrib_id=""
|
||||||
|
distrib_ver=""
|
||||||
|
distrib_ver_minor=""
|
||||||
|
distrib_ver_major=""
|
||||||
|
|
||||||
|
# Attempt to parse lsb-release to find out distribution and version. If not
|
||||||
|
# found this should fail safe (test is supported).
|
||||||
|
if [[ -f /etc/lsb-release ]]; then
|
||||||
|
|
||||||
|
while read -r lsb_line; do
|
||||||
|
case "$lsb_line" in
|
||||||
|
"DISTRIB_ID"*) distrib_id=${lsb_line/#DISTRIB_ID=};;
|
||||||
|
"DISTRIB_RELEASE"*) distrib_ver=${lsb_line/#DISTRIB_RELEASE=};;
|
||||||
|
esac
|
||||||
|
done < /etc/lsb-release
|
||||||
|
|
||||||
|
distrib_ver_major="${distrib_ver%%.*}"
|
||||||
|
distrib_ver="${distrib_ver#*.}"
|
||||||
|
distrib_ver_minor="${distrib_ver%%.*}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Running the out of source CMake test on Ubuntu 16.04 using more than one
|
||||||
|
# processor (as the CI does) can create a race condition whereby the build
|
||||||
|
# fails to see a generated file, despite that file actually having been
|
||||||
|
# generated. This problem appears to go away with 18.04 or newer, so make
|
||||||
|
# the out of source tests unsupported on Ubuntu 16.04.
|
||||||
|
[ "$distrib_id" != "Ubuntu" ] || [ "$distrib_ver_major" -gt 16 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
component_test_cmake_out_of_source () {
|
||||||
|
# Remove existing generated files so that we use the ones cmake
|
||||||
|
# generates
|
||||||
|
make neat
|
||||||
|
|
||||||
|
msg "build: cmake 'out-of-source' build"
|
||||||
|
MBEDTLS_ROOT_DIR="$PWD"
|
||||||
|
mkdir "$OUT_OF_SOURCE_DIR"
|
||||||
|
cd "$OUT_OF_SOURCE_DIR"
|
||||||
|
# Note: Explicitly generate files as these are turned off in releases
|
||||||
|
cmake -D CMAKE_BUILD_TYPE:String=Check -D GEN_FILES=ON "$MBEDTLS_ROOT_DIR"
|
||||||
|
make
|
||||||
|
|
||||||
|
msg "test: cmake 'out-of-source' build"
|
||||||
|
make test
|
||||||
|
# Check that ssl-opt.sh can find the test programs.
|
||||||
|
# Also ensure that there are no error messages such as
|
||||||
|
# "No such file or directory", which would indicate that some required
|
||||||
|
# file is missing (ssl-opt.sh tolerates the absence of some files so
|
||||||
|
# may exit with status 0 but emit errors).
|
||||||
|
./tests/ssl-opt.sh -f 'Default' >ssl-opt.out 2>ssl-opt.err
|
||||||
|
grep PASS ssl-opt.out
|
||||||
|
cat ssl-opt.err >&2
|
||||||
|
# If ssl-opt.err is non-empty, record an error and keep going.
|
||||||
|
[ ! -s ssl-opt.err ]
|
||||||
|
rm ssl-opt.out ssl-opt.err
|
||||||
|
cd "$MBEDTLS_ROOT_DIR"
|
||||||
|
rm -rf "$OUT_OF_SOURCE_DIR"
|
||||||
|
}
|
||||||
|
|
||||||
|
component_test_cmake_as_subdirectory () {
|
||||||
|
# Remove existing generated files so that we use the ones CMake
|
||||||
|
# generates
|
||||||
|
make neat
|
||||||
|
|
||||||
|
msg "build: cmake 'as-subdirectory' build"
|
||||||
|
cd programs/test/cmake_subproject
|
||||||
|
# Note: Explicitly generate files as these are turned off in releases
|
||||||
|
cmake -D GEN_FILES=ON .
|
||||||
|
make
|
||||||
|
./cmake_subproject
|
||||||
|
}
|
||||||
|
|
||||||
|
support_test_cmake_as_subdirectory () {
|
||||||
|
support_test_cmake_out_of_source
|
||||||
|
}
|
||||||
|
|
||||||
|
component_test_cmake_as_package () {
|
||||||
|
# Remove existing generated files so that we use the ones CMake
|
||||||
|
# generates
|
||||||
|
make neat
|
||||||
|
|
||||||
|
msg "build: cmake 'as-package' build"
|
||||||
|
cd programs/test/cmake_package
|
||||||
|
cmake .
|
||||||
|
make
|
||||||
|
./cmake_package
|
||||||
|
}
|
||||||
|
|
||||||
|
support_test_cmake_as_package () {
|
||||||
|
support_test_cmake_out_of_source
|
||||||
|
}
|
||||||
|
|
||||||
|
component_test_cmake_as_package_install () {
|
||||||
|
# Remove existing generated files so that we use the ones CMake
|
||||||
|
# generates
|
||||||
|
make neat
|
||||||
|
|
||||||
|
msg "build: cmake 'as-installed-package' build"
|
||||||
|
cd programs/test/cmake_package_install
|
||||||
|
cmake .
|
||||||
|
make
|
||||||
|
./cmake_package_install
|
||||||
|
}
|
||||||
|
|
||||||
|
support_test_cmake_as_package_install () {
|
||||||
|
support_test_cmake_out_of_source
|
||||||
|
}
|
||||||
|
|
||||||
|
component_build_cmake_custom_config_file () {
|
||||||
|
# Make a copy of config file to use for the in-tree test
|
||||||
|
cp "$CONFIG_H" include/mbedtls_config_in_tree_copy.h
|
||||||
|
|
||||||
|
MBEDTLS_ROOT_DIR="$PWD"
|
||||||
|
mkdir "$OUT_OF_SOURCE_DIR"
|
||||||
|
cd "$OUT_OF_SOURCE_DIR"
|
||||||
|
|
||||||
|
# Build once to get the generated files (which need an intact config file)
|
||||||
|
cmake "$MBEDTLS_ROOT_DIR"
|
||||||
|
make
|
||||||
|
|
||||||
|
msg "build: cmake with -DMBEDTLS_CONFIG_FILE"
|
||||||
|
scripts/config.py -w full_config.h full
|
||||||
|
echo '#error "cmake -DMBEDTLS_CONFIG_FILE is not working."' > "$MBEDTLS_ROOT_DIR/$CONFIG_H"
|
||||||
|
cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h "$MBEDTLS_ROOT_DIR"
|
||||||
|
make
|
||||||
|
|
||||||
|
msg "build: cmake with -DMBEDTLS_CONFIG_FILE + -DMBEDTLS_USER_CONFIG_FILE"
|
||||||
|
# In the user config, disable one feature (for simplicity, pick a feature
|
||||||
|
# that nothing else depends on).
|
||||||
|
echo '#undef MBEDTLS_NIST_KW_C' >user_config.h
|
||||||
|
|
||||||
|
cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h -DMBEDTLS_USER_CONFIG_FILE=user_config.h "$MBEDTLS_ROOT_DIR"
|
||||||
|
make
|
||||||
|
not programs/test/query_compile_time_config MBEDTLS_NIST_KW_C
|
||||||
|
|
||||||
|
rm -f user_config.h full_config.h
|
||||||
|
|
||||||
|
cd "$MBEDTLS_ROOT_DIR"
|
||||||
|
rm -rf "$OUT_OF_SOURCE_DIR"
|
||||||
|
|
||||||
|
# Now repeat the test for an in-tree build:
|
||||||
|
|
||||||
|
# Restore config for the in-tree test
|
||||||
|
mv include/mbedtls_config_in_tree_copy.h "$CONFIG_H"
|
||||||
|
|
||||||
|
# Build once to get the generated files (which need an intact config)
|
||||||
|
cmake .
|
||||||
|
make
|
||||||
|
|
||||||
|
msg "build: cmake (in-tree) with -DMBEDTLS_CONFIG_FILE"
|
||||||
|
scripts/config.py -w full_config.h full
|
||||||
|
echo '#error "cmake -DMBEDTLS_CONFIG_FILE is not working."' > "$MBEDTLS_ROOT_DIR/$CONFIG_H"
|
||||||
|
cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h .
|
||||||
|
make
|
||||||
|
|
||||||
|
msg "build: cmake (in-tree) with -DMBEDTLS_CONFIG_FILE + -DMBEDTLS_USER_CONFIG_FILE"
|
||||||
|
# In the user config, disable one feature (for simplicity, pick a feature
|
||||||
|
# that nothing else depends on).
|
||||||
|
echo '#undef MBEDTLS_NIST_KW_C' >user_config.h
|
||||||
|
|
||||||
|
cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h -DMBEDTLS_USER_CONFIG_FILE=user_config.h .
|
||||||
|
make
|
||||||
|
not programs/test/query_compile_time_config MBEDTLS_NIST_KW_C
|
||||||
|
|
||||||
|
rm -f user_config.h full_config.h
|
||||||
|
}
|
||||||
|
|
||||||
|
support_build_cmake_custom_config_file () {
|
||||||
|
support_test_cmake_out_of_source
|
||||||
|
}
|
||||||
|
|
||||||
|
component_build_cmake_programs_no_testing () {
|
||||||
|
# Verify that the type of builds performed by oss-fuzz don't get accidentally broken
|
||||||
|
msg "build: cmake with -DENABLE_PROGRAMS=ON and -DENABLE_TESTING=OFF"
|
||||||
|
cmake -DENABLE_PROGRAMS=ON -DENABLE_TESTING=OFF .
|
||||||
|
make
|
||||||
|
}
|
||||||
|
support_build_cmake_programs_no_testing () {
|
||||||
|
support_test_cmake_out_of_source
|
||||||
|
}
|
||||||
|
@ -3857,22 +3857,6 @@ component_test_psa_crypto_drivers () {
|
|||||||
make test
|
make test
|
||||||
}
|
}
|
||||||
|
|
||||||
component_test_make_shared () {
|
|
||||||
msg "build/test: make shared" # ~ 40s
|
|
||||||
make SHARED=1 all check
|
|
||||||
ldd programs/util/strerror | grep libmbedcrypto
|
|
||||||
programs/test/dlopen_demo.sh
|
|
||||||
}
|
|
||||||
|
|
||||||
component_test_cmake_shared () {
|
|
||||||
msg "build/test: cmake shared" # ~ 2min
|
|
||||||
cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On .
|
|
||||||
make
|
|
||||||
ldd programs/util/strerror | grep libmbedcrypto
|
|
||||||
make test
|
|
||||||
programs/test/dlopen_demo.sh
|
|
||||||
}
|
|
||||||
|
|
||||||
test_build_opt () {
|
test_build_opt () {
|
||||||
info=$1 cc=$2; shift 2
|
info=$1 cc=$2; shift 2
|
||||||
$cc --version
|
$cc --version
|
||||||
@ -4604,184 +4588,6 @@ component_release_test_valgrind_psa () {
|
|||||||
make memcheck
|
make memcheck
|
||||||
}
|
}
|
||||||
|
|
||||||
support_test_cmake_out_of_source () {
|
|
||||||
distrib_id=""
|
|
||||||
distrib_ver=""
|
|
||||||
distrib_ver_minor=""
|
|
||||||
distrib_ver_major=""
|
|
||||||
|
|
||||||
# Attempt to parse lsb-release to find out distribution and version. If not
|
|
||||||
# found this should fail safe (test is supported).
|
|
||||||
if [[ -f /etc/lsb-release ]]; then
|
|
||||||
|
|
||||||
while read -r lsb_line; do
|
|
||||||
case "$lsb_line" in
|
|
||||||
"DISTRIB_ID"*) distrib_id=${lsb_line/#DISTRIB_ID=};;
|
|
||||||
"DISTRIB_RELEASE"*) distrib_ver=${lsb_line/#DISTRIB_RELEASE=};;
|
|
||||||
esac
|
|
||||||
done < /etc/lsb-release
|
|
||||||
|
|
||||||
distrib_ver_major="${distrib_ver%%.*}"
|
|
||||||
distrib_ver="${distrib_ver#*.}"
|
|
||||||
distrib_ver_minor="${distrib_ver%%.*}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Running the out of source CMake test on Ubuntu 16.04 using more than one
|
|
||||||
# processor (as the CI does) can create a race condition whereby the build
|
|
||||||
# fails to see a generated file, despite that file actually having been
|
|
||||||
# generated. This problem appears to go away with 18.04 or newer, so make
|
|
||||||
# the out of source tests unsupported on Ubuntu 16.04.
|
|
||||||
[ "$distrib_id" != "Ubuntu" ] || [ "$distrib_ver_major" -gt 16 ]
|
|
||||||
}
|
|
||||||
|
|
||||||
component_test_cmake_out_of_source () {
|
|
||||||
# Remove existing generated files so that we use the ones cmake
|
|
||||||
# generates
|
|
||||||
make neat
|
|
||||||
|
|
||||||
msg "build: cmake 'out-of-source' build"
|
|
||||||
MBEDTLS_ROOT_DIR="$PWD"
|
|
||||||
mkdir "$OUT_OF_SOURCE_DIR"
|
|
||||||
cd "$OUT_OF_SOURCE_DIR"
|
|
||||||
# Note: Explicitly generate files as these are turned off in releases
|
|
||||||
cmake -D CMAKE_BUILD_TYPE:String=Check -D GEN_FILES=ON "$MBEDTLS_ROOT_DIR"
|
|
||||||
make
|
|
||||||
|
|
||||||
msg "test: cmake 'out-of-source' build"
|
|
||||||
make test
|
|
||||||
# Check that ssl-opt.sh can find the test programs.
|
|
||||||
# Also ensure that there are no error messages such as
|
|
||||||
# "No such file or directory", which would indicate that some required
|
|
||||||
# file is missing (ssl-opt.sh tolerates the absence of some files so
|
|
||||||
# may exit with status 0 but emit errors).
|
|
||||||
./tests/ssl-opt.sh -f 'Default' >ssl-opt.out 2>ssl-opt.err
|
|
||||||
grep PASS ssl-opt.out
|
|
||||||
cat ssl-opt.err >&2
|
|
||||||
# If ssl-opt.err is non-empty, record an error and keep going.
|
|
||||||
[ ! -s ssl-opt.err ]
|
|
||||||
rm ssl-opt.out ssl-opt.err
|
|
||||||
cd "$MBEDTLS_ROOT_DIR"
|
|
||||||
rm -rf "$OUT_OF_SOURCE_DIR"
|
|
||||||
}
|
|
||||||
|
|
||||||
component_test_cmake_as_subdirectory () {
|
|
||||||
# Remove existing generated files so that we use the ones CMake
|
|
||||||
# generates
|
|
||||||
make neat
|
|
||||||
|
|
||||||
msg "build: cmake 'as-subdirectory' build"
|
|
||||||
cd programs/test/cmake_subproject
|
|
||||||
# Note: Explicitly generate files as these are turned off in releases
|
|
||||||
cmake -D GEN_FILES=ON .
|
|
||||||
make
|
|
||||||
./cmake_subproject
|
|
||||||
}
|
|
||||||
support_test_cmake_as_subdirectory () {
|
|
||||||
support_test_cmake_out_of_source
|
|
||||||
}
|
|
||||||
|
|
||||||
component_test_cmake_as_package () {
|
|
||||||
# Remove existing generated files so that we use the ones CMake
|
|
||||||
# generates
|
|
||||||
make neat
|
|
||||||
|
|
||||||
msg "build: cmake 'as-package' build"
|
|
||||||
cd programs/test/cmake_package
|
|
||||||
cmake .
|
|
||||||
make
|
|
||||||
./cmake_package
|
|
||||||
}
|
|
||||||
support_test_cmake_as_package () {
|
|
||||||
support_test_cmake_out_of_source
|
|
||||||
}
|
|
||||||
|
|
||||||
component_test_cmake_as_package_install () {
|
|
||||||
# Remove existing generated files so that we use the ones CMake
|
|
||||||
# generates
|
|
||||||
make neat
|
|
||||||
|
|
||||||
msg "build: cmake 'as-installed-package' build"
|
|
||||||
cd programs/test/cmake_package_install
|
|
||||||
cmake .
|
|
||||||
make
|
|
||||||
./cmake_package_install
|
|
||||||
}
|
|
||||||
support_test_cmake_as_package_install () {
|
|
||||||
support_test_cmake_out_of_source
|
|
||||||
}
|
|
||||||
|
|
||||||
component_build_cmake_custom_config_file () {
|
|
||||||
# Make a copy of config file to use for the in-tree test
|
|
||||||
cp "$CONFIG_H" include/mbedtls_config_in_tree_copy.h
|
|
||||||
|
|
||||||
MBEDTLS_ROOT_DIR="$PWD"
|
|
||||||
mkdir "$OUT_OF_SOURCE_DIR"
|
|
||||||
cd "$OUT_OF_SOURCE_DIR"
|
|
||||||
|
|
||||||
# Build once to get the generated files (which need an intact config file)
|
|
||||||
cmake "$MBEDTLS_ROOT_DIR"
|
|
||||||
make
|
|
||||||
|
|
||||||
msg "build: cmake with -DMBEDTLS_CONFIG_FILE"
|
|
||||||
scripts/config.py -w full_config.h full
|
|
||||||
echo '#error "cmake -DMBEDTLS_CONFIG_FILE is not working."' > "$MBEDTLS_ROOT_DIR/$CONFIG_H"
|
|
||||||
cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h "$MBEDTLS_ROOT_DIR"
|
|
||||||
make
|
|
||||||
|
|
||||||
msg "build: cmake with -DMBEDTLS_CONFIG_FILE + -DMBEDTLS_USER_CONFIG_FILE"
|
|
||||||
# In the user config, disable one feature (for simplicity, pick a feature
|
|
||||||
# that nothing else depends on).
|
|
||||||
echo '#undef MBEDTLS_NIST_KW_C' >user_config.h
|
|
||||||
|
|
||||||
cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h -DMBEDTLS_USER_CONFIG_FILE=user_config.h "$MBEDTLS_ROOT_DIR"
|
|
||||||
make
|
|
||||||
not programs/test/query_compile_time_config MBEDTLS_NIST_KW_C
|
|
||||||
|
|
||||||
rm -f user_config.h full_config.h
|
|
||||||
|
|
||||||
cd "$MBEDTLS_ROOT_DIR"
|
|
||||||
rm -rf "$OUT_OF_SOURCE_DIR"
|
|
||||||
|
|
||||||
# Now repeat the test for an in-tree build:
|
|
||||||
|
|
||||||
# Restore config for the in-tree test
|
|
||||||
mv include/mbedtls_config_in_tree_copy.h "$CONFIG_H"
|
|
||||||
|
|
||||||
# Build once to get the generated files (which need an intact config)
|
|
||||||
cmake .
|
|
||||||
make
|
|
||||||
|
|
||||||
msg "build: cmake (in-tree) with -DMBEDTLS_CONFIG_FILE"
|
|
||||||
scripts/config.py -w full_config.h full
|
|
||||||
echo '#error "cmake -DMBEDTLS_CONFIG_FILE is not working."' > "$MBEDTLS_ROOT_DIR/$CONFIG_H"
|
|
||||||
cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h .
|
|
||||||
make
|
|
||||||
|
|
||||||
msg "build: cmake (in-tree) with -DMBEDTLS_CONFIG_FILE + -DMBEDTLS_USER_CONFIG_FILE"
|
|
||||||
# In the user config, disable one feature (for simplicity, pick a feature
|
|
||||||
# that nothing else depends on).
|
|
||||||
echo '#undef MBEDTLS_NIST_KW_C' >user_config.h
|
|
||||||
|
|
||||||
cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h -DMBEDTLS_USER_CONFIG_FILE=user_config.h .
|
|
||||||
make
|
|
||||||
not programs/test/query_compile_time_config MBEDTLS_NIST_KW_C
|
|
||||||
|
|
||||||
rm -f user_config.h full_config.h
|
|
||||||
}
|
|
||||||
support_build_cmake_custom_config_file () {
|
|
||||||
support_test_cmake_out_of_source
|
|
||||||
}
|
|
||||||
|
|
||||||
component_build_cmake_programs_no_testing () {
|
|
||||||
# Verify that the type of builds performed by oss-fuzz don't get accidentally broken
|
|
||||||
msg "build: cmake with -DENABLE_PROGRAMS=ON and -DENABLE_TESTING=OFF"
|
|
||||||
cmake -DENABLE_PROGRAMS=ON -DENABLE_TESTING=OFF .
|
|
||||||
make
|
|
||||||
}
|
|
||||||
support_build_cmake_programs_no_testing () {
|
|
||||||
support_test_cmake_out_of_source
|
|
||||||
}
|
|
||||||
|
|
||||||
component_build_zeroize_checks () {
|
component_build_zeroize_checks () {
|
||||||
msg "build: check for obviously wrong calls to mbedtls_platform_zeroize()"
|
msg "build: check for obviously wrong calls to mbedtls_platform_zeroize()"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user