@@ -159,6 +159,12 @@ jobs:
159159 otp : " master"
160160 elixir_version : " main"
161161
162+ # Additional mbedtls@4 coverage with the default Linux toolchain
163+ - cc : " cc"
164+ cxx : " c++"
165+ otp : " 28"
166+ mbedtls : " mbedtls@4"
167+
162168 # Additional latest & -Os compiler builds
163169 - cc : " gcc-14"
164170 cxx : " g++-14"
@@ -494,13 +500,26 @@ jobs:
494500 run : sudo apt update -y
495501
496502 - name : " Install deps"
497- if : matrix.container != ''
498- run : sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind libmbedtls-dev
503+ if : matrix.container != '' && matrix.mbedtls != 'mbedtls@4'
504+ run : |
505+ sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind libmbedtls-dev
506+
507+ - name : " Install deps (MbedTLS 4)"
508+ if : matrix.container != '' && matrix.mbedtls == 'mbedtls@4'
509+ run : |
510+ sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind
499511
500512 - name : " Install deps"
501- if : matrix.container == ''
513+ if : matrix.container == '' && matrix.mbedtls != 'mbedtls@4'
514+ run : |
515+ sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen libc6-dbg libmbedtls-dev
516+ # Get a more recent valgrind
517+ sudo snap install valgrind --classic
518+
519+ - name : " Install deps (MbedTLS 4)"
520+ if : matrix.container == '' && matrix.mbedtls == 'mbedtls@4'
502521 run : |
503- sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen libmbedtls-dev libc6-dbg
522+ sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen libc6-dbg
504523 # Get a more recent valgrind
505524 sudo snap install valgrind --classic
506525
@@ -536,6 +555,19 @@ jobs:
536555 https://repo.hex.pm
537556 https://cdn.jsdelivr.net/hex
538557
558+ - name : " Install specific MbedTLS version"
559+ if : matrix.mbedtls == 'mbedtls@4'
560+ run : |
561+ git clone --depth 1 --branch mbedtls-4.0.0 --recurse-submodules https://github.com/Mbed-TLS/mbedtls
562+ cd mbedtls
563+ mkdir build
564+ cd build
565+ cmake -DENABLE_TESTING=OFF -DUSE_SHARED_MBEDTLS_LIBRARY=On -DCMAKE_INSTALL_PREFIX=/usr/local ..
566+ make -j$(nproc)
567+ sudo make install
568+ sudo ldconfig
569+ echo "MBEDTLS_ROOT_DIR=/usr/local" >> $GITHUB_ENV
570+
539571 # Builder info
540572 - name : " System info"
541573 run : |
@@ -566,13 +598,23 @@ jobs:
566598 key : ${{ matrix.otp || env.DEFAULT_OTP_VERSION }}-${{ hashFiles('**/build-and-test.yaml', 'tests/**/*.erl', 'tests/**/*.hrl', 'tests/**/*.ex') }}-${{ matrix.jit_target_arch || 'nojit' }}-${{ contains(matrix.cmake_opts_other, 'AVM_DISABLE_JIT_DWARF=OFF') && 'dwarf' || 'nodwarf' }}
567599
568600 - name : " Build: run cmake"
601+ if : matrix.mbedtls != 'mbedtls@4'
569602 working-directory : build
570603 run : |
571604 cmake ${{ matrix.cmake_opts_fp }} ${{ matrix.cmake_opts_smp }} ${{ matrix.cmake_opts_other || env.DEFAULT_CMAKE_OPTS_OTHER }} ..
572605 # git clone will use more recent timestamps than cached beam files
573606 # touch them so we can benefit from the cache and avoid costly beam file rebuild.
574607 find . -name '*.beam' -exec touch {} \;
575608
609+ - name : " Build: run cmake (MbedTLS 4)"
610+ if : matrix.mbedtls == 'mbedtls@4'
611+ working-directory : build
612+ run : |
613+ cmake -DMBEDTLS_ROOT_DIR=/usr/local ${{ matrix.cmake_opts_fp }} ${{ matrix.cmake_opts_smp }} ${{ matrix.cmake_opts_other || env.DEFAULT_CMAKE_OPTS_OTHER }} ..
614+ # git clone will use more recent timestamps than cached beam files
615+ # touch them so we can benefit from the cache and avoid costly beam file rebuild.
616+ find . -name '*.beam' -exec touch {} \;
617+
576618 - name : " Build: run make"
577619 working-directory : build
578620 run : make -j3
0 commit comments