mirror of https://github.com/stenzek/duckstation
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			148 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			YAML
		
	
			
		
		
	
	
			148 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			YAML
		
	
name: 🐧 Linux AppImage
 | 
						|
 | 
						|
on:
 | 
						|
  workflow_call:
 | 
						|
  workflow_dispatch:
 | 
						|
 | 
						|
jobs:
 | 
						|
  linux-x64-appimage-build:
 | 
						|
    name: "x64"
 | 
						|
    runs-on: ubuntu-22.04
 | 
						|
    timeout-minutes: 120
 | 
						|
    steps:
 | 
						|
    - uses: actions/checkout@v4
 | 
						|
      with:
 | 
						|
        fetch-depth: 0
 | 
						|
 | 
						|
    - name: Install Packages
 | 
						|
      run: scripts/packaging/appimage/install-packages.sh
 | 
						|
 | 
						|
    - name: Cache Dependencies
 | 
						|
      id: cache-deps
 | 
						|
      uses: actions/cache@v4
 | 
						|
      with:
 | 
						|
        path: ~/deps
 | 
						|
        key: deps ${{ hashFiles('scripts/deps/build-dependencies-linux.sh', 'scripts/deps/build-ffmpeg-linux.sh') }}
 | 
						|
 | 
						|
    - name: Build Dependencies
 | 
						|
      if: steps.cache-deps.outputs.cache-hit != 'true'
 | 
						|
      run: scripts/deps/build-dependencies-linux.sh "$HOME/deps"
 | 
						|
 | 
						|
    - name: Build FFmpeg
 | 
						|
      if: steps.cache-deps.outputs.cache-hit != 'true'
 | 
						|
      run: scripts/deps/build-ffmpeg-linux.sh "$HOME/deps"
 | 
						|
 | 
						|
    - name: Initialize Build Tag
 | 
						|
      run: |
 | 
						|
                echo '#pragma once' > src/scmversion/tag.h
 | 
						|
 | 
						|
    - name: Set Build Tag Asset
 | 
						|
      if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
 | 
						|
      run: |
 | 
						|
        echo '#define SCM_RELEASE_ASSET "DuckStation-x64.AppImage"' >> src/scmversion/tag.h
 | 
						|
        echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h        
 | 
						|
 | 
						|
    - name: Tag as Preview Release
 | 
						|
      if: github.ref == 'refs/heads/master'
 | 
						|
      run: |
 | 
						|
                echo '#define SCM_RELEASE_TAG "preview"' >> src/scmversion/tag.h
 | 
						|
 | 
						|
    - name: Tag as Rolling Release
 | 
						|
      if: github.ref == 'refs/heads/dev'
 | 
						|
      run: |
 | 
						|
                echo '#define SCM_RELEASE_TAG "latest"' >> src/scmversion/tag.h
 | 
						|
 | 
						|
    - name: Download Patch Archives
 | 
						|
      shell: bash
 | 
						|
      run: |
 | 
						|
        cd data/resources
 | 
						|
        curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/cheats.zip"
 | 
						|
        curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/patches.zip"        
 | 
						|
 | 
						|
    - name: Compile Build
 | 
						|
      shell: bash
 | 
						|
      run: |
 | 
						|
        mkdir build
 | 
						|
        cd build
 | 
						|
        cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_PREFIX_PATH="$HOME/deps" -DCMAKE_C_COMPILER=clang-19 -DCMAKE_CXX_COMPILER=clang++-19 -DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" ..
 | 
						|
        cmake --build . --parallel
 | 
						|
        cd ..
 | 
						|
        scripts/packaging/appimage/make-appimage.sh $(realpath .) $(realpath ./build) $HOME/deps DuckStation-x64        
 | 
						|
 | 
						|
    - name: Upload Qt AppImage
 | 
						|
      uses: actions/upload-artifact@v4
 | 
						|
      with:
 | 
						|
        name: "linux-x64-appimage"
 | 
						|
        path: "DuckStation-x64.AppImage"
 | 
						|
 | 
						|
 | 
						|
  linux-x64-sse2-appimage-build:
 | 
						|
    name: "x64 SSE2"
 | 
						|
    runs-on: ubuntu-22.04
 | 
						|
    timeout-minutes: 120
 | 
						|
    steps:
 | 
						|
    - uses: actions/checkout@v4
 | 
						|
      with:
 | 
						|
        fetch-depth: 0
 | 
						|
 | 
						|
    - name: Install Packages
 | 
						|
      run: scripts/packaging/appimage/install-packages.sh
 | 
						|
 | 
						|
    - name: Cache Dependencies
 | 
						|
      id: cache-deps
 | 
						|
      uses: actions/cache@v4
 | 
						|
      with:
 | 
						|
        path: ~/deps
 | 
						|
        key: deps ${{ hashFiles('scripts/deps/build-dependencies-linux.sh', 'scripts/deps/build-ffmpeg-linux.sh') }}
 | 
						|
 | 
						|
    - name: Build Dependencies
 | 
						|
      if: steps.cache-deps.outputs.cache-hit != 'true'
 | 
						|
      run: scripts/deps/build-dependencies-linux.sh "$HOME/deps"
 | 
						|
 | 
						|
    - name: Build FFmpeg
 | 
						|
      if: steps.cache-deps.outputs.cache-hit != 'true'
 | 
						|
      run: scripts/deps/build-ffmpeg-linux.sh "$HOME/deps"
 | 
						|
 | 
						|
    - name: Initialize Build Tag
 | 
						|
      run: |
 | 
						|
                echo '#pragma once' > src/scmversion/tag.h
 | 
						|
 | 
						|
    - name: Set Build Tag Asset
 | 
						|
      if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
 | 
						|
      run: |
 | 
						|
        echo '#define SCM_RELEASE_ASSET "DuckStation-x64-SSE2.AppImage"' >> src/scmversion/tag.h
 | 
						|
        echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h        
 | 
						|
 | 
						|
    - name: Tag as Preview Release
 | 
						|
      if: github.ref == 'refs/heads/master'
 | 
						|
      run: |
 | 
						|
                echo '#define SCM_RELEASE_TAG "preview"' >> src/scmversion/tag.h
 | 
						|
 | 
						|
    - name: Tag as Rolling Release
 | 
						|
      if: github.ref == 'refs/heads/dev'
 | 
						|
      run: |
 | 
						|
                echo '#define SCM_RELEASE_TAG "latest"' >> src/scmversion/tag.h
 | 
						|
 | 
						|
    - name: Download Patch Archives
 | 
						|
      shell: bash
 | 
						|
      run: |
 | 
						|
        cd data/resources
 | 
						|
        curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/cheats.zip"
 | 
						|
        curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/patches.zip"        
 | 
						|
 | 
						|
    - name: Compile Build
 | 
						|
      shell: bash
 | 
						|
      run: |
 | 
						|
        mkdir build
 | 
						|
        cd build
 | 
						|
        cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DDISABLE_SSE4=ON -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_PREFIX_PATH="$HOME/deps" -DCMAKE_C_COMPILER=clang-19 -DCMAKE_CXX_COMPILER=clang++-19 -DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" ..
 | 
						|
        cmake --build . --parallel
 | 
						|
        cd ..
 | 
						|
        scripts/packaging/appimage/make-appimage.sh $(realpath .) $(realpath ./build) $HOME/deps DuckStation-x64-SSE2        
 | 
						|
 | 
						|
    - name: Upload Qt AppImage
 | 
						|
      uses: actions/upload-artifact@v4
 | 
						|
      with:
 | 
						|
        name: "linux-x64-sse2-appimage"
 | 
						|
        path: "DuckStation-x64-SSE2.AppImage"
 |