diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index f8b8c82ed3..2fc432a523 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -1,4 +1,4 @@ -name: Build Eden Emulator +name: Build Eden Emulator (Wine Native) on: push: @@ -7,7 +7,7 @@ on: workflow_dispatch: jobs: - build-windows: + build-windows-wine: runs-on: ubuntu-latest steps: @@ -17,62 +17,66 @@ jobs: submodules: recursive fetch-depth: 0 - - name: Install dependencies + - name: Install Wine and Dependencies run: | + sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install -y \ - build-essential \ - cmake \ - ninja-build \ - ccache \ - git \ wget \ - python3 \ - python3-pip \ - mingw-w64 \ - wine64 + p7zip-full \ + wine \ + wine32 \ + wine64 \ + xvfb - - name: Setup ccache - uses: actions/cache@v4 - with: - path: ~/.ccache - key: ${{ runner.os }}-ccache-windows-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-ccache-windows- + # Configure Wine + export DISPLAY=:99 + Xvfb :99 -screen 0 1024x768x16 & + sleep 3 + wineboot --init || true + sleep 5 - - name: Setup CPM cache - uses: actions/cache@v4 - with: - path: .cache/cpm - key: ${{ runner.os }}-cpm-${{ hashFiles('**/cpmfile.json') }} - restore-keys: | - ${{ runner.os }}-cpm- - - - name: Install MinGW toolchain + - name: Download Windows Tools run: | - # Set up MinGW-w64 for cross-compilation - sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix - sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix + mkdir -p tools + cd tools - - name: Configure CMake for Windows - run: | - cmake -S . -B build \ - -G "Ninja" \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/.gitea/toolchains/mingw-w64-x86_64.cmake \ - -DYUZU_TESTS=OFF \ - -DENABLE_QT_TRANSLATION=ON \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DYUZU_USE_BUNDLED_OPENSSL=ON \ - -DYUZU_USE_BUNDLED_FFMPEG=ON \ - -DYUZU_USE_BUNDLED_SDL2=ON \ - -DYUZU_USE_BUNDLED_QT=ON \ - -DYUZU_USE_CPM=ON + # Download LLVM-MinGW (Windows Toolchain) + wget https://github.com/mstorsjo/llvm-mingw/releases/download/20240619/llvm-mingw-20240619-ucrt-x86_64.zip + unzip -q llvm-mingw-20240619-ucrt-x86_64.zip + mv llvm-mingw-20240619-ucrt-x86_64 llvm - - name: Build Eden + # Download CMake (Windows) + wget https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-windows-x86_64.zip + unzip -q cmake-3.29.2-windows-x86_64.zip + mv cmake-3.29.2-windows-x86_64 cmake + + # Download Ninja (Windows) + wget https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-win.zip + unzip -q ninja-win.zip + mkdir ninja + mv ninja.exe ninja/ + + - name: Setup Environment run: | - cmake --build build --parallel $(nproc) + # Create a setup script to add tools to PATH in Wine + echo "@echo off" > setup_env.bat + echo "set PATH=Z:\home\runner\work\eden\eden\tools\llvm\bin;Z:\home\runner\work\eden\eden\tools\cmake\bin;Z:\home\runner\work\eden\eden\tools\ninja;%PATH%" >> setup_env.bat + echo "set CC=clang" >> setup_env.bat + echo "set CXX=clang++" >> setup_env.bat + + - name: Configure (Wine Native) + env: + DISPLAY: :99 + run: | + # We run cmake as if we are on Windows + wine cmd /c "setup_env.bat && cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DYUZU_TESTS=OFF -DYUZU_USE_BUNDLED_OPENSSL=ON -DYUZU_USE_BUNDLED_FFMPEG=ON -DYUZU_USE_BUNDLED_SDL2=ON -DYUZU_USE_BUNDLED_QT=ON -DYUZU_USE_CPM=ON" + + - name: Build (Wine Native) + env: + DISPLAY: :99 + run: | + wine cmd /c "setup_env.bat && cmake --build build --config Release" - name: Prepare artifacts run: |