distributable:
  url: https://github.com/xianyi/OpenBLAS/releases/download/v{{version}}/OpenBLAS-{{version}}.tar.gz
  strip-components: 1

versions:
  github: xianyi/OpenBLAS/releases/tags
  strip: /^v/

platforms:
  - linux
  - darwin/aarch64
  # FIXME: illegal instruction on darwin/x86-64

build:
  dependencies:
    cmake.org: '*'
  working-directory: build
  script:
    - cmake .. -DCMAKE_INSTALL_PREFIX="{{prefix}}" -DCMAKE_BUILD_TYPE=Release
    - make --jobs {{ hw.concurrency }} $ARGS
    - make install

    ## removing a redundant directory with a duplicate file
    - run: rm -r openblas/openblas
      working-directory: ${{prefix}}/include
    - run: |
        mv openblas/* .
        rmdir openblas
        ln -s . openblas
      working-directory: ${{prefix}}/include
  # FIXME: illegal instruction on darwin/x86-64
  # line 25:  2290 Illegal instruction: 4  ./a.out
  # env:
  #   darwin/x86-64:
  #     ARGS:
  #       - TARGET=CORE2

test:
  fixture: |
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include "cblas.h"

    int main(void) {
      int i;
      double A[6] = {1.0, 2.0, 1.0, -3.0, 4.0, -1.0};
      double B[6] = {1.0, 2.0, 1.0, -3.0, 4.0, -1.0};
      double C[9] = {.5, .5, .5, .5, .5, .5, .5, .5, .5};
      cblas_dgemm(CblasColMajor, CblasNoTrans, CblasTrans,
                  3, 3, 2, 1, A, 3, B, 3, 2, C, 3);
      for (i = 0; i < 9; i++)
        printf("%lf ", C[i]);
      printf("\\n");
      if (fabs(C[0]-11) > 1.e-5) abort();
      if (fabs(C[4]-21) > 1.e-5) abort();
      return 0;
    }
  script: |
    mv $FIXTURE test.c
    cc test.c -lopenblas -pthread $CFLAGS $LDFLAGS
    ./a.out
