about summary refs log tree commit diff stats
path: root/.github/workflows/release.yml
blob: e0d947e1b371b6cd9903f596467f6103587c5833 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
### Auto build Box64 and release its binary with Github Action
name: Build and Release Box64

on:
  workflow_dispatch:
  release:
  push:
    paths:
      - "**/*.c"
      - "**/*.h"
      - "**/*.S"
      - "**/*.py"
      - "CMakeLists.txt"
      - "**/*.yml"
  pull_request:
    types: [assigned, opened, synchronize, reopened]
    paths:
      - "**/*.c"
      - "**/*.h"
      - "**/*.S"
      - "**/*.py"
      - "CMakeLists.txt"
      - "**/*.yml"

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        platform: [X64, OTHER_ARM, RISCV, RPI4ARM64, RK3326, RK3399, RK3288, TEGRAX1, PHYTIUM, SD845]
        type: [Release, Trace]

    runs-on: ubuntu-latest
    steps:
      - name: "Checkout Box64 Repository"
        uses: actions/checkout@v2

      - name: "Environment preparation"
        run: |
          sudo apt-get update
          if [[ ${{ matrix.platform }} != 'X64' && ${{ matrix.platform }} != 'OTHER_ARM' && ${{ matrix.platform }} != 'RISCV' ]]; then
            echo "BOX64_PLATFORM_MARCRO=-D${{ matrix.platform }}=1" >> $GITHUB_ENV
            echo "BOX64_COMPILER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
            sudo apt-get -y install git gcc-aarch64-linux-gnu cmake make python3
          else
            if [[ ${{ matrix.platform }} == 'X64' ]]; then
              echo "BOX64_PLATFORM_MARCRO=-DLD80BITS=1 -DNOALIGN=1" >> $GITHUB_ENV
              echo "BOX64_COMPILER=gcc" >> $GITHUB_ENV
              sudo apt-get -y install git cmake make python3
            elif [[ ${{ matrix.platform }} == 'RISCV' ]]; then
              echo BOX64_PLATFORM_MARCRO="-DRV64=ON" >> $GITHUB_ENV
              echo "BOX64_COMPILER=riscv64-linux-gnu-gcc" >> $GITHUB_ENV
              sudo apt-get -y install git gcc-riscv64-linux-gnu cmake make python3
            else
              echo BOX64_PLATFORM_MARCRO="-DARM_DYNAREC=ON" >> $GITHUB_ENV
              echo "BOX64_COMPILER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
              sudo apt-get -y install git gcc-aarch64-linux-gnu cmake make python3
            fi
          fi
          if [[ ${{ matrix.type }} == 'Release' ]]; then
            echo BOX64_BUILD_TYPE=Release >> $GITHUB_ENV
            echo BOX64_HAVE_TRACE=0 >> $GITHUB_ENV
          else
            echo BOX64_BUILD_TYPE=RelWithDebInfo >> $GITHUB_ENV
            echo BOX64_HAVE_TRACE=1 >> $GITHUB_ENV
          fi

      - name: "Display Build info"
        run: |
          echo "CMake Platform Macro: ${{ env.BOX64_PLATFORM_MARCRO }}"
          echo "CMake C Compiler: ${{ env.BOX64_COMPILER }}"
          echo "Build type: ${{ env.BOX64_BUILD_TYPE }}"
          echo "Trace Enabled: ${{ env.BOX64_HAVE_TRACE }}"

      - name: "Build Box64"
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_C_COMPILER=${{ env.BOX64_COMPILER }}\
                   ${{ env.BOX64_PLATFORM_MARCRO }}\
                   -DCMAKE_BUILD_TYPE=${{ env.BOX64_BUILD_TYPE }}\
                   -DHAVE_TRACE=${{ env.BOX64_HAVE_TRACE }}\
                   -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
          make -j$(nproc) VERBOSE=1

      - name: "Test Box64"
        if: ${{ matrix.platform == 'X64' }}
        run: |
          cd build
          ctest -j$(nproc)

      - name: "Upload Artifact"
        uses: actions/upload-artifact@v2
        with:
          name: box64-${{ matrix.platform }}-${{ matrix.type }}
          path: build/box64