name: CI

# Controls when the action will run.
on:
  # Triggers the workflow on push or pull request events but only for the master branch
  push:
    branches: [ github-actions ]
  pull_request:
    branches: [ github-actions ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:

  build-sim:
    name: Build & test
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
       include:
         - MEVAL: "export CC=clang && CXX=clang"
         - HOST: "i386-pc-linux-gnu"
           MEVAL: 'export CC="gcc -m32" && CXX="g++ -m32"'
         - CONFIGURE_OPTIONS: "--disable-shared"
         - CONFIGURE_OPTIONS: "--enable-shared"
         - HOST: "m68k-linux-gnu"
           MEVAL: 'export CC="m68k-linux-gnu-gcc-8 -mcpu=547x" && CXX="m68k-linux-gnu-g++-8 -mcpu=547x"'
           CONFIGURE_OPTIONS: '--disable-shared'
           QEMU_LD_PREFIX: '/usr/m68k-linux-gnu'
           QEMU_CPU: 'cfv4e'
         - HOST: "sh4-linux-gnu"
           CONFIGURE_OPTIONS: "--disable-shared"
           QEMU_LD_PREFIX: "/usr/sh4-linux-gnu"
         - HOST: "alpha-linux-gnu"
           CONFIGURE_OPTIONS: "--disable-shared"
           QEMU_LD_PREFIX: "/usr/alpha-linux-gnu"
         - HOST: "arm32v7-linux-gnu"
           LIBFFI_TEST_OPTIMIZATION: "-O0"
         - HOST: "arm32v7-linux-gnu"
           LIBFFI_TEST_OPTIMIZATION: "-O2"
         - HOST: "arm32v7-linux-gnu"
           LIBFFI_TEST_OPTIMIZATION: "-O2 -fomit-frame-pointer"
         - HOST: "powerpc-eabisim"
           RUNTESTFLAGS: "--target_board powerpc-eabisim"
         - HOST: "or1k-elf"
           RUNTESTFLAGS: "--target_board or1k-sim"
         - HOST: "m32r-elf"
           RUNTESTFLAGS: "--target_board m32-sim"
         - HOST: "bfin-elf"
           RUNTESTFLAGS: "--target_board bfin-sim"
         - MEVAL: "export PATH=/opt/moxielogic/bin:$PATH && CC=moxie-elf-gcc && CXX=moxie-elf-g++"
           HOST: "moxie-elf"
           LDFLAGS: "-Tsim.ld"
           RUNTESTFLAGS: "--target_board moxie-sim"

    steps:
      - uses: actions/checkout@v2

      - env:
          MEVAL: ${{ matrix.MEVAL }}
          HOST: ${{ matrix.HOST }}
          LDFLAGS: ${{ matrix.LDFLAGS }}
          RUNTESTFLAGS: ${{ matrix.RUNTESTFLAGS }}
          CONFIGURE_OPTIONS: ${{ matrix.CONFIGURE_OPTIONS }}
          QEMU_LD_PREFIX: ${{ matrix.QEMU_LD_PREFIX }}
          QEMU_CPU: ${{ matrix.QEMU_CPU }}
        run: |
          if test x"$MEVAL" != x; then eval ${MEVAL}; fi
          ./.ci/install.sh
          ./.ci/build.sh

  build:
    name: Build & test with Cygwin
    runs-on: windows-latest

    strategy:
      fail-fast: false
      matrix:
        platform: [windows-latest]

    steps:
      - uses: actions/checkout@v2

      - name: Set up Cygwin
        uses: egor-tensin/setup-cygwin@v3
        with:
          platform: x64
          packages: wget gcc-core make dejagnu automake autoconf libtool texinfo dos2unix unzip

      - run: |
          cd $(cygpath $RUNNER_WORKSPACE)/libffi
          wget https://rl.gl/cli/rlgl-windows-amd64.zip
          unzip rlgl-windows-amd64.zip
          find . -name \*.m4|xargs dos2unix
          find . -name \*.ac|xargs dos2unix
          find . -name \*.am|xargs dos2unix
          find . -name \*.host|xargs dos2unix
          autoreconf -f -v -i
          ./configure
          find . -name libtool\*|xargs dos2unix
          make -j 4
          TERM=none export DEJAGNU=$(pwd)/.ci/site.exp BOARDSDIR=$(pwd)/.ci make check || true
          ./rlgl/rlgl.exe l --key=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI https://rl.gl
          ID=$(./rlgl/rlgl.exe start)
          ./rlgl/rlgl.exe e --id=$ID --policy=https://github.com/libffi/rlgl-policy.git $(find . -name libffi.log)
        shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'

  build-msvc:
    name: Build & test with Visual C++
    runs-on: windows-latest

    strategy:
      fail-fast: false
      matrix:
        platform: [windows-latest]

    steps:
      - uses: actions/checkout@v2
      - uses: egor-tensin/setup-cygwin@v3
        with:
          platform: x64
          packages: wget make dejagnu automake autoconf libtool texinfo unzip dos2unix
      - uses: ilammy/msvc-dev-cmd@v1.8.1
      - uses: microsoft/setup-msbuild@v1.0.2

      - name: Build and test
        run: |
          dos2unix $(cygpath $RUNNER_WORKSPACE)/libffi/.ci/msvs-detect
          # $(cygpath $RUNNER_WORKSPACE)/libffi/.ci/msvs-detect --arch=x64 --with-assembler
          export PATH=$PATH:"/cygdrive/c/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.16.27023/bin/HostX64/x64"
          cd $(cygpath $RUNNER_WORKSPACE)/libffi
          wget https://rl.gl/cli/rlgl-windows-amd64.zip
          unzip rlgl-windows-amd64.zip
          find . -name \*.sh|xargs dos2unix
          find . -name \*.m4|xargs dos2unix
          find . -name \*.ac|xargs dos2unix
          find . -name \*.am|xargs dos2unix
          find . -name \*.host|xargs dos2unix
          dos2unix .ci/ar-lib
          autoreconf -f -v -i
          ./configure CC="$(pwd)/msvcc.sh -m64" CXX="$(pwd)/msvcc.sh -m64" LD='link' CPP='cl -nologo -EP' CXXCPP='cl -nologo -EP' CPPFLAGS='-DFFI_BUILDING_DLL' AR='$(pwd)/.ci/ar-lib lib' NM='dumpbin -symbols' STRIP=':' --build=$BUILD --host=$HOST $DEBUG_ARG $SHARED_ARG || cat */config.log
          find . -name libtool\*|xargs dos2unix
          make
          cp $(find . -name 'libffi-?.dll') x86_64-pc-cygwin/testsuite/
          TERM=none DEJAGNU=$(pwd)/.ci/site.exp BOARDSDIR=$(pwd)/.ci make check || true
          ./rlgl/rlgl.exe l --key=0LIBFFI-0LIBFFI-0LIBFFI-0LIBFFI https://rl.gl
          ID=$(./rlgl/rlgl.exe start)
          ./rlgl/rlgl.exe e --id=$ID --policy=https://github.com/libffi/rlgl-policy.git $(find . -name libffi.log)
        shell: C:\tools\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
