mbed TLS Build

Dependents:   Slave-prot-prod

Committer:
markrad
Date:
Thu Jan 05 00:18:44 2017 +0000
Revision:
0:cdf462088d13
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
markrad 0:cdf462088d13 1 #!/bin/sh
markrad 0:cdf462088d13 2
markrad 0:cdf462088d13 3 # all.sh
markrad 0:cdf462088d13 4 #
markrad 0:cdf462088d13 5 # This file is part of mbed TLS (https://tls.mbed.org)
markrad 0:cdf462088d13 6 #
markrad 0:cdf462088d13 7 # Copyright (c) 2014-2016, ARM Limited, All Rights Reserved
markrad 0:cdf462088d13 8 #
markrad 0:cdf462088d13 9 # Purpose
markrad 0:cdf462088d13 10 #
markrad 0:cdf462088d13 11 # To run all tests possible or available on the platform.
markrad 0:cdf462088d13 12 #
markrad 0:cdf462088d13 13 # Warning: the test is destructive. It includes various build modes and
markrad 0:cdf462088d13 14 # configurations, and can and will arbitrarily change the current CMake
markrad 0:cdf462088d13 15 # configuration. After this script has been run, the CMake cache will be lost
markrad 0:cdf462088d13 16 # and CMake will no longer be initialised.
markrad 0:cdf462088d13 17 #
markrad 0:cdf462088d13 18 # The script assumes the presence of gcc and clang (recent enough for using
markrad 0:cdf462088d13 19 # ASan with gcc and MemSan with clang, or valgrind) are available, as well as
markrad 0:cdf462088d13 20 # cmake and a "good" find.
markrad 0:cdf462088d13 21
markrad 0:cdf462088d13 22 # Abort on errors (and uninitialised variables)
markrad 0:cdf462088d13 23 set -eu
markrad 0:cdf462088d13 24
markrad 0:cdf462088d13 25 if [ -d library -a -d include -a -d tests ]; then :; else
markrad 0:cdf462088d13 26 err_msg "Must be run from mbed TLS root"
markrad 0:cdf462088d13 27 exit 1
markrad 0:cdf462088d13 28 fi
markrad 0:cdf462088d13 29
markrad 0:cdf462088d13 30 CONFIG_H='include/mbedtls/config.h'
markrad 0:cdf462088d13 31 CONFIG_BAK="$CONFIG_H.bak"
markrad 0:cdf462088d13 32
markrad 0:cdf462088d13 33 MEMORY=0
markrad 0:cdf462088d13 34 FORCE=0
markrad 0:cdf462088d13 35 RELEASE=0
markrad 0:cdf462088d13 36
markrad 0:cdf462088d13 37 # Default commands, can be overriden by the environment
markrad 0:cdf462088d13 38 : ${OPENSSL:="openssl"}
markrad 0:cdf462088d13 39 : ${OPENSSL_LEGACY:="$OPENSSL"}
markrad 0:cdf462088d13 40 : ${GNUTLS_CLI:="gnutls-cli"}
markrad 0:cdf462088d13 41 : ${GNUTLS_SERV:="gnutls-serv"}
markrad 0:cdf462088d13 42 : ${GNUTLS_LEGACY_CLI:="$GNUTLS_CLI"}
markrad 0:cdf462088d13 43 : ${GNUTLS_LEGACY_SERV:="$GNUTLS_SERV"}
markrad 0:cdf462088d13 44 : ${OUT_OF_SOURCE_DIR:=./mbedtls_out_of_source_build}
markrad 0:cdf462088d13 45
markrad 0:cdf462088d13 46 usage()
markrad 0:cdf462088d13 47 {
markrad 0:cdf462088d13 48 printf "Usage: $0\n"
markrad 0:cdf462088d13 49 printf " -h|--help\t\tPrint this help.\n"
markrad 0:cdf462088d13 50 printf " -m|--memory\t\tAdditional optional memory tests.\n"
markrad 0:cdf462088d13 51 printf " -f|--force\t\tForce the tests to overwrite any modified files.\n"
markrad 0:cdf462088d13 52 printf " -s|--seed\t\tInteger seed value to use for this test run.\n"
markrad 0:cdf462088d13 53 printf " -r|--release-test\t\tRun this script in release mode. This fixes the seed value to 1.\n"
markrad 0:cdf462088d13 54 printf " --out-of-source-dir=<path>\t\tDirectory used for CMake out-of-source build tests."
markrad 0:cdf462088d13 55 printf " --openssl=<OpenSSL_path>\t\tPath to OpenSSL executable to use for most tests.\n"
markrad 0:cdf462088d13 56 printf " --openssl-legacy=<OpenSSL_path>\t\tPath to OpenSSL executable to use for legacy tests e.g. SSLv3.\n"
markrad 0:cdf462088d13 57 printf " --gnutls-cli=<GnuTLS_cli_path>\t\tPath to GnuTLS client executable to use for most tests.\n"
markrad 0:cdf462088d13 58 printf " --gnutls-serv=<GnuTLS_serv_path>\t\tPath to GnuTLS server executable to use for most tests.\n"
markrad 0:cdf462088d13 59 printf " --gnutls-legacy-cli=<GnuTLS_cli_path>\t\tPath to GnuTLS client executable to use for legacy tests.\n"
markrad 0:cdf462088d13 60 printf " --gnutls-legacy-serv=<GnuTLS_serv_path>\t\tPath to GnuTLS server executable to use for legacy tests.\n"
markrad 0:cdf462088d13 61 }
markrad 0:cdf462088d13 62
markrad 0:cdf462088d13 63 # remove built files as well as the cmake cache/config
markrad 0:cdf462088d13 64 cleanup()
markrad 0:cdf462088d13 65 {
markrad 0:cdf462088d13 66 make clean
markrad 0:cdf462088d13 67
markrad 0:cdf462088d13 68 find . -name yotta -prune -o -iname '*cmake*' -not -name CMakeLists.txt -exec rm -rf {} \+
markrad 0:cdf462088d13 69 rm -f include/Makefile include/mbedtls/Makefile programs/*/Makefile
markrad 0:cdf462088d13 70 git update-index --no-skip-worktree Makefile library/Makefile programs/Makefile tests/Makefile
markrad 0:cdf462088d13 71 git checkout -- Makefile library/Makefile programs/Makefile tests/Makefile
markrad 0:cdf462088d13 72
markrad 0:cdf462088d13 73 if [ -f "$CONFIG_BAK" ]; then
markrad 0:cdf462088d13 74 mv "$CONFIG_BAK" "$CONFIG_H"
markrad 0:cdf462088d13 75 fi
markrad 0:cdf462088d13 76 }
markrad 0:cdf462088d13 77
markrad 0:cdf462088d13 78 trap cleanup INT TERM HUP
markrad 0:cdf462088d13 79
markrad 0:cdf462088d13 80 msg()
markrad 0:cdf462088d13 81 {
markrad 0:cdf462088d13 82 echo ""
markrad 0:cdf462088d13 83 echo "******************************************************************"
markrad 0:cdf462088d13 84 echo "* $1 "
markrad 0:cdf462088d13 85 printf "* "; date
markrad 0:cdf462088d13 86 echo "******************************************************************"
markrad 0:cdf462088d13 87 }
markrad 0:cdf462088d13 88
markrad 0:cdf462088d13 89 err_msg()
markrad 0:cdf462088d13 90 {
markrad 0:cdf462088d13 91 echo "$1" >&2
markrad 0:cdf462088d13 92 }
markrad 0:cdf462088d13 93
markrad 0:cdf462088d13 94 check_tools()
markrad 0:cdf462088d13 95 {
markrad 0:cdf462088d13 96 for TOOL in "$@"; do
markrad 0:cdf462088d13 97 if ! `hash "$TOOL" >/dev/null 2>&1`; then
markrad 0:cdf462088d13 98 err_msg "$TOOL not found!"
markrad 0:cdf462088d13 99 exit 1
markrad 0:cdf462088d13 100 fi
markrad 0:cdf462088d13 101 done
markrad 0:cdf462088d13 102 }
markrad 0:cdf462088d13 103
markrad 0:cdf462088d13 104 while [ $# -gt 0 ]; do
markrad 0:cdf462088d13 105 case "$1" in
markrad 0:cdf462088d13 106 --memory|-m*)
markrad 0:cdf462088d13 107 MEMORY=${1#-m}
markrad 0:cdf462088d13 108 ;;
markrad 0:cdf462088d13 109 --force|-f)
markrad 0:cdf462088d13 110 FORCE=1
markrad 0:cdf462088d13 111 ;;
markrad 0:cdf462088d13 112 --seed|-s)
markrad 0:cdf462088d13 113 shift
markrad 0:cdf462088d13 114 SEED="$1"
markrad 0:cdf462088d13 115 ;;
markrad 0:cdf462088d13 116 --release-test|-r)
markrad 0:cdf462088d13 117 RELEASE=1
markrad 0:cdf462088d13 118 ;;
markrad 0:cdf462088d13 119 --out-of-source-dir)
markrad 0:cdf462088d13 120 shift
markrad 0:cdf462088d13 121 OUT_OF_SOURCE_DIR="$1"
markrad 0:cdf462088d13 122 ;;
markrad 0:cdf462088d13 123 --openssl)
markrad 0:cdf462088d13 124 shift
markrad 0:cdf462088d13 125 OPENSSL="$1"
markrad 0:cdf462088d13 126 ;;
markrad 0:cdf462088d13 127 --openssl-legacy)
markrad 0:cdf462088d13 128 shift
markrad 0:cdf462088d13 129 OPENSSL_LEGACY="$1"
markrad 0:cdf462088d13 130 ;;
markrad 0:cdf462088d13 131 --gnutls-cli)
markrad 0:cdf462088d13 132 shift
markrad 0:cdf462088d13 133 GNUTLS_CLI="$1"
markrad 0:cdf462088d13 134 ;;
markrad 0:cdf462088d13 135 --gnutls-serv)
markrad 0:cdf462088d13 136 shift
markrad 0:cdf462088d13 137 GNUTLS_SERV="$1"
markrad 0:cdf462088d13 138 ;;
markrad 0:cdf462088d13 139 --gnutls-legacy-cli)
markrad 0:cdf462088d13 140 shift
markrad 0:cdf462088d13 141 GNUTLS_LEGACY_CLI="$1"
markrad 0:cdf462088d13 142 ;;
markrad 0:cdf462088d13 143 --gnutls-legacy-serv)
markrad 0:cdf462088d13 144 shift
markrad 0:cdf462088d13 145 GNUTLS_LEGACY_SERV="$1"
markrad 0:cdf462088d13 146 ;;
markrad 0:cdf462088d13 147 --help|-h|*)
markrad 0:cdf462088d13 148 usage
markrad 0:cdf462088d13 149 exit 1
markrad 0:cdf462088d13 150 ;;
markrad 0:cdf462088d13 151 esac
markrad 0:cdf462088d13 152 shift
markrad 0:cdf462088d13 153 done
markrad 0:cdf462088d13 154
markrad 0:cdf462088d13 155 if [ $FORCE -eq 1 ]; then
markrad 0:cdf462088d13 156 rm -rf yotta/module "$OUT_OF_SOURCE_DIR"
markrad 0:cdf462088d13 157 git checkout-index -f -q $CONFIG_H
markrad 0:cdf462088d13 158 cleanup
markrad 0:cdf462088d13 159 else
markrad 0:cdf462088d13 160
markrad 0:cdf462088d13 161 if [ -d yotta/module ]; then
markrad 0:cdf462088d13 162 err_msg "Warning - there is an existing yotta module in the directory 'yotta/module'"
markrad 0:cdf462088d13 163 echo "You can either delete your work and retry, or force the test to overwrite the"
markrad 0:cdf462088d13 164 echo "test by rerunning the script as: $0 --force"
markrad 0:cdf462088d13 165 exit 1
markrad 0:cdf462088d13 166 fi
markrad 0:cdf462088d13 167
markrad 0:cdf462088d13 168 if [ -d "$OUT_OF_SOURCE_DIR" ]; then
markrad 0:cdf462088d13 169 echo "Warning - there is an existing directory at '$OUT_OF_SOURCE_DIR'" >&2
markrad 0:cdf462088d13 170 echo "You can either delete this directory manually, or force the test by rerunning"
markrad 0:cdf462088d13 171 echo "the script as: $0 --force --out-of-source-dir $OUT_OF_SOURCE_DIR"
markrad 0:cdf462088d13 172 exit 1
markrad 0:cdf462088d13 173 fi
markrad 0:cdf462088d13 174
markrad 0:cdf462088d13 175 if ! git diff-files --quiet include/mbedtls/config.h; then
markrad 0:cdf462088d13 176 echo $?
markrad 0:cdf462088d13 177 err_msg "Warning - the configuration file 'include/mbedtls/config.h' has been edited. "
markrad 0:cdf462088d13 178 echo "You can either delete or preserve your work, or force the test by rerunning the"
markrad 0:cdf462088d13 179 echo "script as: $0 --force"
markrad 0:cdf462088d13 180 exit 1
markrad 0:cdf462088d13 181 fi
markrad 0:cdf462088d13 182 fi
markrad 0:cdf462088d13 183
markrad 0:cdf462088d13 184 if [ $RELEASE -eq 1 ]; then
markrad 0:cdf462088d13 185 # Fix the seed value to 1 to ensure that the tests are deterministic.
markrad 0:cdf462088d13 186 SEED=1
markrad 0:cdf462088d13 187 fi
markrad 0:cdf462088d13 188
markrad 0:cdf462088d13 189 msg "info: $0 configuration"
markrad 0:cdf462088d13 190 echo "MEMORY: $MEMORY"
markrad 0:cdf462088d13 191 echo "FORCE: $FORCE"
markrad 0:cdf462088d13 192 echo "SEED: ${SEED-"UNSET"}"
markrad 0:cdf462088d13 193 echo "OPENSSL: $OPENSSL"
markrad 0:cdf462088d13 194 echo "OPENSSL_LEGACY: $OPENSSL_LEGACY"
markrad 0:cdf462088d13 195 echo "GNUTLS_CLI: $GNUTLS_CLI"
markrad 0:cdf462088d13 196 echo "GNUTLS_SERV: $GNUTLS_SERV"
markrad 0:cdf462088d13 197 echo "GNUTLS_LEGACY_CLI: $GNUTLS_LEGACY_CLI"
markrad 0:cdf462088d13 198 echo "GNUTLS_LEGACY_SERV: $GNUTLS_LEGACY_SERV"
markrad 0:cdf462088d13 199
markrad 0:cdf462088d13 200 # To avoid setting OpenSSL and GnuTLS for each call to compat.sh and ssl-opt.sh
markrad 0:cdf462088d13 201 # we just export the variables they require
markrad 0:cdf462088d13 202 export OPENSSL_CMD="$OPENSSL"
markrad 0:cdf462088d13 203 export GNUTLS_CLI="$GNUTLS_CLI"
markrad 0:cdf462088d13 204 export GNUTLS_SERV="$GNUTLS_SERV"
markrad 0:cdf462088d13 205
markrad 0:cdf462088d13 206 # Avoid passing --seed flag in every call to ssl-opt.sh
markrad 0:cdf462088d13 207 [ ! -z ${SEED+set} ] && export SEED
markrad 0:cdf462088d13 208
markrad 0:cdf462088d13 209 # Make sure the tools we need are available.
markrad 0:cdf462088d13 210 check_tools "$OPENSSL" "$OPENSSL_LEGACY" "$GNUTLS_CLI" "$GNUTLS_SERV" \
markrad 0:cdf462088d13 211 "$GNUTLS_LEGACY_CLI" "$GNUTLS_LEGACY_SERV" "doxygen" "dot" \
markrad 0:cdf462088d13 212 "arm-none-eabi-gcc" "armcc"
markrad 0:cdf462088d13 213
markrad 0:cdf462088d13 214 #
markrad 0:cdf462088d13 215 # Test Suites to be executed
markrad 0:cdf462088d13 216 #
markrad 0:cdf462088d13 217 # The test ordering tries to optimize for the following criteria:
markrad 0:cdf462088d13 218 # 1. Catch possible problems early, by running first tests that run quickly
markrad 0:cdf462088d13 219 # and/or are more likely to fail than others (eg I use Clang most of the
markrad 0:cdf462088d13 220 # time, so start with a GCC build).
markrad 0:cdf462088d13 221 # 2. Minimize total running time, by avoiding useless rebuilds
markrad 0:cdf462088d13 222 #
markrad 0:cdf462088d13 223 # Indicative running times are given for reference.
markrad 0:cdf462088d13 224
markrad 0:cdf462088d13 225 msg "info: output_env.sh"
markrad 0:cdf462088d13 226 OPENSSL="$OPENSSL" OPENSSL_LEGACY="$OPENSSL_LEGACY" GNUTLS_CLI="$GNUTLS_CLI" \
markrad 0:cdf462088d13 227 GNUTLS_SERV="$GNUTLS_SERV" GNUTLS_LEGACY_CLI="$GNUTLS_LEGACY_CLI" \
markrad 0:cdf462088d13 228 GNUTLS_LEGACY_SERV="$GNUTLS_LEGACY_SERV" scripts/output_env.sh
markrad 0:cdf462088d13 229
markrad 0:cdf462088d13 230 msg "test: recursion.pl" # < 1s
markrad 0:cdf462088d13 231 tests/scripts/recursion.pl library/*.c
markrad 0:cdf462088d13 232
markrad 0:cdf462088d13 233 msg "test: freshness of generated source files" # < 1s
markrad 0:cdf462088d13 234 tests/scripts/check-generated-files.sh
markrad 0:cdf462088d13 235
markrad 0:cdf462088d13 236 msg "test: doxygen markup outside doxygen blocks" # < 1s
markrad 0:cdf462088d13 237 tests/scripts/check-doxy-blocks.pl
markrad 0:cdf462088d13 238
markrad 0:cdf462088d13 239 msg "test/build: declared and exported names" # < 3s
markrad 0:cdf462088d13 240 cleanup
markrad 0:cdf462088d13 241 tests/scripts/check-names.sh
markrad 0:cdf462088d13 242
markrad 0:cdf462088d13 243 msg "test: doxygen warnings" # ~ 3s
markrad 0:cdf462088d13 244 cleanup
markrad 0:cdf462088d13 245 tests/scripts/doxygen.sh
markrad 0:cdf462088d13 246
markrad 0:cdf462088d13 247 msg "build: create and build yotta module" # ~ 30s
markrad 0:cdf462088d13 248 cleanup
markrad 0:cdf462088d13 249 tests/scripts/yotta-build.sh
markrad 0:cdf462088d13 250
markrad 0:cdf462088d13 251 msg "build: cmake, gcc, ASan" # ~ 1 min 50s
markrad 0:cdf462088d13 252 cleanup
markrad 0:cdf462088d13 253 CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan .
markrad 0:cdf462088d13 254 make
markrad 0:cdf462088d13 255
markrad 0:cdf462088d13 256 msg "test: main suites (inc. selftests) (ASan build)" # ~ 50s
markrad 0:cdf462088d13 257 make test
markrad 0:cdf462088d13 258
markrad 0:cdf462088d13 259 msg "test: ssl-opt.sh (ASan build)" # ~ 1 min
markrad 0:cdf462088d13 260 tests/ssl-opt.sh
markrad 0:cdf462088d13 261
markrad 0:cdf462088d13 262 msg "test/build: ref-configs (ASan build)" # ~ 6 min 20s
markrad 0:cdf462088d13 263 tests/scripts/test-ref-configs.pl
markrad 0:cdf462088d13 264
markrad 0:cdf462088d13 265 msg "build: with ASan (rebuild after ref-configs)" # ~ 1 min
markrad 0:cdf462088d13 266 make
markrad 0:cdf462088d13 267
markrad 0:cdf462088d13 268 msg "test: compat.sh (ASan build)" # ~ 6 min
markrad 0:cdf462088d13 269 tests/compat.sh
markrad 0:cdf462088d13 270
markrad 0:cdf462088d13 271 msg "build: Default + SSLv3 (ASan build)" # ~ 6 min
markrad 0:cdf462088d13 272 cleanup
markrad 0:cdf462088d13 273 cp "$CONFIG_H" "$CONFIG_BAK"
markrad 0:cdf462088d13 274 scripts/config.pl set MBEDTLS_SSL_PROTO_SSL3
markrad 0:cdf462088d13 275 CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan .
markrad 0:cdf462088d13 276 make
markrad 0:cdf462088d13 277
markrad 0:cdf462088d13 278 msg "test: SSLv3 - main suites (inc. selftests) (ASan build)" # ~ 50s
markrad 0:cdf462088d13 279 make test
markrad 0:cdf462088d13 280
markrad 0:cdf462088d13 281 msg "build: SSLv3 - compat.sh (ASan build)" # ~ 6 min
markrad 0:cdf462088d13 282 tests/compat.sh -m 'tls1 tls1_1 tls1_2 dtls1 dtls1_2'
markrad 0:cdf462088d13 283 OPENSSL_CMD="$OPENSSL_LEGACY" tests/compat.sh -m 'ssl3'
markrad 0:cdf462088d13 284
markrad 0:cdf462088d13 285 msg "build: SSLv3 - ssl-opt.sh (ASan build)" # ~ 6 min
markrad 0:cdf462088d13 286 tests/ssl-opt.sh
markrad 0:cdf462088d13 287
markrad 0:cdf462088d13 288 msg "build: cmake, full config, clang" # ~ 50s
markrad 0:cdf462088d13 289 cleanup
markrad 0:cdf462088d13 290 cp "$CONFIG_H" "$CONFIG_BAK"
markrad 0:cdf462088d13 291 scripts/config.pl full
markrad 0:cdf462088d13 292 scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE # too slow for tests
markrad 0:cdf462088d13 293 CC=clang cmake -D CMAKE_BUILD_TYPE:String=Check .
markrad 0:cdf462088d13 294 make
markrad 0:cdf462088d13 295
markrad 0:cdf462088d13 296 msg "test: main suites (full config)" # ~ 5s
markrad 0:cdf462088d13 297 make test
markrad 0:cdf462088d13 298
markrad 0:cdf462088d13 299 msg "test: ssl-opt.sh default (full config)" # ~ 1s
markrad 0:cdf462088d13 300 tests/ssl-opt.sh -f Default
markrad 0:cdf462088d13 301
markrad 0:cdf462088d13 302 msg "test: compat.sh RC4, DES & NULL (full config)" # ~ 2 min
markrad 0:cdf462088d13 303 OPENSSL_CMD="$OPENSSL_LEGACY" GNUTLS_CLI="$GNUTLS_LEGACY_CLI" GNUTLS_SERV="$GNUTLS_LEGACY_SERV" tests/compat.sh -e '3DES\|DES-CBC3' -f 'NULL\|DES\|RC4\|ARCFOUR'
markrad 0:cdf462088d13 304
markrad 0:cdf462088d13 305 msg "test/build: curves.pl (gcc)" # ~ 4 min
markrad 0:cdf462088d13 306 cleanup
markrad 0:cdf462088d13 307 cmake -D CMAKE_BUILD_TYPE:String=Debug .
markrad 0:cdf462088d13 308 tests/scripts/curves.pl
markrad 0:cdf462088d13 309
markrad 0:cdf462088d13 310 msg "test/build: key-exchanges (gcc)" # ~ 1 min
markrad 0:cdf462088d13 311 cleanup
markrad 0:cdf462088d13 312 cmake -D CMAKE_BUILD_TYPE:String=Check .
markrad 0:cdf462088d13 313 tests/scripts/key-exchanges.pl
markrad 0:cdf462088d13 314
markrad 0:cdf462088d13 315 msg "build: Unix make, -Os (gcc)" # ~ 30s
markrad 0:cdf462088d13 316 cleanup
markrad 0:cdf462088d13 317 CC=gcc CFLAGS='-Werror -Os' make
markrad 0:cdf462088d13 318
markrad 0:cdf462088d13 319 # this is meant to cath missing #define mbedtls_printf etc
markrad 0:cdf462088d13 320 # disable fsio to catch some more missing #include <stdio.h>
markrad 0:cdf462088d13 321 msg "build: full config except platform/fsio, make, gcc" # ~ 30s
markrad 0:cdf462088d13 322 cleanup
markrad 0:cdf462088d13 323 cp "$CONFIG_H" "$CONFIG_BAK"
markrad 0:cdf462088d13 324 scripts/config.pl full
markrad 0:cdf462088d13 325 scripts/config.pl unset MBEDTLS_PLATFORM_C
markrad 0:cdf462088d13 326 scripts/config.pl unset MBEDTLS_PLATFORM_MEMORY
markrad 0:cdf462088d13 327 scripts/config.pl unset MBEDTLS_PLATFORM_PRINTF_ALT
markrad 0:cdf462088d13 328 scripts/config.pl unset MBEDTLS_PLATFORM_FPRINTF_ALT
markrad 0:cdf462088d13 329 scripts/config.pl unset MBEDTLS_PLATFORM_SNPRINTF_ALT
markrad 0:cdf462088d13 330 scripts/config.pl unset MBEDTLS_PLATFORM_TIME_ALT
markrad 0:cdf462088d13 331 scripts/config.pl unset MBEDTLS_PLATFORM_EXIT_ALT
markrad 0:cdf462088d13 332 scripts/config.pl unset MBEDTLS_ENTROPY_NV_SEED
markrad 0:cdf462088d13 333 scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C
markrad 0:cdf462088d13 334 scripts/config.pl unset MBEDTLS_FS_IO
markrad 0:cdf462088d13 335 CC=gcc CFLAGS='-Werror -O0' make
markrad 0:cdf462088d13 336
markrad 0:cdf462088d13 337 # catch compile bugs in _uninit functions
markrad 0:cdf462088d13 338 msg "build: full config with NO_STD_FUNCTION, make, gcc" # ~ 30s
markrad 0:cdf462088d13 339 cleanup
markrad 0:cdf462088d13 340 cp "$CONFIG_H" "$CONFIG_BAK"
markrad 0:cdf462088d13 341 scripts/config.pl full
markrad 0:cdf462088d13 342 scripts/config.pl set MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
markrad 0:cdf462088d13 343 scripts/config.pl unset MBEDTLS_ENTROPY_NV_SEED
markrad 0:cdf462088d13 344 CC=gcc CFLAGS='-Werror -O0' make
markrad 0:cdf462088d13 345
markrad 0:cdf462088d13 346 msg "build: full config except ssl_srv.c, make, gcc" # ~ 30s
markrad 0:cdf462088d13 347 cleanup
markrad 0:cdf462088d13 348 cp "$CONFIG_H" "$CONFIG_BAK"
markrad 0:cdf462088d13 349 scripts/config.pl full
markrad 0:cdf462088d13 350 scripts/config.pl unset MBEDTLS_SSL_SRV_C
markrad 0:cdf462088d13 351 CC=gcc CFLAGS='-Werror -O0' make
markrad 0:cdf462088d13 352
markrad 0:cdf462088d13 353 msg "build: full config except ssl_cli.c, make, gcc" # ~ 30s
markrad 0:cdf462088d13 354 cleanup
markrad 0:cdf462088d13 355 cp "$CONFIG_H" "$CONFIG_BAK"
markrad 0:cdf462088d13 356 scripts/config.pl full
markrad 0:cdf462088d13 357 scripts/config.pl unset MBEDTLS_SSL_CLI_C
markrad 0:cdf462088d13 358 CC=gcc CFLAGS='-Werror -O0' make
markrad 0:cdf462088d13 359
markrad 0:cdf462088d13 360 msg "build: full config except net_sockets.c, make, gcc -std=c99 -pedantic" # ~ 30s
markrad 0:cdf462088d13 361 cleanup
markrad 0:cdf462088d13 362 cp "$CONFIG_H" "$CONFIG_BAK"
markrad 0:cdf462088d13 363 scripts/config.pl full
markrad 0:cdf462088d13 364 scripts/config.pl unset MBEDTLS_NET_C # getaddrinfo() undeclared, etc.
markrad 0:cdf462088d13 365 scripts/config.pl set MBEDTLS_NO_PLATFORM_ENTROPY # uses syscall() on GNU/Linux
markrad 0:cdf462088d13 366 CC=gcc CFLAGS='-Werror -O0 -std=c99 -pedantic' make lib
markrad 0:cdf462088d13 367
markrad 0:cdf462088d13 368 msg "build: default config with MBEDTLS_TEST_NULL_ENTROPY (ASan build)"
markrad 0:cdf462088d13 369 cleanup
markrad 0:cdf462088d13 370 cp "$CONFIG_H" "$CONFIG_BAK"
markrad 0:cdf462088d13 371 scripts/config.pl set MBEDTLS_TEST_NULL_ENTROPY
markrad 0:cdf462088d13 372 scripts/config.pl set MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES
markrad 0:cdf462088d13 373 scripts/config.pl set MBEDTLS_ENTROPY_C
markrad 0:cdf462088d13 374 scripts/config.pl unset MBEDTLS_ENTROPY_NV_SEED
markrad 0:cdf462088d13 375 scripts/config.pl unset MBEDTLS_ENTROPY_HARDWARE_ALT
markrad 0:cdf462088d13 376 scripts/config.pl unset MBEDTLS_HAVEGE_C
markrad 0:cdf462088d13 377 CC=gcc cmake -D UNSAFE_BUILD=ON -D CMAKE_C_FLAGS:String="-fsanitize=address -fno-common -O3" .
markrad 0:cdf462088d13 378 make
markrad 0:cdf462088d13 379
markrad 0:cdf462088d13 380 msg "test: MBEDTLS_TEST_NULL_ENTROPY - main suites (inc. selftests) (ASan build)"
markrad 0:cdf462088d13 381 make test
markrad 0:cdf462088d13 382
markrad 0:cdf462088d13 383 if uname -a | grep -F Linux >/dev/null; then
markrad 0:cdf462088d13 384 msg "build/test: make shared" # ~ 40s
markrad 0:cdf462088d13 385 cleanup
markrad 0:cdf462088d13 386 make SHARED=1 all check
markrad 0:cdf462088d13 387 fi
markrad 0:cdf462088d13 388
markrad 0:cdf462088d13 389 if uname -a | grep -F x86_64 >/dev/null; then
markrad 0:cdf462088d13 390 msg "build: i386, make, gcc" # ~ 30s
markrad 0:cdf462088d13 391 cleanup
markrad 0:cdf462088d13 392 CC=gcc CFLAGS='-Werror -m32' make
markrad 0:cdf462088d13 393 fi # x86_64
markrad 0:cdf462088d13 394
markrad 0:cdf462088d13 395 msg "build: arm-none-eabi-gcc, make" # ~ 10s
markrad 0:cdf462088d13 396 cleanup
markrad 0:cdf462088d13 397 cp "$CONFIG_H" "$CONFIG_BAK"
markrad 0:cdf462088d13 398 scripts/config.pl full
markrad 0:cdf462088d13 399 scripts/config.pl unset MBEDTLS_NET_C
markrad 0:cdf462088d13 400 scripts/config.pl unset MBEDTLS_TIMING_C
markrad 0:cdf462088d13 401 scripts/config.pl unset MBEDTLS_FS_IO
markrad 0:cdf462088d13 402 scripts/config.pl unset MBEDTLS_ENTROPY_NV_SEED
markrad 0:cdf462088d13 403 scripts/config.pl set MBEDTLS_NO_PLATFORM_ENTROPY
markrad 0:cdf462088d13 404 # following things are not in the default config
markrad 0:cdf462088d13 405 scripts/config.pl unset MBEDTLS_HAVEGE_C # depends on timing.c
markrad 0:cdf462088d13 406 scripts/config.pl unset MBEDTLS_THREADING_PTHREAD
markrad 0:cdf462088d13 407 scripts/config.pl unset MBEDTLS_THREADING_C
markrad 0:cdf462088d13 408 scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE # execinfo.h
markrad 0:cdf462088d13 409 scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C # calls exit
markrad 0:cdf462088d13 410 CC=arm-none-eabi-gcc AR=arm-none-eabi-ar LD=arm-none-eabi-ld CFLAGS=-Werror make lib
markrad 0:cdf462088d13 411
markrad 0:cdf462088d13 412 msg "build: armcc, make"
markrad 0:cdf462088d13 413 cleanup
markrad 0:cdf462088d13 414 cp "$CONFIG_H" "$CONFIG_BAK"
markrad 0:cdf462088d13 415 scripts/config.pl full
markrad 0:cdf462088d13 416 scripts/config.pl unset MBEDTLS_NET_C
markrad 0:cdf462088d13 417 scripts/config.pl unset MBEDTLS_TIMING_C
markrad 0:cdf462088d13 418 scripts/config.pl unset MBEDTLS_FS_IO
markrad 0:cdf462088d13 419 scripts/config.pl unset MBEDTLS_ENTROPY_NV_SEED
markrad 0:cdf462088d13 420 scripts/config.pl unset MBEDTLS_HAVE_TIME
markrad 0:cdf462088d13 421 scripts/config.pl unset MBEDTLS_HAVE_TIME_DATE
markrad 0:cdf462088d13 422 scripts/config.pl set MBEDTLS_NO_PLATFORM_ENTROPY
markrad 0:cdf462088d13 423 # following things are not in the default config
markrad 0:cdf462088d13 424 scripts/config.pl unset MBEDTLS_DEPRECATED_WARNING
markrad 0:cdf462088d13 425 scripts/config.pl unset MBEDTLS_HAVEGE_C # depends on timing.c
markrad 0:cdf462088d13 426 scripts/config.pl unset MBEDTLS_THREADING_PTHREAD
markrad 0:cdf462088d13 427 scripts/config.pl unset MBEDTLS_THREADING_C
markrad 0:cdf462088d13 428 scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE # execinfo.h
markrad 0:cdf462088d13 429 scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C # calls exit
markrad 0:cdf462088d13 430 scripts/config.pl unset MBEDTLS_PLATFORM_TIME_ALT # depends on MBEDTLS_HAVE_TIME
markrad 0:cdf462088d13 431 CC=armcc AR=armar WARNING_CFLAGS= make lib
markrad 0:cdf462088d13 432
markrad 0:cdf462088d13 433 if which i686-w64-mingw32-gcc >/dev/null; then
markrad 0:cdf462088d13 434 msg "build: cross-mingw64, make" # ~ 30s
markrad 0:cdf462088d13 435 cleanup
markrad 0:cdf462088d13 436 CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar LD=i686-w64-minggw32-ld CFLAGS=-Werror WINDOWS_BUILD=1 make
markrad 0:cdf462088d13 437 WINDOWS_BUILD=1 make clean
markrad 0:cdf462088d13 438 CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar LD=i686-w64-minggw32-ld CFLAGS=-Werror WINDOWS_BUILD=1 SHARED=1 make
markrad 0:cdf462088d13 439 WINDOWS_BUILD=1 make clean
markrad 0:cdf462088d13 440 fi
markrad 0:cdf462088d13 441
markrad 0:cdf462088d13 442 # MemSan currently only available on Linux 64 bits
markrad 0:cdf462088d13 443 if uname -a | grep 'Linux.*x86_64' >/dev/null; then
markrad 0:cdf462088d13 444
markrad 0:cdf462088d13 445 msg "build: MSan (clang)" # ~ 1 min 20s
markrad 0:cdf462088d13 446 cleanup
markrad 0:cdf462088d13 447 cp "$CONFIG_H" "$CONFIG_BAK"
markrad 0:cdf462088d13 448 scripts/config.pl unset MBEDTLS_AESNI_C # memsan doesn't grok asm
markrad 0:cdf462088d13 449 CC=clang cmake -D CMAKE_BUILD_TYPE:String=MemSan .
markrad 0:cdf462088d13 450 make
markrad 0:cdf462088d13 451
markrad 0:cdf462088d13 452 msg "test: main suites (MSan)" # ~ 10s
markrad 0:cdf462088d13 453 make test
markrad 0:cdf462088d13 454
markrad 0:cdf462088d13 455 msg "test: ssl-opt.sh (MSan)" # ~ 1 min
markrad 0:cdf462088d13 456 tests/ssl-opt.sh
markrad 0:cdf462088d13 457
markrad 0:cdf462088d13 458 # Optional part(s)
markrad 0:cdf462088d13 459
markrad 0:cdf462088d13 460 if [ "$MEMORY" -gt 0 ]; then
markrad 0:cdf462088d13 461 msg "test: compat.sh (MSan)" # ~ 6 min 20s
markrad 0:cdf462088d13 462 tests/compat.sh
markrad 0:cdf462088d13 463 fi
markrad 0:cdf462088d13 464
markrad 0:cdf462088d13 465 else # no MemSan
markrad 0:cdf462088d13 466
markrad 0:cdf462088d13 467 msg "build: Release (clang)"
markrad 0:cdf462088d13 468 cleanup
markrad 0:cdf462088d13 469 CC=clang cmake -D CMAKE_BUILD_TYPE:String=Release .
markrad 0:cdf462088d13 470 make
markrad 0:cdf462088d13 471
markrad 0:cdf462088d13 472 msg "test: main suites valgrind (Release)"
markrad 0:cdf462088d13 473 make memcheck
markrad 0:cdf462088d13 474
markrad 0:cdf462088d13 475 # Optional part(s)
markrad 0:cdf462088d13 476 # Currently broken, programs don't seem to receive signals
markrad 0:cdf462088d13 477 # under valgrind on OS X
markrad 0:cdf462088d13 478
markrad 0:cdf462088d13 479 if [ "$MEMORY" -gt 0 ]; then
markrad 0:cdf462088d13 480 msg "test: ssl-opt.sh --memcheck (Release)"
markrad 0:cdf462088d13 481 tests/ssl-opt.sh --memcheck
markrad 0:cdf462088d13 482 fi
markrad 0:cdf462088d13 483
markrad 0:cdf462088d13 484 if [ "$MEMORY" -gt 1 ]; then
markrad 0:cdf462088d13 485 msg "test: compat.sh --memcheck (Release)"
markrad 0:cdf462088d13 486 tests/compat.sh --memcheck
markrad 0:cdf462088d13 487 fi
markrad 0:cdf462088d13 488
markrad 0:cdf462088d13 489 fi # MemSan
markrad 0:cdf462088d13 490
markrad 0:cdf462088d13 491 msg "build: cmake 'out-of-source' build"
markrad 0:cdf462088d13 492 cleanup
markrad 0:cdf462088d13 493 MBEDTLS_ROOT_DIR="$PWD"
markrad 0:cdf462088d13 494 mkdir "$OUT_OF_SOURCE_DIR"
markrad 0:cdf462088d13 495 cd "$OUT_OF_SOURCE_DIR"
markrad 0:cdf462088d13 496 cmake "$MBEDTLS_ROOT_DIR"
markrad 0:cdf462088d13 497 make
markrad 0:cdf462088d13 498
markrad 0:cdf462088d13 499 msg "test: cmake 'out-of-source' build"
markrad 0:cdf462088d13 500 make test
markrad 0:cdf462088d13 501 cd "$MBEDTLS_ROOT_DIR"
markrad 0:cdf462088d13 502 rm -rf "$OUT_OF_SOURCE_DIR"
markrad 0:cdf462088d13 503
markrad 0:cdf462088d13 504 msg "Done, cleaning up"
markrad 0:cdf462088d13 505 cleanup
markrad 0:cdf462088d13 506