shithub: m8c

ref: 60acc4ce5fad1d7a6ce340084aa7ec3210714e45
dir: /.github/workflows/build.yml/

View raw version
name: m8c build

on:
  push:
  pull_request:
  workflow_dispatch:

jobs:
  build-win:
    runs-on: windows-latest
    strategy:
      fail-fast: false
      matrix:
        include:
          - { sys: mingw32, env: i686, win: win32 }
          - { sys: mingw64, env: x86_64, win: win64 }
    name: ${{ matrix.win }}
    defaults:
      run:
        shell: msys2 {0}
    env:
      MINGW_ARCH: ${{ matrix.sys }}
    steps:

    - name: 'git config'
      run: git config --global core.autocrlf input
      shell: bash

    - name: 'Checkout'
      uses: actions/checkout@v3
      with:
        fetch-depth: 0

    - name: 'Setup MSYS2'
      uses: msys2/setup-msys2@v2
      with:
        msystem: ${{ matrix.sys }}
        update: true
        install: mingw-w64-${{ matrix.env }}-toolchain make mingw-w64-${{ matrix.env }}-SDL2 mingw-w64-${{ matrix.env }}-libserialport zip dos2unix
  
    - name: Set current date as env variable
      run: echo "NOW=$(date +'%Y-%m-%d')" >> $GITHUB_ENV

    - name: 'Build package'
      run: |
        make
        strip -g m8c.exe
        if [ ${{ matrix.win }} == "win32" ]
        then        
          cp /mingw32/bin/SDL2.dll .
          cp /mingw32/bin/libgcc_s_dw2-1.dll .
          cp /mingw32/bin/libserialport-0.dll .
          cp /mingw32/bin/libwinpthread-1.dll .
        else
          cp /mingw64/bin/SDL2.dll .
          cp /mingw64/bin/libserialport-0.dll .
        fi
        unix2dos README.md config.ini.sample LICENSE AUDIOGUIDE.md
    - name: 'Upload artifact (win32)'
      if: matrix.win == 'win32'
      uses: actions/upload-artifact@v3
      with:
        name: m8c-${{ env.NOW }}-${{ matrix.win }}
        path: |
          m8c.exe
          SDL2.dll
          libserialport-0.dll
          libgcc_s_dw2-1.dll
          libwinpthread-1.dll
          gamecontrollerdb.txt
          LICENSE
          README.md
          AUDIOGUIDE.md
          config.ini.sample
    - name: 'Upload artifact (win64)'
      if: matrix.win == 'win64'
      uses: actions/upload-artifact@v3
      with:
        name: m8c-${{ env.NOW }}-${{ matrix.win }}
        path: |
          m8c.exe
          SDL2.dll
          libserialport-0.dll
          gamecontrollerdb.txt
          LICENSE
          README.md
          AUDIOGUIDE.md
          config.ini.sample

  build-linux:
    runs-on: ubuntu-latest
    name: linux-x86_64
    steps:
      - name: 'Install dependencies'
        run: |
          sudo apt-get update
          sudo apt-get install --fix-missing build-essential libsdl2-dev libserialport-dev zip
      - name: 'Checkout'
        uses: actions/checkout@v3

      - name: Set current date as env variable
        run: echo "NOW=$(date +'%Y-%m-%d')" >> $GITHUB_ENV

      - name: 'Build package'
        run: |
          make
      - name: 'Upload artifact'
        uses: actions/upload-artifact@v3
        with:
          name: m8c-${{ env.NOW }}-linux
          path: |
            LICENSE
            README.md
            AUDIOGUIDE.md
            m8c
            gamecontrollerdb.txt
            config.ini.sample
      
  build-macos:
    runs-on: macos-latest
    
    steps:
      - name: 'Install dependencies'
        run: brew install cmake sdl2 libserialport pkg-config

      - name: 'Checkout'
        uses: actions/checkout@v3

      - name: Set current date as env variable
        run: echo "NOW=$(date +'%Y-%m-%d')" >> $GITHUB_ENV        

      - name: 'Build package'
        run: |
          INSTALL_PREFIX=/tmp/
          mkdir build && cd build
          cmake ..
          cmake --build .
          cmake --install . --prefix=$INSTALL_PREFIX
          codesign --deep --force --verify --verbose --timestamp --sign - "$INSTALL_PREFIX/m8c.app" "$INSTALL_PREFIX/m8c.app/Contents/Frameworks/libSDL2-2.0.0.dylib" "$INSTALL_PREFIX/m8c.app/Contents/Frameworks/libserialport.0.dylib"
          cd ..
          cp -r /tmp/m8c.app .
          zip -r m8c.zip m8c.app LICENSE README.md AUDIOGUIDE.md config.ini.sample gamecontrollerdb.txt
      - name: 'Upload artifact'
        uses: actions/upload-artifact@v3
        with:
          name: m8c-${{ env.NOW }}-macos
          path: m8c.zip