diff --git a/ChangeLog.d/make-visualc.txt b/ChangeLog.d/make-visualc.txt new file mode 100644 index 000000000..4b195da54 --- /dev/null +++ b/ChangeLog.d/make-visualc.txt @@ -0,0 +1,2 @@ +Removals + * Drop support for the GNU Make and Microsoft Visual Studio build systems. diff --git a/README.md b/README.md index 7981a0236..7326a3ebe 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Configuration Mbed TLS should build out of the box on most systems. Some platform specific options are available in the fully documented configuration file `include/mbedtls/mbedtls_config.h`, which is also the place where features can be selected. This file can be edited manually, or in a more programmatic way using the Python 3 script `scripts/config.py` (use `--help` for usage instructions). -Compiler options can be set using conventional environment variables such as `CC` and `CFLAGS` when using the Make and CMake build system (see below). +Compiler options can be set using conventional environment variables such as `CC` and `CFLAGS`. We provide some non-standard configurations focused on specific use cases in the `configs/` directory. You can read more about those in `configs/README.txt` @@ -24,7 +24,9 @@ Documentation for the PSA Cryptography API is available [on GitHub](https://arm- To generate a local copy of the library documentation in HTML format, tailored to your compile-time configuration: 1. Make sure that [Doxygen](http://www.doxygen.nl/) is installed. -1. Run `make apidoc`. +1. Run `mkdir /path/to/build_dir && cd /path/to/build_dir` +1. Run `cmake /path/to/mbedtls/source` +1. Run `make apidoc` 1. Browse `apidoc/index.html` or `apidoc/modules.html`. For other sources of documentation, see the [SUPPORT](SUPPORT.md) document. @@ -32,26 +34,17 @@ For other sources of documentation, see the [SUPPORT](SUPPORT.md) document. Compiling --------- -There are currently three active build systems used within Mbed TLS releases: - -- GNU Make -- CMake -- Microsoft Visual Studio - -The main systems used for development are CMake and GNU Make. Those systems are always complete and up-to-date. The others should reflect all changes present in the CMake and Make build system, although features may not be ported there automatically. - -The Make and CMake build systems create three libraries: libmbedcrypto/libtfpsacrypto, libmbedx509, and libmbedtls. Note that libmbedtls depends on libmbedx509 and libmbedcrypto/libtfpsacrypto, and libmbedx509 depends on libmbedcrypto/libtfpsacrypto. As a result, some linkers will expect flags to be in a specific order, for example the GNU linker wants `-lmbedtls -lmbedx509 -lmbedcrypto`. +We use CMake to configure and drive our build process. Three libraries are built: libtfpsacrypto, libmbedx509, and libmbedtls. Note that libmbedtls depends on libmbedx509 and libtfpsacrypto, and libmbedx509 depends on libtfpsacrypto. As a result, some linkers will expect flags to be in a specific order, for example the GNU linker wants `-lmbedtls -lmbedx509 -ltfpsacrypto`. ### Tool versions -You need the following tools to build the library with the provided makefiles: +You need the following tools to build the library: -* GNU Make 3.82 or a build tool that CMake supports. +* CMake 3.10.2 or later. +* A build system that CMake supports. * A C99 toolchain (compiler, linker, archiver). We actively test with GCC 5.4, Clang 3.8, Arm Compiler 6, IAR 8 and Visual Studio 2017. More recent versions should work. Slightly older versions may work. * Python 3.8 to generate the test code. Python is also needed to integrate PSA drivers and to build the development branch (see next section). * Perl to run the tests, and to generate some source files in the development branch. -* CMake 3.10.2 or later (if using CMake). -* Microsoft Visual Studio 2017 or later (if using Visual Studio). * Doxygen 1.8.11 or later (if building the documentation; slightly older versions should work). ### Git usage @@ -82,47 +75,12 @@ Note: If you have multiple toolchains installed, it is recommended to set `CC` o Any of the following methods are available to generate the configuration-independent files: -* If not cross-compiling, running `make` with any target, or just `make`, will automatically generate required files. -* On non-Windows systems, when not cross-compiling, CMake will generate the required files automatically. -* Run `make generated_files` to generate all the configuration-independent files. -* On Unix/POSIX systems, run `framework/scripts/make_generated_files.py` to generate all the configuration-independent files. -* On Windows, run `scripts\make_generated_files.bat` to generate all the configuration-independent files. - -### Make - -We require GNU Make. To build the library and the sample programs, GNU Make and a C compiler are sufficient. Some of the more advanced build targets require some Unix/Linux tools. - -We intentionally only use a minimum of functionality in the makefiles in order to keep them as simple and independent of different toolchains as possible, to allow users to more easily move between different platforms. Users who need more features are recommended to use CMake. - -In order to build from the source code using GNU Make, just enter at the command line: - - make - -In order to run the tests, enter: - - make check - -The tests need Python to be built and Perl to be run. If you don't have one of them installed, you can skip building the tests with: - - make no_test - -You'll still be able to run a much smaller set of tests with: - - programs/test/selftest - -In order to build for a Windows platform, you should use `WINDOWS_BUILD=1` if the target is Windows but the build environment is Unix-like (for instance when cross-compiling, or compiling from an MSYS shell), and `WINDOWS=1` if the build environment is a Windows shell (for instance using mingw32-make) (in that case some targets will not be available). - -Setting the variable `SHARED` in your environment will build shared libraries in addition to the static libraries. Setting `DEBUG` gives you a debug build. You can override `CFLAGS` and `LDFLAGS` by setting them in your environment or on the make command line; compiler warning options may be overridden separately using `WARNING_CFLAGS`. Some directory-specific options (for example, `-I` directives) are still preserved. - -Please note that setting `CFLAGS` overrides its default value of `-O2` and setting `WARNING_CFLAGS` overrides its default value (starting with `-Wall -Wextra`), so if you just want to add some warning options to the default ones, you can do so by setting `CFLAGS=-O2 -Werror` for example. Setting `WARNING_CFLAGS` is useful when you want to get rid of its default content (for example because your compiler doesn't accept `-Wall` as an option). Directory-specific options cannot be overridden from the command line. - -Depending on your platform, you might run into some issues. Please check the Makefiles in `library/`, `programs/` and `tests/` for options to manually add or remove for specific platforms. You can also check [the Mbed TLS Knowledge Base](https://mbed-tls.readthedocs.io/en/latest/kb/) for articles on your platform or issue. - -In case you find that you need to do something else as well, please let us know what, so we can add it to the [Mbed TLS Knowledge Base](https://mbed-tls.readthedocs.io/en/latest/kb/). +* On non-Windows systems, when not cross-compiling, CMake generates the required files automatically. +* Run `framework/scripts/make_generated_files.py` to generate all the configuration-independent files. ### CMake -In order to build the source using CMake in a separate directory (recommended), just enter at the command line: +In order to build the libraries using CMake in a separate directory (recommended), just enter at the command line: mkdir /path/to/build_dir && cd /path/to/build_dir cmake /path/to/mbedtls_source @@ -144,7 +102,7 @@ To configure CMake for building shared libraries, use: cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On /path/to/mbedtls_source -There are many different build modes available within the CMake buildsystem. Most of them are available for gcc and clang, though some are compiler-specific: +There are many different build types available with CMake. Most of them are available for gcc and clang, though some are compiler-specific: - `Release`. This generates the default code without any unnecessary information in the binary files. - `Debug`. This generates debug information and disables optimization of the code. @@ -155,7 +113,7 @@ There are many different build modes available within the CMake buildsystem. Mos - `MemSanDbg`. Same as MemSan but slower, with debug information, better stack traces and origin tracking. - `Check`. This activates the compiler warnings that depend on optimization and treats all warnings as errors. -Switching build modes in CMake is simple. For debug mode, enter at the command line: +Switching build types in CMake is simple. For debug mode, enter at the command line: cmake -D CMAKE_BUILD_TYPE=Debug /path/to/mbedtls_source @@ -175,9 +133,10 @@ If you already invoked cmake and want to change those settings, you need to remove the build directory and create it again. Note that it is possible to build in-place; this will however overwrite the -provided Makefiles (see `scripts/tmp_ignore_makefiles.sh` if you want to -prevent `git status` from showing them as modified). In order to do so, from -the Mbed TLS source directory, use: +legacy Makefiles still used for testing purposes (see +`scripts/tmp_ignore_makefiles.sh` if you want to prevent `git status` from +showing them as modified). In order to do so, from the Mbed TLS source +directory, use: cmake . make diff --git a/framework b/framework index 92f5d45b2..59d77ef05 160000 --- a/framework +++ b/framework @@ -1 +1 @@ -Subproject commit 92f5d45b2293363952bdbe28a7b2fcfe4a0d163a +Subproject commit 59d77ef0528f368b7c8cc39870fef6adab5241db diff --git a/scripts/abi_check.py b/scripts/abi_check.py index 542136305..243e6fc48 100755 --- a/scripts/abi_check.py +++ b/scripts/abi_check.py @@ -233,8 +233,14 @@ class AbiChecker: my_environment["SHARED"] = "1" if os.path.exists(os.path.join(git_worktree_path, "crypto")): my_environment["USE_CRYPTO_SUBMODULE"] = "1" + + if os.path.exists(os.path.join(git_worktree_path, "scripts", "legacy.make")): + command = [self.make_command, "-f", "scripts/legacy.make", "lib"] + else: + command = [self.make_command, "lib"] + make_output = subprocess.check_output( - [self.make_command, "lib"], + command, env=my_environment, cwd=git_worktree_path, stderr=subprocess.STDOUT diff --git a/scripts/bump_version.sh b/scripts/bump_version.sh index 86ed74ead..62939e382 100755 --- a/scripts/bump_version.sh +++ b/scripts/bump_version.sh @@ -143,6 +143,3 @@ scripts/generate_query_config.pl [ $VERBOSE ] && echo "Re-generating library/version_features.c" scripts/generate_features.pl -[ $VERBOSE ] && echo "Re-generating visualc files" -scripts/generate_visualc_files.pl - diff --git a/scripts/generate_visualc_files.pl b/scripts/generate_visualc_files.pl deleted file mode 100755 index ef684b79d..000000000 --- a/scripts/generate_visualc_files.pl +++ /dev/null @@ -1,352 +0,0 @@ -#!/usr/bin/env perl - -# Generate main file, individual apps and solution files for -# MS Visual Studio 2017 -# -# Must be run from Mbed TLS root or scripts directory. -# Takes no argument. -# -# Copyright The Mbed TLS Contributors -# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later - -use warnings; -use strict; -use Getopt::Long; -use Digest::MD5 'md5_hex'; - -# Declare variables for options -my $vsx_dir = "visualc/VS2017"; -my $list = 0; # Default off - -GetOptions( - "directory=s" => \$vsx_dir, # Target directory - "list" => \$list # Only list generated files -) or die "Invalid options\n"; - -my $vsx_ext = "vcxproj"; -my $vsx_app_tpl_file = "scripts/data_files/vs2017-app-template.$vsx_ext"; -my $vsx_main_tpl_file = "scripts/data_files/vs2017-main-template.$vsx_ext"; -my $vsx_main_file = "$vsx_dir/mbedTLS.$vsx_ext"; -my $vsx_sln_tpl_file = "scripts/data_files/vs2017-sln-template.sln"; -my $vsx_sln_file = "$vsx_dir/mbedTLS.sln"; - -my $mbedtls_programs_dir = "programs"; -my $framework_programs_dir = "framework/tests/programs"; -my $tfpsacrypto_programs_dir = "tf-psa-crypto/programs"; - -my $mbedtls_header_dir = 'include/mbedtls'; -my $drivers_builtin_header_dir = 'tf-psa-crypto/drivers/builtin/include/mbedtls'; -my $psa_header_dir = 'tf-psa-crypto/include/psa'; -my $tls_source_dir = 'library'; -my $crypto_core_source_dir = 'tf-psa-crypto/core'; -my $crypto_source_dir = 'tf-psa-crypto/drivers/builtin/src'; -my $tls_test_source_dir = 'tests/src'; -my $tls_test_header_dir = 'tests/include/test'; -my $crypto_test_source_dir = 'tf-psa-crypto/tests/src'; -my $crypto_test_header_dir = 'tf-psa-crypto/tests/include/test'; -my $test_source_dir = 'framework/tests/src'; -my $test_header_dir = 'framework/tests/include/test'; -my $test_drivers_header_dir = 'framework/tests/include/test/drivers'; -my $test_drivers_source_dir = 'framework/tests/src/drivers'; - -my @thirdparty_header_dirs = qw( - tf-psa-crypto/drivers/everest/include/tf-psa-crypto/private/everest -); -my @thirdparty_source_dirs = qw( - tf-psa-crypto/drivers/everest/library - tf-psa-crypto/drivers/everest/library/kremlib - tf-psa-crypto/drivers/everest/library/legacy -); - -# Directories to add to the include path. -# Order matters in case there are files with the same name in more than -# one directory: the compiler will use the first match. -my @include_directories = qw( - include - tf-psa-crypto/include - tf-psa-crypto/drivers/builtin/include - tf-psa-crypto/drivers/everest/include/ - tf-psa-crypto/drivers/everest/include/tf-psa-crypto/private/everest - tf-psa-crypto/drivers/everest/include/tf-psa-crypto/private/everest/vs2013 - tf-psa-crypto/drivers/everest/include/tf-psa-crypto/private/everest/kremlib - tests/include - tf-psa-crypto/tests/include - framework/tests/include - framework/tests/programs -); -my $include_directories = join(';', map {"../../$_"} @include_directories); - -# Directories to add to the include path when building the libraries, but not -# when building tests or applications. -my @library_include_directories = qw( - library - tf-psa-crypto/core - tf-psa-crypto/drivers/builtin/src -); -my $library_include_directories = - join(';', map {"../../$_"} (@library_include_directories, - @include_directories)); - -my @excluded_files = qw( - tf-psa-crypto/drivers/everest/library/Hacl_Curve25519.c -); -my %excluded_files = (); -foreach (@excluded_files) { $excluded_files{$_} = 1 } - -my $vsx_hdr_tpl = < -EOT -my $vsx_src_tpl = < -EOT - -my $vsx_sln_app_entry_tpl = <; - close $fh; - - return $content; -} - -sub content_to_file { - my ($content, $filename) = @_; - - open my $fh, '>:crlf', $filename or die "Could not write to $filename\n"; - print $fh $content; - close $fh; -} - -sub gen_app_guid { - my ($path) = @_; - - my $guid = md5_hex( "mbedTLS:$path" ); - $guid =~ s/(.{8})(.{4})(.{4})(.{4})(.{12})/\U{$1-$2-$3-$4-$5}/; - - return $guid; -} - -sub gen_app { - my ($path, $template, $dir, $ext) = @_; - - my $guid = gen_app_guid( $path ); - $path =~ s!/!\\!g; - (my $appname = $path) =~ s/.*\\//; - my $is_test_app = ($path =~ m/^test\\/); - - my $srcs; - if( $appname eq "metatest" or $appname eq "query_compile_time_config" or - $appname eq "query_included_headers" or $appname eq "zeroize" ) { - $srcs = ""; - } else { - $srcs = ""; - } - - if( $appname eq "ssl_client2" or $appname eq "ssl_server2" or - $appname eq "query_compile_time_config" ) { - $srcs .= "\n "; - } - if( $appname eq "ssl_client2" or $appname eq "ssl_server2" ) { - $srcs .= "\n "; - } - - my $content = $template; - $content =~ s//$srcs/g; - $content =~ s//$appname/g; - $content =~ s//$guid/g; - $content =~ s/INCLUDE_DIRECTORIES\n/($is_test_app ? - $library_include_directories : - $include_directories)/ge; - - content_to_file( $content, "$dir/$appname.$ext" ); -} - -sub get_app_list { - my $makefile_contents = slurp_file('programs/Makefile'); - $makefile_contents =~ /\n\s*APPS\s*=[\\\s]*(.*?)(? } @header_dirs); - my @source_dirs = ( - $tls_source_dir, - $crypto_core_source_dir, - $crypto_source_dir, - $test_source_dir, - $tls_test_source_dir, - $crypto_test_source_dir, - $test_drivers_source_dir, - @thirdparty_source_dirs, - ); - my @sources = (map { <$_/*.c> } @source_dirs); - - @headers = grep { ! $excluded_files{$_} } @headers; - @sources = grep { ! $excluded_files{$_} } @sources; - map { s!/!\\!g } @headers; - map { s!/!\\!g } @sources; - - if ($list) { - foreach my $app (@app_list) { - $app =~ s/.*\///; - print "$vsx_dir/$app.$vsx_ext\n"; - } - print "$vsx_main_file\n"; - print "$vsx_sln_file\n"; - } else { - gen_app_files( @app_list ); - - gen_main_file( \@headers, \@sources, - $vsx_hdr_tpl, $vsx_src_tpl, - $vsx_main_tpl_file, $vsx_main_file ); - - gen_vsx_solution( @app_list ); - } - - return 0; -} diff --git a/Makefile b/scripts/legacy.make similarity index 83% rename from Makefile rename to scripts/legacy.make index 6706143a2..9c8585cd8 100644 --- a/Makefile +++ b/scripts/legacy.make @@ -62,7 +62,6 @@ tests/%: FORCE generated_files: library/generated_files generated_files: programs/generated_files generated_files: tests/generated_files -generated_files: visualc_files # Set GEN_FILES to the empty string to disable dependencies on generated # source files. Then `make generated_files` will only build files that @@ -87,26 +86,6 @@ else gen_file_dep = | endif -.PHONY: visualc_files -VISUALC_FILES = visualc/VS2017/mbedTLS.sln visualc/VS2017/mbedTLS.vcxproj -# TODO: $(app).vcxproj for each $(app) in programs/ -visualc_files: $(VISUALC_FILES) - -# Ensure that the .c files that generate_visualc_files.pl enumerates are -# present before it runs. It doesn't matter if the files aren't up-to-date, -# they just need to be present. -$(VISUALC_FILES): | library/generated_files -$(VISUALC_FILES): | programs/generated_files -$(VISUALC_FILES): | tests/generated_files -$(VISUALC_FILES): $(gen_file_dep) scripts/generate_visualc_files.pl -$(VISUALC_FILES): $(gen_file_dep) scripts/data_files/vs2017-app-template.vcxproj -$(VISUALC_FILES): $(gen_file_dep) scripts/data_files/vs2017-main-template.vcxproj -$(VISUALC_FILES): $(gen_file_dep) scripts/data_files/vs2017-sln-template.sln -# TODO: also the list of .c and .h source files, but not their content -$(VISUALC_FILES): - echo " Gen $@ ..." - $(PERL) scripts/generate_visualc_files.pl - ifndef WINDOWS install: no_test mkdir -p $(DESTDIR)/include/mbedtls @@ -159,12 +138,6 @@ neat: clean_more_on_top $(MAKE) -C library neat $(MAKE) -C programs neat $(MAKE) -C tests neat -ifndef WINDOWS - rm -f visualc/VS2017/*.vcxproj visualc/VS2017/mbedTLS.sln -else - if exist visualc\VS2017\*.vcxproj del /Q /F visualc\VS2017\*.vcxproj - if exist visualc\VS2017\mbedTLS.sln del /Q /F visualc\VS2017\mbedTLS.sln -endif ifndef PSASIM check: lib diff --git a/tests/scripts/components-basic-checks.sh b/tests/scripts/components-basic-checks.sh index c7d816189..e791ad065 100644 --- a/tests/scripts/components-basic-checks.sh +++ b/tests/scripts/components-basic-checks.sh @@ -18,14 +18,14 @@ component_check_recursion () { component_check_generated_files () { msg "Check make_generated_files.py consistency" - make neat + $MAKE_COMMAND neat $FRAMEWORK/scripts/make_generated_files.py $FRAMEWORK/scripts/make_generated_files.py --check - make neat + $MAKE_COMMAND neat msg "Check files generated with make" MBEDTLS_ROOT_DIR="$PWD" - make generated_files + $MAKE_COMMAND generated_files $FRAMEWORK/scripts/make_generated_files.py --check cd $TF_PSA_CRYPTO_ROOT_DIR @@ -39,12 +39,6 @@ component_check_generated_files () { make cd "$MBEDTLS_ROOT_DIR" - # Files for MS Visual Studio are not generated with cmake thus copy the - # ones generated with make to pacify make_generated_files.py check. - # Files for MS Visual Studio are rather on their way out thus not adding - # support for them with cmake. - cp -Rf visualc "$OUT_OF_SOURCE_DIR" - $FRAMEWORK/scripts/make_generated_files.py --root "$OUT_OF_SOURCE_DIR" --check cd $TF_PSA_CRYPTO_ROOT_DIR diff --git a/tests/scripts/components-build-system.sh b/tests/scripts/components-build-system.sh index e533cdf0f..8a84911b4 100644 --- a/tests/scripts/components-build-system.sh +++ b/tests/scripts/components-build-system.sh @@ -11,7 +11,7 @@ component_test_make_shared () { msg "build/test: make shared" # ~ 40s - make SHARED=1 TEST_CPP=1 all check + $MAKE_COMMAND SHARED=1 TEST_CPP=1 all check ldd programs/util/strerror | grep libmbedcrypto $FRAMEWORK/tests/programs/dlopen_demo.sh } @@ -58,7 +58,7 @@ support_test_cmake_out_of_source () { component_test_cmake_out_of_source () { # Remove existing generated files so that we use the ones cmake # generates - make neat + $MAKE_COMMAND neat msg "build: cmake 'out-of-source' build" MBEDTLS_ROOT_DIR="$PWD" @@ -90,7 +90,7 @@ component_test_cmake_out_of_source () { component_test_cmake_as_subdirectory () { # Remove existing generated files so that we use the ones CMake # generates - make neat + $MAKE_COMMAND neat msg "build: cmake 'as-subdirectory' build" cd programs/test/cmake_subproject @@ -107,7 +107,7 @@ support_test_cmake_as_subdirectory () { component_test_cmake_as_package () { # Remove existing generated files so that we use the ones CMake # generates - make neat + $MAKE_COMMAND neat msg "build: cmake 'as-package' build" root_dir="$(pwd)" @@ -132,7 +132,7 @@ support_test_cmake_as_package () { component_test_cmake_as_package_install () { # Remove existing generated files so that we use the ones CMake # generates - make neat + $MAKE_COMMAND neat msg "build: cmake 'as-installed-package' build" cd programs/test/cmake_package_install diff --git a/tests/scripts/components-compiler.sh b/tests/scripts/components-compiler.sh index 9e74572c1..6ccb57d70 100644 --- a/tests/scripts/components-compiler.sh +++ b/tests/scripts/components-compiler.sh @@ -27,13 +27,13 @@ test_build_opt () { $cc --version for opt in "$@"; do msg "build/test: $cc $opt, $info" # ~ 30s - make CC="$cc" CFLAGS="$opt -std=c99 -pedantic -Wall -Wextra -Werror" + $MAKE_COMMAND CC="$cc" CFLAGS="$opt -std=c99 -pedantic -Wall -Wextra -Werror" # We're confident enough in compilers to not run _all_ the tests, # but at least run the unit tests. In particular, runs with # optimizations use inline assembly whereas runs with -O0 # skip inline assembly. - make test # ~30s - make clean + $MAKE_COMMAND test # ~30s + $MAKE_COMMAND clean done } @@ -94,10 +94,10 @@ component_test_gcc15_drivers_opt () { loc_cflags="$ASAN_CFLAGS -DPSA_CRYPTO_DRIVER_TEST -DMBEDTLS_CONFIG_ADJUST_TEST_ACCELERATORS" loc_cflags="${loc_cflags} -I../framework/tests/include -O2" - make CC=$GCC_15 CFLAGS="${loc_cflags}" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=$GCC_15 CFLAGS="${loc_cflags}" LDFLAGS="$ASAN_CFLAGS" msg "test: GCC 15: full + test drivers dispatching to builtins" - make test + $MAKE_COMMAND test } component_test_gcc_earliest_opt () { @@ -111,21 +111,21 @@ support_test_gcc_earliest_opt () { component_build_mingw () { msg "build: Windows cross build - mingw64, make (Link Library)" # ~ 30s - make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -Wall -Wextra -maes -msse2 -mpclmul' WINDOWS_BUILD=1 lib programs + $MAKE_COMMAND CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -Wall -Wextra -maes -msse2 -mpclmul' WINDOWS_BUILD=1 lib programs # note Make tests only builds the tests, but doesn't run them - make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -maes -msse2 -mpclmul' WINDOWS_BUILD=1 tests - make WINDOWS_BUILD=1 clean + $MAKE_COMMAND CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -maes -msse2 -mpclmul' WINDOWS_BUILD=1 tests + $MAKE_COMMAND WINDOWS_BUILD=1 clean msg "build: Windows cross build - mingw64, make (DLL)" # ~ 30s - make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -Wall -Wextra -maes -msse2 -mpclmul' WINDOWS_BUILD=1 SHARED=1 lib programs - make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -Wall -Wextra -maes -msse2 -mpclmul' WINDOWS_BUILD=1 SHARED=1 tests - make WINDOWS_BUILD=1 clean + $MAKE_COMMAND CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -Wall -Wextra -maes -msse2 -mpclmul' WINDOWS_BUILD=1 SHARED=1 lib programs + $MAKE_COMMAND CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -Wall -Wextra -maes -msse2 -mpclmul' WINDOWS_BUILD=1 SHARED=1 tests + $MAKE_COMMAND WINDOWS_BUILD=1 clean msg "build: Windows cross build - mingw64, make (Library only, default config without MBEDTLS_AESNI_C)" # ~ 30s ./scripts/config.py unset MBEDTLS_AESNI_C # - make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -Wall -Wextra' WINDOWS_BUILD=1 lib - make WINDOWS_BUILD=1 clean + $MAKE_COMMAND CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -Wall -Wextra' WINDOWS_BUILD=1 lib + $MAKE_COMMAND WINDOWS_BUILD=1 clean } support_build_mingw () { @@ -141,7 +141,7 @@ component_build_zeroize_checks () { scripts/config.py full # Only compile - we're looking for sizeof-pointer-memaccess warnings - make CFLAGS="'-DTF_PSA_CRYPTO_USER_CONFIG_FILE=\"$TF_PSA_CRYPTO_ROOT_DIR/tests/configs/user-config-zeroize-memset.h\"' -DMBEDTLS_TEST_DEFINES_ZEROIZE -Werror -Wsizeof-pointer-memaccess" + $MAKE_COMMAND CFLAGS="'-DTF_PSA_CRYPTO_USER_CONFIG_FILE=\"$TF_PSA_CRYPTO_ROOT_DIR/tests/configs/user-config-zeroize-memset.h\"' -DMBEDTLS_TEST_DEFINES_ZEROIZE -Werror -Wsizeof-pointer-memaccess" } component_test_zeroize () { @@ -162,12 +162,12 @@ component_test_zeroize () { for optimization_flag in -O2 -O3 -Ofast -Os; do for compiler in clang gcc; do msg "test: $compiler $optimization_flag, mbedtls_platform_zeroize()" - make programs CC="$compiler" DEBUG=1 CFLAGS="$optimization_flag" + $MAKE_COMMAND programs CC="$compiler" DEBUG=1 CFLAGS="$optimization_flag" gdb -ex "$gdb_disable_aslr" -x $FRAMEWORK/tests/programs/test_zeroize.gdb -nw -batch -nx 2>&1 | tee test_zeroize.log grep "The buffer was correctly zeroized" test_zeroize.log not grep -i "error" test_zeroize.log rm -f test_zeroize.log - make clean + $MAKE_COMMAND clean done done } diff --git a/tests/scripts/components-configuration-crypto.sh b/tests/scripts/components-configuration-crypto.sh index 0aeaa673d..c9c6a13e4 100644 --- a/tests/scripts/components-configuration-crypto.sh +++ b/tests/scripts/components-configuration-crypto.sh @@ -47,7 +47,7 @@ component_test_crypto_with_static_key_slots() { scripts/config.py unset MBEDTLS_PSA_KEY_STORE_DYNAMIC msg "test: crypto full + MBEDTLS_PSA_STATIC_KEY_SLOTS" - make CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" test + $MAKE_COMMAND CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" test } # check_renamed_symbols HEADER LIB @@ -67,7 +67,7 @@ component_build_psa_crypto_spm () { # We can only compile, not link, since our test and sample programs # aren't equipped for the modified names used when MBEDTLS_PSA_CRYPTO_SPM # is active. - make CC=gcc CFLAGS='-Werror -Wall -Wextra -I../framework/tests/include/spe' lib + $MAKE_COMMAND CC=gcc CFLAGS='-Werror -Wall -Wextra -I../framework/tests/include/spe' lib # Check that if a symbol is renamed by crypto_spe.h, the non-renamed # version is not present. @@ -138,16 +138,16 @@ component_test_psa_crypto_without_heap() { helper_libtestdriver1_make_main "$loc_accel_list" tests msg "crypto without heap: test" - make test + $MAKE_COMMAND test } component_test_no_rsa_key_pair_generation () { msg "build: default config minus PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE" scripts/config.py unset PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE - make + $MAKE_COMMAND msg "test: default config minus PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE" - make test + $MAKE_COMMAND test } component_test_no_pem_no_fs () { @@ -241,10 +241,10 @@ component_test_psa_external_rng_no_drbg_use_psa () { scripts/config.py unset MBEDTLS_CTR_DRBG_C scripts/config.py unset MBEDTLS_HMAC_DRBG_C scripts/config.py unset PSA_WANT_ALG_DETERMINISTIC_ECDSA # Requires HMAC_DRBG - make CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" msg "test: PSA_CRYPTO_EXTERNAL_RNG minus *_DRBG, PSA crypto - main suites" - make test + $MAKE_COMMAND test msg "test: PSA_CRYPTO_EXTERNAL_RNG minus *_DRBG, PSA crypto - ssl-opt.sh (subset)" tests/ssl-opt.sh -f 'Default\|opaque' @@ -257,10 +257,10 @@ component_test_psa_external_rng_use_psa_crypto () { scripts/config.py unset MBEDTLS_CTR_DRBG_C scripts/config.py unset MBEDTLS_ENTROPY_NV_SEED scripts/config.py unset MBEDTLS_PLATFORM_NV_SEED_ALT - make CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" msg "test: full + PSA_CRYPTO_EXTERNAL_RNG + USE_PSA_CRYPTO minus CTR_DRBG/NV_SEED" - make test + $MAKE_COMMAND test msg "test: full + PSA_CRYPTO_EXTERNAL_RNG + USE_PSA_CRYPTO minus CTR_DRBG/NV_SEED" tests/ssl-opt.sh -f 'Default\|opaque' @@ -273,14 +273,14 @@ component_full_no_pkparse_pkwrite () { scripts/config.py unset MBEDTLS_PK_PARSE_C scripts/config.py unset MBEDTLS_PK_WRITE_C - make CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" # Ensure that PK_[PARSE|WRITE]_C were not re-enabled accidentally (additive config). not grep mbedtls_pk_parse_key ${BUILTIN_SRC_PATH}/pkparse.o not grep mbedtls_pk_write_key_der ${BUILTIN_SRC_PATH}/pkwrite.o msg "test: full without pkparse and pkwrite" - make test + $MAKE_COMMAND test } component_test_crypto_full_md_light_only () { @@ -300,14 +300,14 @@ component_test_crypto_full_md_light_only () { # Note: MD-light is auto-enabled in build_info.h by modules that need it, # which we haven't disabled, so no need to explicitly enable it. - make CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" # Make sure we don't have the HMAC functions, but the hashing functions not grep mbedtls_md_hmac ${BUILTIN_SRC_PATH}/md.o grep mbedtls_md ${BUILTIN_SRC_PATH}/md.o msg "test: crypto_full with only the light subset of MD" - make test + $MAKE_COMMAND test } component_test_full_no_cipher () { @@ -334,13 +334,13 @@ component_test_full_no_cipher () { # The following modules directly depends on CIPHER_C scripts/config.py unset MBEDTLS_NIST_KW_C - make + $MAKE_COMMAND # Ensure that CIPHER_C was not re-enabled not grep mbedtls_cipher_init ${BUILTIN_SRC_PATH}/cipher.o msg "test: full no CIPHER" - make test + $MAKE_COMMAND test } component_test_full_no_ccm () { @@ -359,10 +359,10 @@ component_test_full_no_ccm () { # PSA_WANT_ALG_CCM to be re-enabled. scripts/config.py unset PSA_WANT_ALG_CCM - make + $MAKE_COMMAND msg "test: full no PSA_WANT_ALG_CCM" - make test + $MAKE_COMMAND test } component_test_full_no_ccm_star_no_tag () { @@ -390,13 +390,13 @@ component_test_full_no_ccm_star_no_tag () { scripts/config.py unset PSA_WANT_ALG_CBC_NO_PADDING scripts/config.py unset PSA_WANT_ALG_CBC_PKCS7 - make + $MAKE_COMMAND # Ensure MBEDTLS_PSA_BUILTIN_CIPHER was not enabled not grep mbedtls_psa_cipher ${PSA_CORE_PATH}/psa_crypto_cipher.o msg "test: full no PSA_WANT_ALG_CCM_STAR_NO_TAG" - make test + $MAKE_COMMAND test } component_test_config_symmetric_only () { @@ -444,10 +444,10 @@ component_test_everest_curve25519_only () { scripts/config.py unset-all "PSA_WANT_ECC_[0-9A-Z_a-z]*$" scripts/config.py set PSA_WANT_ECC_MONTGOMERY_255 - make CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" msg "test: Everest ECDH context, only Curve25519" # ~ 50s - make test + $MAKE_COMMAND test } component_test_psa_collect_statuses () { @@ -491,14 +491,14 @@ component_test_crypto_for_psa_service () { scripts/config.py unset MBEDTLS_PK_C scripts/config.py unset MBEDTLS_PK_PARSE_C scripts/config.py unset MBEDTLS_PK_WRITE_C - make CFLAGS='-O1 -Werror' all test + $MAKE_COMMAND CFLAGS='-O1 -Werror' all test are_empty_libraries library/libmbedx509.* library/libmbedtls.* } component_build_crypto_baremetal () { msg "build: make, crypto only, baremetal config" scripts/config.py crypto_baremetal - make CFLAGS="-O1 -Werror -I$PWD/framework/tests/include/baremetal-override/" + $MAKE_COMMAND CFLAGS="-O1 -Werror -I$PWD/framework/tests/include/baremetal-override/" are_empty_libraries library/libmbedx509.* library/libmbedtls.* } @@ -543,10 +543,10 @@ component_test_psa_crypto_config_ffdh_2048_only () { scripts/config.py unset PSA_WANT_DH_RFC7919_6144 scripts/config.py unset PSA_WANT_DH_RFC7919_8192 - make CFLAGS="$ASAN_CFLAGS -Werror" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CFLAGS="$ASAN_CFLAGS -Werror" LDFLAGS="$ASAN_CFLAGS" msg "test: full config - only DH 2048" - make test + $MAKE_COMMAND test msg "ssl-opt: full config - only DH 2048" tests/ssl-opt.sh -f "ffdh" @@ -587,7 +587,7 @@ component_test_psa_crypto_config_accel_ecdsa () { # ------------- msg "test: accelerated ECDSA" - make test + $MAKE_COMMAND test } component_test_psa_crypto_config_accel_ecdh () { @@ -623,7 +623,7 @@ component_test_psa_crypto_config_accel_ecdh () { # ------------- msg "test: accelerated ECDH" - make test + $MAKE_COMMAND test } component_test_psa_crypto_config_accel_ffdh () { @@ -654,7 +654,7 @@ component_test_psa_crypto_config_accel_ffdh () { # ------------- msg "test: full with accelerated FFDH" - make test + $MAKE_COMMAND test msg "ssl-opt: full with accelerated FFDH alg" tests/ssl-opt.sh -f "ffdh" @@ -666,10 +666,10 @@ component_test_psa_crypto_config_reference_ffdh () { # Start with full (USE_PSA and TLS 1.3) helper_libtestdriver1_adjust_config "full" - make + $MAKE_COMMAND msg "test suites: full with non-accelerated FFDH alg" - make test + $MAKE_COMMAND test msg "ssl-opt: full with non-accelerated FFDH alg" tests/ssl-opt.sh -f "ffdh" @@ -704,7 +704,7 @@ component_test_psa_crypto_config_accel_pake () { # ------------- msg "test: full with accelerated PAKE" - make test + $MAKE_COMMAND test } component_test_psa_crypto_config_accel_ecc_some_key_types () { @@ -758,7 +758,7 @@ component_test_psa_crypto_config_accel_ecc_some_key_types () { # ------------- msg "test suites: full with accelerated EC algs and some key types" - make test + $MAKE_COMMAND test } # Run tests with only (non-)Weierstrass accelerated @@ -864,7 +864,7 @@ common_test_psa_crypto_config_accel_ecc_some_curves () { # ------------- msg "test suites: crypto_full minus PK with accelerated EC algs and $desc curves" - make test + $MAKE_COMMAND test } component_test_psa_crypto_config_accel_ecc_weierstrass_curves () { @@ -938,7 +938,7 @@ component_test_psa_crypto_config_accel_ecc_ecp_light_only () { # ------------- msg "test suites: full with accelerated EC algs" - make test + $MAKE_COMMAND test msg "ssl-opt: full with accelerated EC algs" tests/ssl-opt.sh @@ -950,10 +950,10 @@ component_test_psa_crypto_config_reference_ecc_ecp_light_only () { config_psa_crypto_config_ecp_light_only 0 - make + $MAKE_COMMAND msg "test suites: full with non-accelerated EC algs" - make test + $MAKE_COMMAND test msg "ssl-opt: full with non-accelerated EC algs" tests/ssl-opt.sh @@ -1034,7 +1034,7 @@ component_test_psa_crypto_config_accel_ecc_no_ecp_at_all () { # ------------- msg "test: full + accelerated EC algs - ECP" - make test + $MAKE_COMMAND test msg "ssl-opt: full + accelerated EC algs - ECP" tests/ssl-opt.sh @@ -1048,10 +1048,10 @@ component_test_psa_crypto_config_reference_ecc_no_ecp_at_all () { config_psa_crypto_no_ecp_at_all 0 - make + $MAKE_COMMAND msg "test: full + non accelerated EC algs" - make test + $MAKE_COMMAND test msg "ssl-opt: full + non accelerated EC algs" tests/ssl-opt.sh @@ -1183,7 +1183,7 @@ common_test_psa_crypto_config_accel_ecc_ffdh_no_bignum () { msg "test suites: full + accelerated $accel_text algs + USE_PSA - $removed_text - BIGNUM" - make test + $MAKE_COMMAND test msg "ssl-opt: full + accelerated $accel_text algs + USE_PSA - $removed_text - BIGNUM" tests/ssl-opt.sh @@ -1214,10 +1214,10 @@ common_test_psa_crypto_config_reference_ecc_ffdh_no_bignum () { config_psa_crypto_config_accel_ecc_ffdh_no_bignum 0 "$test_target" - make + $MAKE_COMMAND msg "test suites: full + non accelerated EC algs + USE_PSA" - make test + $MAKE_COMMAND test msg "ssl-opt: full + non accelerated $accel_text algs + USE_PSA" tests/ssl-opt.sh @@ -1273,7 +1273,7 @@ component_test_tfm_config_p256m_driver_accel_ec () { common_tfm_config # Build crypto library - make CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS -I../framework/tests/include/spe" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS -I../framework/tests/include/spe" LDFLAGS="$ASAN_CFLAGS" # Make sure any built-in EC alg was not re-enabled by accident (additive config) not grep mbedtls_ecdsa_ ${BUILTIN_SRC_PATH}/ecdsa.o @@ -1292,7 +1292,7 @@ component_test_tfm_config_p256m_driver_accel_ec () { # Run the tests msg "test: TF-M config + p256m driver + accel ECDH(E)/ECDSA" - make test + $MAKE_COMMAND test } # Keep this in sync with component_test_tfm_config_p256m_driver_accel_ec() as @@ -1306,7 +1306,7 @@ component_test_tfm_config_no_p256m () { scripts/config.py -f "$CRYPTO_CONFIG_H" unset MBEDTLS_PSA_P256M_DRIVER_ENABLED msg "build: TF-M config without p256m" - make CFLAGS='-Werror -Wall -Wextra -I../framework/tests/include/spe' tests + $MAKE_COMMAND CFLAGS='-Werror -Wall -Wextra -I../framework/tests/include/spe' tests # Check that p256m was not built not grep p256_ecdsa_ library/libmbedcrypto.a @@ -1316,7 +1316,7 @@ component_test_tfm_config_no_p256m () { not grep mbedtls_cipher ${BUILTIN_SRC_PATH}/cipher.o msg "test: TF-M config without p256m" - make test + $MAKE_COMMAND test } # This is an helper used by: @@ -1340,10 +1340,10 @@ build_and_test_psa_want_key_pair_partial () { # crypto_config.h so we just disable the one we don't want. scripts/config.py unset "$disabled_psa_want" - make CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" msg "test: $base_config - ${disabled_psa_want}" - make test + $MAKE_COMMAND test } component_test_psa_ecc_key_pair_no_derive () { @@ -1405,7 +1405,7 @@ component_test_psa_crypto_config_accel_rsa_crypto () { # ------------- msg "test: crypto_full with accelerated RSA" - make test + $MAKE_COMMAND test } component_test_psa_crypto_config_reference_rsa_crypto () { @@ -1417,12 +1417,12 @@ component_test_psa_crypto_config_reference_rsa_crypto () { # Build # ----- - make + $MAKE_COMMAND # Run the tests # ------------- msg "test: crypto_full with non-accelerated RSA" - make test + $MAKE_COMMAND test } # This is a temporary test to verify that full RSA support is present even when @@ -1452,10 +1452,10 @@ component_test_new_psa_want_key_pair_symbol () { scripts/config.py unset PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT scripts/config.py unset PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE - make + $MAKE_COMMAND msg "Test: crypto config - PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC" - make test + $MAKE_COMMAND test # Parse only 1 relevant line from the outcome file, i.e. a test which is # performing RSA signature. @@ -1499,7 +1499,7 @@ component_test_psa_crypto_config_accel_hash () { # ------------- msg "test: accelerated hash" - make test + $MAKE_COMMAND test } # Auxiliary function to build config for hashes with and without drivers @@ -1548,7 +1548,7 @@ component_test_psa_crypto_config_accel_hash_use_psa () { # ------------- msg "test: full with accelerated hashes" - make test + $MAKE_COMMAND test # This is mostly useful so that we can later compare outcome files with # the reference config in analyze_outcomes.py, to check that the @@ -1571,10 +1571,10 @@ component_test_psa_crypto_config_reference_hash_use_psa () { config_psa_crypto_hash_use_psa 0 - make + $MAKE_COMMAND msg "test: full without accelerated hashes" - make test + $MAKE_COMMAND test msg "test: ssl-opt.sh, full without accelerated hashes" tests/ssl-opt.sh @@ -1632,7 +1632,7 @@ component_test_psa_crypto_config_accel_hmac () { # ------------- msg "test: full with accelerated hmac" - make test + $MAKE_COMMAND test } component_test_psa_crypto_config_reference_hmac () { @@ -1640,10 +1640,10 @@ component_test_psa_crypto_config_reference_hmac () { config_psa_crypto_hmac_use_psa 0 - make + $MAKE_COMMAND msg "test: full without accelerated hmac" - make test + $MAKE_COMMAND test } component_test_psa_crypto_config_accel_aead () { @@ -1677,7 +1677,7 @@ component_test_psa_crypto_config_accel_aead () { # ------------- msg "test: accelerated AEAD" - make test + $MAKE_COMMAND test } # This is a common configuration function used in: @@ -1734,7 +1734,7 @@ component_test_psa_crypto_config_accel_cipher_aead_cmac () { # ------------- msg "test: full config with accelerated cipher inc. AEAD and CMAC" - make test + $MAKE_COMMAND test msg "ssl-opt: full config with accelerated cipher inc. AEAD and CMAC" # Exclude password-protected key tests — they require built-in CBC and AES. @@ -1752,10 +1752,10 @@ component_test_psa_crypto_config_reference_cipher_aead_cmac () { # This can be removed once we remove DES from the library. scripts/config.py unset PSA_WANT_KEY_TYPE_DES - make + $MAKE_COMMAND msg "test: full config with non-accelerated cipher inc. AEAD and CMAC" - make test + $MAKE_COMMAND test msg "ssl-opt: full config with non-accelerated cipher inc. AEAD and CMAC" # Exclude password-protected key tests as in test_psa_crypto_config_accel_cipher_aead_cmac. @@ -1826,7 +1826,7 @@ component_test_full_block_cipher_psa_dispatch_static_keystore () { # ------------- msg "test: full + PSA dispatch in block_cipher with static keystore" - make test + $MAKE_COMMAND test } component_test_full_block_cipher_psa_dispatch () { @@ -1857,7 +1857,7 @@ component_test_full_block_cipher_psa_dispatch () { # ------------- msg "test: full + PSA dispatch in block_cipher" - make test + $MAKE_COMMAND test } # This is the reference component of component_test_full_block_cipher_psa_dispatch @@ -1866,20 +1866,20 @@ component_test_full_block_cipher_legacy_dispatch () { common_block_cipher_dispatch 0 - make + $MAKE_COMMAND msg "test: full + legacy dispatch in block_cipher" - make test + $MAKE_COMMAND test } component_test_aead_chachapoly_disabled () { msg "build: full minus CHACHAPOLY" scripts/config.py full scripts/config.py unset PSA_WANT_ALG_CHACHA20_POLY1305 - make CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" msg "test: full minus CHACHAPOLY" - make test + $MAKE_COMMAND test } component_test_aead_only_ccm () { @@ -1887,10 +1887,10 @@ component_test_aead_only_ccm () { scripts/config.py full scripts/config.py unset PSA_WANT_ALG_CHACHA20_POLY1305 scripts/config.py unset PSA_WANT_ALG_GCM - make CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" msg "test: full minus CHACHAPOLY and GCM" - make test + $MAKE_COMMAND test } component_test_ccm_aes_sha256 () { @@ -1900,9 +1900,9 @@ component_test_ccm_aes_sha256 () { echo '#define MBEDTLS_CONFIG_H ' >"$CONFIG_H" cp tf-psa-crypto/configs/crypto-config-ccm-aes-sha256.h "$CRYPTO_CONFIG_H" - make + $MAKE_COMMAND msg "test: CCM + AES + SHA256 configuration" - make test + $MAKE_COMMAND test } # Test that the given .o file builds with all (valid) combinations of the given options. @@ -2044,12 +2044,12 @@ END END msg "all loops unrolled" - make clean + $MAKE_COMMAND clean make -C tests ../tf-psa-crypto/tests/test_suite_shax CFLAGS="-DMBEDTLS_SHA3_THETA_UNROLL=1 -DMBEDTLS_SHA3_PI_UNROLL=1 -DMBEDTLS_SHA3_CHI_UNROLL=1 -DMBEDTLS_SHA3_RHO_UNROLL=1" ./tf-psa-crypto/tests/test_suite_shax msg "all loops rolled up" - make clean + $MAKE_COMMAND clean make -C tests ../tf-psa-crypto/tests/test_suite_shax CFLAGS="-DMBEDTLS_SHA3_THETA_UNROLL=0 -DMBEDTLS_SHA3_PI_UNROLL=0 -DMBEDTLS_SHA3_CHI_UNROLL=0 -DMBEDTLS_SHA3_RHO_UNROLL=0" ./tf-psa-crypto/tests/test_suite_shax } @@ -2091,10 +2091,10 @@ component_test_aes_only_128_bit_keys () { scripts/config.py set MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH scripts/config.py set MBEDTLS_PSA_CRYPTO_RNG_STRENGTH 128 - make CFLAGS='-O2 -Werror -Wall -Wextra' + $MAKE_COMMAND CFLAGS='-O2 -Werror -Wall -Wextra' msg "test: default config + AES_ONLY_128_BIT_KEY_LENGTH" - make test + $MAKE_COMMAND test } component_test_no_ctr_drbg_aes_only_128_bit_keys () { @@ -2103,10 +2103,10 @@ component_test_no_ctr_drbg_aes_only_128_bit_keys () { scripts/config.py set MBEDTLS_PSA_CRYPTO_RNG_STRENGTH 128 scripts/config.py unset MBEDTLS_CTR_DRBG_C - make CC=clang CFLAGS='-Werror -Wall -Wextra' + $MAKE_COMMAND CC=clang CFLAGS='-Werror -Wall -Wextra' msg "test: default config + AES_ONLY_128_BIT_KEY_LENGTH - CTR_DRBG_C" - make test + $MAKE_COMMAND test } component_test_aes_only_128_bit_keys_have_builtins () { @@ -2116,10 +2116,10 @@ component_test_aes_only_128_bit_keys_have_builtins () { scripts/config.py unset MBEDTLS_AESNI_C scripts/config.py unset MBEDTLS_AESCE_C - make CFLAGS='-O2 -Werror -Wall -Wextra' + $MAKE_COMMAND CFLAGS='-O2 -Werror -Wall -Wextra' msg "test: default config + AES_ONLY_128_BIT_KEY_LENGTH - AESNI_C - AESCE_C" - make test + $MAKE_COMMAND test msg "selftest: default config + AES_ONLY_128_BIT_KEY_LENGTH - AESNI_C - AESCE_C" programs/test/selftest @@ -2131,38 +2131,38 @@ component_test_gcm_largetable () { scripts/config.py unset MBEDTLS_AESNI_C scripts/config.py unset MBEDTLS_AESCE_C - make CFLAGS='-O2 -Werror -Wall -Wextra' + $MAKE_COMMAND CFLAGS='-O2 -Werror -Wall -Wextra' msg "test: default config - GCM_LARGE_TABLE - AESNI_C - AESCE_C" - make test + $MAKE_COMMAND test } component_test_aes_fewer_tables () { msg "build: default config with AES_FEWER_TABLES enabled" scripts/config.py set MBEDTLS_AES_FEWER_TABLES - make CFLAGS='-O2 -Werror -Wall -Wextra' + $MAKE_COMMAND CFLAGS='-O2 -Werror -Wall -Wextra' msg "test: AES_FEWER_TABLES" - make test + $MAKE_COMMAND test } component_test_aes_rom_tables () { msg "build: default config with AES_ROM_TABLES enabled" scripts/config.py set MBEDTLS_AES_ROM_TABLES - make CFLAGS='-O2 -Werror -Wall -Wextra' + $MAKE_COMMAND CFLAGS='-O2 -Werror -Wall -Wextra' msg "test: AES_ROM_TABLES" - make test + $MAKE_COMMAND test } component_test_aes_fewer_tables_and_rom_tables () { msg "build: default config with AES_ROM_TABLES and AES_FEWER_TABLES enabled" scripts/config.py set MBEDTLS_AES_FEWER_TABLES scripts/config.py set MBEDTLS_AES_ROM_TABLES - make CFLAGS='-O2 -Werror -Wall -Wextra' + $MAKE_COMMAND CFLAGS='-O2 -Werror -Wall -Wextra' msg "test: AES_FEWER_TABLES + AES_ROM_TABLES" - make test + $MAKE_COMMAND test } # helper for component_test_block_cipher_no_decrypt_aesni() which: @@ -2200,8 +2200,8 @@ helper_block_cipher_no_decrypt_build_test () { [ -n "$unset_opts" ] && echo "Disabling: $unset_opts" && scripts/config.py unset-all $unset_opts msg "build: default config + BLOCK_CIPHER_NO_DECRYPT${set_opts:+ + $set_opts}${unset_opts:+ - $unset_opts} with $cflags${ldflags:+, $ldflags}" - make clean - make CFLAGS="-O2 $cflags" LDFLAGS="$ldflags" + $MAKE_COMMAND clean + $MAKE_COMMAND CFLAGS="-O2 $cflags" LDFLAGS="$ldflags" # Make sure we don't have mbedtls_xxx_setkey_dec in AES/ARIA/CAMELLIA not grep mbedtls_aes_setkey_dec ${BUILTIN_SRC_PATH}/aes.o @@ -2213,7 +2213,7 @@ helper_block_cipher_no_decrypt_build_test () { not grep mbedtls_aesni_inverse_key ${BUILTIN_SRC_PATH}/aesni.o msg "test: default config + BLOCK_CIPHER_NO_DECRYPT${set_opts:+ + $set_opts}${unset_opts:+ - $unset_opts} with $cflags${ldflags:+, $ldflags}" - make test + $MAKE_COMMAND test msg "selftest: default config + BLOCK_CIPHER_NO_DECRYPT${set_opts:+ + $set_opts}${unset_opts:+ - $unset_opts} with $cflags${ldflags:+, $ldflags}" programs/test/selftest @@ -2352,10 +2352,10 @@ component_test_full_static_keystore () { msg "build: full config - MBEDTLS_PSA_KEY_STORE_DYNAMIC" scripts/config.py full scripts/config.py unset MBEDTLS_PSA_KEY_STORE_DYNAMIC - make CC=clang CFLAGS="$ASAN_CFLAGS -Os" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=clang CFLAGS="$ASAN_CFLAGS -Os" LDFLAGS="$ASAN_CFLAGS" msg "test: full config - MBEDTLS_PSA_KEY_STORE_DYNAMIC" - make test + $MAKE_COMMAND test } component_test_psa_crypto_drivers () { @@ -2373,20 +2373,20 @@ component_test_psa_crypto_drivers () { loc_cflags="$ASAN_CFLAGS -DPSA_CRYPTO_DRIVER_TEST -DMBEDTLS_CONFIG_ADJUST_TEST_ACCELERATORS" loc_cflags="${loc_cflags} -I../framework/tests/include" - make CC=$ASAN_CC CFLAGS="${loc_cflags}" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=$ASAN_CC CFLAGS="${loc_cflags}" LDFLAGS="$ASAN_CFLAGS" msg "test: full + test drivers dispatching to builtins" - make test + $MAKE_COMMAND test } component_build_psa_config_file () { msg "build: make with TF_PSA_CRYPTO_CONFIG_FILE" # ~40s cp "$CRYPTO_CONFIG_H" psa_test_config.h echo '#error "TF_PSA_CRYPTO_CONFIG_FILE is not working"' >"$CRYPTO_CONFIG_H" - make CFLAGS="-I '$PWD' -DTF_PSA_CRYPTO_CONFIG_FILE='\"psa_test_config.h\"'" + $MAKE_COMMAND CFLAGS="-I '$PWD' -DTF_PSA_CRYPTO_CONFIG_FILE='\"psa_test_config.h\"'" # Make sure this feature is enabled. We'll disable it in the next phase. programs/test/query_compile_time_config PSA_WANT_ALG_CMAC - make clean + $MAKE_COMMAND clean msg "build: make with TF_PSA_CRYPTO_CONFIG_FILE + TF_PSA_CRYPTO_USER_CONFIG_FILE" # ~40s # In the user config, disable one feature and its dependencies, which will @@ -2394,7 +2394,7 @@ component_build_psa_config_file () { # query_compile_time_config. echo '#undef PSA_WANT_ALG_CMAC' >psa_user_config.h echo '#undef PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128' >> psa_user_config.h - make CFLAGS="-I '$PWD' -DTF_PSA_CRYPTO_CONFIG_FILE='\"psa_test_config.h\"' -DTF_PSA_CRYPTO_USER_CONFIG_FILE='\"psa_user_config.h\"'" + $MAKE_COMMAND CFLAGS="-I '$PWD' -DTF_PSA_CRYPTO_CONFIG_FILE='\"psa_test_config.h\"' -DTF_PSA_CRYPTO_USER_CONFIG_FILE='\"psa_user_config.h\"'" not programs/test/query_compile_time_config PSA_WANT_ALG_CMAC rm -f psa_test_config.h psa_user_config.h @@ -2410,7 +2410,7 @@ component_build_psa_alt_headers () { # Build the library and some programs. # Don't build the fuzzers to avoid having to go through hoops to set # a correct include path for programs/fuzz/Makefile. - make CFLAGS="-I ../framework/tests/include/alt-extra -DMBEDTLS_PSA_CRYPTO_PLATFORM_FILE='\"psa/crypto_platform_alt.h\"' -DMBEDTLS_PSA_CRYPTO_STRUCT_FILE='\"psa/crypto_struct_alt.h\"'" lib + $MAKE_COMMAND CFLAGS="-I ../framework/tests/include/alt-extra -DMBEDTLS_PSA_CRYPTO_PLATFORM_FILE='\"psa/crypto_platform_alt.h\"' -DMBEDTLS_PSA_CRYPTO_STRUCT_FILE='\"psa/crypto_struct_alt.h\"'" lib make -C programs -o fuzz CFLAGS="-I ../framework/tests/include/alt-extra -DMBEDTLS_PSA_CRYPTO_PLATFORM_FILE='\"psa/crypto_platform_alt.h\"' -DMBEDTLS_PSA_CRYPTO_STRUCT_FILE='\"psa/crypto_struct_alt.h\"'" # Check that we're getting the alternative include guards and not the diff --git a/tests/scripts/components-configuration-platform.sh b/tests/scripts/components-configuration-platform.sh index b408bec61..11885f884 100644 --- a/tests/scripts/components-configuration-platform.sh +++ b/tests/scripts/components-configuration-platform.sh @@ -28,11 +28,11 @@ component_test_psa_driver_get_entropy() scripts/config.py unset MBEDTLS_ENTROPY_NV_SEED scripts/config.py set MBEDTLS_PSA_DRIVER_GET_ENTROPY - make + $MAKE_COMMAND # Run all the tests msg "test: default - MBEDTLS_PSA_BUILTIN_GET_ENTROPY + MBEDTLS_PSA_DRIVER_GET_ENTROPY" - make test + $MAKE_COMMAND test } component_build_no_sockets () { @@ -43,7 +43,7 @@ component_build_no_sockets () { scripts/config.py unset MBEDTLS_NET_C # getaddrinfo() undeclared, etc. scripts/config.py unset MBEDTLS_PSA_BUILTIN_GET_ENTROPY # prevent syscall() on GNU/Linux scripts/config.py set MBEDTLS_PSA_DRIVER_GET_ENTROPY - make CC=gcc CFLAGS='-Werror -Wall -Wextra -O1 -std=c99 -pedantic' lib + $MAKE_COMMAND CC=gcc CFLAGS='-Werror -Wall -Wextra -O1 -std=c99 -pedantic' lib } component_test_no_date_time () { @@ -73,10 +73,10 @@ component_test_have_int32 () { scripts/config.py unset MBEDTLS_HAVE_ASM scripts/config.py unset MBEDTLS_AESNI_C scripts/config.py unset MBEDTLS_AESCE_C - make CC=gcc CFLAGS='-O2 -Werror -Wall -Wextra -DMBEDTLS_HAVE_INT32' + $MAKE_COMMAND CC=gcc CFLAGS='-O2 -Werror -Wall -Wextra -DMBEDTLS_HAVE_INT32' msg "test: gcc, force 32-bit bignum limbs" - make test + $MAKE_COMMAND test } component_test_have_int64 () { @@ -84,10 +84,10 @@ component_test_have_int64 () { scripts/config.py unset MBEDTLS_HAVE_ASM scripts/config.py unset MBEDTLS_AESNI_C scripts/config.py unset MBEDTLS_AESCE_C - make CC=gcc CFLAGS='-O2 -Werror -Wall -Wextra -DMBEDTLS_HAVE_INT64' + $MAKE_COMMAND CC=gcc CFLAGS='-O2 -Werror -Wall -Wextra -DMBEDTLS_HAVE_INT64' msg "test: gcc, force 64-bit bignum limbs" - make test + $MAKE_COMMAND test } component_test_have_int32_cmake_new_bignum () { @@ -97,28 +97,28 @@ component_test_have_int32_cmake_new_bignum () { scripts/config.py unset MBEDTLS_AESCE_C scripts/config.py set MBEDTLS_TEST_HOOKS scripts/config.py set MBEDTLS_ECP_WITH_MPI_UINT - make CC=gcc CFLAGS="$ASAN_CFLAGS -Werror -Wall -Wextra -DMBEDTLS_HAVE_INT32" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=gcc CFLAGS="$ASAN_CFLAGS -Werror -Wall -Wextra -DMBEDTLS_HAVE_INT32" LDFLAGS="$ASAN_CFLAGS" msg "test: gcc, force 32-bit bignum limbs, new bignum interface, test hooks (ASan build)" - make test + $MAKE_COMMAND test } component_test_no_udbl_division () { msg "build: MBEDTLS_NO_UDBL_DIVISION native" # ~ 10s scripts/config.py full scripts/config.py set MBEDTLS_NO_UDBL_DIVISION - make CFLAGS='-Werror -O1' + $MAKE_COMMAND CFLAGS='-Werror -O1' msg "test: MBEDTLS_NO_UDBL_DIVISION native" # ~ 10s - make test + $MAKE_COMMAND test } component_test_no_64bit_multiplication () { msg "build: MBEDTLS_NO_64BIT_MULTIPLICATION native" # ~ 10s scripts/config.py full scripts/config.py set MBEDTLS_NO_64BIT_MULTIPLICATION - make CFLAGS='-Werror -O1' + $MAKE_COMMAND CFLAGS='-Werror -O1' msg "test: MBEDTLS_NO_64BIT_MULTIPLICATION native" # ~ 10s - make test + $MAKE_COMMAND test } diff --git a/tests/scripts/components-configuration-tls.sh b/tests/scripts/components-configuration-tls.sh index d69b5853c..5a77c4def 100644 --- a/tests/scripts/components-configuration-tls.sh +++ b/tests/scripts/components-configuration-tls.sh @@ -67,10 +67,10 @@ component_test_tls1_2_default_stream_cipher_only () { scripts/config.py unset MBEDTLS_SSL_CONTEXT_SERIALIZATION scripts/config.py unset MBEDTLS_SSL_TICKET_C - make + $MAKE_COMMAND msg "test: default with only stream cipher use psa" - make test + $MAKE_COMMAND test # Not running ssl-opt.sh because most tests require a non-NULL ciphersuite. } @@ -95,10 +95,10 @@ component_test_tls1_2_default_cbc_legacy_cipher_only () { scripts/config.py unset MBEDTLS_SSL_CONTEXT_SERIALIZATION scripts/config.py unset MBEDTLS_SSL_TICKET_C - make + $MAKE_COMMAND msg "test: default with only CBC-legacy cipher use psa" - make test + $MAKE_COMMAND test msg "test: default with only CBC-legacy cipher use psa - ssl-opt.sh (subset)" tests/ssl-opt.sh -f "TLS 1.2" @@ -124,10 +124,10 @@ component_test_tls1_2_default_cbc_legacy_cbc_etm_cipher_only () { scripts/config.py unset MBEDTLS_SSL_CONTEXT_SERIALIZATION scripts/config.py unset MBEDTLS_SSL_TICKET_C - make + $MAKE_COMMAND msg "test: default with only CBC-legacy and CBC-EtM ciphers use psa" - make test + $MAKE_COMMAND test msg "test: default with only CBC-legacy and CBC-EtM ciphers use psa - ssl-opt.sh (subset)" tests/ssl-opt.sh -f "TLS 1.2" @@ -245,7 +245,7 @@ build_full_minus_something_and_test_tls () { scripts/config.py unset $sym done - make + $MAKE_COMMAND msg "test: full minus something, test TLS" ( cd tests; ./test_suite_ssl ) @@ -272,14 +272,14 @@ component_build_no_ssl_srv () { msg "build: full config except SSL server, make, gcc" # ~ 30s scripts/config.py full scripts/config.py unset MBEDTLS_SSL_SRV_C - make CC=gcc CFLAGS='-Werror -Wall -Wextra -O1 -Wmissing-prototypes' + $MAKE_COMMAND CC=gcc CFLAGS='-Werror -Wall -Wextra -O1 -Wmissing-prototypes' } component_build_no_ssl_cli () { msg "build: full config except SSL client, make, gcc" # ~ 30s scripts/config.py full scripts/config.py unset MBEDTLS_SSL_CLI_C - make CC=gcc CFLAGS='-Werror -Wall -Wextra -O1 -Wmissing-prototypes' + $MAKE_COMMAND CC=gcc CFLAGS='-Werror -Wall -Wextra -O1 -Wmissing-prototypes' } component_test_no_max_fragment_length () { @@ -370,10 +370,10 @@ component_test_when_no_ciphersuites_have_mac () { scripts/config.py unset MBEDTLS_SSL_NULL_CIPHERSUITES - make + $MAKE_COMMAND msg "test: !MBEDTLS_SSL_SOME_SUITES_USE_MAC" - make test + $MAKE_COMMAND test msg "test ssl-opt.sh: !MBEDTLS_SSL_SOME_SUITES_USE_MAC" tests/ssl-opt.sh -f 'Default\|EtM' -e 'without EtM' @@ -401,10 +401,10 @@ component_test_tls13_only () { scripts/config.py set MBEDTLS_SSL_RECORD_SIZE_LIMIT scripts/config.py set MBEDTLS_TEST_HOOKS - make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" + $MAKE_COMMAND CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" msg "test: TLS 1.3 only, all key exchange modes enabled" - make test + $MAKE_COMMAND test msg "ssl-opt.sh: TLS 1.3 only, all key exchange modes enabled" tests/ssl-opt.sh @@ -438,7 +438,7 @@ component_test_tls13_only_psk () { scripts/config.py unset PSA_WANT_DH_RFC7919_6144 scripts/config.py unset PSA_WANT_DH_RFC7919_8192 - make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" + $MAKE_COMMAND CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" msg "test_suite_ssl: TLS 1.3 only, only PSK key exchange mode enabled" cd tests; ./test_suite_ssl; cd .. @@ -454,7 +454,7 @@ component_test_tls13_only_ephemeral () { scripts/config.py unset MBEDTLS_SSL_EARLY_DATA scripts/config.py set MBEDTLS_TEST_HOOKS - make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" + $MAKE_COMMAND CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" msg "test_suite_ssl: TLS 1.3 only, only ephemeral key exchange mode" cd tests; ./test_suite_ssl; cd .. @@ -473,7 +473,7 @@ component_test_tls13_only_ephemeral_ffdh () { scripts/config.py set MBEDTLS_TEST_HOOKS scripts/config.py unset PSA_WANT_ALG_ECDH - make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" + $MAKE_COMMAND CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" msg "test_suite_ssl: TLS 1.3 only, only ephemeral ffdh key exchange mode" cd tests; ./test_suite_ssl; cd .. @@ -498,7 +498,7 @@ component_test_tls13_only_psk_ephemeral () { scripts/config.py unset PSA_WANT_ALG_RSA_OAEP scripts/config.py unset PSA_WANT_ALG_RSA_PSS - make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" + $MAKE_COMMAND CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" msg "test_suite_ssl: TLS 1.3 only, only PSK ephemeral key exchange mode" cd tests; ./test_suite_ssl; cd .. @@ -524,7 +524,7 @@ component_test_tls13_only_psk_ephemeral_ffdh () { scripts/config.py unset PSA_WANT_ALG_RSA_OAEP scripts/config.py unset PSA_WANT_ALG_RSA_PSS - make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" + $MAKE_COMMAND CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" msg "test_suite_ssl: TLS 1.3 only, only PSK ephemeral ffdh key exchange mode" cd tests; ./test_suite_ssl; cd .. @@ -548,7 +548,7 @@ component_test_tls13_only_psk_all () { scripts/config.py unset PSA_WANT_ALG_RSA_OAEP scripts/config.py unset PSA_WANT_ALG_RSA_PSS - make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" + $MAKE_COMMAND CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" msg "test_suite_ssl: TLS 1.3 only, PSK and PSK ephemeral key exchange modes" cd tests; ./test_suite_ssl; cd .. @@ -563,7 +563,7 @@ component_test_tls13_only_ephemeral_all () { scripts/config.py set MBEDTLS_SSL_EARLY_DATA scripts/config.py set MBEDTLS_TEST_HOOKS - make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" + $MAKE_COMMAND CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'" msg "test_suite_ssl: TLS 1.3 only, ephemeral and PSK ephemeral key exchange modes" cd tests; ./test_suite_ssl; cd .. diff --git a/tests/scripts/components-configuration-x509.sh b/tests/scripts/components-configuration-x509.sh index 800d98ed6..8010a2a2e 100644 --- a/tests/scripts/components-configuration-x509.sh +++ b/tests/scripts/components-configuration-x509.sh @@ -14,10 +14,10 @@ component_test_no_x509_info () { scripts/config.py full scripts/config.py unset MBEDTLS_MEMORY_BACKTRACE # too slow for tests scripts/config.py set MBEDTLS_X509_REMOVE_INFO - make CFLAGS='-Werror -O2' + $MAKE_COMMAND CFLAGS='-Werror -O2' msg "test: full + MBEDTLS_X509_REMOVE_INFO" # ~ 10s - make test + $MAKE_COMMAND test msg "test: ssl-opt.sh, full + MBEDTLS_X509_REMOVE_INFO" # ~ 1 min tests/ssl-opt.sh @@ -28,8 +28,8 @@ component_test_sw_inet_pton () { # MBEDTLS_TEST_HOOKS required for x509_crt_parse_cn_inet_pton scripts/config.py set MBEDTLS_TEST_HOOKS - make CFLAGS="-DMBEDTLS_TEST_SW_INET_PTON" + $MAKE_COMMAND CFLAGS="-DMBEDTLS_TEST_SW_INET_PTON" msg "test: default plus MBEDTLS_TEST_SW_INET_PTON" - make test + $MAKE_COMMAND test } diff --git a/tests/scripts/components-configuration.sh b/tests/scripts/components-configuration.sh index a35704f29..89104a3ba 100644 --- a/tests/scripts/components-configuration.sh +++ b/tests/scripts/components-configuration.sh @@ -11,12 +11,12 @@ component_test_default_out_of_box () { msg "build: make, default config (out-of-box)" # ~1min - make + $MAKE_COMMAND # Disable fancy stuff unset MBEDTLS_TEST_OUTCOME_FILE msg "test: main suites make, default config (out-of-box)" # ~10s - make test + $MAKE_COMMAND test msg "selftest: make, default config (out-of-box)" # ~10s programs/test/selftest @@ -160,19 +160,19 @@ component_test_default_no_deprecated () { # configuration leaves something consistent. msg "build: make, default + MBEDTLS_DEPRECATED_REMOVED" # ~ 30s scripts/config.py set MBEDTLS_DEPRECATED_REMOVED - make CFLAGS='-O -Werror -Wall -Wextra' + $MAKE_COMMAND CFLAGS='-O -Werror -Wall -Wextra' msg "test: make, default + MBEDTLS_DEPRECATED_REMOVED" # ~ 5s - make test + $MAKE_COMMAND test } component_test_full_no_deprecated () { msg "build: make, full_no_deprecated config" # ~ 30s scripts/config.py full_no_deprecated - make CFLAGS='-O -Werror -Wall -Wextra' + $MAKE_COMMAND CFLAGS='-O -Werror -Wall -Wextra' msg "test: make, full_no_deprecated config" # ~ 5s - make test + $MAKE_COMMAND test msg "test: ensure that X509 has no direct dependency on BIGNUM_C" not grep mbedtls_mpi library/libmbedx509.a @@ -186,10 +186,10 @@ component_test_full_no_deprecated_deprecated_warning () { scripts/config.py full_no_deprecated scripts/config.py unset MBEDTLS_DEPRECATED_REMOVED scripts/config.py set MBEDTLS_DEPRECATED_WARNING - make CFLAGS='-O -Werror -Wall -Wextra' + $MAKE_COMMAND CFLAGS='-O -Werror -Wall -Wextra' msg "test: make, full_no_deprecated config, MBEDTLS_DEPRECATED_WARNING" # ~ 5s - make test + $MAKE_COMMAND test } component_test_full_deprecated_warning () { @@ -201,17 +201,17 @@ component_test_full_deprecated_warning () { # Expect warnings from '#warning' directives in check_config.h. # Note that gcc is required to allow the use of -Wno-error=cpp, which allows us to # display #warning messages without them being treated as errors. - make CC=gcc CFLAGS='-O -Werror -Wall -Wextra -Wno-error=cpp' lib programs + $MAKE_COMMAND CC=gcc CFLAGS='-O -Werror -Wall -Wextra -Wno-error=cpp' lib programs msg "build: make tests, full config + MBEDTLS_DEPRECATED_WARNING, expect warnings" # ~ 30s # Set MBEDTLS_TEST_DEPRECATED to enable tests for deprecated features. # By default those are disabled when MBEDTLS_DEPRECATED_WARNING is set. # Expect warnings from '#warning' directives in check_config.h and # from the use of deprecated functions in test suites. - make CC=gcc CFLAGS='-O -Werror -Wall -Wextra -Wno-error=deprecated-declarations -Wno-error=cpp -DMBEDTLS_TEST_DEPRECATED' tests + $MAKE_COMMAND CC=gcc CFLAGS='-O -Werror -Wall -Wextra -Wno-error=deprecated-declarations -Wno-error=cpp -DMBEDTLS_TEST_DEPRECATED' tests msg "test: full config + MBEDTLS_TEST_DEPRECATED" # ~ 30s - make test + $MAKE_COMMAND test msg "program demos: full config + MBEDTLS_TEST_DEPRECATED" # ~10s tests/scripts/run_demos.py @@ -220,7 +220,7 @@ component_test_full_deprecated_warning () { component_build_baremetal () { msg "build: make, baremetal config" scripts/config.py baremetal - make CFLAGS="-O1 -Werror -I$PWD/framework/tests/include/baremetal-override/" + $MAKE_COMMAND CFLAGS="-O1 -Werror -I$PWD/framework/tests/include/baremetal-override/" } support_build_baremetal () { @@ -240,20 +240,20 @@ component_build_tfm () { cp tf-psa-crypto/configs/ext/crypto_config_profile_medium.h "$CRYPTO_CONFIG_H" msg "build: TF-M config, clang, armv7-m thumb2" - make lib CC="clang" CFLAGS="--target=arm-linux-gnueabihf -march=armv7-m -mthumb -Os -std=c99 -Werror -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral -Wshadow -Wasm-operand-widths -Wunused -I../framework/tests/include/spe" + $MAKE_COMMAND lib CC="clang" CFLAGS="--target=arm-linux-gnueabihf -march=armv7-m -mthumb -Os -std=c99 -Werror -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral -Wshadow -Wasm-operand-widths -Wunused -I../framework/tests/include/spe" msg "build: TF-M config, gcc native build" - make clean - make lib CC="gcc" CFLAGS="-Os -std=c99 -Werror -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral -Wshadow -Wformat-signedness -Wlogical-op -I../framework/tests/include/spe" + $MAKE_COMMAND clean + $MAKE_COMMAND lib CC="gcc" CFLAGS="-Os -std=c99 -Werror -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral -Wshadow -Wformat-signedness -Wlogical-op -I../framework/tests/include/spe" } component_test_malloc_0_null () { msg "build: malloc(0) returns NULL (ASan+UBSan build)" scripts/config.py full - make CC=$ASAN_CC CFLAGS="'-DTF_PSA_CRYPTO_USER_CONFIG_FILE=\"$PWD/tests/configs/user-config-malloc-0-null.h\"' $ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" + $MAKE_COMMAND CC=$ASAN_CC CFLAGS="'-DTF_PSA_CRYPTO_USER_CONFIG_FILE=\"$PWD/tests/configs/user-config-malloc-0-null.h\"' $ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" msg "test: malloc(0) returns NULL (ASan+UBSan build)" - make test + $MAKE_COMMAND test msg "selftest: malloc(0) returns NULL (ASan+UBSan build)" # Just the calloc selftest. "make test" ran the others as part of the @@ -288,24 +288,24 @@ component_test_no_platform () { scripts/config.py set MBEDTLS_PSA_DRIVER_GET_ENTROPY # Note, _DEFAULT_SOURCE needs to be defined for platforms using glibc version >2.19, # to re-enable platform integration features otherwise disabled in C99 builds - make CC=gcc CFLAGS='-Werror -Wall -Wextra -std=c99 -pedantic -Os -D_DEFAULT_SOURCE' lib programs - make CC=gcc CFLAGS='-Werror -Wall -Wextra -Os' test + $MAKE_COMMAND CC=gcc CFLAGS='-Werror -Wall -Wextra -std=c99 -pedantic -Os -D_DEFAULT_SOURCE' lib programs + $MAKE_COMMAND CC=gcc CFLAGS='-Werror -Wall -Wextra -Os' test } component_build_mbedtls_config_file () { msg "build: make with MBEDTLS_CONFIG_FILE" # ~40s scripts/config.py -w full_config.h full echo '#error "MBEDTLS_CONFIG_FILE is not working"' >"$CONFIG_H" - make CFLAGS="-I '$PWD' -DMBEDTLS_CONFIG_FILE='\"full_config.h\"'" + $MAKE_COMMAND CFLAGS="-I '$PWD' -DMBEDTLS_CONFIG_FILE='\"full_config.h\"'" # Make sure this feature is enabled. We'll disable it in the next phase. programs/test/query_compile_time_config MBEDTLS_SSL_ALL_ALERT_MESSAGES - make clean + $MAKE_COMMAND clean msg "build: make with MBEDTLS_CONFIG_FILE + MBEDTLS_USER_CONFIG_FILE" # In the user config, disable one feature (for simplicity, pick a feature # that nothing else depends on). echo '#undef MBEDTLS_SSL_ALL_ALERT_MESSAGES' >user_config.h - make CFLAGS="-I '$PWD' -DMBEDTLS_CONFIG_FILE='\"full_config.h\"' -DMBEDTLS_USER_CONFIG_FILE='\"user_config.h\"'" + $MAKE_COMMAND CFLAGS="-I '$PWD' -DMBEDTLS_CONFIG_FILE='\"full_config.h\"' -DMBEDTLS_USER_CONFIG_FILE='\"user_config.h\"'" not programs/test/query_compile_time_config MBEDTLS_SSL_ALL_ALERT_MESSAGES rm -f user_config.h full_config.h @@ -319,10 +319,10 @@ component_test_no_strings () { scripts/config.py unset MBEDTLS_ERROR_C scripts/config.py set MBEDTLS_ERROR_STRERROR_DUMMY scripts/config.py unset MBEDTLS_VERSION_FEATURES - make CFLAGS='-Werror -Os' + $MAKE_COMMAND CFLAGS='-Werror -Os' msg "test: no strings" # ~ 10s - make test + $MAKE_COMMAND test } component_test_memory_buffer_allocator_backtrace () { diff --git a/tests/scripts/components-platform.sh b/tests/scripts/components-platform.sh index 4c297483f..d6eef6f78 100644 --- a/tests/scripts/components-platform.sh +++ b/tests/scripts/components-platform.sh @@ -19,10 +19,10 @@ component_test_m32_no_asm () { scripts/config.py full scripts/config.py unset MBEDTLS_HAVE_ASM scripts/config.py unset MBEDTLS_AESNI_C # AESNI for 32-bit is tested in test_aesni_m32 - make CC=gcc CFLAGS="$ASAN_CFLAGS -m32" LDFLAGS="-m32 $ASAN_CFLAGS" + $MAKE_COMMAND CC=gcc CFLAGS="$ASAN_CFLAGS -m32" LDFLAGS="-m32 $ASAN_CFLAGS" msg "test: i386, make, gcc, no asm (ASan build)" - make test + $MAKE_COMMAND test } support_test_m32_no_asm () { @@ -38,10 +38,10 @@ component_test_m32_o2 () { msg "build: i386, make, gcc -O2 (ASan build)" # ~ 30s scripts/config.py full scripts/config.py unset MBEDTLS_AESNI_C # AESNI for 32-bit is tested in test_aesni_m32 - make CC=gcc CFLAGS="$ASAN_CFLAGS -m32" LDFLAGS="-m32 $ASAN_CFLAGS" + $MAKE_COMMAND CC=gcc CFLAGS="$ASAN_CFLAGS -m32" LDFLAGS="-m32 $ASAN_CFLAGS" msg "test: i386, make, gcc -O2 (ASan build)" - make test + $MAKE_COMMAND test msg "test ssl-opt.sh, i386, make, gcc-O2" tests/ssl-opt.sh @@ -55,10 +55,10 @@ component_test_m32_everest () { msg "build: i386, Everest ECDH context (ASan build)" # ~ 6 min scripts/config.py set MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED scripts/config.py unset MBEDTLS_AESNI_C # AESNI for 32-bit is tested in test_aesni_m32 - make CC=gcc CFLAGS="$ASAN_CFLAGS -m32" LDFLAGS="-m32 $ASAN_CFLAGS" + $MAKE_COMMAND CC=gcc CFLAGS="$ASAN_CFLAGS -m32" LDFLAGS="-m32 $ASAN_CFLAGS" msg "test: i386, Everest ECDH context - main suites (inc. selftests) (ASan build)" # ~ 50s - make test + $MAKE_COMMAND test msg "test: i386, Everest ECDH context - ECDH-related part of ssl-opt.sh (ASan build)" # ~ 5s tests/ssl-opt.sh -f ECDH @@ -75,10 +75,10 @@ support_test_m32_everest () { component_test_mx32 () { msg "build: 64-bit ILP32, make, gcc" # ~ 30s scripts/config.py full - make CC=gcc CFLAGS='-O2 -Werror -Wall -Wextra -mx32' LDFLAGS='-mx32' + $MAKE_COMMAND CC=gcc CFLAGS='-O2 -Werror -Wall -Wextra -mx32' LDFLAGS='-mx32' msg "test: 64-bit ILP32, make, gcc" - make test + $MAKE_COMMAND test } support_test_mx32 () { @@ -118,16 +118,16 @@ component_test_aesni () { # ~ 60s # test the intrinsics implementation msg "AES tests, test intrinsics" - make clean - make CC=gcc CFLAGS='-Werror -Wall -Wextra -mpclmul -msse2 -maes' + $MAKE_COMMAND clean + $MAKE_COMMAND CC=gcc CFLAGS='-Werror -Wall -Wextra -mpclmul -msse2 -maes' # check that the intrinsics implementation is in use - this should be used by default when # supported by the compiler ./tf-psa-crypto/programs/test/which_aes | grep -q "AESNI INTRINSICS" # test the asm implementation msg "AES tests, test assembly" - make clean - make CC=gcc CFLAGS='-Werror -Wall -Wextra -mno-pclmul -mno-sse2 -mno-aes' + $MAKE_COMMAND clean + $MAKE_COMMAND CC=gcc CFLAGS='-Werror -Wall -Wextra -mno-pclmul -mno-sse2 -mno-aes' # check that the assembly implementation is in use - this should be used if the compiler # does not support intrinsics ./tf-psa-crypto/programs/test/which_aes | grep -q "AESNI ASSEMBLY" @@ -136,8 +136,8 @@ component_test_aesni () { # ~ 60s scripts/config.py unset MBEDTLS_AESNI_C scripts/config.py unset MBEDTLS_AES_USE_HARDWARE_ONLY msg "AES tests, plain C" - make clean - make CC=gcc CFLAGS='-O2 -Werror' + $MAKE_COMMAND clean + $MAKE_COMMAND CC=gcc CFLAGS='-O2 -Werror' # check that the plain C implementation is present and the AESNI one is not grep -q mbedtls_internal_aes_encrypt ./tf-psa-crypto/drivers/builtin/src/aes.o not grep -q mbedtls_aesni_crypt_ecb ./tf-psa-crypto/drivers/builtin/src/aesni.o @@ -148,8 +148,8 @@ component_test_aesni () { # ~ 60s scripts/config.py set MBEDTLS_AESNI_C scripts/config.py set MBEDTLS_AES_USE_HARDWARE_ONLY msg "AES tests, test AESNI only" - make clean - make CC=gcc CFLAGS='-Werror -Wall -Wextra -mpclmul -msse2 -maes' + $MAKE_COMMAND clean + $MAKE_COMMAND CC=gcc CFLAGS='-Werror -Wall -Wextra -mpclmul -msse2 -maes' # check that the AESNI implementation is present and the plain C one is not grep -q mbedtls_aesni_crypt_ecb ./tf-psa-crypto/drivers/builtin/src/aesni.o not grep -q mbedtls_internal_aes_encrypt ./tf-psa-crypto/drivers/builtin/src/aes.o @@ -172,8 +172,8 @@ component_test_aesni_m32 () { # ~ 60s # test the intrinsics implementation with gcc msg "AES tests, test intrinsics (gcc)" - make clean - make CC=gcc CFLAGS='-m32 -Werror -Wall -Wextra' LDFLAGS='-m32' + $MAKE_COMMAND clean + $MAKE_COMMAND CC=gcc CFLAGS='-m32 -Werror -Wall -Wextra' LDFLAGS='-m32' # check that we built intrinsics - this should be used by default when supported by the compiler ./tf-psa-crypto/programs/test/which_aes | grep -q "AESNI INTRINSICS" # check that both the AESNI and plain C implementations are present @@ -184,8 +184,8 @@ component_test_aesni_m32 () { # ~ 60s scripts/config.py set MBEDTLS_AESNI_C scripts/config.py set MBEDTLS_AES_USE_HARDWARE_ONLY msg "AES tests, test AESNI only" - make clean - make CC=gcc CFLAGS='-m32 -Werror -Wall -Wextra -mpclmul -msse2 -maes' LDFLAGS='-m32' + $MAKE_COMMAND clean + $MAKE_COMMAND CC=gcc CFLAGS='-m32 -Werror -Wall -Wextra -mpclmul -msse2 -maes' LDFLAGS='-m32' ./tf-psa-crypto/programs/test/which_aes | grep -q "AESNI" # check that the AESNI implementation is present and the plain C one is not grep -q mbedtls_aesni_crypt_ecb ./tf-psa-crypto/drivers/builtin/src/aesni.o @@ -206,8 +206,8 @@ component_test_aesni_m32_clang () { # test the intrinsics implementation with clang msg "AES tests, test intrinsics (clang)" - make clean - make CC=clang CFLAGS='-m32 -Werror -Wall -Wextra' LDFLAGS='-m32' + $MAKE_COMMAND clean + $MAKE_COMMAND CC=clang CFLAGS='-m32 -Werror -Wall -Wextra' LDFLAGS='-m32' # check that we built intrinsics - this should be used by default when supported by the compiler ./tf-psa-crypto/programs/test/which_aes | grep -q "AESNI INTRINSICS" # check that both the AESNI and plain C implementations are present @@ -227,51 +227,51 @@ component_build_aes_armce () { scripts/config.py set MBEDTLS_AES_USE_HARDWARE_ONLY msg "MBEDTLS_AES_USE_HARDWARE_ONLY, clang, aarch64" - make -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto" msg "clang, test aarch64 crypto instructions built" grep -E 'aes[a-z]+\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.s msg "MBEDTLS_AES_USE_HARDWARE_ONLY, clang, arm" - make -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm" msg "clang, test A32 crypto instructions built" grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.s msg "MBEDTLS_AES_USE_HARDWARE_ONLY, clang, thumb" - make -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb" msg "clang, test T32 crypto instructions built" grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.s scripts/config.py unset MBEDTLS_AES_USE_HARDWARE_ONLY msg "MBEDTLS_AES_USE_both, clang, aarch64" - make -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto" msg "clang, test aarch64 crypto instructions built" grep -E 'aes[a-z]+\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.s msg "MBEDTLS_AES_USE_both, clang, arm" - make -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm" msg "clang, test A32 crypto instructions built" grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.s msg "MBEDTLS_AES_USE_both, clang, thumb" - make -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb" msg "clang, test T32 crypto instructions built" grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.s scripts/config.py unset MBEDTLS_AESCE_C msg "no MBEDTLS_AESCE_C, clang, aarch64" - make -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a" msg "clang, test aarch64 crypto instructions not built" not grep -E 'aes[a-z]+\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.s msg "no MBEDTLS_AESCE_C, clang, arm" - make -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72 -marm" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72 -marm" msg "clang, test A32 crypto instructions not built" not grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.s msg "no MBEDTLS_AESCE_C, clang, thumb" - make -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32 -mthumb" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/aesce.o library/../${BUILTIN_SRC_PATH}/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32 -mthumb" msg "clang, test T32 crypto instructions not built" not grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.s } @@ -287,44 +287,44 @@ component_build_sha_armce () { # Test variations of SHA256 Armv8 crypto extensions scripts/config.py set MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, aarch64" - make -B library/../${BUILTIN_SRC_PATH}/sha256.o library/../${BUILTIN_SRC_PATH}/sha256.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/sha256.o library/../${BUILTIN_SRC_PATH}/sha256.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto" msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, test aarch64 crypto instructions built" grep -E 'sha256[a-z0-9]+\s+[qv]' ${BUILTIN_SRC_PATH}/sha256.s msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, arm" - make -B library/../${BUILTIN_SRC_PATH}/sha256.o library/../${BUILTIN_SRC_PATH}/sha256.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/sha256.o library/../${BUILTIN_SRC_PATH}/sha256.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm" msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, test A32 crypto instructions built" grep -E 'sha256[a-z0-9]+.32\s+[qv]' ${BUILTIN_SRC_PATH}/sha256.s scripts/config.py unset MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY scripts/config.py set MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT clang, aarch64" - make -B library/../${BUILTIN_SRC_PATH}/sha256.o library/../${BUILTIN_SRC_PATH}/sha256.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/sha256.o library/../${BUILTIN_SRC_PATH}/sha256.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto" msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT clang, test aarch64 crypto instructions built" grep -E 'sha256[a-z0-9]+\s+[qv]' ${BUILTIN_SRC_PATH}/sha256.s scripts/config.py unset MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT # examine the disassembly for absence of SHA instructions msg "clang, test A32 crypto instructions not built" - make -B library/../${BUILTIN_SRC_PATH}/sha256.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72 -marm" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/sha256.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72 -marm" not grep -E 'sha256[a-z0-9]+.32\s+[qv]' ${BUILTIN_SRC_PATH}/sha256.s msg "clang, test T32 crypto instructions not built" - make -B library/../${BUILTIN_SRC_PATH}/sha256.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32 -mthumb" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/sha256.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32 -mthumb" not grep -E 'sha256[a-z0-9]+.32\s+[qv]' ${BUILTIN_SRC_PATH}/sha256.s msg "clang, test aarch64 crypto instructions not built" - make -B library/../${BUILTIN_SRC_PATH}/sha256.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a" + $MAKE_COMMAND -B library/../${BUILTIN_SRC_PATH}/sha256.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a" not grep -E 'sha256[a-z0-9]+\s+[qv]' ${BUILTIN_SRC_PATH}/sha256.s } component_test_arm_linux_gnueabi_gcc_arm5vte () { # Mimic Debian armel port msg "test: ${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc -march=arm5vte, default config" # ~4m - make CC="${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc" AR="${ARM_LINUX_GNUEABI_GCC_PREFIX}ar" CFLAGS='-Werror -Wall -Wextra -march=armv5te -O1' + $MAKE_COMMAND CC="${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc" AR="${ARM_LINUX_GNUEABI_GCC_PREFIX}ar" CFLAGS='-Werror -Wall -Wextra -march=armv5te -O1' msg "test: main suites make, default config (out-of-box)" # ~7m 40s - make test + $MAKE_COMMAND test msg "selftest: make, default config (out-of-box)" # ~0s programs/test/selftest @@ -341,10 +341,10 @@ support_test_arm_linux_gnueabi_gcc_arm5vte () { # Some Thumb 1 asm is sensitive to optimisation level, so test both -O0 and -Os component_test_arm_linux_gnueabi_gcc_thumb_1_opt_0 () { msg "test: ${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc -O0, thumb 1, default config" # ~2m 10s - make CC="${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc" CFLAGS='-std=c99 -Werror -Wextra -O0 -mcpu=arm1136j-s -mthumb' + $MAKE_COMMAND CC="${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc" CFLAGS='-std=c99 -Werror -Wextra -O0 -mcpu=arm1136j-s -mthumb' msg "test: main suites make, default config (out-of-box)" # ~36m - make test + $MAKE_COMMAND test msg "selftest: make, default config (out-of-box)" # ~10s programs/test/selftest @@ -359,10 +359,10 @@ support_test_arm_linux_gnueabi_gcc_thumb_1_opt_0 () { component_test_arm_linux_gnueabi_gcc_thumb_1_opt_s () { msg "test: ${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc -Os, thumb 1, default config" # ~3m 10s - make CC="${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc" CFLAGS='-std=c99 -Werror -Wextra -Os -mcpu=arm1136j-s -mthumb' + $MAKE_COMMAND CC="${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc" CFLAGS='-std=c99 -Werror -Wextra -Os -mcpu=arm1136j-s -mthumb' msg "test: main suites make, default config (out-of-box)" # ~21m 10s - make test + $MAKE_COMMAND test msg "selftest: make, default config (out-of-box)" # ~2s programs/test/selftest @@ -377,10 +377,10 @@ support_test_arm_linux_gnueabi_gcc_thumb_1_opt_s () { component_test_arm_linux_gnueabihf_gcc_armv7 () { msg "test: ${ARM_LINUX_GNUEABIHF_GCC_PREFIX}gcc -O2, A32, default config" # ~4m 30s - make CC="${ARM_LINUX_GNUEABIHF_GCC_PREFIX}gcc" CFLAGS='-std=c99 -Werror -Wextra -O2 -march=armv7-a -marm' + $MAKE_COMMAND CC="${ARM_LINUX_GNUEABIHF_GCC_PREFIX}gcc" CFLAGS='-std=c99 -Werror -Wextra -O2 -march=armv7-a -marm' msg "test: main suites make, default config (out-of-box)" # ~3m 30s - make test + $MAKE_COMMAND test msg "selftest: make, default config (out-of-box)" # ~0s programs/test/selftest @@ -395,10 +395,10 @@ support_test_arm_linux_gnueabihf_gcc_armv7 () { component_test_arm_linux_gnueabihf_gcc_thumb_2 () { msg "test: ${ARM_LINUX_GNUEABIHF_GCC_PREFIX}gcc -Os, thumb 2, default config" # ~4m - make CC="${ARM_LINUX_GNUEABIHF_GCC_PREFIX}gcc" CFLAGS='-std=c99 -Werror -Wextra -Os -march=armv7-a -mthumb' + $MAKE_COMMAND CC="${ARM_LINUX_GNUEABIHF_GCC_PREFIX}gcc" CFLAGS='-std=c99 -Werror -Wextra -Os -march=armv7-a -mthumb' msg "test: main suites make, default config (out-of-box)" # ~3m 40s - make test + $MAKE_COMMAND test msg "selftest: make, default config (out-of-box)" # ~0s programs/test/selftest @@ -413,10 +413,10 @@ support_test_arm_linux_gnueabihf_gcc_thumb_2 () { component_test_aarch64_linux_gnu_gcc () { msg "test: ${AARCH64_LINUX_GNU_GCC_PREFIX}gcc -O2, default config" # ~3m 50s - make CC="${AARCH64_LINUX_GNU_GCC_PREFIX}gcc" CFLAGS='-std=c99 -Werror -Wextra -O2' + $MAKE_COMMAND CC="${AARCH64_LINUX_GNU_GCC_PREFIX}gcc" CFLAGS='-std=c99 -Werror -Wextra -O2' msg "test: main suites make, default config (out-of-box)" # ~1m 50s - make test + $MAKE_COMMAND test msg "selftest: make, default config (out-of-box)" # ~0s programs/test/selftest @@ -433,7 +433,7 @@ support_test_aarch64_linux_gnu_gcc () { component_build_arm_none_eabi_gcc () { msg "build: ${ARM_NONE_EABI_GCC_PREFIX}gcc -O1, baremetal+debug" # ~ 10s scripts/config.py baremetal - make CC="${ARM_NONE_EABI_GCC_PREFIX}gcc" AR="${ARM_NONE_EABI_GCC_PREFIX}ar" LD="${ARM_NONE_EABI_GCC_PREFIX}ld" CFLAGS='-std=c99 -Werror -Wall -Wextra -O1' lib + $MAKE_COMMAND CC="${ARM_NONE_EABI_GCC_PREFIX}gcc" AR="${ARM_NONE_EABI_GCC_PREFIX}ar" LD="${ARM_NONE_EABI_GCC_PREFIX}ld" CFLAGS='-std=c99 -Werror -Wall -Wextra -O1' lib msg "size: ${ARM_NONE_EABI_GCC_PREFIX}gcc -O1, baremetal+debug" ${ARM_NONE_EABI_GCC_PREFIX}size -t library/*.o @@ -449,7 +449,7 @@ component_build_arm_linux_gnueabi_gcc_arm5vte () { # See https://github.com/Mbed-TLS/mbedtls/pull/2169 and comments. # Build everything including programs, see for example # https://github.com/Mbed-TLS/mbedtls/pull/3449#issuecomment-675313720 - make CC="${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc" AR="${ARM_LINUX_GNUEABI_GCC_PREFIX}ar" CFLAGS='-Werror -Wall -Wextra -march=armv5te -O1' LDFLAGS='-march=armv5te' + $MAKE_COMMAND CC="${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc" AR="${ARM_LINUX_GNUEABI_GCC_PREFIX}ar" CFLAGS='-Werror -Wall -Wextra -march=armv5te -O1' LDFLAGS='-march=armv5te' msg "size: ${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc -march=armv5te -O1, baremetal+debug" ${ARM_LINUX_GNUEABI_GCC_PREFIX}size -t library/*.o @@ -467,7 +467,7 @@ component_build_arm_none_eabi_gcc_arm5vte () { # This is an imperfect substitute for # component_build_arm_linux_gnueabi_gcc_arm5vte # in case the gcc-arm-linux-gnueabi toolchain is not available - make CC="${ARM_NONE_EABI_GCC_PREFIX}gcc" AR="${ARM_NONE_EABI_GCC_PREFIX}ar" CFLAGS='-std=c99 -Werror -Wall -Wextra -march=armv5te -O1' LDFLAGS='-march=armv5te' SHELL='sh -x' lib + $MAKE_COMMAND CC="${ARM_NONE_EABI_GCC_PREFIX}gcc" AR="${ARM_NONE_EABI_GCC_PREFIX}ar" CFLAGS='-std=c99 -Werror -Wall -Wextra -march=armv5te -O1' LDFLAGS='-march=armv5te' SHELL='sh -x' lib msg "size: ${ARM_NONE_EABI_GCC_PREFIX}gcc -march=armv5te -O1, baremetal+debug" ${ARM_NONE_EABI_GCC_PREFIX}size -t library/*.o @@ -478,7 +478,7 @@ component_build_arm_none_eabi_gcc_arm5vte () { component_build_arm_none_eabi_gcc_m0plus () { msg "build: ${ARM_NONE_EABI_GCC_PREFIX}gcc -mthumb -mcpu=cortex-m0plus, baremetal_size" # ~ 10s scripts/config.py baremetal_size - make CC="${ARM_NONE_EABI_GCC_PREFIX}gcc" AR="${ARM_NONE_EABI_GCC_PREFIX}ar" LD="${ARM_NONE_EABI_GCC_PREFIX}ld" CFLAGS='-std=c99 -Werror -Wall -Wextra -mthumb -mcpu=cortex-m0plus -Os' lib + $MAKE_COMMAND CC="${ARM_NONE_EABI_GCC_PREFIX}gcc" AR="${ARM_NONE_EABI_GCC_PREFIX}ar" LD="${ARM_NONE_EABI_GCC_PREFIX}ld" CFLAGS='-std=c99 -Werror -Wall -Wextra -mthumb -mcpu=cortex-m0plus -Os' lib msg "size: ${ARM_NONE_EABI_GCC_PREFIX}gcc -mthumb -mcpu=cortex-m0plus -Os, baremetal_size" ${ARM_NONE_EABI_GCC_PREFIX}size -t library/*.o @@ -494,7 +494,7 @@ component_build_arm_none_eabi_gcc_no_udbl_division () { msg "build: ${ARM_NONE_EABI_GCC_PREFIX}gcc -DMBEDTLS_NO_UDBL_DIVISION, make" # ~ 10s scripts/config.py baremetal scripts/config.py set MBEDTLS_NO_UDBL_DIVISION - make CC="${ARM_NONE_EABI_GCC_PREFIX}gcc" AR="${ARM_NONE_EABI_GCC_PREFIX}ar" LD="${ARM_NONE_EABI_GCC_PREFIX}ld" CFLAGS='-std=c99 -Werror -Wall -Wextra' lib + $MAKE_COMMAND CC="${ARM_NONE_EABI_GCC_PREFIX}gcc" AR="${ARM_NONE_EABI_GCC_PREFIX}ar" LD="${ARM_NONE_EABI_GCC_PREFIX}ld" CFLAGS='-std=c99 -Werror -Wall -Wextra' lib echo "Checking that software 64-bit division is not required" not grep __aeabi_uldiv library/*.o not grep __aeabi_uldiv ${PSA_CORE_PATH}/*.o @@ -505,7 +505,7 @@ component_build_arm_none_eabi_gcc_no_64bit_multiplication () { msg "build: ${ARM_NONE_EABI_GCC_PREFIX}gcc MBEDTLS_NO_64BIT_MULTIPLICATION, make" # ~ 10s scripts/config.py baremetal scripts/config.py set MBEDTLS_NO_64BIT_MULTIPLICATION - make CC="${ARM_NONE_EABI_GCC_PREFIX}gcc" AR="${ARM_NONE_EABI_GCC_PREFIX}ar" LD="${ARM_NONE_EABI_GCC_PREFIX}ld" CFLAGS='-std=c99 -Werror -O1 -march=armv6-m -mthumb' lib + $MAKE_COMMAND CC="${ARM_NONE_EABI_GCC_PREFIX}gcc" AR="${ARM_NONE_EABI_GCC_PREFIX}ar" LD="${ARM_NONE_EABI_GCC_PREFIX}ld" CFLAGS='-std=c99 -Werror -O1 -march=armv6-m -mthumb' lib echo "Checking that software 64-bit multiplication is not required" not grep __aeabi_lmul library/*.o not grep __aeabi_lmul ${PSA_CORE_PATH}/*.o @@ -518,17 +518,17 @@ component_build_arm_clang_thumb () { scripts/config.py baremetal msg "build: clang thumb 2, make" - make clean - make CC="clang" CFLAGS='-std=c99 -Werror -Os --target=arm-linux-gnueabihf -march=armv7-m -mthumb' lib + $MAKE_COMMAND clean + $MAKE_COMMAND CC="clang" CFLAGS='-std=c99 -Werror -Os --target=arm-linux-gnueabihf -march=armv7-m -mthumb' lib # Some Thumb 1 asm is sensitive to optimisation level, so test both -O0 and -Os msg "build: clang thumb 1 -O0, make" - make clean - make CC="clang" CFLAGS='-std=c99 -Werror -O0 --target=arm-linux-gnueabihf -mcpu=arm1136j-s -mthumb' lib + $MAKE_COMMAND clean + $MAKE_COMMAND CC="clang" CFLAGS='-std=c99 -Werror -O0 --target=arm-linux-gnueabihf -mcpu=arm1136j-s -mthumb' lib msg "build: clang thumb 1 -Os, make" - make clean - make CC="clang" CFLAGS='-std=c99 -Werror -Os --target=arm-linux-gnueabihf -mcpu=arm1136j-s -mthumb' lib + $MAKE_COMMAND clean + $MAKE_COMMAND CC="clang" CFLAGS='-std=c99 -Werror -Os --target=arm-linux-gnueabihf -mcpu=arm1136j-s -mthumb' lib } component_build_armcc () { diff --git a/tests/scripts/components-psasim.sh b/tests/scripts/components-psasim.sh index a20f917dd..e3952c509 100644 --- a/tests/scripts/components-psasim.sh +++ b/tests/scripts/components-psasim.sh @@ -83,7 +83,7 @@ component_test_suite_with_psasim() helper_psasim_build client msg "build test suites" - make PSASIM=1 CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" tests + $MAKE_COMMAND PSASIM=1 CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" tests helper_psasim_server start @@ -93,7 +93,7 @@ component_test_suite_with_psasim() export SKIP_TEST_SUITES msg "run test suites" - make PSASIM=1 test + $MAKE_COMMAND PSASIM=1 test helper_psasim_server kill } diff --git a/tests/scripts/depends.py b/tests/scripts/depends.py index 11ee5a068..10d7028df 100755 --- a/tests/scripts/depends.py +++ b/tests/scripts/depends.py @@ -439,8 +439,9 @@ class DomainData: # pylint: disable=too-many-locals def __init__(self, options, conf): """Gather data about the library and establish a list of domains to test.""" - build_command = [options.make_command, 'CFLAGS=-Werror -O2'] - build_and_test = [build_command, [options.make_command, 'test']] + build_command = [options.make_command, '-f', 'scripts/legacy.make', 'CFLAGS=-Werror -O2'] + build_and_test = [build_command, [options.make_command, '-f', + 'scripts/legacy.make', 'test']] self.all_config_symbols = set(conf.settings.keys()) psa_info = psa_information.Information().constructors algs = {crypto_knowledge.Algorithm(alg): symbol @@ -523,7 +524,7 @@ A name can either be the name of a domain or the name of one specific job.""" def run(options, job, conf, colors=NO_COLORS): """Run the specified job (a Job instance).""" - subprocess.check_call([options.make_command, 'clean']) + subprocess.check_call([options.make_command, '-f', 'scripts/legacy.make', 'clean']) job.announce(colors, None) if not job.configure(conf, colors): job.announce(colors, False) diff --git a/tests/scripts/psa_collect_statuses.py b/tests/scripts/psa_collect_statuses.py index d835ba7c9..a91e3a3b3 100755 --- a/tests/scripts/psa_collect_statuses.py +++ b/tests/scripts/psa_collect_statuses.py @@ -78,23 +78,25 @@ def collect_status_logs(options): os.remove(options.log_file) if not os.path.exists(options.log_file): if options.clean_before: - subprocess.check_call(['make', 'clean'], + subprocess.check_call(['make', '-f', 'scripts/legacy.make', 'clean'], cwd='tests', stdout=sys.stderr) with open(os.devnull, 'w') as devnull: - make_q_ret = subprocess.call(['make', '-q', 'lib', 'tests'], + make_q_ret = subprocess.call(['make', '-f', 'scripts/legacy.make', + '-q', 'lib', 'tests'], stdout=devnull, stderr=devnull) if make_q_ret != 0: - subprocess.check_call(['make', 'RECORD_PSA_STATUS_COVERAGE_LOG=1'], + subprocess.check_call(['make', '-f', 'scripts/legacy.make', + 'RECORD_PSA_STATUS_COVERAGE_LOG=1'], stdout=sys.stderr) rebuilt = True - subprocess.check_call(['make', 'test'], + subprocess.check_call(['make', '-f', 'scripts/legacy.make', 'test'], stdout=sys.stderr) data = Statuses() data.collect_log(options.log_file) data.get_constant_names(options.psa_constant_names) if rebuilt and options.clean_after: - subprocess.check_call(['make', 'clean'], + subprocess.check_call(['make', '-f', 'scripts/legacy.make', 'clean'], cwd='tests', stdout=sys.stderr) return data diff --git a/visualc/VS2017/.gitignore b/visualc/VS2017/.gitignore deleted file mode 100644 index e45eaf68f..000000000 --- a/visualc/VS2017/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -# Files that may be left over from make_generated-files.py --check -/*.bak - -# Visual Studio artifacts -/.localhistory/ -/.vs/ -/Debug/ -/Release/ -/*.vcxproj.filters -/*.vcxproj.user - -###START_GENERATED_FILES### -# Files automatically generated by generate_visualc_files.pl -/mbedTLS.sln -/*.vcxproj -###END_GENERATED_FILES###