summaryrefslogtreecommitdiff
path: root/.github/workflows/main.yml
blob: 1cbb0081e57fb2f60230128d5791c9b5cb4ff07e (plain)
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
name: GenerateBuilds

on:
  push:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  generate-port-o2r:
    runs-on: ubuntu-22.04
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: true
    - name: Install dependencies
      run: sudo apt-get install gcc g++ git cmake ninja-build lsb-release
    - name: ccache
      uses: hendrikmuhs/ccache-action@v1.2.13
      with:
        key: ${{ runner.os }}-o2r-ccache-${{ github.ref }}-${{ github.sha }}
        restore-keys: |
          ${{ runner.os }}-o2r-ccache-${{ github.ref }}
          ${{ runner.os }}-o2r-ccache-
    - name: Cache build folders
      uses: actions/cache@v4
      with:
        key: ${{ runner.os }}-o2r-build-${{ github.ref }}-${{ github.sha }}
        restore-keys: |
          ${{ runner.os }}-o2r-build-${{ github.ref }}
          ${{ runner.os }}-o2r-build-
        path: |
          tools/Torch/cmake-build-release
    - name: Generate starship.o2r
      run: |
        export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
        make -C tools/Torch type=release -j3
        tools/Torch/cmake-build-release/torch pack port starship.o2r o2r
    - uses: actions/upload-artifact@v4
      with:
        name: starship.o2r
        path: starship.o2r
        retention-days: 1

  build-windows:
    needs: generate-port-o2r
    runs-on: windows-2022
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive
      - name: Build
        run: |
          cmake -S . -B "build/x64" -G "Visual Studio 17 2022" -T v143 -A x64 -DCMAKE_BUILD_TYPE=Release
          cmake --build ./build/x64 --config Release --parallel 10
      - name: Download starship.o2r
        uses: actions/download-artifact@v4
        with:
          name: starship.o2r
          path: ./build/x64/Release
      - name: Create Package
        run: |
          mkdir starship-release
          mv build/x64/Release/Starship.exe starship-release/
          mv build/x64/Release/starship.o2r starship-release/
          mv config.json starship-release/
          mv assets starship-release/
      - name: Upload build
        uses: actions/upload-artifact@v4
        with:
          name: starship-windows
          path: starship-release

  build-macos:
    needs: generate-port-o2r
    runs-on: macOS-latest
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive
      - name: Install dependencies
        run: brew install sdl2 libpng glew ninja cmake libzip nlohmann-json tinyxml2 spdlog
      - name: Build
        run: |
          cmake -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE=Release
          cmake --build build-cmake --config Release -j3
      - name: Download starship.o2r
        uses: actions/download-artifact@v4
        with:
          name: starship.o2r
          path: ./build-cmake
      - name: Create Package
        run: |
          mkdir starship-release
          mv build-cmake/Starship starship-release/
          mv build-cmake/starship.o2r starship-release/
          mv config.yml starship-release/
          mv assets starship-release/
      - name: Publish packaged artifacts
        uses: actions/upload-artifact@v4
        with:
            name: starship-mac-x64
            path: starship-release

  build-linux:
    needs: generate-port-o2r
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive
      - name: Install dependencies
        run: sudo apt-get install gcc g++ git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libboost-dev libopengl-dev
      - name: Install latest SDL
        run: |
          export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
          wget https://www.libsdl.org/release/SDL2-2.24.1.tar.gz
          tar -xzf SDL2-2.24.1.tar.gz
          cd SDL2-2.24.1
          ./configure --enable-hidapi-libusb
          make -j 10
          sudo make install
      - name: Install latest tinyxml2
        run: |
          export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
          wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz
          tar -xzf 10.0.0.tar.gz
          cd tinyxml2-10.0.0
          mkdir build
          cd build
          cmake ..
          make
          sudo make install
      - name: Download starship.o2r
        uses: actions/download-artifact@v4
        with:
          name: starship.o2r
          path: ./build-cmake
      - name: Build
        run: |
          cmake -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE=Release
          cmake --build build-cmake --config Release -j3
          (cd build-cmake && cpack -G External)

          mv README.md readme.txt
          mv build-cmake/*.appimage starship.appimage
      - name: Upload build
        uses: actions/upload-artifact@v4
        with:
          name: Starship-linux
          path: |
            starship.appimage
            config.yml
            assets