Fix HiDPI, add native Wayland support, upgrade raylib to 5.5, add ARM64 Linux #178
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Release TLEscope | |
| on: | |
| push: | |
| branches: [ "main", "master" ] | |
| tags: | |
| - 'v*' | |
| paths-ignore: | |
| - 'README.md' | |
| - 'ROADMAP.md' | |
| - 'CONTRIBUTING.md' | |
| pull_request: | |
| branches: [ "main", "master" ] | |
| paths-ignore: | |
| - 'README.md' | |
| - 'ROADMAP.md' | |
| - 'CONTRIBUTING.md' | |
| jobs: | |
| build-linux: | |
| name: Build Linux | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Install Linux Build Dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y gcc make libasound2-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libxcursor-dev libxinerama-dev libwayland-dev libxkbcommon-dev libcurl4-openssl-dev | |
| - name: Compile and Bundle Linux | |
| run: make linux | |
| - name: Upload Linux Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: TLEscope-Linux-Portable | |
| path: dist/TLEscope-Linux-Portable/ | |
| retention-days: 14 | |
| build-linux-arm64: | |
| name: Build Linux ARM64 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Setup ARM64 Cross-Compile | |
| uses: cyberjunk/gha-ubuntu-cross@v5 | |
| with: | |
| arch: arm64 | |
| - name: Install ARM64 Build Dependencies | |
| run: | | |
| sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu | |
| sudo apt-get install -y -o Dpkg::Options::="--force-overwrite" \ | |
| libcurl4-openssl-dev:arm64 libgl-dev:arm64 libx11-dev:arm64 \ | |
| libxrandr-dev:arm64 libxi-dev:arm64 libxcursor-dev:arm64 \ | |
| libxinerama-dev:arm64 libwayland-dev:arm64 libxkbcommon-dev:arm64 | |
| - name: Build raylib for ARM64 | |
| run: ./scripts/build-raylib.sh linux-arm64 | |
| - name: Compile and Bundle Linux ARM64 | |
| run: | | |
| make linux \ | |
| CC_LINUX=aarch64-linux-gnu-gcc \ | |
| LIB_LIN_PATH="-Ilib/raylib_lin_arm64/include -Llib/raylib_lin_arm64/lib" \ | |
| LDFLAGS_LIN="-Ilib/raylib_lin_arm64/include -Llib/raylib_lin_arm64/lib -lraylib -lcurl -lGL -lm -lpthread -ldl -lrt -lX11" \ | |
| DIST_LINUX=dist/TLEscope-Linux-arm64-Portable | |
| - name: Upload Linux ARM64 Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: TLEscope-Linux-arm64-Portable | |
| path: dist/TLEscope-Linux-arm64-Portable/ | |
| retention-days: 14 | |
| build-windows: | |
| name: Build Windows | |
| runs-on: windows-latest | |
| defaults: | |
| run: | |
| shell: msys2 {0} | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Setup MSYS2 (MinGW Environment) | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: MINGW64 | |
| update: true | |
| install: >- | |
| make | |
| mingw-w64-x86_64-gcc | |
| mingw-w64-x86_64-curl | |
| mingw-w64-x86_64-ngtcp2 | |
| mingw-w64-x86_64-nghttp3 | |
| mingw-w64-x86_64-zstd | |
| mingw-w64-x86_64-libssh2 | |
| mingw-w64-x86_64-openssl | |
| mingw-w64-x86_64-pkgconf | |
| mingw-w64-x86_64-nsis | |
| mingw-w64-x86_64-imagemagick | |
| - name: Compile and Bundle Windows | |
| run: make win-installer MINGW_PREFIX=/mingw64 PKG_CONFIG_WIN=pkg-config | |
| - name: Upload Windows Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: TLEscope-Win-Portable | |
| path: dist/TLEscope-Win-Portable/ | |
| retention-days: 14 | |
| - name: Upload Windows Installer Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: TLEscope-Installer | |
| path: dist/TLEscope-Installer.exe | |
| retention-days: 14 | |
| build-windows-arm64: | |
| name: Build Windows ARM64 | |
| runs-on: windows-11-arm | |
| defaults: | |
| run: | |
| shell: msys2 {0} | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Setup MSYS2 (MinGW Environment) | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: CLANGARM64 | |
| update: true | |
| install: >- | |
| mingw-w64-clang-aarch64-make | |
| mingw-w64-clang-aarch64-clang | |
| mingw-w64-clang-aarch64-curl | |
| mingw-w64-clang-aarch64-ngtcp2 | |
| mingw-w64-clang-aarch64-nghttp3 | |
| mingw-w64-clang-aarch64-zstd | |
| mingw-w64-clang-aarch64-libssh2 | |
| mingw-w64-clang-aarch64-openssl | |
| mingw-w64-clang-aarch64-pkgconf | |
| - name: Compile and Bundle Windows ARM64 | |
| run: mingw32-make windows-arm64 | |
| - name: Upload Windows ARM64 Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: TLEscope-Win-arm64-Portable | |
| path: dist/TLEscope-Win-arm64-Portable/ | |
| retention-days: 14 | |
| release: | |
| name: Publish Release | |
| needs: [build-linux, build-linux-arm64, build-windows, build-windows-arm64] | |
| if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v')) | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Download Artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Prepare and Zip Artifacts for Release | |
| run: | | |
| cd artifacts | |
| # The Makefile bundles into subdirectories, so we zip those folders | |
| chmod +x TLEscope-Linux-Portable/TLEscope | |
| chmod +x TLEscope-Linux-arm64-Portable/TLEscope | |
| zip -r ../TLEscope-Linux-Portable.zip TLEscope-Linux-Portable/ | |
| zip -r ../TLEscope-Linux-arm64-Portable.zip TLEscope-Linux-arm64-Portable/ | |
| zip -r ../TLEscope-Win-Portable.zip TLEscope-Win-Portable/ | |
| zip -r ../TLEscope-Win-arm64-Portable.zip TLEscope-Win-arm64-Portable/ | |
| # Move installer out of its artifact subdirectory for flat publishing | |
| mv TLEscope-Installer/TLEscope-Installer.exe ../ | |
| cd .. | |
| - name: Clean Existing Release Assets | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| if [[ "${{ github.ref }}" == refs/tags/* ]]; then | |
| gh release delete "${{ github.ref_name }}" -y || true | |
| fi | |
| - name: Force Update Nightly Tag | |
| if: startsWith(github.ref, 'refs/heads/') | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| gh release delete nightly --cleanup-tag -y || true | |
| git tag -f nightly | |
| git push -f origin nightly | |
| - name: Update Nightly Release | |
| if: startsWith(github.ref, 'refs/heads/') | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: nightly | |
| name: "Nightly Build" | |
| body: "Automated nightly build reflecting the latest commit." | |
| prerelease: true | |
| files: | | |
| TLEscope-Linux-Portable.zip | |
| TLEscope-Linux-arm64-Portable.zip | |
| TLEscope-Win-Portable.zip | |
| TLEscope-Win-arm64-Portable.zip | |
| TLEscope-Installer.exe | |
| - name: Publish Release | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| generate_release_notes: true | |
| files: | | |
| TLEscope-Linux-Portable.zip | |
| TLEscope-Linux-arm64-Portable.zip | |
| TLEscope-Win-Portable.zip | |
| TLEscope-Win-arm64-Portable.zip | |
| TLEscope-Installer.exe |