distributable:
  url: https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v{{version}}.tar.gz
  strip-components: 1

versions:
  github: Mbed-TLS/mbedtls

provides:
  - bin/generic_sum

build:
  dependencies:
    cmake.org: '*'
    linux/aarch64:
      llvm.org: <16 # otherwise we get an error from the arm_neon.h include
    python.org: ~3.11
  script:
    # MBEDTLS_THREADING_PTHREAD - enable pthread mutexes
    # MBEDTLS_THREADING_C - allow use of mutexes within mbed TLS
    # MBEDTLS_SSL_DTLS_SRTP - enable DTLS-SRTP extension
    - run: CFG=include/mbedtls/mbedtls_config.h
      if: '>=3'
    - run: CFG=include/mbedtls/config.h
      if: '<3'

    - |
      sed -i.bak \
        -e "s://#define MBEDTLS_THREADING_PTHREAD:#define MBEDTLS_THREADING_PTHREAD:" \
        -e "s://#define MBEDTLS_THREADING_C:#define MBEDTLS_THREADING_C:" \
        -e "s://#define MBEDTLS_SSL_DTLS_SRTP:#define MBEDTLS_SSL_DTLS_SRTP:" \
        $CFG
      rm $CFG.bak

    - cmake -S . -B build $ARGS
    - cmake --build build

    # We run CTest because this is a crypto library. Running tests in parallel causes failures.
    # https://github.com/Mbed-TLS/mbedtls/issues/4980
    - ctest --parallel 1 --test-dir build --rerun-failed --output-on-failure
    - cmake --install build

    # Why does Mbedtls ship with a "Hello World" executable. Let's remove that.
    - run: rm -f hello
      working-directory: ${{prefix}}/bin/

    # Rename benchmark & selftest, which are awfully generic names.
    - run: |
        mv benchmark mbedtls-benchmark
        mv selftest mbedtls-selftest
      working-directory: ${{prefix}}/bin

    # Demonstration files shouldn't be in the main bin
    - run: mv ../bin/mpi_demo mpi_demo
      working-directory: ${{prefix}}/libexec
  env:
    ARGS:
      - -DCMAKE_BUILD_TYPE=Release
      - -DCMAKE_INSTALL_PREFIX={{prefix}}
      - -DUSE_SHARED_MBEDTLS_LIBRARY=On
      - -DPython3_EXECUTABLE=$(which python3)
      - -DCMAKE_INSTALL_RPATH={{prefix}}
      - -DGEN_FILES=OFF

test:
  script:
    - printf '%s' 'This is a test file' > testfile.txt
    - test "$(generic_sum SHA256 testfile.txt)" = "$SUM"
  env:
    SUM: e2d0fe1585a63ec6009c8016ff8dda8b17719a637405a4e23c0ff81339148249  testfile.txt
