From dc192215f415f4aea36589703dc3ab060ef5a062 Mon Sep 17 00:00:00 2001 From: Andres AG Date: Wed, 31 Aug 2016 17:33:13 +0100 Subject: [PATCH] Allow cmake 'out-of-source' builds Allow mbed TLS to be build in a subdirectory. Also add a test in all.sh --- CMakeLists.txt | 2 +- tests/scripts/all.sh | 29 ++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a02ef1c1..a7ebfc155 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,7 +31,7 @@ find_package(Perl) if(PERL_FOUND) # If NULL Entropy is configured, display an appropriate warning - execute_process(COMMAND ${PERL_EXECUTABLE} scripts/config.pl get MBEDTLS_TEST_NULL_ENTROPY + execute_process(COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/scripts/config.pl -f ${CMAKE_SOURCE_DIR}/include/mbedtls/config.h get MBEDTLS_TEST_NULL_ENTROPY RESULT_VARIABLE result) if(${result} EQUAL 0) message(WARNING ${NULL_ENTROPY_WARNING}) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index be32dce12..5060f10d8 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -34,6 +34,8 @@ MEMORY=0 SHORT=0 FORCE=0 +: ${OUT_OF_SOURCE_DIR:=./mbedtls_out_of_source_build} + usage() { echo "Usage: $0" @@ -41,6 +43,7 @@ usage() echo -e " -m|--memory\t\tAdditional optional memory tests." echo -e " -s|--short\t\tSubset of tests." echo -e " -f|--force\t\tForce the tests to overwrite any modified files." + echo -e " --out-of-source-dir\t\tDirectory used for CMake out-of-source build tests." } # remove built files as well as the cmake cache/config @@ -80,6 +83,10 @@ while [ $# -gt 0 ]; do --force|-f) FORCE=1 ;; + --out-of-source-dir) + shift + OUT_OF_SOURCE_DIR="$1" + ;; --help|-h|*) usage() exit 1 @@ -89,7 +96,7 @@ while [ $# -gt 0 ]; do done if [ $FORCE -eq 1 ]; then - rm -rf yotta/module + rm -rf yotta/module "$OUT_OF_SOURCE_DIR" git checkout-index -f -q $CONFIG_H cleanup else @@ -101,6 +108,13 @@ else exit 1 fi + if [ -d "$OUT_OF_SOURCE_DIR" ]; then + echo "Warning - there is an existing directory at '$OUT_OF_SOURCE_DIR'" >&2 + echo "You can either delete this directory manually, or force the test by rerunning" + echo "the script as: $0 --force --out-of-source-dir $OUT_OF_SOURCE_DIR" + exit 1 + fi + if ! git diff-files --quiet include/mbedtls/config.h; then echo $? echo "Warning - the configuration file 'include/mbedtls/config.h' has been edited. " >&2 @@ -400,6 +414,19 @@ fi fi # MemSan +msg "build: cmake 'out-of-source' build" +cleanup +MBEDTLS_ROOT_DIR="$PWD" +mkdir "$OUT_OF_SOURCE_DIR" +cd "$OUT_OF_SOURCE_DIR" +cmake "$MBEDTLS_ROOT_DIR" +make + +msg "test: cmake 'out-of-source' build" +make test +cd "$MBEDTLS_ROOT_DIR" +rm -rf "$OUT_OF_SOURCE_DIR" + msg "Done, cleaning up" cleanup