#!/bin/sh -e

okabi | (
  while read abi
  do

    rm -f randombytes.o randombytes.h
    
    (
      echo devurandom
    ) | (
      while read n
      do
        okc-$abi | (
          while read c
          do
            echo "=== `date` === Trying $n.c with $c..." >&2
            rm -f test randombytes-impl.o randombytes-impl.h randombytes-impl.c
            cp $n.c randombytes-impl.c || continue
            cp $n.h randombytes-impl.h || continue
            $c -c randombytes-impl.c || continue
            $c -o test test.c randombytes-impl.o || continue
            ./test || continue
            echo "=== `date` === Success. Using $n.c." >&2
            mkdir -p lib/$abi
            mv randombytes-impl.o lib/$abi/randombytes.o
            mkdir -p include/$abi
            mv randombytes-impl.h include/$abi/randombytes.h
            exit 0
          done
          exit 111
        ) && exit 0
      done
      exit 111
    ) || (
      echo ===== Giving up. >&2
      rm -f test randombytes-impl.o randombytes-impl.h randombytes-impl.c
      exit 111
    ) || exit 111

  done
  exit 0
) || exit 111
