quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

components-build-system.sh (7247B)


      1 # components-build-system.sh
      2 #
      3 # Copyright The Mbed TLS Contributors
      4 # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
      5 
      6 # This file contains test components that are executed by all.sh
      7 
      8 ################################################################
      9 #### Build System Testing
     10 ################################################################
     11 
     12 component_test_make_shared () {
     13     msg "build/test: make shared" # ~ 40s
     14     make SHARED=1 TEST_CPP=1 all check
     15     ldd programs/util/strerror | grep libmbedcrypto
     16     $FRAMEWORK/tests/programs/dlopen_demo.sh
     17 }
     18 
     19 component_test_cmake_shared () {
     20     msg "build/test: cmake shared" # ~ 2min
     21     cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On .
     22     make
     23     ldd programs/util/strerror | grep libmbedcrypto
     24     make test
     25     $FRAMEWORK/tests/programs/dlopen_demo.sh
     26 }
     27 
     28 support_test_cmake_out_of_source () {
     29     distrib_id=""
     30     distrib_ver=""
     31     distrib_ver_minor=""
     32     distrib_ver_major=""
     33 
     34     # Attempt to parse lsb-release to find out distribution and version. If not
     35     # found this should fail safe (test is supported).
     36     if [[ -f /etc/lsb-release ]]; then
     37 
     38         while read -r lsb_line; do
     39             case "$lsb_line" in
     40                 "DISTRIB_ID"*) distrib_id=${lsb_line/#DISTRIB_ID=};;
     41                 "DISTRIB_RELEASE"*) distrib_ver=${lsb_line/#DISTRIB_RELEASE=};;
     42             esac
     43         done < /etc/lsb-release
     44 
     45         distrib_ver_major="${distrib_ver%%.*}"
     46         distrib_ver="${distrib_ver#*.}"
     47         distrib_ver_minor="${distrib_ver%%.*}"
     48     fi
     49 
     50     # Running the out of source CMake test on Ubuntu 16.04 using more than one
     51     # processor (as the CI does) can create a race condition whereby the build
     52     # fails to see a generated file, despite that file actually having been
     53     # generated. This problem appears to go away with 18.04 or newer, so make
     54     # the out of source tests unsupported on Ubuntu 16.04.
     55     [ "$distrib_id" != "Ubuntu" ] || [ "$distrib_ver_major" -gt 16 ]
     56 }
     57 
     58 component_test_cmake_out_of_source () {
     59     # Remove existing generated files so that we use the ones cmake
     60     # generates
     61     make neat
     62 
     63     msg "build: cmake 'out-of-source' build"
     64     MBEDTLS_ROOT_DIR="$PWD"
     65     mkdir "$OUT_OF_SOURCE_DIR"
     66     cd "$OUT_OF_SOURCE_DIR"
     67     # Note: Explicitly generate files as these are turned off in releases
     68     cmake -D CMAKE_BUILD_TYPE:String=Check -D GEN_FILES=ON -D TEST_CPP=1 "$MBEDTLS_ROOT_DIR"
     69     make
     70 
     71     msg "test: cmake 'out-of-source' build"
     72     make test
     73     # Check that ssl-opt.sh can find the test programs.
     74     # Also ensure that there are no error messages such as
     75     # "No such file or directory", which would indicate that some required
     76     # file is missing (ssl-opt.sh tolerates the absence of some files so
     77     # may exit with status 0 but emit errors).
     78     ./tests/ssl-opt.sh -f 'Default' >ssl-opt.out 2>ssl-opt.err
     79     grep PASS ssl-opt.out
     80     cat ssl-opt.err >&2
     81     # If ssl-opt.err is non-empty, record an error and keep going.
     82     [ ! -s ssl-opt.err ]
     83     rm ssl-opt.out ssl-opt.err
     84     cd "$MBEDTLS_ROOT_DIR"
     85     rm -rf "$OUT_OF_SOURCE_DIR"
     86 }
     87 
     88 component_test_cmake_as_subdirectory () {
     89     # Remove existing generated files so that we use the ones CMake
     90     # generates
     91     make neat
     92 
     93     msg "build: cmake 'as-subdirectory' build"
     94     cd programs/test/cmake_subproject
     95     # Note: Explicitly generate files as these are turned off in releases
     96     cmake -D GEN_FILES=ON .
     97     make
     98     ./cmake_subproject
     99 }
    100 
    101 support_test_cmake_as_subdirectory () {
    102     support_test_cmake_out_of_source
    103 }
    104 
    105 component_test_cmake_as_package () {
    106     # Remove existing generated files so that we use the ones CMake
    107     # generates
    108     make neat
    109 
    110     msg "build: cmake 'as-package' build"
    111     root_dir="$(pwd)"
    112     cd programs/test/cmake_package
    113     build_variant_dir="$(pwd)"
    114     cmake .
    115     make
    116     ./cmake_package
    117     if [[ "$OSTYPE" == linux* ]]; then
    118         PKG_CONFIG_PATH="${build_variant_dir}/mbedtls/pkgconfig" \
    119         ${root_dir}/framework/scripts/pkgconfig.sh \
    120         mbedtls mbedx509 mbedcrypto
    121         # These are the EXPECTED package names. Renaming these could break
    122         # consumers of pkg-config, consider carefully.
    123     fi
    124 }
    125 
    126 support_test_cmake_as_package () {
    127     support_test_cmake_out_of_source
    128 }
    129 
    130 component_test_cmake_as_package_install () {
    131     # Remove existing generated files so that we use the ones CMake
    132     # generates
    133     make neat
    134 
    135     msg "build: cmake 'as-installed-package' build"
    136     cd programs/test/cmake_package_install
    137     cmake .
    138     make
    139     ./cmake_package_install
    140 }
    141 
    142 support_test_cmake_as_package_install () {
    143     support_test_cmake_out_of_source
    144 }
    145 
    146 component_build_cmake_custom_config_file () {
    147     # Make a copy of config file to use for the in-tree test
    148     cp "$CONFIG_H" include/mbedtls_config_in_tree_copy.h
    149 
    150     MBEDTLS_ROOT_DIR="$PWD"
    151     mkdir "$OUT_OF_SOURCE_DIR"
    152     cd "$OUT_OF_SOURCE_DIR"
    153 
    154     # Build once to get the generated files (which need an intact config file)
    155     cmake "$MBEDTLS_ROOT_DIR"
    156     make
    157 
    158     msg "build: cmake with -DMBEDTLS_CONFIG_FILE"
    159     scripts/config.py -w full_config.h full
    160     echo '#error "cmake -DMBEDTLS_CONFIG_FILE is not working."' > "$MBEDTLS_ROOT_DIR/$CONFIG_H"
    161     cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h "$MBEDTLS_ROOT_DIR"
    162     make
    163 
    164     msg "build: cmake with -DMBEDTLS_CONFIG_FILE + -DMBEDTLS_USER_CONFIG_FILE"
    165     # In the user config, disable one feature (for simplicity, pick a feature
    166     # that nothing else depends on).
    167     echo '#undef MBEDTLS_NIST_KW_C' >user_config.h
    168 
    169     cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h -DMBEDTLS_USER_CONFIG_FILE=user_config.h "$MBEDTLS_ROOT_DIR"
    170     make
    171     not programs/test/query_compile_time_config MBEDTLS_NIST_KW_C
    172 
    173     rm -f user_config.h full_config.h
    174 
    175     cd "$MBEDTLS_ROOT_DIR"
    176     rm -rf "$OUT_OF_SOURCE_DIR"
    177 
    178     # Now repeat the test for an in-tree build:
    179 
    180     # Restore config for the in-tree test
    181     mv include/mbedtls_config_in_tree_copy.h "$CONFIG_H"
    182 
    183     # Build once to get the generated files (which need an intact config)
    184     cmake .
    185     make
    186 
    187     msg "build: cmake (in-tree) with -DMBEDTLS_CONFIG_FILE"
    188     scripts/config.py -w full_config.h full
    189     echo '#error "cmake -DMBEDTLS_CONFIG_FILE is not working."' > "$MBEDTLS_ROOT_DIR/$CONFIG_H"
    190     cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h .
    191     make
    192 
    193     msg "build: cmake (in-tree) with -DMBEDTLS_CONFIG_FILE + -DMBEDTLS_USER_CONFIG_FILE"
    194     # In the user config, disable one feature (for simplicity, pick a feature
    195     # that nothing else depends on).
    196     echo '#undef MBEDTLS_NIST_KW_C' >user_config.h
    197 
    198     cmake -DGEN_FILES=OFF -DMBEDTLS_CONFIG_FILE=full_config.h -DMBEDTLS_USER_CONFIG_FILE=user_config.h .
    199     make
    200     not programs/test/query_compile_time_config MBEDTLS_NIST_KW_C
    201 
    202     rm -f user_config.h full_config.h
    203 }
    204 
    205 support_build_cmake_custom_config_file () {
    206     support_test_cmake_out_of_source
    207 }
    208 
    209 component_build_cmake_programs_no_testing () {
    210     # Verify that the type of builds performed by oss-fuzz don't get accidentally broken
    211     msg "build: cmake with -DENABLE_PROGRAMS=ON and -DENABLE_TESTING=OFF"
    212     cmake -DENABLE_PROGRAMS=ON -DENABLE_TESTING=OFF .
    213     make
    214 }
    215 
    216 support_build_cmake_programs_no_testing () {
    217     support_test_cmake_out_of_source
    218 }