distributable:
  url: https://github.com/facebook/mvfst/archive/v{{version.raw}}.tar.gz
  strip-components: 1
versions:
  github: facebook/mvfst/tags
dependencies:
  boost.org: '*'
  github.com/facebookincubator/fizz: '*'
  fmt.dev: '*'
  facebook.com/folly: '*'
  gflags.github.io: '*'
  google.com/glog: '*'
  openssl.org: '*'
  linux:
    libsodium.org: ^1.0.19
build:
  dependencies:
    cmake.org: '*'
    linux:
      gnu.org/gcc: '*'
      gnu.org/make: '*'
  script:
    - cmake -S . -B _build $CMAKE_ARGS
    - cmake --build _build
    - cmake --install _build
  env:
    CMAKE_ARGS:
      - -DCMAKE_INSTALL_PREFIX="{{prefix}}
      - -DCMAKE_INSTALL_LIBDIR=lib
      - -DCMAKE_BUILD_TYPE=Release
      - -DCMAKE_FIND_FRAMEWORK=LAST
      - -DCMAKE_VERBOSE_MAKEFILE=ON
      - -Wno-dev
      - -DBUILD_TESTING=OFF
      - -DBUILD_TESTS=OFF
      - -DCMAKE_POSITION_INDEPENDENT_CODE=ON
test:
  dependencies:
    google.com/googletest: '*'
    cmake.org: '*'
    gnu.org/gawk: '*'
    linux:
      gnu.org/gcc: '*'
      gnu.org/make: '*'
      curl.se: '*'
  script:
    - PADDED_VERSION=$(echo "{{version}}" | gawk -F. '{printf "%04d.%02d.%02d.%02d\n", $1, $2, $3, $4}')
    - curl -L "https://github.com/facebook/mvfst/archive/v$PADDED_VERSION.tar.gz" | tar -xz --strip-components=1
    - cmake . $CMAKE_ARGS
    - cmake --build .

      # Function to check if the port is free
    - |
      is_port_free() {
          local port_to_check=$1
          (echo >/dev/tcp/127.0.0.1/$port_to_check) &>/dev/null
      }
    # Start checking ports with 7000
    - current_port=7000
    # Find a free port
    - |
      while is_port_free $current_port; do
          ((current_port++))
      done
    - ./echo --mode server --host 127.0.0.1 --port $current_port &
    -  sleep 15
    - ./echo --mode client --host 127.0.0.1 --port $current_port &
    - sleep 15
    - killall echo || true
  env:
    CMAKE_ARGS:
      - -DCMAKE_INSTALL_PREFIX="{{prefix}}
      - -DCMAKE_INSTALL_LIBDIR=lib
      - -DCMAKE_BUILD_TYPE=Release
      - -DCMAKE_FIND_FRAMEWORK=LAST
      - -DCMAKE_VERBOSE_MAKEFILE=ON
      - -Wno-dev
      - -DBUILD_TESTING=OFF
