181 lines
6.1 KiB
YAML
181 lines
6.1 KiB
YAML
name: Build Eden Emulator
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- dev
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build-linux:
|
|
name: Build Linux
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
autoconf cmake g++ gcc git glslang-tools \
|
|
libglu1-mesa-dev libhidapi-dev libpulse-dev \
|
|
libtool libudev-dev libxcb-icccm4 libxcb-image0 \
|
|
libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 \
|
|
libxcb-xkb1 libxext-dev libxkbcommon-x11-0 \
|
|
mesa-common-dev nasm ninja-build qt6-base-private-dev \
|
|
libmbedtls-dev catch2 libfmt-dev liblz4-dev \
|
|
nlohmann-json3-dev libzstd-dev libssl-dev \
|
|
libavfilter-dev libavcodec-dev libswscale-dev \
|
|
pkg-config zlib1g-dev libva-dev libvdpau-dev \
|
|
qt6-tools-dev libvulkan-dev spirv-tools spirv-headers \
|
|
libusb-1.0-0-dev libxbyak-dev libboost-dev \
|
|
libboost-fiber-dev libboost-context-dev libsdl2-dev \
|
|
libopus-dev vulkan-utility-libraries-dev
|
|
|
|
- name: Configure CMake
|
|
run: |
|
|
cmake -S . -B build -G "Ninja" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DYUZU_TESTS=OFF \
|
|
-DENABLE_QT_TRANSLATION=OFF
|
|
|
|
- name: Build Eden
|
|
run: |
|
|
cmake --build build --parallel $(nproc)
|
|
|
|
- name: Package Artifacts
|
|
run: |
|
|
mkdir -p artifacts
|
|
cp build/bin/eden artifacts/ || echo "eden not found"
|
|
cp build/bin/eden-cmd artifacts/ || echo "eden-cmd not found"
|
|
if [ -f artifacts/eden ]; then
|
|
chmod +x artifacts/eden
|
|
fi
|
|
if [ -f artifacts/eden-cmd ]; then
|
|
chmod +x artifacts/eden-cmd
|
|
fi
|
|
|
|
# Create version info
|
|
echo "Eden Emulator - Linux Build" > artifacts/VERSION.txt
|
|
echo "Build Date: $(date)" >> artifacts/VERSION.txt
|
|
echo "Commit: $(git rev-parse --short HEAD)" >> artifacts/VERSION.txt
|
|
|
|
- name: Create tarball
|
|
run: |
|
|
cd artifacts
|
|
tar -czf ../eden-linux-x64.tar.gz .
|
|
cd ..
|
|
|
|
- name: Upload Linux Build
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: eden-linux-x64
|
|
path: eden-linux-x64.tar.gz
|
|
retention-days: 30
|
|
|
|
build-windows-mingw:
|
|
name: Build Windows (MinGW Cross-Compile)
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Install MinGW and dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
mingw-w64 g++-mingw-w64-x86-64 gcc-mingw-w64-x86-64 \
|
|
cmake ninja-build git nasm autoconf libtool \
|
|
pkg-config python3 wget unzip
|
|
|
|
- name: Set up MinGW toolchain
|
|
run: |
|
|
cat > mingw-toolchain.cmake << EOF
|
|
set(CMAKE_SYSTEM_NAME Windows)
|
|
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
|
|
|
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
|
|
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
|
|
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
|
|
|
|
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
|
|
set(CMAKE_CROSSCOMPILING_EMULATOR wine64)
|
|
EOF
|
|
|
|
- name: Configure CMake for Windows
|
|
run: |
|
|
cmake -S . -B build-windows \
|
|
-DCMAKE_TOOLCHAIN_FILE=mingw-toolchain.cmake \
|
|
-G "Ninja" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DYUZU_TESTS=OFF \
|
|
-DENABLE_QT_TRANSLATION=OFF \
|
|
-DENABLE_QT=OFF \
|
|
-DYUZU_CMD=ON \
|
|
-DENABLE_SDL2=ON \
|
|
-DYUZU_USE_BUNDLED_SDL2=ON \
|
|
-DYUZU_USE_BUNDLED_FFMPEG=ON \
|
|
-DYUZU_USE_CPM=ON || echo "Configure failed, this is expected with limited MinGW support"
|
|
|
|
- name: Build Eden for Windows
|
|
run: |
|
|
cmake --build build-windows --parallel $(nproc) || echo "Build may have issues with MinGW cross-compilation"
|
|
continue-on-error: true
|
|
|
|
- name: Package Windows Artifacts
|
|
run: |
|
|
mkdir -p artifacts-windows
|
|
|
|
if [ -f build-windows/bin/eden.exe ]; then
|
|
cp build-windows/bin/eden.exe artifacts-windows/
|
|
echo "eden.exe found and copied"
|
|
fi
|
|
|
|
if [ -f build-windows/bin/eden-cmd.exe ]; then
|
|
cp build-windows/bin/eden-cmd.exe artifacts-windows/
|
|
echo "eden-cmd.exe found and copied"
|
|
fi
|
|
|
|
# Copy any DLLs
|
|
find build-windows/bin -name "*.dll" -exec cp {} artifacts-windows/ \; 2>/dev/null || true
|
|
|
|
# Create version info
|
|
echo "Eden Emulator - Windows Build (MinGW)" > artifacts-windows/VERSION.txt
|
|
echo "Build Date: $(date)" >> artifacts-windows/VERSION.txt
|
|
echo "Commit: $(git rev-parse --short HEAD)" >> artifacts-windows/VERSION.txt
|
|
echo "Note: Cross-compiled with MinGW on Linux" >> artifacts-windows/VERSION.txt
|
|
|
|
# Check if we have any executables
|
|
if [ -f artifacts-windows/eden.exe ] || [ -f artifacts-windows/eden-cmd.exe ]; then
|
|
echo "Windows build successful"
|
|
cd artifacts-windows
|
|
zip -r ../eden-windows-x64-mingw.zip .
|
|
cd ..
|
|
else
|
|
echo "No Windows executables produced - MinGW cross-compilation may not be fully supported"
|
|
echo "This is expected - Eden emulator is complex and may require native Windows build" > artifacts-windows/BUILD_FAILED.txt
|
|
cd artifacts-windows
|
|
zip -r ../eden-windows-x64-mingw.zip .
|
|
cd ..
|
|
fi
|
|
continue-on-error: true
|
|
|
|
- name: Upload Windows Build
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: eden-windows-x64-mingw
|
|
path: eden-windows-x64-mingw.zip
|
|
retention-days: 30
|